diff options
| author | Kevin Smith <git@kismith.co.uk> | 2010-04-04 23:14:37 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2010-04-04 23:14:37 (GMT) | 
| commit | 326cd32e2c9e3ec9bac54f5bb952928680c93749 (patch) | |
| tree | 6992a6810897fdcdc9cce9cc2c7e2b79bf0e6011 | |
| parent | a9173b68bf4a44325ec55843017d65d04a7f0c75 (diff) | |
| download | swift-326cd32e2c9e3ec9bac54f5bb952928680c93749.zip swift-326cd32e2c9e3ec9bac54f5bb952928680c93749.tar.bz2 | |
Allow sounds to be toggled.
Doesn't persist option yet.
Resolves: #192
| -rw-r--r-- | Swift/Controllers/MainController.cpp | 2 | ||||
| -rw-r--r-- | Swift/Controllers/SoundEventController.cpp | 13 | ||||
| -rw-r--r-- | Swift/Controllers/SoundEventController.h | 7 | ||||
| -rw-r--r-- | Swift/Controllers/UIEvents/ToggleSoundsUIEvent.h | 13 | ||||
| -rw-r--r-- | Swift/QtUI/QtLoginWindow.cpp | 13 | ||||
| -rw-r--r-- | Swift/QtUI/QtLoginWindow.h | 1 | 
6 files changed, 46 insertions, 3 deletions
| diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index d042115..ccce0bb 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -71,7 +71,7 @@ MainController::MainController(ChatWindowFactory* chatWindowFactory, MainWindowF  	eventController_->onEventQueueLengthChange.connect(boost::bind(&MainController::handleEventQueueLengthChange, this, _1));  	systemTrayController_ = new SystemTrayController(eventController_, systemTray); -	soundEventController_ = new SoundEventController(eventController_, soundPlayer, settings->getBoolSetting("playSounds", true)); +	soundEventController_ = new SoundEventController(eventController_, soundPlayer, settings->getBoolSetting("playSounds", true), uiEventStream_);  	loginWindow_ = loginWindowFactory_->createLoginWindow(uiEventStream_);  	foreach (String profile, settings->getAvailableProfiles()) {  		ProfileSettingsProvider* profileSettings = new ProfileSettingsProvider(profile, settings); diff --git a/Swift/Controllers/SoundEventController.cpp b/Swift/Controllers/SoundEventController.cpp index 456de44..29f7fbf 100644 --- a/Swift/Controllers/SoundEventController.cpp +++ b/Swift/Controllers/SoundEventController.cpp @@ -4,14 +4,18 @@  #include "Swift/Controllers/EventController.h"  #include "Swift/Controllers/SoundPlayer.h" +#include "Swift/Controllers/UIEvents/UIEventStream.h" +#include "Swift/Controllers/UIEvents/ToggleSoundsUIEvent.h"  namespace Swift { -SoundEventController::SoundEventController(EventController* eventController, SoundPlayer* soundPlayer, bool playSounds) { +SoundEventController::SoundEventController(EventController* eventController, SoundPlayer* soundPlayer, bool playSounds, UIEventStream* uiEvents) {  	eventController_ = eventController;  	eventController_->onEventQueueEventAdded.connect(boost::bind(&SoundEventController::handleEventQueueEventAdded, this, _1));  	soundPlayer_ = soundPlayer;  	playSounds_ = playSounds; +	uiEvents_ = uiEvents; +	uiEvents_->onUIEvent.connect(boost::bind(&SoundEventController::handleUIEvent, this, _1));  }  void SoundEventController::handleEventQueueEventAdded(boost::shared_ptr<StanzaEvent>) { @@ -22,4 +26,11 @@ void SoundEventController::setPlaySounds(bool playSounds) {  	playSounds_ = playSounds;  } +void SoundEventController::handleUIEvent(boost::shared_ptr<UIEvent> event) { +	boost::shared_ptr<ToggleSoundsUIEvent> soundEvent = boost::dynamic_pointer_cast<ToggleSoundsUIEvent>(event); +	if (soundEvent) { +		setPlaySounds(soundEvent->getEnabled()); +	} +} +  } diff --git a/Swift/Controllers/SoundEventController.h b/Swift/Controllers/SoundEventController.h index 07ac667..34499d4 100644 --- a/Swift/Controllers/SoundEventController.h +++ b/Swift/Controllers/SoundEventController.h @@ -4,17 +4,22 @@  #include "Swiften/Events/StanzaEvent.h" +#include "Swift/Controllers/UIEvents/UIEvent.h" +  namespace Swift {  	class EventController;  	class SoundPlayer; +	class UIEventStream;  	class SoundEventController {  		public: -			SoundEventController(EventController* eventController, SoundPlayer* soundPlayer, bool playSounds); +			SoundEventController(EventController* eventController, SoundPlayer* soundPlayer, bool playSounds, UIEventStream* uiEvents);  			void setPlaySounds(bool playSounds);  		private: +			void handleUIEvent(boost::shared_ptr<UIEvent> event);  			void handleEventQueueEventAdded(boost::shared_ptr<StanzaEvent> event);  			EventController* eventController_;  			SoundPlayer* soundPlayer_;  			bool playSounds_; +			UIEventStream* uiEvents_;  	};  } diff --git a/Swift/Controllers/UIEvents/ToggleSoundsUIEvent.h b/Swift/Controllers/UIEvents/ToggleSoundsUIEvent.h new file mode 100644 index 0000000..826ee09 --- /dev/null +++ b/Swift/Controllers/UIEvents/ToggleSoundsUIEvent.h @@ -0,0 +1,13 @@ +#pragma once + +#include "Swift/Controllers/UIEvents/UIEvent.h" + +namespace Swift { +	class ToggleSoundsUIEvent : public UIEvent { +		public: +			ToggleSoundsUIEvent(bool enable) : enabled_(enable) {}; +			bool getEnabled() {return enabled_;}; +		private: +			bool enabled_; +	}; +} diff --git a/Swift/QtUI/QtLoginWindow.cpp b/Swift/QtUI/QtLoginWindow.cpp index da23ea0..4f6b423 100644 --- a/Swift/QtUI/QtLoginWindow.cpp +++ b/Swift/QtUI/QtLoginWindow.cpp @@ -2,6 +2,7 @@  #include "Swift/Controllers/UIEvents/UIEventStream.h"  #include "Swift/Controllers/UIEvents/RequestXMLConsoleUIEvent.h" +#include "Swift/Controllers/UIEvents/ToggleSoundsUIEvent.h"  #include "Swiften/Base/Platform.h"  #include "QtAboutWidget.h" @@ -115,6 +116,13 @@ QtLoginWindow::QtLoginWindow(UIEventStream* uiEventStream) : QMainWindow() {  	QAction* xmlConsoleAction = new QAction(tr("Show Debug Console"), this);  	connect(xmlConsoleAction, SIGNAL(activated()), SLOT(handleShowXMLConsole()));  	toolsMenu_->addAction(xmlConsoleAction); + +	QAction* toggleSoundsAction = new QAction(tr("Toggle Sounds"), this); +	toggleSoundsAction->setCheckable(true); +	toggleSoundsAction->setChecked(true); +	connect(toggleSoundsAction, SIGNAL(toggled(bool)), SLOT(handleToggleSounds(bool))); +	swiftMenu_->addAction(toggleSoundsAction); +  	QAction* quitAction = new QAction("Quit", this);  	connect(quitAction, SIGNAL(activated()), SLOT(handleQuit())); @@ -234,6 +242,11 @@ void QtLoginWindow::handleShowXMLConsole() {  	uiEventStream_->send(boost::shared_ptr<RequestXMLConsoleUIEvent>(new RequestXMLConsoleUIEvent()));  } +void QtLoginWindow::handleToggleSounds(bool enabled) { +	uiEventStream_->send(boost::shared_ptr<ToggleSoundsUIEvent>(new ToggleSoundsUIEvent(enabled))); +} + +  void QtLoginWindow::handleQuit() {  	QApplication::quit();  } diff --git a/Swift/QtUI/QtLoginWindow.h b/Swift/QtUI/QtLoginWindow.h index 38852ce..40ea4ec 100644 --- a/Swift/QtUI/QtLoginWindow.h +++ b/Swift/QtUI/QtLoginWindow.h @@ -39,6 +39,7 @@ namespace Swift {  			void handleCertficateChecked(bool);  			void handleQuit();  			void handleShowXMLConsole(); +			void handleToggleSounds(bool enabled);  			void handleAbout();  			void bringToFront();  			void handleUsernameTextChanged(); | 
 Swift
 Swift