TizenRefApp-6323 Implement showing of number instead of "Show my profile" 12/70712/2
authorEugene Kurzberg <i.kurtsberg@samsung.com>
Fri, 20 May 2016 08:06:27 +0000 (11:06 +0300)
committerEugene Kurzberg <i.kurtsberg@samsung.com>
Fri, 20 May 2016 08:06:27 +0000 (11:06 +0300)
Change-Id: I7ee74822b8c62655172db3e6d2c196020e6b93f5
Signed-off-by: Eugene Kurzberg <i.kurtsberg@samsung.com>
CMakeLists.txt
contacts-app/tizen-manifest.xml
contacts-app/tizen-manifest.xml.in
lib-contacts/inc/Contacts/List/Model/MyProfile.h
lib-contacts/src/Contacts/List/Model/MyProfile.cpp
lib-contacts/src/Contacts/List/MyProfileItem.cpp
packaging/org.tizen.contacts.spec

index 1432fa9..c244a9f 100644 (file)
@@ -9,6 +9,7 @@ pkg_check_modules(TIZEN_PACKAGES REQUIRED
        capi-appfw-widget-application
        capi-base-utils-i18n
        capi-system-system-settings
+       capi-telephony
        contacts-service2
        dlog
        efl-extension
index 28552a6..4201732 100644 (file)
         <privilege>http://tizen.org/privilege/externalstorage</privilege>
         <privilege>http://tizen.org/privilege/mediastorage</privilege>
         <privilege>http://tizen.org/privilege/notification</privilege>
+        <privilege>http://tizen.org/privilege/telephony</privilege>
     </privileges>
 </manifest>
index 27596f4..be9380c 100644 (file)
                <privilege>http://tizen.org/privilege/externalstorage</privilege>
                <privilege>http://tizen.org/privilege/mediastorage</privilege>
                <privilege>http://tizen.org/privilege/notification</privilege>
+               <privilege>http://tizen.org/privilege/telephony</privilege>
        </privileges>
 </manifest>
index 8236b55..3341097 100644 (file)
@@ -66,6 +66,7 @@ namespace Contacts
                                void update();
 
                        private:
+                               static const char *fetchNumber();
                                static contacts_record_h fetchRecord();
                                static void onChanged(const char *uri, void *data);
                                static void onNameFormatChanged(contacts_name_display_order_e order, void *data);
index 94d839e..26a2a8f 100644 (file)
  */
 
 #include "Contacts/List/Model/MyProfile.h"
+#include "Common/Database/ChildRecordIterator.h"
 #include "Common/Database/RecordUtils.h"
+#include "Utils/Logger.h"
+
+#include <string>
+#include <telephony.h>
 
 using namespace Common::Database;
 using namespace Contacts::List::Model;
@@ -47,7 +52,13 @@ const char *MyProfile::getName() const
 
 const char *MyProfile::getNumber() const
 {
-       return nullptr;
+       for (auto &&record : makeRange(m_Record, _contacts_my_profile.number)) {
+               if (getRecordBool(record, _contacts_number.is_default)) {
+                       return getRecordStr(record, _contacts_number.number);
+               }
+       }
+
+       return fetchNumber();
 }
 
 const char *MyProfile::getImagePath() const
@@ -72,6 +83,36 @@ void MyProfile::update()
        onUpdated(changes);
 }
 
+const char *MyProfile::fetchNumber()
+{
+       static bool isInitialized = false;
+       static std::string number;
+
+       if (!isInitialized) {
+               isInitialized = true;
+
+               telephony_handle_list_s handles;
+               int err = telephony_init(&handles);
+               RETVM_IF_ERR(err, nullptr, "telephony_init() failed.", err);
+
+               for (size_t i = 0; i < handles.count; ++i) {
+                       char *simNumber = nullptr;
+                       err = telephony_sim_get_subscriber_number(handles.handle[i], &simNumber);
+                       WARN_IF_ERR(err, "telephony_sim_get_subscriber_number() failed.");
+
+                       if (simNumber && *simNumber) {
+                               number = simNumber;
+                               free(simNumber);
+                               break;
+                       }
+                       free(simNumber);
+               }
+               telephony_deinit(&handles);
+       }
+
+       return !number.empty() ? number.c_str() : nullptr;
+}
+
 contacts_record_h MyProfile::fetchRecord()
 {
        contacts_list_h list = nullptr;
index d85fccf..e76f2d7 100644 (file)
@@ -39,7 +39,8 @@ char *MyProfileItem::getText(Evas_Object *parent, const char *part)
 {
        if (strcmp(part, PART_CONTACT_NAME) == 0) {
                const char *name = m_MyProfile.getName();
-               return strdup(name ? name : _("IDS_PB_MBODY_SET_MY_PROFILE"));
+               const char *text = name ? name : m_MyProfile.getNumber();
+               return strdup(text ? text : _("IDS_PB_MBODY_SET_MY_PROFILE"));
        }
 
        return nullptr;
@@ -56,6 +57,8 @@ void MyProfileItem::onSelected()
        if (id > 0) {
                navigator->navigateTo(new DetailsView(id, DetailsView::TypeMyProfile));
        } else {
-               navigator->navigateTo(new InputView(id, InputView::TypeMyProfile));
+               InputView *view = new InputView(id, InputView::TypeMyProfile);
+               view->addField(Contacts::Model::FieldNumber, m_MyProfile.getNumber());
+               navigator->navigateTo(view);
        }
 }
index a99a836..ed6ee48 100644 (file)
@@ -16,6 +16,7 @@ BuildRequires: pkgconfig(capi-appfw-preference)
 BuildRequires: pkgconfig(capi-appfw-widget-application)
 BuildRequires: pkgconfig(capi-base-utils-i18n)
 BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(capi-telephony)
 BuildRequires: pkgconfig(contacts-service2)
 BuildRequires: pkgconfig(dlog)
 BuildRequires: pkgconfig(efl-extension)