TizenRefApp-7018 Implement share as text in Contact Details View 46/86446/3
authorAleksandr Sapozhnik <a.sapozhnik@samsung.com>
Wed, 31 Aug 2016 17:24:52 +0000 (20:24 +0300)
committerAleksandr Sapozhnik <a.sapozhnik@samsung.com>
Fri, 2 Sep 2016 07:45:31 +0000 (10:45 +0300)
Change-Id: I39d97705add4812ea806529b4b550cd410ab1bf5
Signed-off-by: Aleksandr Sapozhnik <a.sapozhnik@samsung.com>
lib-contacts/inc/Contacts/Details/DetailsView.h
lib-contacts/inc/Contacts/Details/SharePopup.h [moved from lib-contacts/inc/Contacts/List/SharePopup.h with 76% similarity]
lib-contacts/src/Contacts/Details/DetailsView.cpp
lib-contacts/src/Contacts/Details/SharePopup.cpp [moved from lib-contacts/src/Contacts/List/SharePopup.cpp with 84% similarity]
lib-contacts/src/Contacts/List/ListView.cpp

index fce7efd..b50e03b 100644 (file)
@@ -18,7 +18,6 @@
 #ifndef CONTACTS_DETAILS_DETAILS_VIEW_H
 #define CONTACTS_DETAILS_DETAILS_VIEW_H
 
-#include "App/AppControl.h"
 #include "Contacts/Common/ContactSelectTypes.h"
 #include "Contacts/Model/Contact.h"
 #include "Ux/SelectView.h"
@@ -83,8 +82,6 @@ namespace Contacts
                        Ui::Genlist *m_Genlist;
                        BasicInfoItem *m_BasicInfoItem;
                        FieldItem *m_Items[Model::FieldEnd];
-
-                       App::AppControl m_AppControl;
                };
        }
 }
similarity index 76%
rename from lib-contacts/inc/Contacts/List/SharePopup.h
rename to lib-contacts/inc/Contacts/Details/SharePopup.h
index b4d3d4f..b71bc98 100644 (file)
  *
  */
 
