From 0c0df47a4667a0cd5b0005b70c1beda376678d09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Tue, 21 Jul 2009 16:56:02 +0200
Subject: Load stored VCard.


diff --git a/Slimber/Cocoa/Makefile.inc b/Slimber/Cocoa/Makefile.inc
index 6658dea..e4a9c67 100644
--- a/Slimber/Cocoa/Makefile.inc
+++ b/Slimber/Cocoa/Makefile.inc
@@ -3,6 +3,8 @@ SLIMBER_COCOA_BINARY = \
 	Slimber/Cocoa/Slimber
 SLIMBER_COCOA_SOURCES = \
 	Slimber/Server.cpp \
+	Slimber/VCardCollection.cpp \
+	Slimber/FileVCardCollection.cpp \
 	Slimber/Cocoa/MainController.mm \
 	Slimber/Cocoa/Slimber.mm \
 	Slimber/Cocoa/main.mm \
diff --git a/Slimber/FileVCardCollection.cpp b/Slimber/FileVCardCollection.cpp
index 16c53c4..eb7d9cc 100644
--- a/Slimber/FileVCardCollection.cpp
+++ b/Slimber/FileVCardCollection.cpp
@@ -2,17 +2,30 @@
 
 #include <boost/filesystem/fstream.hpp>
 
+#include "Swiften/Base/ByteArray.h"
 #include "Swiften/Elements/VCard.h"
 #include "Swiften/Serializer/PayloadSerializers/VCardSerializer.h"
+#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h"
+#include "Swiften/Parser/PayloadParsers/VCardParser.h"
 
 namespace Swift {
 
 FileVCardCollection::FileVCardCollection(boost::filesystem::path dir) : vcardsPath(dir) {
-	vcard = boost::shared_ptr<VCard>(new VCard());
 }
 
 boost::shared_ptr<VCard> FileVCardCollection::getOwnVCard() const {
-	return vcard;
+	if (boost::filesystem::exists(vcardsPath / std::string("vcard.xml"))) {
+		ByteArray data;
+		data.readFromFile(boost::filesystem::path(vcardsPath / std::string("vcard.xml")).string());
+
+		VCardParser parser;
+		PayloadParserTester tester(&parser);
+		tester.parse(String(data.getData(), data.getSize()));
+		return boost::dynamic_pointer_cast<VCard>(parser.getPayload());
+	}
+	else {
+		return boost::shared_ptr<VCard>(new VCard());
+	}
 }
 
 void FileVCardCollection::setOwnVCard(boost::shared_ptr<VCard> v) {
diff --git a/Slimber/FileVCardCollection.h b/Slimber/FileVCardCollection.h
index 3d805a8..dde47df 100644
--- a/Slimber/FileVCardCollection.h
+++ b/Slimber/FileVCardCollection.h
@@ -15,6 +15,5 @@ namespace Swift {
 
 		private:
 			boost::filesystem::path vcardsPath;
-			boost::shared_ptr<VCard> vcard;
 	};
 }
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h b/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h
index bac33bf..20a5feb 100644
--- a/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h
+++ b/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h
@@ -1,10 +1,8 @@
-#ifndef SWIFTEN_PayloadParserTester_H
-#define SWIFTEN_PayloadParserTester_H
+#pragma once
 
 #include "Swiften/Parser/UnitTest/ParserTester.h"
+#include "Swiften/Parser/PayloadParser.h"
 
 namespace Swift {
 	typedef ParserTester<PayloadParser> PayloadParserTester;
 }
-
-#endif
-- 
cgit v0.10.2-6-g49f6