diff options
| author | Kevin Smith <git@kismith.co.uk> | 2009-10-25 15:47:40 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2009-10-25 15:48:08 (GMT) | 
| commit | bfdf408bed69a279eb710de915e932764ceaed76 (patch) | |
| tree | a56cca8886784d31d91532067b62ffc1818e8291 | |
| parent | efd505dd4a85e696a650e29da829504cf01bb5d0 (diff) | |
| download | swift-bfdf408bed69a279eb710de915e932764ceaed76.zip swift-bfdf408bed69a279eb710de915e932764ceaed76.tar.bz2  | |
Some groundwork ready for autoaway
| -rw-r--r-- | Swift/Controllers/IdleDetector.h | 16 | ||||
| -rw-r--r-- | Swift/Controllers/MainController.cpp | 17 | ||||
| -rw-r--r-- | Swift/Controllers/MainController.h | 7 | ||||
| -rw-r--r-- | Swift/QtUI/QtIdleDetector.cpp | 16 | ||||
| -rw-r--r-- | Swift/QtUI/QtIdleDetector.h | 14 | ||||
| -rw-r--r-- | Swift/QtUI/QtSwift.cpp | 5 | ||||
| -rw-r--r-- | Swift/QtUI/QtSwift.h | 2 | ||||
| -rw-r--r-- | Swift/QtUI/SConscript | 1 | 
8 files changed, 74 insertions, 4 deletions
diff --git a/Swift/Controllers/IdleDetector.h b/Swift/Controllers/IdleDetector.h new file mode 100644 index 0000000..72fe07c --- /dev/null +++ b/Swift/Controllers/IdleDetector.h @@ -0,0 +1,16 @@ +#pragma once + +#include <boost/signals.hpp> +#include <boost/shared_ptr.hpp> + +namespace Swift { +class IdleDetector { +	public: +		virtual ~IdleDetector() {}; +		virtual void forceNotIdle() = 0; +		boost::signal<void ()> onInputIdle; +		boost::signal<void ()> onInputNotIdle; +}; +} + + diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index 6c862ec..5495ec0 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -10,6 +10,7 @@  #include "Swift/Controllers/ChatController.h"  #include "Swift/Controllers/ChatWindowFactory.h"  #include "Swift/Controllers/EventController.h" +#include "Swift/Controllers/IdleDetector.h"  #include "Swift/Controllers/LoginWindow.h"  #include "Swift/Controllers/LoginWindowFactory.h"  #include "Swift/Controllers/MainWindow.h" @@ -59,9 +60,10 @@ static const String CLIENT_NODE = "http://swift.im";  typedef std::pair<JID, ChatController*> JIDChatControllerPair;  typedef std::pair<JID, MUCController*> JIDMUCControllerPair; -MainController::MainController(ChatWindowFactory* chatWindowFactory, MainWindowFactory *mainWindowFactory, LoginWindowFactory *loginWindowFactory, TreeWidgetFactory *treeWidgetFactory, SettingsProvider *settings, Application* application, SystemTray* systemTray, SoundPlayer* soundPlayer) +MainController::MainController(ChatWindowFactory* chatWindowFactory, MainWindowFactory *mainWindowFactory, LoginWindowFactory *loginWindowFactory, TreeWidgetFactory *treeWidgetFactory, SettingsProvider *settings, Application* application, SystemTray* systemTray, SoundPlayer* soundPlayer, IdleDetector* idleDetector)  		: client_(NULL), chatWindowFactory_(chatWindowFactory), mainWindowFactory_(mainWindowFactory), loginWindowFactory_(loginWindowFactory), treeWidgetFactory_(treeWidgetFactory), settings_(settings),  		xmppRosterController_(NULL), rosterController_(NULL), loginWindow_(NULL), clientVersionResponder_(NULL), nickResolver_(NULL), discoResponder_(NULL) { +	idleDetector_ = idleDetector;  	application_ = application;  	presenceOracle_ = NULL;  	avatarManager_ = NULL; @@ -161,6 +163,9 @@ void MainController::handleConnected() {  	boost::shared_ptr<GetVCardRequest> vCardRequest(new GetVCardRequest(JID(), client_));  	vCardRequest->onResponse.connect(boost::bind(&MainController::handleOwnVCardReceived, this, _1, _2));  	vCardRequest->send(); + +	idleDetector_->onInputIdle.connect(boost::bind(&MainController::handleInputIdle, this)); +	idleDetector_->onInputNotIdle.connect(boost::bind(&MainController::handleInputNotIdle, this));  	//Send presence last to catch all the incoming presences.  	boost::shared_ptr<Presence> initialPresence; @@ -208,6 +213,14 @@ void MainController::sendPresence(boost::shared_ptr<Presence> presence) {  	}  } +void MainController::handleInputIdle() { +	 +} + +void MainController::handleInputNotIdle() { +	 +} +  void MainController::handleIncomingPresence(boost::shared_ptr<Presence> presence) {  	//FIXME: subscribe, subscribed  	rosterController_->handleIncomingPresence(presence); @@ -273,6 +286,8 @@ void MainController::handleCancelLoginRequest() {  void MainController::signOut() {  	logout(); +	idleDetector_->onInputIdle.connect(boost::bind(&MainController::handleInputIdle, this)); +	idleDetector_->onInputNotIdle.connect(boost::bind(&MainController::handleInputNotIdle, this));  	loginWindow_->loggedOut();  	foreach (JIDChatControllerPair controllerPair, chatControllers_) {  		delete controllerPair.second; diff --git a/Swift/Controllers/MainController.h b/Swift/Controllers/MainController.h index 2971493..5cdd9fa 100644 --- a/Swift/Controllers/MainController.h +++ b/Swift/Controllers/MainController.h @@ -25,6 +25,7 @@ namespace Swift {  	class ChatWindowFactory;  	class ChatController;  	class EventController; +	class IdleDetector;  	class MainWindowFactory;  	class MainWindow;  	class NickResolver; @@ -46,7 +47,7 @@ namespace Swift {  	class MainController : public MUCRegistry {  		public: -			MainController(ChatWindowFactory* chatWindowFactory, MainWindowFactory *mainWindowFactory, LoginWindowFactory *loginWindowFactory, TreeWidgetFactory* treeWidgetFactory, SettingsProvider *settings, Application* application, SystemTray* systemTray, SoundPlayer* soundPlayer); +			MainController(ChatWindowFactory* chatWindowFactory, MainWindowFactory *mainWindowFactory, LoginWindowFactory *loginWindowFactory, TreeWidgetFactory* treeWidgetFactory, SettingsProvider *settings, Application* application, SystemTray* systemTray, SoundPlayer* soundPlayer, IdleDetector* idleDetector);  			~MainController(); @@ -68,12 +69,13 @@ namespace Swift {  			void handleOwnVCardReceived(boost::shared_ptr<VCard> vCard, const boost::optional<Error>& error);  			ChatController* getChatController(const JID &contact);  			void sendPresence(boost::shared_ptr<Presence> presence); +			void handleInputIdle(); +			void handleInputNotIdle();  			void logout();  			void signOut();  			virtual bool isMUC(const JID& muc) const; -		private:	  			void performLoginFromCachedCredentials();  			void setManagersEnabled(bool enabled);  			Client* client_; @@ -92,6 +94,7 @@ namespace Swift {  			SoftwareVersionResponder* clientVersionResponder_;  			NickResolver* nickResolver_;  			DiscoInfoResponder* discoResponder_; +			IdleDetector* idleDetector_;  			boost::shared_ptr<CapsInfo> capsInfo_;  			std::map<JID, MUCController*> mucControllers_;  			std::map<JID, ChatController*> chatControllers_; diff --git a/Swift/QtUI/QtIdleDetector.cpp b/Swift/QtUI/QtIdleDetector.cpp new file mode 100644 index 0000000..e947854 --- /dev/null +++ b/Swift/QtUI/QtIdleDetector.cpp @@ -0,0 +1,16 @@ +#include "QtIdleDetector.h" + +namespace Swift { + +QtIdleDetector::QtIdleDetector() { +} + +QtIdleDetector::~QtIdleDetector() { +} + +void QtIdleDetector::forceNotIdle() { + +} + + +} diff --git a/Swift/QtUI/QtIdleDetector.h b/Swift/QtUI/QtIdleDetector.h new file mode 100644 index 0000000..e21e4a8 --- /dev/null +++ b/Swift/QtUI/QtIdleDetector.h @@ -0,0 +1,14 @@ +#pragma once + +#include "Swift/Controllers/IdleDetector.h" + +namespace Swift { +class QtIdleDetector : public IdleDetector { +	public: +		QtIdleDetector(); +		virtual ~QtIdleDetector(); +		virtual void forceNotIdle(); +	   +		 +}; +} diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp index 656e8ce..0def66f 100644 --- a/Swift/QtUI/QtSwift.cpp +++ b/Swift/QtUI/QtSwift.cpp @@ -8,6 +8,7 @@  #include "Roster/QtTreeWidgetFactory.h"  #include "QtSystemTray.h"  #include "QtSoundPlayer.h" +#include "QtIdleDetector.h"  #include <boost/bind.hpp>  #include <QSplitter> @@ -41,10 +42,11 @@ QtSwift::QtSwift(bool netbookMode) {  	chatWindowFactory_ = new QtChatWindowFactory(treeWidgetFactory_, splitter_, settings_);  	rosterWindowFactory_ = new QtMainWindowFactory(treeWidgetFactory_);  	soundPlayer_ = new QtSoundPlayer(); +	idleDetector_ = new QtIdleDetector();  	if (splitter_) {  		splitter_->show();  	} -	mainController_ = new MainController(chatWindowFactory_, rosterWindowFactory_, loginWindowFactory_, treeWidgetFactory_, settings_, application_, systemTray_, soundPlayer_); +	mainController_ = new MainController(chatWindowFactory_, rosterWindowFactory_, loginWindowFactory_, treeWidgetFactory_, settings_, application_, systemTray_, soundPlayer_, idleDetector_);  }  QtSwift::~QtSwift() { @@ -58,6 +60,7 @@ QtSwift::~QtSwift() {  	delete systemTray_;  	delete splitter_;  	delete soundPlayer_; +	delete idleDetector_;  }  } diff --git a/Swift/QtUI/QtSwift.h b/Swift/QtUI/QtSwift.h index 263dc05..60ff5a7 100644 --- a/Swift/QtUI/QtSwift.h +++ b/Swift/QtUI/QtSwift.h @@ -7,6 +7,7 @@  #include "QtMainWindowFactory.h"  #include "QtChatWindowFactory.h"  #include "QtSettingsProvider.h" +#include "QtIdleDetector.h"  class QSplitter; @@ -36,6 +37,7 @@ namespace Swift {  			QtSystemTray* systemTray_;  			QSplitter* splitter_;  			QtSoundPlayer* soundPlayer_; +			QtIdleDetector* idleDetector_;  			Application* application_;  	};  } diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript index cf0dc47..c70f8a0 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -51,6 +51,7 @@ sources = [  		"QtAddContactDialog.cpp",  		"QtChatWindow.cpp",  		"QtChatWindowFactory.cpp", +		"QtIdleDetector.cpp",  		"QtJoinMUCDialog.cpp",  		"QtLoginWindow.cpp",  		"QtLoginWindowFactory.cpp",  | 
 Swift