Made ContactItem more generic, removed code duplication. 20/66720/1
authorEugene Kurzberg <i.kurtsberg@samsung.com>
Wed, 20 Apr 2016 11:58:18 +0000 (14:58 +0300)
committerEugene Kurzberg <i.kurtsberg@samsung.com>
Wed, 20 Apr 2016 12:04:22 +0000 (15:04 +0300)
Change-Id: I9594ecabc192a2afb161adb07a81f039b422ff8f
Signed-off-by: Eugene Kurzberg <i.kurtsberg@samsung.com>
lib-contacts/inc/Contacts/List/ContactItem.h
lib-contacts/inc/Contacts/List/MyProfileItem.h
lib-contacts/inc/Contacts/List/PersonItem.h
lib-contacts/src/Contacts/List/ContactItem.cpp
lib-contacts/src/Contacts/List/MyProfileItem.cpp
lib-contacts/src/Contacts/List/PersonItem.cpp
lib-contacts/src/Contacts/List/VcardView.cpp

index 01e3eaa8b8f8374f1c454b38751a1277bee22e01..94aecc9b33961e43f8345f82ab04638db7dfc1df 100644 (file)
@@ -28,7 +28,7 @@ namespace Contacts
 {
        namespace Model
        {
-               class ContactRecordData;
+               class ContactData;
        }
 
        namespace List
@@ -41,21 +41,27 @@ namespace Contacts
                public:
                        /**
                         * @brief Create contact item
-                        * @param[in]   contact     Contact object
+                        * @param[in]   contactData     Contact data
                         */
-                       explicit ContactItem(Contacts::Model::ContactRecordData &contact);
+                       explicit ContactItem(Contacts::Model::ContactData &contactData);
 
                        /**
-                        * @return Contact object.
+                        * @return Contact data.
                         */
-                       Contacts::Model::ContactRecordData &getContact();
+                       Contacts::Model::ContactData &getContactData() const;
+
+                       /**
+                        * @brief Update item using ContactData values.
+                        * @param[in]   changes     Change info
+                        */
+                       void update(int changes);
 
                private:
                        virtual char *getText(Evas_Object *parent, const char *part) override;
                        virtual Evas_Object *getContent(Evas_Object *parent, const char *part) override;
                        virtual Ux::SelectResult getDefaultResult() const override;
 
-                       Contacts::Model::ContactRecordData &m_Contact;
+                       Contacts::Model::ContactData &m_ContactData;
                };
        }
 }
index f06845adb958ce713a68649b73737d7a2151e036..1f8bdff3ad654b8d9218bdfabdffd3429210eafe 100644 (file)
 #define CONTACTS_LIST_MY_PROFILE_ITEM_H
 
 #include "Contacts/List/Model/MyProfile.h"
-#include "Ui/GenlistItem.h"
+#include "Contacts/List/ContactItem.h"
 
 namespace Contacts
 {
        namespace List
        {
-               class MyProfileItem : public Ui::GenlistItem
+               class MyProfileItem : public ContactItem
                {
                public:
                        MyProfileItem();
 
-                       /**
-                        * @return My profile object
-                        */
-                       Model::MyProfile &getMyProfile();
-
                private:
                        virtual char *getText(Evas_Object *parent, const char *part) override;
-                       virtual Evas_Object *getContent(Evas_Object *parent, const char *part) override;
                        virtual void onSelected() override;
                        void onUpdated(int changes);
 
index 2ad172688b785aafdf3aa0eec8063b58509c3763..7e91c375d57f39b6ec8c524a20be32b5bc4943a8 100644 (file)
@@ -44,18 +44,10 @@ namespace Contacts
                        /**
                         * @return Person object.
                         */
-                       Model::Person &getPerson();
-
-                       /**
-                        * @brief Update item
-                        * @param[in]   changes     Changed info
-                        */
-                       void update(int changes);
+                       Model::Person &getPerson() const;
 
                private:
                        virtual Ux::SelectResult getDefaultResult() const override;
-
-                       Model::Person &m_Person;
                };
        }
 }
index 42c56046b979adbc91ffb7a8a6d53b3a3fc3ad83..0705e0cc8724d1c6e7be3621a363b8342a2c3a38 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 #include "Contacts/List/ContactItem.h"
-#include "Contacts/Model/ContactRecordData.h"
+#include "Contacts/Model/ContactData.h"
 
 #include "Ui/Thumbnail.h"
 #include <app_i18n.h>
 using namespace Contacts::List;
 using namespace Contacts::Model;
 
-ContactItem::ContactItem(ContactRecordData &contact)
-       : m_Contact(contact)
+ContactItem::ContactItem(ContactData &contactData)
+       : m_ContactData(contactData)
 {
 }
 
