TSAM-11686 Default ringtone name displays wrong after set 59/105359/3 submit/tizen_3.0/20161216.111548
authorAleksandr Sapozhnik <a.sapozhnik@samsung.com>
Fri, 16 Dec 2016 09:20:03 +0000 (11:20 +0200)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Fri, 16 Dec 2016 10:06:03 +0000 (02:06 -0800)
Change-Id: I068d23fc7efe55bac1f1733e7e7f11ea36f33d64
Signed-off-by: Aleksandr Sapozhnik <a.sapozhnik@samsung.com>
lib-apps-common/inc/App/AppControlRequest.h
lib-apps-common/inc/App/AppControlUtils.h
lib-apps-common/src/App/AppControlUtils.cpp
lib-contacts/src/Contacts/Groups/RingtoneItem.cpp
lib-contacts/src/Contacts/Input/ContactRingtoneFieldItem.cpp
lib-contacts/src/Contacts/Input/InputView.cpp

index fd283caebd00ebc59d0737d6d2464f1707729d52..c2b093db8d9dbc897e2877b4fe297ac969f10a8a 100644 (file)
@@ -40,6 +40,9 @@
 #define APP_CONTROL_RESULT_CALL     "call"
 #define APP_CONTROL_RESULT_MESSAGE  "message"
 
+#define APP_CONTROL_RINGTONE_IS_DEFAULT "is_default"
+#define APP_CONTROL_RINGTONE_TRUE "true"
+
 namespace App
 {
        /**
index 9ceb1ad9ea7dbfaed2f4a8908388feb7f9ea9923..5fb49764c13dee99512a1601154235a4920b893e 100644 (file)
@@ -32,13 +32,21 @@ namespace App
        std::string EXPORT_API getSingleExtraData(app_control_h appControl, const char *key);
 
        /**
-        * @brief Get integer value from App Control array extra data.
+        * @brief Get integer value from App Control extra data.
         * @param[in]   appControl  App Control handle
-        * @param[in]   key         Extra data array key
+        * @param[in]   key         Extra data key
         * @return Integer value.
         */
        int EXPORT_API getIntExtraData(app_control_h appControl, const char *key);
 
+       /**
+        * @brief Get string value from App Control extra data.
+        * @param[in]   appControl  App Control handle
+        * @param[in]   key         Extra data key
+        * @return String value.
+        */
+       std::string EXPORT_API getStringExtraData(app_control_h appControl, const char *key);
+
        /**
         * @brief Get vector of integer values from App Control array extra data.
         * @param[in]   appControl  App Control handle
index ddfb46fe101478ffd3aee35ae83aae9c6d5b055b..02f303774b1ff9e4fd530d5b559c9d4db851028c 100644 (file)
@@ -46,7 +46,7 @@ int App::getIntExtraData(app_control_h appControl, const char *key)
        char *resultStr = nullptr;
 
        int err = app_control_get_extra_data(appControl, key, &resultStr);
-       RETVM_IF_ERR(err, result, "app_control_get_extra_data_array() failed.");
+       RETVM_IF_ERR(err, result, "app_control_get_extra_data() failed.");
 
        if (resultStr) {
                result = atoi(resultStr);
@@ -56,6 +56,22 @@ int App::getIntExtraData(app_control_h appControl, const char *key)
        return result;
 }
 
+std::string App::getStringExtraData(app_control_h appControl, const char *key)
+{
+       std::string result;
+       char *resultStr = nullptr;
+
+       int err = app_control_get_extra_data(appControl, key, &resultStr);
+       RETVM_IF_ERR(err, result, "app_control_get_extra_data() failed.");
+
+       if (resultStr) {
+               result = resultStr;
+               free(resultStr);
+       }
+
+       return result;
+}
+
 std::vector<int> App::getIntExtraDataArray(app_control_h appControl, const char *key)
 {
        std::vector<int> result;
index 983a92900dea98718dde066b6ed8fd1c1394cb83..ce353fc9478278d72850455c94e40b245d783bbb 100644 (file)
@@ -63,8 +63,13 @@ void RingtoneItem::onPickResult(app_control_h request, app_control_h reply,
                app_control_result_e result)
 {
        std::string path = App::getSingleExtraData(reply, APP_CONTROL_DATA_SELECTED);
+       std::string isDefault = App::getStringExtraData(reply, APP_CONTROL_RINGTONE_IS_DEFAULT);
        if (!path.empty()) {
-               contacts_record_set_str(m_Group.getRecord(), _contacts_group.ringtone_path, path.c_str());
+               if (isDefault != APP_CONTROL_RINGTONE_TRUE) {
+                       contacts_record_set_str(m_Group.getRecord(), _contacts_group.ringtone_path, path.c_str());
+               } else {
+                       contacts_record_set_str(m_Group.getRecord(), _contacts_group.ringtone_path, nullptr);
+               }
                update("elm.text", ELM_GENLIST_ITEM_FIELD_TEXT);
        }
 }
index 34c8a2c4690a80cebed2198f34a094e4530e3aef..b7a4e8cea1ecb09fb5f7099f845e8061a0cc41e1 100644 (file)
@@ -91,8 +91,13 @@ void ContactRingtoneFieldItem::onPickResult(app_control_h request, app_control_h
                app_control_result_e result)
 {
        std::string path = App::getSingleExtraData(reply, APP_CONTROL_DATA_SELECTED);
+       std::string isDefault = App::getStringExtraData(reply, APP_CONTROL_RINGTONE_IS_DEFAULT);
        if (!path.empty()) {
-               getField().cast<ContactTextField>().setValue(path.c_str());
+               if (isDefault != APP_CONTROL_RINGTONE_TRUE) {
+                       getField().cast<ContactTextField>().setValue(path.c_str());
+               } else {
+                       getField().reset();
+               }
                update();
        }
 }
index f32b9e724d8b252409bfc95a5fc48195b5829536..e5662ce87d47579ec263e28fa155bbd9a3da05ae 100644 (file)
@@ -400,9 +400,12 @@ void InputView::addRingtoneField()
                InputView *view = (InputView *) data;
 
                std::string path = App::getSingleExtraData(reply, APP_CONTROL_DATA_SELECTED);
+               std::string isDefault = App::getStringExtraData(reply, APP_CONTROL_RINGTONE_IS_DEFAULT);
                if (!path.empty()) {
                        ContactObject &field = view->addField(FieldRingtone);
-                       field.getField<ContactTextField>(0)->setValue(path.c_str());
+                       if (isDefault != APP_CONTROL_RINGTONE_TRUE) {
+                               field.getField<ContactTextField>(0)->setValue(path.c_str());
+                       }
                        view->addFieldItem(field);
                }
        }, this);