#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
{
/**
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
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);
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;
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);
}
}
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();
}
}
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);