-ContactRecordData &ContactItem::getContact()
+ContactData &ContactItem::getContactData() const
 {
-       return m_Contact;
+       return m_ContactData;
+}
+
+void ContactItem::update(int changes)
+{
+       if (changes & ContactData::ChangedName) {
+               elm_genlist_item_fields_update(getObjectItem(),
+                       PART_CONTACT_NAME, ELM_GENLIST_ITEM_FIELD_TEXT);
+       }
+
+       if (changes & ContactData::ChangedImage) {
+               elm_genlist_item_fields_update(getObjectItem(),
+                       PART_CONTACT_THUMBNAIL, ELM_GENLIST_ITEM_FIELD_CONTENT);
+       }
 }
 
 char *ContactItem::getText(Evas_Object *parent, const char *part)
 {
        if (strcmp(part, PART_CONTACT_NAME) == 0) {
-               const char *name = m_Contact.getName();
+               const char *name = m_ContactData.getName();
                return strdup(name ? name : _("IDS_LOGS_MBODY_UNKNOWN"));
        }
 
@@ -50,7 +63,7 @@ Evas_Object *ContactItem::getContent(Evas_Object *parent, const char *part)
 
        if (strcmp(part, PART_CONTACT_THUMBNAIL) == 0) {
                Thumbnail *thumbnail = Thumbnail::create(parent, Thumbnail::SizeSmall,
-                               m_Contact.getImagePath());
+                               m_ContactData.getImagePath());
                thumbnail->setSizeHint(true);
                return thumbnail->getEvasObject();
        } else if (strcmp(part, PART_CONTACT_CHECK) == 0) {
@@ -62,5 +75,5 @@ Evas_Object *ContactItem::getContent(Evas_Object *parent, const char *part)
 
 Ux::SelectResult ContactItem::getDefaultResult() const
 {
-       return { 0, (void *) m_Contact.getContactRecord() };
+       return { 0, &m_ContactData };
 }
index f399f60b26b266d778d54e66d603e818f9816396..d85fccf531f7f05aba693ff212bb631eff7b8f99 100644 (file)
 
 #include "Ui/Genlist.h"
 #include "Ui/Navigator.h"
-#include "Ui/Thumbnail.h"
 #include <app_i18n.h>
 
-#define PART_MY_PROFILE_NAME        "elm.text"
-#define PART_MY_PROFILE_THUMBNAIL   "elm.swallow.icon"
-
 using namespace Contacts::Details;
 using namespace Contacts::Input;
 using namespace Contacts::List;
@@ -34,38 +30,16 @@ using namespace Contacts::List::Model;
 using namespace std::placeholders;
 
 MyProfileItem::MyProfileItem()
+       : ContactItem(m_MyProfile)
 {
-       m_MyProfile.setUpdateCallback(std::bind(&MyProfileItem::onUpdated, this, _1));
-}
-
-MyProfile &MyProfileItem::getMyProfile()
-{
-       return m_MyProfile;
+       m_MyProfile.setUpdateCallback(std::bind(&MyProfileItem::update, this, _1));
 }
 
 char *MyProfileItem::getText(Evas_Object *parent, const char *part)
 {
-       if (strcmp(part, PART_MY_PROFILE_NAME) == 0) {
+       if (strcmp(part, PART_CONTACT_NAME) == 0) {
                const char *name = m_MyProfile.getName();
-               if (!(name && *name)) {
-                       name = _("IDS_PB_MBODY_SET_MY_PROFILE");
-               }
-
-               return strdup(name);
-       }
-
-       return nullptr;
-}
-
-Evas_Object *MyProfileItem::getContent(Evas_Object *parent, const char *part)
-{
-       using Ui::Thumbnail;
-
-       if (strcmp(part, PART_MY_PROFILE_THUMBNAIL) == 0) {
-               Thumbnail *thumbnail = Thumbnail::create(parent, Thumbnail::SizeSmall,
-                               m_MyProfile.getImagePath());
-               thumbnail->setSizeHint(true);
-               return thumbnail->getEvasObject();
+               return strdup(name ? name : _("IDS_PB_MBODY_SET_MY_PROFILE"));
        }
 
        return nullptr;
@@ -85,16 +59,3 @@ void MyProfileItem::onSelected()
                navigator->navigateTo(new InputView(id, InputView::TypeMyProfile));
        }
 }
-
-void MyProfileItem::onUpdated(int changes)
-{
-       if (changes & MyProfile::ChangedName) {
-               elm_genlist_item_fields_update(getObjectItem(),
-                       PART_MY_PROFILE_NAME, ELM_GENLIST_ITEM_FIELD_TEXT);
-       }
-
-       if (changes & MyProfile::ChangedImage) {
-               elm_genlist_item_fields_update(getObjectItem(),
-                       PART_MY_PROFILE_THUMBNAIL, ELM_GENLIST_ITEM_FIELD_CONTENT);
-       }
-}
index 3169ab86daebed3befb2b428ddaf109081221c2c..93e8a7dd5cbf12b5a8719f96eb7a4ff49b7b7bb7 100644 (file)
@@ -23,29 +23,16 @@ using namespace Contacts::List;
 using namespace Contacts::List::Model;
 
 PersonItem::PersonItem(Person &person)
-       : ContactItem(person), m_Person(person)
+       : ContactItem(person)
 {
 }
 
-Person &PersonItem::getPerson()
+Person &PersonItem::getPerson() const
 {
-       return m_Person;
-}
-
-void PersonItem::update(int changes)
-{
-       if (changes & Person::ChangedName) {
-               elm_genlist_item_fields_update(getObjectItem(),
-                       PART_CONTACT_NAME, ELM_GENLIST_ITEM_FIELD_TEXT);
-       }
-
-       if (changes & Person::ChangedImage) {
-               elm_genlist_item_fields_update(getObjectItem(),
-                       PART_CONTACT_THUMBNAIL, ELM_GENLIST_ITEM_FIELD_CONTENT);
-       }
+       return static_cast<Person &>(getContactData());
 }
 
 Ux::SelectResult PersonItem::getDefaultResult() const
 {
-       return { ResultPerson, m_Person.getId() };
+       return { ResultPerson, getPerson().getId() };
 }
index fc2a0b4fc5ce342fc70e36947169404923458aaa..ce33c52dee3d9f233390dae78a1739a1687fad94 100644 (file)
@@ -68,7 +68,8 @@ bool VcardView::onSelectResult(Ux::SelectResults results)
 {
        std::vector<contacts_record_h> records;
        for (auto &&result : results) {
-               records.push_back((contacts_record_h) result.value.data);
+               ContactRecordData *contact = (ContactRecordData *) result.value.data;
+               records.push_back(contact->getContactRecord());
        }
 
        Settings::ImportController *importer = new Settings::ImportController(getEvasObject(),