From 0c0df47a4667a0cd5b0005b70c1beda376678d09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= 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 +#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(new VCard()); } boost::shared_ptr 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(parser.getPayload()); + } + else { + return boost::shared_ptr(new VCard()); + } } void FileVCardCollection::setOwnVCard(boost::shared_ptr 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; }; } 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 PayloadParserTester; } - -#endif -- cgit v0.10.2-6-g49f6