summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Application')
-rw-r--r--Swiften/Application/ApplicationPathProvider.cpp12
-rw-r--r--Swiften/Application/ApplicationPathProvider.h3
-rw-r--r--Swiften/Application/MacOSXApplicationPathProvider.cpp2
-rw-r--r--Swiften/Application/MacOSXApplicationPathProvider.h7
-rw-r--r--Swiften/Application/UnixApplicationPathProvider.h9
-rw-r--r--Swiften/Application/WindowsApplicationPathProvider.cpp2
-rw-r--r--Swiften/Application/WindowsApplicationPathProvider.h6
7 files changed, 41 insertions, 0 deletions
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 <iostream>
#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<boost::filesystem::path> 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 <boost/filesystem.hpp>
+#include <vector>
#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<boost::filesystem::path> 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<boost::filesystem::path> getResourceDirs() const {
+ return resourceDirs;
+ }
+
+ private:
+ std::vector<boost::filesystem::path> 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<boost::filesystem::path> getResourceDirs() const {
+ return resourceDirs;
+ }
+
+ private:
+ std::vector<boost::filesystem::path> 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<boost::filesystem::path> getResourceDirs() const {
+ return resourceDirs;
+ }
+
+ private:
+ std::vector<boost::filesystem::path> resourceDirs;
};
}