summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2010-08-21 18:29:33 (GMT)
committerRemko Tronçon <git@el-tramo.be>2010-08-21 18:30:47 (GMT)
commit734cdf96ee07357382914c1e38e19a5bf1f5078d (patch)
tree1fb7faf16f5cd4d49cb859a6c8304b9af7fde61f /Swiften
parente019b91aa2326795fa51a876e365573355576842 (diff)
downloadswift-contrib-734cdf96ee07357382914c1e38e19a5bf1f5078d.zip
swift-contrib-734cdf96ee07357382914c1e38e19a5bf1f5078d.tar.bz2
Store avatars per profile.
Diffstat (limited to 'Swiften')
-rw-r--r--Swiften/Avatars/AvatarFileStorage.cpp1
-rw-r--r--Swiften/Avatars/AvatarFileStorageFactory.h27
-rw-r--r--Swiften/Avatars/AvatarStorageFactory.cpp15
-rw-r--r--Swiften/Avatars/AvatarStorageFactory.h19
-rw-r--r--Swiften/SConscript1
5 files changed, 63 insertions, 0 deletions
diff --git a/Swiften/Avatars/AvatarFileStorage.cpp b/Swiften/Avatars/AvatarFileStorage.cpp
index a0ebd21..aeb8db5 100644
--- a/Swiften/Avatars/AvatarFileStorage.cpp
+++ b/Swiften/Avatars/AvatarFileStorage.cpp
@@ -12,6 +12,7 @@
namespace Swift {
AvatarFileStorage::AvatarFileStorage(const boost::filesystem::path& path) : path_(path) {
+ std::cerr << "Creating avatar file storage: " << path.string() << std::endl;
try {
boost::filesystem::create_directory(path_);
}
diff --git a/Swiften/Avatars/AvatarFileStorageFactory.h b/Swiften/Avatars/AvatarFileStorageFactory.h
new file mode 100644
index 0000000..fb5963c
--- /dev/null
+++ b/Swiften/Avatars/AvatarFileStorageFactory.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2010 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <boost/filesystem.hpp>
+
+#include "AvatarStorageFactory.h"
+#include "AvatarFileStorage.h"
+
+namespace Swift {
+ class AvatarFileStorageFactory: public AvatarStorageFactory {
+ public:
+ AvatarFileStorageFactory(const boost::filesystem::path& basePath) : basePath(basePath) {
+ }
+
+ virtual AvatarStorage* createAvatarStorage(const JID& profile) {
+ return new AvatarFileStorage(basePath / profile.getBare().getUTF8String());
+ }
+
+ private:
+ boost::filesystem::path basePath;
+ };
+}
diff --git a/Swiften/Avatars/AvatarStorageFactory.cpp b/Swiften/Avatars/AvatarStorageFactory.cpp
new file mode 100644
index 0000000..b525909
--- /dev/null
+++ b/Swiften/Avatars/AvatarStorageFactory.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2010 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#include "Swiften/Avatars/AvatarStorageFactory.h"
+
+namespace Swift {
+
+AvatarStorageFactory::~AvatarStorageFactory() {
+
+}
+
+}
diff --git a/Swiften/Avatars/AvatarStorageFactory.h b/Swiften/Avatars/AvatarStorageFactory.h
new file mode 100644
index 0000000..efc26e9
--- /dev/null
+++ b/Swiften/Avatars/AvatarStorageFactory.h
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2010 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+namespace Swift {
+ class AvatarStorage;
+ class JID;
+
+ class AvatarStorageFactory {
+ public:
+ virtual ~AvatarStorageFactory();
+
+ virtual AvatarStorage* createAvatarStorage(const JID& profile) = 0;
+ };
+}
diff --git a/Swiften/SConscript b/Swiften/SConscript
index 3d4d5f6..0a4530a 100644
--- a/Swiften/SConscript
+++ b/Swiften/SConscript
@@ -27,6 +27,7 @@ if env["SCONS_STAGE"] == "build" :
"Avatars/AvatarFileStorage.cpp",
"Avatars/AvatarManager.cpp",
"Avatars/AvatarStorage.cpp",
+ "Avatars/AvatarStorageFactory.cpp",
"Chat/ChatStateTracker.cpp",
"Chat/ChatStateNotifier.cpp",
"Chat/ChatStateMessageSender.cpp",