3 commits - c++/lib c++/tests
Christian Mollekopf
mollekopf at kolabsys.com
Wed Feb 22 18:58:53 CET 2012
c++/lib/kolabcontact.cpp | 100 ++++++++++++++++++++++++++++++++++++++++-----
c++/lib/kolabcontact.h | 32 +++++++++++++-
c++/lib/kolabcontainers.h | 5 --
c++/lib/kolabformat.cpp | 14 ++----
c++/lib/xcalconversions.h | 8 +--
c++/lib/xcardconversions.h | 50 +++++++++++++---------
c++/tests/bindingstest.cpp | 24 +++++++++-
c++/tests/bindingstest.h | 1
8 files changed, 182 insertions(+), 52 deletions(-)
New commits:
commit cd59ca167c269edfddcaa355e62bc3b6aa36e7ee
Merge: cf4f3cc a71a5f5
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date: Wed Feb 22 18:58:48 2012 +0100
Merge branch 'master' of ssh://git.kolabsys.com/git/libkolabxml
commit cf4f3ccb971702f2c907a7ae540402eb036d9e8f
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date: Wed Feb 22 18:58:42 2012 +0100
Distlist + some other stuff
-set uid on xcard objects
-no created date on xcard objects
-no categories in distlist
diff --git a/c++/lib/kolabcontact.cpp b/c++/lib/kolabcontact.cpp
index 7bc50ac..835955b 100644
--- a/c++/lib/kolabcontact.cpp
+++ b/c++/lib/kolabcontact.cpp
@@ -19,6 +19,96 @@
namespace Kolab {
+struct DistList::Private
+{
+ Private() {}
+
+ std::string uid;
+ DateTime lastModified;
+ std::vector< std::string > categories;
+
+ std::string name;
+ std::vector<std::string> members;
+ std::vector<CustomProperty> customProperties;
+};
+
+DistList::DistList()
+: d(new DistList::Private())
+{
+
+}
+
+DistList::DistList(const DistList &other)
+: d(new DistList::Private())
+{
+ *d = *other.d;
+}
+
+DistList::~DistList()
+{
+
+}
+
+void DistList::operator=(const Kolab::DistList &other)
+{
+ *d = *other.d;
+}
+
+void DistList::setUid(const std::string &uid)
+{
+ d->uid = uid;
+}
+
+std::string DistList::uid() const
+{
+ return d->uid;
+}
+
+void DistList::setLastModified(const Kolab::DateTime &dt)
+{
+ d->lastModified = dt;
+}
+
+DateTime DistList::lastModified() const
+{
+ return d->lastModified;
+}
+
+void DistList::setName(const std::string &name)
+{
+ d->name = name;
+}
+
+std::string DistList::name() const
+{
+ return d->name;
+}
+
+void DistList::setMembers(const std::vector< std::string > members)
+{
+ d->members = members;
+}
+
+std::vector< std::string > DistList::members() const
+{
+ return d->members;
+}
+
+void DistList::setCustomProperties(const std::vector< CustomProperty >& c)
+{
+ d->customProperties = c;
+}
+
+std::vector< CustomProperty > DistList::customProperties() const
+{
+ return d->customProperties;
+}
+
+
+
+
+
+
struct Contact::Private
{
Private()
@@ -93,16 +183,6 @@ std::string Contact::uid() const
return d->uid;
}
-void Contact::setCreated(const Kolab::DateTime &created)
-{
- d->created = created;
-}
-
-DateTime Contact::created() const
-{
- return d->created;
-}
-
void Contact::setLastModified(const Kolab::DateTime &dt)
{
d->lastModified = dt;
diff --git a/c++/lib/kolabcontact.h b/c++/lib/kolabcontact.h
index c4a3456..e0f35ec 100644
--- a/c++/lib/kolabcontact.h
+++ b/c++/lib/kolabcontact.h
@@ -178,6 +178,35 @@ struct Crypto {
};
+
+
+class DistList {
+public:
+ DistList();
+ ~DistList();
+ DistList(const DistList &);
+ void operator=(const DistList &);
+
+ void setUid(const std::string &);
+ std::string uid() const;
+
+ void setLastModified(const DateTime &);
+ DateTime lastModified() const;
+
+ void setName(const std::string &);
+ std::string name() const;
+
+ void setMembers(const std::vector<std::string> members);
+ std::vector<std::string> members() const;
+
+ void setCustomProperties(const std::vector<CustomProperty> &);
+ std::vector<CustomProperty> customProperties() const;
+
+private:
+ struct Private;
+ boost::scoped_ptr<Private> d;
+};
+
class Contact {
public:
Contact();
@@ -188,9 +217,6 @@ public:
void setUid(const std::string &);
std::string uid() const;
- void setCreated(const DateTime &);
- DateTime created() const;
-
void setLastModified(const DateTime &);
DateTime lastModified() const;
diff --git a/c++/lib/kolabcontainers.h b/c++/lib/kolabcontainers.h
index a05dafe..b124b0f 100644
--- a/c++/lib/kolabcontainers.h
+++ b/c++/lib/kolabcontainers.h
@@ -345,11 +345,6 @@ class Journal {
//TODO
};
-
-class DistList {
- //TODO
-};
-
class Note {
//TODO
};
diff --git a/c++/lib/kolabformat.cpp b/c++/lib/kolabformat.cpp
index 1e4e33e..c6fd6fe 100644
--- a/c++/lib/kolabformat.cpp
+++ b/c++/lib/kolabformat.cpp
@@ -116,18 +116,16 @@ std::string writeContact(const Contact &contact)
DistList readDistlist(const std::string& s, bool isUrl)
{
-// boost::shared_ptr <Kolab::DistList> ptr = XCARD::deserializeCard<Kolab::DistList>(s, isUrl);
-// if (!ptr.get()) {
-// return Kolab::DistList();
-// }
-// return *ptr;
- return DistList();
+ boost::shared_ptr <Kolab::DistList> ptr = XCARD::deserializeCard<Kolab::DistList>(s, isUrl);
+ if (!ptr.get()) {
+ return Kolab::DistList();
+ }
+ return *ptr;
}
std::string writeDistlist(const DistList &list)
{
-// return serializeCard(list);
-return std::string();
+ return XCARD::serializeCard(list);
}
Note readNote(const std::string& s, bool isUrl)
diff --git a/c++/lib/xcalconversions.h b/c++/lib/xcalconversions.h
index 63eb7a1..32be15d 100644
--- a/c++/lib/xcalconversions.h
+++ b/c++/lib/xcalconversions.h
@@ -872,7 +872,7 @@ void setIncidenceProperties(I &inc, const T &prop)
}
inc.setRecurrenceID(*toDate(*prop.recurrence_id()), thisandfuture);
}
-
+
if (prop.summary()) {
inc.setSummary(toString(*prop.summary()));
}
@@ -880,7 +880,7 @@ void setIncidenceProperties(I &inc, const T &prop)
if (prop.description()) {
inc.setDescription(toString(*prop.description()));
}
-
+
if (prop.priority()) {
inc.setPriority(toInt(*prop.priority()));
}
diff --git a/c++/lib/xcardconversions.h b/c++/lib/xcardconversions.h
index fb1871f..2fc1291 100644
--- a/c++/lib/xcardconversions.h
+++ b/c++/lib/xcardconversions.h
@@ -225,6 +225,16 @@ void writeCard<Kolab::Contact>(vcard_4_0::vcard &vcard, const Kolab::Contact &co
{
using namespace vcard_4_0;
+ if (!contact.categories().empty()) {
+ vcard_4_0::vcard::categories_type cat;
+ vcard_4_0::vcard::categories_type::text_sequence seq;
+ BOOST_FOREACH(const std::string &s, contact.categories()) {
+ seq.push_back(s);
+ }
+ cat.text(seq);
+ vcard.categories(cat);
+ }
+
if (contact.nameComponents().isValid()) {
const NameComponents &nc = contact.nameComponents();
vcard::n_type n;
@@ -443,7 +453,11 @@ void writeCard<Kolab::Contact>(vcard_4_0::vcard &vcard, const Kolab::Contact &co
template <>
void writeCard<Kolab::DistList>(vcard_4_0::vcard &vcard, const Kolab::DistList &distlist)
{
- //TODO
+ if (!distlist.members().empty()) {
+ vcard.member(fromList<vcard_4_0::vcard::member_type>(distlist.members()));
+ } else {
+ WARNING("empty distlist");
+ }
}
@@ -463,19 +477,8 @@ std::string serializeCard(const T &card, const std::string prod = std::string())
vcard_4_0::vcard::rev_type rev(fromDateTime(getCurrentTime()));
vcard_4_0::vcard::kind_type kind(getType<T>());
vcard_4_0::vcard::fn_type fn(card.name());
-
-
vcard_4_0::vcard vcard(uid, kolab_version, prodid, rev, kind, fn);
- if (!card.categories().empty()) {
- vcard_4_0::vcard::categories_type cat;
- vcard_4_0::vcard::categories_type::text_sequence seq;
- BOOST_FOREACH(const std::string &s, card.categories()) {
- seq.push_back(s);
- }
- cat.text(seq);
- vcard.categories(cat);
- }
//TODO custom properties
writeCard<T>(vcard, card);
@@ -502,6 +505,11 @@ boost::shared_ptr<Kolab::Contact> readCard <Kolab::Contact> (const vcard_4_0::Vc
{
using namespace vcard_4_0;
boost::shared_ptr<Kolab::Contact> contact(new Kolab::Contact);
+
+ if (vcard.categories()) {
+ contact->setCategories(toStringList((*vcard.categories()).text()));
+ }
+
if (vcard.n()) {
NameComponents nc;
nc.setSurnames(toStringList((*vcard.n()).surname()));
@@ -722,8 +730,15 @@ boost::shared_ptr<Kolab::Contact> readCard <Kolab::Contact> (const vcard_4_0::Vc
template <>
boost::shared_ptr<Kolab::DistList> readCard <Kolab::DistList> (const vcard_4_0::VcardsType::vcard_type &vcard)
{
- //TODO DistList
- return boost::shared_ptr<Kolab::DistList>();
+ using namespace vcard_4_0;
+ boost::shared_ptr<Kolab::DistList> distlist(new Kolab::DistList);
+
+ if (!vcard.member().empty()) {
+ distlist->setMembers(toUriList<vcard_4_0::vcard::member_type>(vcard.member()));
+ } else {
+ WARNING("empty distlist");
+ }
+ return distlist;
}
template <typename T>
@@ -750,15 +765,12 @@ boost::shared_ptr<T> deserializeCard(const std::string& s, bool isUrl)
}
boost::shared_ptr<T> card = readCard<T>(vcards->vcard());
+ card->setUid(vcards->vcard().uid().text());
card->setName(vcards->vcard().fn().text());
-
- if (vcards->vcard().categories()) {
- card->setCategories(toStringList((*vcards->vcard().categories()).text()));
- }
setProductId( vcards->vcard().prodid().text() );
// setFormatVersion( vcards->vcard().version().text() );
-// global_xCarVersion = vcalendar.properties().version().text();
+// global_xCardVersion = vcalendar.properties().version().text();
setKolabVersion( vcards->vcard().x_kolab_version().text() );
return card;
diff --git a/c++/tests/bindingstest.cpp b/c++/tests/bindingstest.cpp
index 1d1433f..9b2d071 100644
--- a/c++/tests/bindingstest.cpp
+++ b/c++/tests/bindingstest.cpp
@@ -235,6 +235,7 @@ void BindingsTest::contactCompletness()
stringlist.push_back("sdf");
Kolab::Contact c;
+ c.setUid("uid");
c.setCategories(stringlist);
c.setName("name");
Kolab::NameComponents nc;
@@ -307,7 +308,6 @@ void BindingsTest::contactCompletness()
Kolab::Contact e = Kolab::readContact(result, false);
QVERIFY(Kolab::error() == Kolab::NoError);
QCOMPARE(e.uid(), c.uid());
- QCOMPARE(e.created(), c.created());
QCOMPARE(e.categories(), c.categories());
QCOMPARE(e.name(), c.name());
QCOMPARE(e.nameComponents(), c.nameComponents());
@@ -334,13 +334,31 @@ void BindingsTest::contactCompletness()
// QCOMPARE(e.gpsPos(), c.gpsPos());
// QCOMPARE(e.crypto(), c.crypto());
// QCOMPARE(e.customProperties(), c.customProperties());
+}
+void BindingsTest::distlistCompletness()
+{
+ std::vector<std::string> stringlist;
+ stringlist.push_back("lbksdfbklsd");
+ stringlist.push_back("sdf");
+ Kolab::DistList c;
+ c.setName("name");
+ c.setUid("uid");
+ c.setMembers(stringlist);
-
-
+ const std::string result = Kolab::writeDistlist(c);
+ QVERIFY(Kolab::error() == Kolab::NoError);
+ std::cout << result << endl;
+ Kolab::DistList e = Kolab::readDistlist(result, false);
+ QVERIFY(Kolab::error() == Kolab::NoError);
+ QCOMPARE(e.uid(), c.uid());
+ QCOMPARE(e.name(), c.name());
+ QCOMPARE(e.members(), c.members());
+// QCOMPARE(e.customProperties(), c.customProperties());
}
+
void BindingsTest::versionTest()
{
Kolab::Todo ev;
diff --git a/c++/tests/bindingstest.h b/c++/tests/bindingstest.h
index 3abaac5..d5e86d3 100644
--- a/c++/tests/bindingstest.h
+++ b/c++/tests/bindingstest.h
@@ -27,6 +27,7 @@ class BindingsTest : public QObject
void todoCompletness();
void contactCompletness();
+ void distlistCompletness();
void versionTest();
void errorTest();
commit 7593ba1176378fbb45ff040dac937bbdde975a4c
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date: Wed Feb 22 16:48:10 2012 +0100
There is no richtext flag
diff --git a/c++/lib/xcalconversions.h b/c++/lib/xcalconversions.h
index d308c6a..63eb7a1 100644
--- a/c++/lib/xcalconversions.h
+++ b/c++/lib/xcalconversions.h
@@ -874,11 +874,11 @@ void setIncidenceProperties(I &inc, const T &prop)
}
if (prop.summary()) {
- inc.setSummary(toString(*prop.summary())); //TODO detect richtext and set flag accordingly
+ inc.setSummary(toString(*prop.summary()));
}
if (prop.description()) {
- inc.setDescription(toString(*prop.description())); //TODO detect richtext and set flag accordingly
+ inc.setDescription(toString(*prop.description()));
}
if (prop.priority()) {
More information about the commits
mailing list