From b3dc968b7c424351bac87bfed42681bd0500d86c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Fri, 20 Aug 2010 19:14:02 +0200 Subject: Don't bundle sounds. diff --git a/.cproject b/.cproject index 400d104..0e7336d 100644 --- a/.cproject +++ b/.cproject @@ -417,6 +417,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/QtUI/QtSoundPlayer.cpp b/Swift/QtUI/QtSoundPlayer.cpp index 94d2ea5..7fd6564 100644 --- a/Swift/QtUI/QtSoundPlayer.cpp +++ b/Swift/QtUI/QtSoundPlayer.cpp @@ -7,18 +7,31 @@ #include "QtSoundPlayer.h" #include +#include + +#include "Swiften/Application/ApplicationPathProvider.h" namespace Swift { -QtSoundPlayer::QtSoundPlayer() { +QtSoundPlayer::QtSoundPlayer(ApplicationPathProvider* applicationPathProvider) : applicationPathProvider(applicationPathProvider) { } void QtSoundPlayer::playSound(SoundEffect sound) { switch (sound) { - case MessageReceived: - QSound::play(":/sounds/message-received.wav"); + case MessageReceived: + playSound("/sounds/message-received.wav"); break; } } +void QtSoundPlayer::playSound(const String& soundResource) { + boost::filesystem::path resourcePath = applicationPathProvider->getResourcePath(soundResource); + if (boost::filesystem::exists(resourcePath)) { + QSound::play(resourcePath.string().c_str()); + } + else { + std::cerr << "Unable to find sound: " << soundResource << std::endl; + } +} + } diff --git a/Swift/QtUI/QtSoundPlayer.h b/Swift/QtUI/QtSoundPlayer.h index 89e2935..21ad8bb 100644 --- a/Swift/QtUI/QtSoundPlayer.h +++ b/Swift/QtUI/QtSoundPlayer.h @@ -11,11 +11,20 @@ #include namespace Swift { + class ApplicationPathProvider; + class String; + class QtSoundPlayer : public QObject, public SoundPlayer { Q_OBJECT public: - QtSoundPlayer(); + QtSoundPlayer(ApplicationPathProvider* applicationPathProvider); void playSound(SoundEffect sound); + + private: + void playSound(const String& soundResource); + + private: + ApplicationPathProvider* applicationPathProvider; }; } diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp index ef02096..55bc112 100644 --- a/Swift/QtUI/QtSwift.cpp +++ b/Swift/QtUI/QtSwift.cpp @@ -80,7 +80,7 @@ QtSwift::QtSwift(po::variables_map options) : autoUpdater_(NULL) { applicationPathProvider_ = new PlatformApplicationPathProvider(SWIFT_APPLICATION_NAME); avatarStorage_ = new AvatarFileStorage(applicationPathProvider_->getAvatarDir()); chatWindowFactory_ = new QtChatWindowFactory(splitter_, settings_, tabs_); - soundPlayer_ = new QtSoundPlayer(); + soundPlayer_ = new QtSoundPlayer(applicationPathProvider_); if (splitter_) { splitter_->show(); } diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript index 6c30f42..0d043fb 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -127,11 +127,13 @@ myenv.Uic4("QtBookmarkDetailWindow.ui") myenv.Qrc("DefaultTheme.qrc") myenv.Qrc("Swift.qrc") +commonResources = ["../resources/sounds"] + if env["PLATFORM"] == "darwin" : frameworks = [] if env["HAVE_SPARKLE"] : frameworks.append(env["SPARKLE_FRAMEWORK"]) - app = myenv.AppBundle("Swift", version = myenv["SWIFT_VERSION"], resources = ["../resources/MacOSX/Swift.icns"], frameworks = frameworks) + app = myenv.AppBundle("Swift", version = myenv["SWIFT_VERSION"], resources = ["../resources/MacOSX/Swift.icns"] + commonResources, frameworks = frameworks) if env["DIST"] : myenv.Command(["Swift-${SWIFT_VERSION}.dmg"], [app], [ "$QTDIR/bin/macdeployqt $SOURCE -dmg", @@ -142,13 +144,15 @@ if env.get("SWIFT_INSTALLDIR", "") : env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "bin"), swiftProgram) env.InstallAs(os.path.join(env["SWIFT_INSTALLDIR"], "share", "pixmaps", "swift.xpm"), "../resources/logo/logo-icon-32.xpm") env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "share", "applications"), "../resources/swift.desktop") - + for resource in commonResources : + env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "share", "swift"), resource) + if env["PLATFORM"] == "win32" : if env["DIST"] : myenv.WindowsBundle("Swift", resources = [ os.path.join(env["OPENSSL_DIR"], "bin", "ssleay32.dll"), - os.path.join(env["OPENSSL_DIR"], "bin", "libeay32.dll"), - ], + os.path.join(env["OPENSSL_DIR"], "bin", "libeay32.dll"), + ] + commonResources, qtimageformats = ["gif", "ico", "jpeg", "mng", "svg", "tiff"], qtlibs = ["QtCore4", "QtGui4", "QtNetwork4", "QtWebKit4", "QtXMLPatterns4", "phonon4"]) diff --git a/Swift/QtUI/Swift.qrc b/Swift/QtUI/Swift.qrc index b14569e..4da687c 100644 --- a/Swift/QtUI/Swift.qrc +++ b/Swift/QtUI/Swift.qrc @@ -13,7 +13,6 @@ ../resources/icons/avatar.png ../resources/icons/tray-standard.png ../resources/icons/new-chat.png - ../resources/sounds/message-received.wav ../../COPYING diff --git a/Swiften/Application/ApplicationPathProvider.cpp b/Swiften/Application/ApplicationPathProvider.cpp index ec19160..47ef1ad 100644 --- a/Swiften/Application/ApplicationPathProvider.cpp +++ b/Swiften/Application/ApplicationPathProvider.cpp @@ -10,6 +10,7 @@ #include #include "Swiften/Application/ApplicationPathProvider.h" +#include "Swiften/Base/foreach.h" namespace Swift { @@ -38,4 +39,15 @@ boost::filesystem::path ApplicationPathProvider::getProfileDir(const String& pro return result; } +boost::filesystem::path ApplicationPathProvider::getResourcePath(const String& resource) const { + std::vector resourcePaths = getResourceDirs(); + foreach(const boost::filesystem::path& resourcePath, resourcePaths) { + boost::filesystem::path r(resourcePath / resource.getUTF8String()); + if (boost::filesystem::exists(r)) { + return r; + } + } + return boost::filesystem::path(); +} + } diff --git a/Swiften/Application/ApplicationPathProvider.h b/Swiften/Application/ApplicationPathProvider.h index cf97299..e9c0864 100644 --- a/Swiften/Application/ApplicationPathProvider.h +++ b/Swiften/Application/ApplicationPathProvider.h @@ -7,6 +7,7 @@ #pragma once #include +#include #include "Swiften/Base/String.h" @@ -22,8 +23,10 @@ namespace Swift { virtual boost::filesystem::path getSettingsDir() const = 0; virtual boost::filesystem::path getExecutableDir() const = 0; boost::filesystem::path getProfileDir(const String& profile) const; + boost::filesystem::path getResourcePath(const String& resource) const; protected: + virtual std::vector getResourceDirs() const = 0; const String& getApplicationName() const { return applicationName; } diff --git a/Swiften/Application/MacOSXApplicationPathProvider.cpp b/Swiften/Application/MacOSXApplicationPathProvider.cpp index e4b17da..08ce885 100644 --- a/Swiften/Application/MacOSXApplicationPathProvider.cpp +++ b/Swiften/Application/MacOSXApplicationPathProvider.cpp @@ -14,6 +14,8 @@ namespace Swift { MacOSXApplicationPathProvider::MacOSXApplicationPathProvider(const String& name) : ApplicationPathProvider(name) { + resourceDirs.push_back(getExecutableDir() / "../Resources"); + resourceDirs.push_back(getExecutableDir() / "../resources"); // Development } boost::filesystem::path MacOSXApplicationPathProvider::getSettingsDir() const { diff --git a/Swiften/Application/MacOSXApplicationPathProvider.h b/Swiften/Application/MacOSXApplicationPathProvider.h index e03c753..72cfb38 100644 --- a/Swiften/Application/MacOSXApplicationPathProvider.h +++ b/Swiften/Application/MacOSXApplicationPathProvider.h @@ -16,5 +16,12 @@ namespace Swift { virtual boost::filesystem::path getHomeDir() const; boost::filesystem::path getSettingsDir() const; virtual boost::filesystem::path getExecutableDir() const; + + virtual std::vector getResourceDirs() const { + return resourceDirs; + } + + private: + std::vector resourceDirs; }; } diff --git a/Swiften/Application/UnixApplicationPathProvider.h b/Swiften/Application/UnixApplicationPathProvider.h index 50cd4be..676cb94 100644 --- a/Swiften/Application/UnixApplicationPathProvider.h +++ b/Swiften/Application/UnixApplicationPathProvider.h @@ -17,6 +17,8 @@ namespace Swift { class UnixApplicationPathProvider : public ApplicationPathProvider { public: UnixApplicationPathProvider(const String& name) : ApplicationPathProvider(name) { + resourceDirs.push_back("/usr/share/swift"); + resourceDirs.push_back(getExecutableDir() / "../resources"); // Development } virtual boost::filesystem::path getHomeDir() const { @@ -46,6 +48,13 @@ namespace Swift { return boost::filesystem::path(); } } + + virtual std::vector getResourceDirs() const { + return resourceDirs; + } + + private: + std::vector resourceDirs; }; } diff --git a/Swiften/Application/WindowsApplicationPathProvider.cpp b/Swiften/Application/WindowsApplicationPathProvider.cpp index 2e84e90..e02da1e 100644 --- a/Swiften/Application/WindowsApplicationPathProvider.cpp +++ b/Swiften/Application/WindowsApplicationPathProvider.cpp @@ -13,6 +13,8 @@ namespace Swift { WindowsApplicationPathProvider::WindowsApplicationPathProvider(const String& name) : ApplicationPathProvider(name) { + resourceDirs.push_back(getExecutableDir()); + resourceDirs.push_back(getExecutableDir() / "../resources"); // Development } boost::filesystem::path WindowsApplicationPathProvider::getExecutableDir() const { diff --git a/Swiften/Application/WindowsApplicationPathProvider.h b/Swiften/Application/WindowsApplicationPathProvider.h index 1ba4298..1879300 100644 --- a/Swiften/Application/WindowsApplicationPathProvider.h +++ b/Swiften/Application/WindowsApplicationPathProvider.h @@ -28,5 +28,11 @@ namespace Swift { } virtual boost::filesystem::path getExecutableDir() const; + virtual std::vector getResourceDirs() const { + return resourceDirs; + } + + private: + std::vector resourceDirs; }; } -- cgit v0.10.2-6-g49f6