From 7dafb815ca404f1e15c9cdf6b26817c941dae4ec Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Sat, 12 Sep 2009 19:55:01 +0100
Subject: Getting ready for sounds to be turned off.


diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index 1fc0b2d..6bed7da 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -70,7 +70,7 @@ MainController::MainController(ChatWindowFactory* chatWindowFactory, MainWindowF
 	eventController_ = new EventController();
 	eventController_->onEventQueueLengthChange.connect(boost::bind(&MainController::handleEventQueueLengthChange, this, _1));
 	systemTrayController_ = new SystemTrayController(eventController_, systemTray);
-	soundEventController_ = new SoundEventController(eventController_, soundPlayer);
+	soundEventController_ = new SoundEventController(eventController_, soundPlayer, settings->getBoolSetting("playSounds", true));
 	loginWindow_ = loginWindowFactory_->createLoginWindow(settings->getStringSetting("jid"), settings->getStringSetting("pass"), settings->getStringSetting("certificate"));
 	loginWindow_->onLoginRequest.connect(boost::bind(&MainController::handleLoginRequest, this, _1, _2, _3, _4));
 }
diff --git a/Swift/Controllers/SoundEventController.cpp b/Swift/Controllers/SoundEventController.cpp
index 46d6ddb..133becf 100644
--- a/Swift/Controllers/SoundEventController.cpp
+++ b/Swift/Controllers/SoundEventController.cpp
@@ -7,15 +7,19 @@
 
 namespace Swift {
 
-SoundEventController::SoundEventController(EventController* eventController, SoundPlayer* soundPlayer) {
+SoundEventController::SoundEventController(EventController* eventController, SoundPlayer* soundPlayer, bool playSounds) {
 	eventController_ = eventController;
 	soundPlayer_ = soundPlayer;
+	playSounds_ = playSounds;
 	eventController_->onEventQueueEventAdded.connect(boost::bind(&SoundEventController::handleEventQueueEventAdded, this, _1));
 }
 
 void SoundEventController::handleEventQueueEventAdded(boost::shared_ptr<MessageEvent> event) {
-	soundPlayer_->playSound(SoundPlayer::MessageReceived);
+	if (playSounds_) soundPlayer_->playSound(SoundPlayer::MessageReceived);
 }
 
+void SoundEventController::setPlaySounds(bool playSounds) {
+	playSounds_ = playSounds;
+}
 
 }
diff --git a/Swift/Controllers/SoundEventController.h b/Swift/Controllers/SoundEventController.h
index 8da057d..9ac6f76 100644
--- a/Swift/Controllers/SoundEventController.h
+++ b/Swift/Controllers/SoundEventController.h
@@ -9,10 +9,12 @@ namespace Swift {
 	class SoundPlayer;
 	class SoundEventController {
 		public:
-			SoundEventController(EventController* eventController, SoundPlayer* soundPlayer);
+			SoundEventController(EventController* eventController, SoundPlayer* soundPlayer, bool playSounds);
+			void setPlaySounds(bool playSounds);
 		private:
 			void handleEventQueueEventAdded(boost::shared_ptr<MessageEvent> event);
 			EventController* eventController_;
 			SoundPlayer* soundPlayer_;
+			bool playSounds_;
 	};
 }
diff --git a/Swift/QtUI/QtSettingsProvider.cpp b/Swift/QtUI/QtSettingsProvider.cpp
index 42540c1..cf02d83 100644
--- a/Swift/QtUI/QtSettingsProvider.cpp
+++ b/Swift/QtUI/QtSettingsProvider.cpp
@@ -19,5 +19,14 @@ void QtSettingsProvider::storeString(const String &settingPath, const String &se
 	settings_.setValue(P2QSTRING(settingPath), P2QSTRING(settingValue));
 }
 
+bool QtSettingsProvider::getBoolSetting(const String &settingPath, bool defaultValue) {
+	QVariant setting = settings_.value(P2QSTRING(settingPath));
+	return setting.isNull() ? defaultValue : setting.toBool();
+}
+
+void QtSettingsProvider::storeBool(const String &settingPath, bool settingValue) {
+	settings_.setValue(P2QSTRING(settingPath), settingValue);
+}
+
 }
 
diff --git a/Swift/QtUI/QtSettingsProvider.h b/Swift/QtUI/QtSettingsProvider.h
index 4739f60..fec4101 100644
--- a/Swift/QtUI/QtSettingsProvider.h
+++ b/Swift/QtUI/QtSettingsProvider.h
@@ -13,6 +13,8 @@ class QtSettingsProvider : public SettingsProvider {
 		virtual ~QtSettingsProvider();
 		virtual String getStringSetting(const String &settingPath);
 		virtual void storeString(const String &settingPath, const String &settingValue);
+		virtual bool getBoolSetting(const String &settingPath, bool defaultValue);
+		virtual void storeBool(const String &settingPath, bool settingValue);
 	private:
 		QSettings settings_;
 };
diff --git a/Swiften/Settings/SettingsProvider.h b/Swiften/Settings/SettingsProvider.h
index ebf8d24..e311911 100644
--- a/Swiften/Settings/SettingsProvider.h
+++ b/Swiften/Settings/SettingsProvider.h
@@ -10,6 +10,8 @@ class SettingsProvider {
 		virtual ~SettingsProvider() {}
 		virtual String getStringSetting(const String &settingPath) = 0;
 		virtual void storeString(const String &settingPath, const String &settingValue) = 0;
+		virtual bool getBoolSetting(const String &settingPath, bool defaultValue) = 0;
+		virtual void storeBool(const String &settingPath, bool settingValue) = 0;
 };
 
 }
-- 
cgit v0.10.2-6-g49f6