-#ifndef CONTACTS_LIST_SHARE_POPUP_H
-#define CONTACTS_LIST_SHARE_POPUP_H
+#ifndef CONTACTS_DETAILS_SHARE_POPUP_H
+#define CONTACTS_DETAILS_SHARE_POPUP_H
 
 #include "Ui/ListPopup.h"
 #include "Contacts/Model/ContactObject.h"
 
 namespace Contacts
 {
-       namespace List
+       namespace Details
        {
                class SharePopup : public Ui::ListPopup
                {
@@ -31,8 +31,10 @@ namespace Contacts
                        /**
                         * Create popup
                         * @param[in]   personId    Person ID
+                        * @param[in]   isMyProfile True if @a personId from _contacts_my_profile view,
+                        *                          false - from _contacts_contact
                         */
-                       explicit SharePopup(int personId);
+                       explicit SharePopup(int personId, bool isMyProfile = false);
 
                protected:
                        /**
@@ -49,8 +51,9 @@ namespace Contacts
                        void formatTypedObject(std::string &text, Contacts::Model::ContactObject &object);
 
                        int m_PersonId;
+                       Contacts::Model::ContactObjectType m_Type;
                };
        }
 }
 
-#endif /* CONTACTS_LIST_SHARE_POPUP_H */
+#endif /* CONTACTS_DETAILS_SHARE_POPUP_H */
index 660678c..2677bbc 100644 (file)
 #include "Contacts/Details/GroupsFieldItem.h"
 #include "Contacts/Details/MultilineFieldItem.h"
 #include "Contacts/Details/RingtoneFieldItem.h"
+#include "Contacts/Details/SharePopup.h"
 #include "Contacts/Details/TypedActionFieldItem.h"
+
 #include "Contacts/Input/InputView.h"
 #include "Contacts/Model/ContactArray.h"
 #include "Common/Strings.h"
 
-#include "App/AppControlRequest.h"
 #include "App/Path.h"
 #include "Ui/Genlist.h"
 #include "Ui/Menu.h"
@@ -156,15 +157,16 @@ void DetailsView::onMenuPressed()
                popup->show();
        });
        menu->addItem("IDS_PB_OPT_SHARE", [this] {
+               SharePopup *popup = nullptr;
                if (m_Contact.getSubType() == ObjectTypeContact) {
                        int personId = 0;
                        contacts_record_get_int(m_Contact.getRecord(), _contacts_contact.person_id, &personId);
-                       m_AppControl = App::requestShareContact(personId);
+                       popup = new SharePopup(personId, false);
                } else {
-                       m_AppControl = App::requestShareMyProfile(m_Contact.getRecordId());
+                       popup = new SharePopup(m_Contact.getRecordId(), true);
                }
-
-               m_AppControl.launch();
+               popup->create(getEvasObject());
+               popup->show();
        });
 
        menu->show();
  *
  */
 
-#include "Contacts/List/SharePopup.h"
+#include "Contacts/Details/SharePopup.h"
 
+#include "Contacts/Model/Contact.h"
 #include "Contacts/Model/ContactArray.h"
 #include "Contacts/Model/ContactDateField.h"
 #include "Contacts/Model/ContactTypedObject.h"
-#include "Contacts/Model/ContactFieldMetadata.h"
 #include "Common/Database/Queries.h"
 #include "Common/Strings.h"
-#include "Utils/Logger.h"
 
 #include "App/AppControlRequest.h"
 
 
 using namespace Common;
 using namespace Common::Database;
-using namespace Contacts::List;
+using namespace Contacts::Details;
 using namespace Contacts::Model;
 using namespace Ux;
 
-SharePopup::SharePopup(int personId)
+SharePopup::SharePopup(int personId, bool isMyProfile)
        : m_PersonId(personId)
 {
+       m_Type = isMyProfile ? ObjectTypeMyProfile : ObjectTypeContact;
 }
 
 void SharePopup::onCreated()
 {
-       setTitle("IDS_PB_HEADER_SHARE");
+       setTitle("IDS_PB_HEADER_SHARE_CONTACT_AS");
        addItem("IDS_PB_OPT_VCARD_FILE_HVCF", std::bind(&SharePopup::shareAsVcard, this));
        addItem("IDS_PB_OPT_TEXT", std::bind(&SharePopup::shareAsText, this));
 }
 
 void SharePopup::shareAsVcard()
 {
-       std::string idStr = std::to_string(m_PersonId);
-       const char *id = idStr.c_str();
-
-       App::AppControl request = App::requestMultiShareContacts(&id, 1);
+       App::AppControl request;
+       if (m_Type == ObjectTypeContact) {
+               request = App::requestShareContact(m_PersonId);
+       } else {
+               request = App::requestShareMyProfile(m_PersonId);
+       }
        request.launch();
        request.detach();
 }
@@ -69,14 +71,15 @@ void SharePopup::shareAsText()
 std::string SharePopup::prepareText(int personId)
 {
        std::string text;
-       contacts_record_h record = nullptr;
-       contacts_db_get_record(_contacts_contact._uri, getDisplayContactId(m_PersonId), &record);
+       Contact contact(m_Type);
 
-       ContactObject contact(nullptr, *getContactMetadata(ObjectTypeContact));
-       contact.initialize(record);
-       formatObject(text, contact);
+       if (m_Type == ObjectTypeContact) {
+               contact.initialize(getDisplayContactId(personId));
+       } else {
+               contact.initialize(personId);
+       }
 
-       contacts_record_destroy(record, true);
+       formatObject(text, contact);
        return text;
 }
 
@@ -103,7 +106,7 @@ void SharePopup::formatObject(std::string &text, ContactObject &object)
 
        bool isEmpty = true;
        for (auto &&field : object) {
-               if (object.getSubType() == ObjectTypeContact && !isFieldVisible[field.getId()]) {
+               if (object.getSubType() == m_Type && !isFieldVisible[field.getId()]) {
                        continue;
                }
 
index 5407534..c74850e 100644 (file)
@@ -18,7 +18,6 @@
 #include "Contacts/List/ListView.h"
 #include "Contacts/List/ListSection.h"
 #include "Contacts/List/ManageFavoritesPopup.h"
-#include "Contacts/List/SharePopup.h"
 
 #include "Contacts/List/Model/FavoritesProvider.h"
 #include "Contacts/List/Model/MfcProvider.h"
@@ -32,6 +31,7 @@
 #include "Contacts/List/SearchField.h"
 
 #include "Contacts/Details/DetailsView.h"
+#include "Contacts/Details/SharePopup.h"
 #include "Contacts/Input/InputView.h"
 #include "Contacts/Groups/GroupsView.h"
 #include "Contacts/Settings/MainView.h"
@@ -261,8 +261,9 @@ void ListView::onShareSelected()
                size_t count = results.size();
 
                if (count == 1) {
-                       SharePopup *popup = new SharePopup(results[0].value.id);
+                       Details::SharePopup *popup = new Details::SharePopup(results[0].value.id);
                        popup->create(getEvasObject());
+                       popup->setTitle("IDS_PB_HEADER_SHARE");
                        popup->setSelectCallback([this](void *data) {
                                onSelectFinished();
                        });