diff options
Diffstat (limited to 'Slimber/MainController.cpp')
m--------- | Slimber | 0 | ||||
-rw-r--r-- | Slimber/MainController.cpp | 123 |
2 files changed, 0 insertions, 123 deletions
diff --git a/Slimber b/Slimber new file mode 160000 +Subproject 723115ef8542c640580ea4751fca3c359a79dec diff --git a/Slimber/MainController.cpp b/Slimber/MainController.cpp deleted file mode 100644 index c8c2ad1..0000000 --- a/Slimber/MainController.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#include "Slimber/MainController.h" - -#include <boost/bind.hpp> -#include <boost/lexical_cast.hpp> -#include <iostream> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Application/Platform/PlatformApplication.h" -#include "Swiften/LinkLocal/LinkLocalService.h" -#include "Swiften/LinkLocal/LinkLocalServiceBrowser.h" -#include "Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h" -#include "Slimber/Server.h" -#include "Slimber/FileVCardCollection.h" -#include "Slimber/MenuletController.h" -#include "Slimber/Menulet.h" - -using namespace Swift; - -MainController::MainController(Menulet* menulet) : menulet(menulet) { - menuletController = new MenuletController(menulet); - menuletController->onRestartRequested.connect(boost::bind( - &MainController::handleRestartRequested, this)); - - dnsSDQuerier = PlatformDNSSDQuerierFactory().createQuerier(); - if (!dnsSDQuerier) { - // TODO - assert(false); - } - - linkLocalServiceBrowser = new LinkLocalServiceBrowser(dnsSDQuerier); - linkLocalServiceBrowser->onServiceAdded.connect( - boost::bind(&MainController::handleServicesChanged, this)); - linkLocalServiceBrowser->onServiceRemoved.connect( - boost::bind(&MainController::handleServicesChanged, this)); - linkLocalServiceBrowser->onServiceChanged.connect( - boost::bind(&MainController::handleServicesChanged, this)); - - vCardCollection = new FileVCardCollection( - PlatformApplication("Slimber").getSettingsDir()); - - server = new Server(5222, 5562, linkLocalServiceBrowser, vCardCollection); - server->onStopped.connect( - boost::bind(&MainController::handleServerStopped, this, _1)); - server->onSelfConnected.connect( - boost::bind(&MainController::handleSelfConnected, this, _1)); - - start(); -} - -MainController::~MainController() { - delete menuletController; - delete server; - delete vCardCollection; - linkLocalServiceBrowser->stop(); - delete linkLocalServiceBrowser; - dnsSDQuerier->stop(); -} - -void MainController::start() { - dnsSDQuerier->start(); - linkLocalServiceBrowser->start(); - - handleSelfConnected(false); - handleServicesChanged(); - - server->start(); -} - -void MainController::stop() { - server->stop(); - linkLocalServiceBrowser->stop(); - dnsSDQuerier->stop(); -} - -void MainController::handleSelfConnected(bool b) { - if (b) { - menuletController->setXMPPStatus("You are logged in", MenuletController::Online); - } - else { - menuletController->setXMPPStatus("You are not logged in", MenuletController::Offline); - } -} - -void MainController::handleServicesChanged() { - std::vector<String> names; - foreach(const LinkLocalService& service, linkLocalServiceBrowser->getServices()) { - String description = service.getDescription(); - if (description != service.getName()) { - description += " (" + service.getName() + ")"; - } - names.push_back(description); - } - menuletController->setUserNames(names); -} - -void MainController::handleServerStopped(boost::optional<ServerError> error) { - if (error) { - String message; - switch (error->getType()) { - case ServerError::C2SPortConflict: - message = String("Error: Port ") + boost::lexical_cast<std::string>(server->getClientToServerPort()) + String(" in use"); - break; - case ServerError::C2SError: - message = String("Local connection server error"); - break; - case ServerError::LinkLocalPortConflict: - message = String("Error: Port ") + boost::lexical_cast<std::string>(server->getLinkLocalPort()) + String(" in use"); - break; - case ServerError::LinkLocalError: - message = String("External connection server error"); - break; - } - menuletController->setXMPPStatus(message, MenuletController::Offline); - } - else { - menuletController->setXMPPStatus("XMPP Server Not Running", MenuletController::Offline); - } -} - -void MainController::handleRestartRequested() { - stop(); - start(); -} |