From 358f741f45ac92d07b923afd51aeb39704277374 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Tue, 21 Jul 2009 15:30:09 +0200
Subject: Add VCardCollection.


diff --git a/Slimber/Cocoa/Slimber.h b/Slimber/Cocoa/Slimber.h
index 7964581..c2c0e2d 100644
--- a/Slimber/Cocoa/Slimber.h
+++ b/Slimber/Cocoa/Slimber.h
@@ -10,6 +10,7 @@
 @class Menulet;
 namespace Swift {
 	class Server;
+	class VCardCollection;
 }
 
 class Slimber {
@@ -24,6 +25,7 @@ class Slimber {
 	private:
 		boost::shared_ptr<Swift::DNSSDService> dnsSDService;
 		boost::shared_ptr<Swift::LinkLocalRoster>linkLocalRoster;
+		Swift::VCardCollection* vCardCollection;
 		Swift::Server* server;
 		Menulet* menulet;
 };
diff --git a/Slimber/Cocoa/Slimber.mm b/Slimber/Cocoa/Slimber.mm
index d64cd58..ae1d9fd 100644
--- a/Slimber/Cocoa/Slimber.mm
+++ b/Slimber/Cocoa/Slimber.mm
@@ -3,8 +3,10 @@
 #include "Swiften/Base/foreach.h"
 #include "Swiften/Elements/RosterPayload.h"
 #include "Swiften/LinkLocal/AppleDNSSDService.h"
+#include "Swiften/Application/Platform/PlatformApplication.h"
 #include "Slimber/Cocoa/Menulet.h"
 #include "Slimber/Server.h"
+#include "Slimber/FileVCardCollection.h"
 
 using namespace Swift;
 
@@ -14,7 +16,9 @@ Slimber::Slimber() {
 	linkLocalRoster = boost::shared_ptr<LinkLocalRoster>(new LinkLocalRoster(dnsSDService));
 	linkLocalRoster->onRosterChanged.connect(boost::bind(&Slimber::handleRosterChanged, this));
 
-	server = new Server(5222, 5562, linkLocalRoster, dnsSDService);
+	vCardCollection = new FileVCardCollection(PlatformApplication("Slimber").getSettingsDir());
+
+	server = new Server(5222, 5562, linkLocalRoster, dnsSDService, vCardCollection);
 	server->onSelfConnected.connect(boost::bind(&Slimber::handleSelfConnected, this, _1));
 
 	menulet = [[Menulet alloc] init];
@@ -22,8 +26,9 @@ Slimber::Slimber() {
 }
 
 Slimber::~Slimber() {
-	delete server;
 	[menulet release];
+	delete server;
+	delete vCardCollection;
 }
 
 void Slimber::handleSelfConnected(bool b) {
diff --git a/Slimber/FileVCardCollection.cpp b/Slimber/FileVCardCollection.cpp
new file mode 100644
index 0000000..60be5c0
--- /dev/null
+++ b/Slimber/FileVCardCollection.cpp
@@ -0,0 +1,14 @@
+#include "Slimber/FileVCardCollection.h"
+
+namespace Swift {
+
+FileVCardCollection::FileVCardCollection(boost::filesystem::path dir) : vcardsPath(dir) {
+}
+
+boost::shared_ptr<VCard> FileVCardCollection::getOwnVCard() const {
+}
+
+void FileVCardCollection::setOwnVCard(boost::shared_ptr<VCard> vcard) {
+}
+
+}
diff --git a/Slimber/FileVCardCollection.h b/Slimber/FileVCardCollection.h
new file mode 100644
index 0000000..dde47df
--- /dev/null
+++ b/Slimber/FileVCardCollection.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+#include <boost/filesystem.hpp>
+
+#include "Slimber/VCardCollection.h"
+
+namespace Swift {
+	class FileVCardCollection : public VCardCollection {
+		public:
+			FileVCardCollection(boost::filesystem::path dir);
+
+			boost::shared_ptr<VCard> getOwnVCard() const;
+			void setOwnVCard(boost::shared_ptr<VCard> vcard);
+
+		private:
+			boost::filesystem::path vcardsPath;
+	};
+}
diff --git a/Slimber/Makefile.inc b/Slimber/Makefile.inc
index 86692b3..6d52f0f 100644
--- a/Slimber/Makefile.inc
+++ b/Slimber/Makefile.inc
@@ -1,5 +1,7 @@
 SLIMBER_TARGET = Slimber/slimber
 SLIMBER_SOURCES = \
+	Slimber/FileVCardCollection.cpp \
+	Slimber/VCardCollection.cpp \
 	Slimber/Server.cpp \
 	Slimber/main.cpp
 SLIMBER_OBJECTS = \
diff --git a/Slimber/Server.cpp b/Slimber/Server.cpp
index 53c02a0..c331416 100644
--- a/Slimber/Server.cpp
+++ b/Slimber/Server.cpp
@@ -13,17 +13,19 @@
 #include "Swiften/LinkLocal/OutgoingLinkLocalSession.h"
 #include "Swiften/LinkLocal/IncomingLinkLocalSession.h"
 #include "Swiften/Network/ConnectionServer.h"
+#include "Slimber/VCardCollection.h"
 #include "Swiften/Server/ServerFromClientSession.h"
 
 namespace Swift {
 
-Server::Server(int clientConnectionPort, int linkLocalConnectionPort, boost::shared_ptr<LinkLocalRoster> linkLocalRoster, boost::shared_ptr<DNSSDService> dnsSDService) : 
+Server::Server(int clientConnectionPort, int linkLocalConnectionPort, boost::shared_ptr<LinkLocalRoster> linkLocalRoster, boost::shared_ptr<DNSSDService> dnsSDService, VCardCollection* vCardCollection) : 
 		dnsSDServiceRegistered_(false), 
 		rosterRequested_(false), 
 		clientConnectionPort_(clientConnectionPort), 
 		linkLocalConnectionPort_(linkLocalConnectionPort),
 		linkLocalRoster_(linkLocalRoster),
-		dnsSDService_(dnsSDService) {
+		dnsSDService_(dnsSDService),
+		vCardCollection_(vCardCollection) {
 	serverFromClientConnectionServer_ = 
 			boost::shared_ptr<BoostConnectionServer>(new BoostConnectionServer(
 					clientConnectionPort, &boostIOServiceThread_.getIOService()));
diff --git a/Slimber/Server.h b/Slimber/Server.h
index d8b6c6c..b85aec8 100644
--- a/Slimber/Server.h
+++ b/Slimber/Server.h
@@ -22,9 +22,11 @@
 #include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h"
 
 namespace Swift {
+	class VCardCollection;
+
 	class Server {
 		public:
-			Server(int clientConnectionPort, int linkLocalConnectionPort, boost::shared_ptr<LinkLocalRoster>, boost::shared_ptr<DNSSDService> dnsSDService);
+			Server(int clientConnectionPort, int linkLocalConnectionPort, boost::shared_ptr<LinkLocalRoster>, boost::shared_ptr<DNSSDService> dnsSDService, VCardCollection* vCardCollection);
 
 			boost::signal<void (bool)> onSelfConnected;
 
@@ -66,6 +68,7 @@ namespace Swift {
 			int linkLocalConnectionPort_;
 			boost::shared_ptr<LinkLocalRoster> linkLocalRoster_;
 			boost::shared_ptr<DNSSDService> dnsSDService_;
+			VCardCollection* vCardCollection_;
 			boost::shared_ptr<BoostConnectionServer> serverFromClientConnectionServer_;
 			boost::shared_ptr<ServerFromClientSession> serverFromClientSession_;
 			boost::shared_ptr<BoostConnectionServer> serverFromNetworkConnectionServer_;
diff --git a/Slimber/VCardCollection.cpp b/Slimber/VCardCollection.cpp
new file mode 100644
index 0000000..1477429
--- /dev/null
+++ b/Slimber/VCardCollection.cpp
@@ -0,0 +1,8 @@
+#include "Slimber/VCardCollection.h"
+
+namespace Swift {
+
+VCardCollection::~VCardCollection() {
+}
+
+}
diff --git a/Slimber/VCardCollection.h b/Slimber/VCardCollection.h
new file mode 100644
index 0000000..42f7df7
--- /dev/null
+++ b/Slimber/VCardCollection.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+
+#include "Swiften/Elements/VCard.h"
+
+namespace Swift {
+	class VCardCollection {
+		public:
+			virtual ~VCardCollection();
+
+			virtual boost::shared_ptr<VCard> getOwnVCard() const = 0;
+			virtual void setOwnVCard(boost::shared_ptr<VCard> vcard) = 0;
+	};
+}
-- 
cgit v0.10.2-6-g49f6