diff options
-rw-r--r-- | Swift/Controllers/MainController.cpp | 13 | ||||
-rw-r--r-- | Swift/Controllers/MainController.h | 2 | ||||
-rw-r--r-- | Swiften/Client/Client.cpp | 13 | ||||
-rw-r--r-- | Swiften/Client/Client.h | 21 | ||||
-rw-r--r-- | Swiften/Client/CoreClient.h | 9 |
5 files changed, 46 insertions, 12 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index c219ae9..d7801f3 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -47,7 +47,6 @@ #include "Swiften/Elements/ChatState.h" #include "Swiften/Elements/Presence.h" #include "Swiften/Elements/VCardUpdate.h" -#include "Swiften/Queries/Responders/SoftwareVersionResponder.h" #include "Swift/Controllers/Settings/SettingsProvider.h" #include "Swiften/Elements/DiscoInfo.h" #include "Swiften/Queries/Responders/DiscoInfoResponder.h" @@ -116,7 +115,6 @@ MainController::MainController( xmppRosterController_ = NULL; chatsManager_ = NULL; eventWindowController_ = NULL; - clientVersionResponder_ = NULL; discoResponder_ = NULL; mucSearchController_ = NULL; @@ -201,11 +199,6 @@ void MainController::resetClient() { delete discoResponder_; discoResponder_ = NULL; } - if (clientVersionResponder_) { - clientVersionResponder_->stop(); - delete clientVersionResponder_; - clientVersionResponder_ = NULL; - } delete eventWindowController_; eventWindowController_ = NULL; delete xmppRosterController_; @@ -293,9 +286,6 @@ void MainController::handleConnected() { eventWindowController_ = new EventWindowController(eventController_, eventWindowFactory_); - clientVersionResponder_ = new SoftwareVersionResponder(client_->getIQRouter()); - clientVersionResponder_->setVersion(CLIENT_NAME, buildVersion); - clientVersionResponder_->start(); loginWindow_->morphInto(rosterController_->getWindow()); DiscoInfo discoInfo; @@ -420,6 +410,9 @@ void MainController::performLoginFromCachedCredentials() { } if (!client_) { client_ = new Swift::Client(jid_, password_); + + client_->setSoftwareVersion(CLIENT_NAME, buildVersion); + presenceSender_ = new PresenceSender(client_->getStanzaChannel()); presenceOracle_ = new PresenceOracle(client_->getStanzaChannel()); mucRegistry_ = new MUCRegistry(); diff --git a/Swift/Controllers/MainController.h b/Swift/Controllers/MainController.h index 0887007..fb26a9d 100644 --- a/Swift/Controllers/MainController.h +++ b/Swift/Controllers/MainController.h @@ -52,7 +52,6 @@ namespace Swift { class EntityCapsManager; class LoginWindow; class EventLoop; - class SoftwareVersionResponder; class LoginWindowFactory; class MUCController; class Notifier; @@ -149,7 +148,6 @@ namespace Swift { EventController* eventController_; EventWindowController* eventWindowController_; LoginWindow* loginWindow_; - SoftwareVersionResponder* clientVersionResponder_; NickResolver* nickResolver_; DiscoInfoResponder* discoResponder_; UIEventStream* uiEventStream_; diff --git a/Swiften/Client/Client.cpp b/Swiften/Client/Client.cpp index 44804be..5c64506 100644 --- a/Swiften/Client/Client.cpp +++ b/Swiften/Client/Client.cpp @@ -6,9 +6,22 @@ #include "Swiften/Client/Client.h" +#include "Swiften/Queries/Responders/SoftwareVersionResponder.h" + namespace Swift { Client::Client(const JID& jid, const String& password) : CoreClient(jid, password) { + softwareVersionResponder = new SoftwareVersionResponder(getIQRouter()); + softwareVersionResponder->start(); +} + +Client::~Client() { + softwareVersionResponder->stop(); + delete softwareVersionResponder; +} + +void Client::setSoftwareVersion(const String& name, const String& version) { + softwareVersionResponder->setVersion(name, version); } } diff --git a/Swiften/Client/Client.h b/Swiften/Client/Client.h index 7609eb8..54d6e56 100644 --- a/Swiften/Client/Client.h +++ b/Swiften/Client/Client.h @@ -9,8 +9,29 @@ #include "Swiften/Client/CoreClient.h" namespace Swift { + class SoftwareVersionResponder; + + /** + * Provides the core functionality for writing XMPP client software. + * + * Besides connecting to an XMPP server, this class also provides interfaces for + * performing most tasks on the XMPP network. + */ class Client : public CoreClient { public: Client(const JID& jid, const String& password); + ~Client(); + + + /** + * Sets the software version of the client. + * + * This will be used to respond to version queries from other entities. + */ + void setSoftwareVersion(const String& name, const String& version); + + private: + SoftwareVersionResponder* softwareVersionResponder; + }; } diff --git a/Swiften/Client/CoreClient.h b/Swiften/Client/CoreClient.h index 704cf3b..02d98b6 100644 --- a/Swiften/Client/CoreClient.h +++ b/Swiften/Client/CoreClient.h @@ -32,6 +32,15 @@ namespace Swift { class ClientSession; class BasicSessionStream; + /** + * The central class for communicating with an XMPP server. + * + * This class is responsible for setting up the connection with the XMPP server, authenticating, and + * initializing the session. + * + * This class can be used directly in your application, although the Client subclass provides more + * functionality and interfaces, and is better suited for most needs. + */ class CoreClient { public: CoreClient(const JID& jid, const String& password); |