diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-07-21 14:56:02 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-07-21 14:56:02 (GMT) |
commit | 0c0df47a4667a0cd5b0005b70c1beda376678d09 (patch) | |
tree | 058075878cb581a9d7cafef1b058edd2b9008a5a /Slimber/FileVCardCollection.cpp | |
parent | f4f175051b0c95edad200d66fa12f1b9511e2c6b (diff) | |
download | swift-contrib-0c0df47a4667a0cd5b0005b70c1beda376678d09.zip swift-contrib-0c0df47a4667a0cd5b0005b70c1beda376678d09.tar.bz2 |
Load stored VCard.
Diffstat (limited to 'Slimber/FileVCardCollection.cpp')
-rw-r--r-- | Slimber/FileVCardCollection.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
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) { |