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