From: Denis Dolzhenko Date: Tue, 4 Oct 2016 16:01:29 +0000 (+0300) Subject: TSAM-8325: Not Sound when receive message X-Git-Tag: submit/tizen/20161005.131726~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d6988d4be0c7f49eb3f448dbae9262c19983a36;p=profile%2Fmobile%2Fapps%2Fnative%2Fmessage.git TSAM-8325: Not Sound when receive message Change-Id: I8aa0f94f52633919f99952c79c3103e546a4f664 Signed-off-by: Denis Dolzhenko --- diff --git a/src/Common/MsgEngine/inc/MsgSettings.h b/src/Common/MsgEngine/inc/MsgSettings.h index 47e22a4e..55bf58c1 100644 --- a/src/Common/MsgEngine/inc/MsgSettings.h +++ b/src/Common/MsgEngine/inc/MsgSettings.h @@ -36,6 +36,13 @@ namespace Msg AppForegroundPolicy // App is running and on foreground, but not in conversation. }; + enum RingtoneType + { + DefaultRingtone, + SilentRingtone, + UserRingtone + }; + public: MsgSettings(); virtual ~MsgSettings(); @@ -58,8 +65,10 @@ namespace Msg virtual void setAlerts(bool value) = 0; virtual bool getAlerts() const = 0; - virtual void setNotiSound(const std::string &soundPath) = 0; - virtual std::string getNotiSound() const = 0; + virtual void setRingtoneType(RingtoneType type) = 0; + virtual RingtoneType getRingtoneType() const = 0; + virtual void setRingtone(const std::string &soundPath) = 0; + virtual std::string getRingtone() const = 0; virtual void setVibration(bool value) = 0; virtual bool getVibration() const = 0; @@ -97,7 +106,7 @@ namespace Msg { public: virtual ~IMsgSettingsListener() {} - virtual void onNotiSoundChanged(MsgSettings &msgSetting) {}; + virtual void onRingtoneChanged(MsgSettings &msgSetting) {}; }; } diff --git a/src/Common/MsgEngine/src/private/MsgSettingsPrivate.cpp b/src/Common/MsgEngine/src/private/MsgSettingsPrivate.cpp index 341669f7..c26e9253 100644 --- a/src/Common/MsgEngine/src/private/MsgSettingsPrivate.cpp +++ b/src/Common/MsgEngine/src/private/MsgSettingsPrivate.cpp @@ -25,12 +25,6 @@ #include #include -namespace -{ - const char *ringtoneDefault = "default"; - const char *ringtoneSilent = "silent"; -} - using namespace Msg; MsgSettingsPrivate::MsgSettingsPrivate(msg_handle_t serviceHandle) @@ -153,47 +147,36 @@ bool MsgSettingsPrivate::getAlerts() const return res; } -void MsgSettingsPrivate::setNotiSound(const std::string &soundPath) +void MsgSettingsPrivate::setRingtoneType(RingtoneType type) { - if (soundPath.compare(ringtoneDefault) == 0) - { - msg_set_int_value(m_GeneralOpt, MSG_GENERAL_RINGTONE_TYPE_INT, MSG_RINGTONE_TYPE_DEFAULT); - } - else if (soundPath.compare(ringtoneSilent) == 0) - { - msg_set_int_value(m_GeneralOpt, MSG_GENERAL_RINGTONE_TYPE_INT, MSG_RINGTONE_TYPE_SILENT); - } - else - { - msg_set_int_value(m_GeneralOpt, MSG_GENERAL_RINGTONE_TYPE_INT, MSG_RINGTONE_TYPE_USER); - msg_set_str_value(m_GeneralOpt, MSG_GENERAL_RINGTONE_PATH_STR, soundPath.c_str(), soundPath.size()); - } + msg_set_int_value(m_GeneralOpt, MSG_GENERAL_RINGTONE_TYPE_INT, MsgUtilsPrivate::ringtoneTypeToNative(type)); msg_set_general_opt(m_ServiceHandle, m_GeneralOpt); - for(auto listener: m_Listeners) { - listener->onNotiSoundChanged(*this); + listener->onRingtoneChanged(*this); } } -std::string MsgSettingsPrivate::getNotiSound() const +MsgSettingsPrivate::RingtoneType MsgSettingsPrivate::getRingtoneType() const { - std::string soundPath; int type = MSG_RINGTONE_TYPE_DEFAULT; msg_get_int_value(m_GeneralOpt, MSG_GENERAL_RINGTONE_TYPE_INT, &type); - if (type == MSG_RINGTONE_TYPE_DEFAULT) - { - soundPath = ringtoneDefault; - } - else if (type == MSG_RINGTONE_TYPE_SILENT) - { - soundPath = ringtoneSilent; - } - else + return MsgUtilsPrivate::nativeToRingtoneType(type); +} + +void MsgSettingsPrivate::setRingtone(const std::string &soundPath) +{ + MsgUtilsPrivate::setStr(m_GeneralOpt, MSG_GENERAL_RINGTONE_PATH_STR, soundPath); + msg_set_general_opt(m_ServiceHandle, m_GeneralOpt); + for(auto listener: m_Listeners) { - soundPath = MsgUtilsPrivate::getStr(m_GeneralOpt, MSG_GENERAL_RINGTONE_PATH_STR, FILENAME_MAX); + listener->onRingtoneChanged(*this); } - return soundPath; +} + +std::string MsgSettingsPrivate::getRingtone() const +{ + return MsgUtilsPrivate::getStr(m_GeneralOpt, MSG_GENERAL_RINGTONE_PATH_STR, MSG_FILEPATH_LEN_MAX); } void MsgSettingsPrivate::setVibration(bool value) diff --git a/src/Common/MsgEngine/src/private/MsgSettingsPrivate.h b/src/Common/MsgEngine/src/private/MsgSettingsPrivate.h index 521099a4..9cb874e5 100644 --- a/src/Common/MsgEngine/src/private/MsgSettingsPrivate.h +++ b/src/Common/MsgEngine/src/private/MsgSettingsPrivate.h @@ -45,8 +45,10 @@ namespace Msg virtual void setAlerts(bool value); virtual bool getAlerts() const; - virtual void setNotiSound(const std::string &soundPath); - virtual std::string getNotiSound() const; + virtual void setRingtoneType(RingtoneType type); + virtual RingtoneType getRingtoneType() const; + virtual void setRingtone(const std::string &soundPath); + virtual std::string getRingtone() const; virtual void setVibration(bool value); virtual bool getVibration() const; diff --git a/src/Common/MsgEngine/src/private/MsgUtilsPrivate.cpp b/src/Common/MsgEngine/src/private/MsgUtilsPrivate.cpp index 09aae4fd..58b944d4 100644 --- a/src/Common/MsgEngine/src/private/MsgUtilsPrivate.cpp +++ b/src/Common/MsgEngine/src/private/MsgUtilsPrivate.cpp @@ -364,3 +364,31 @@ MsgTransport::SendResult MsgUtilsPrivate::nativeToSendResult(int sendRes) return MsgTransport::SendFail; } } + +MsgSettings::RingtoneType MsgUtilsPrivate::nativeToRingtoneType(int type) +{ + switch(type) + { + case MSG_RINGTONE_TYPE_SILENT: + return MsgSettings::SilentRingtone; + case MSG_RINGTONE_TYPE_USER: + return MsgSettings::UserRingtone; + case MSG_RINGTONE_TYPE_DEFAULT: + return MsgSettings::DefaultRingtone; + } + return MsgSettings::DefaultRingtone; +} + +int MsgUtilsPrivate::ringtoneTypeToNative(MsgSettings::RingtoneType type) +{ + switch(type) + { + case MsgSettings::SilentRingtone: + return MSG_RINGTONE_TYPE_SILENT; + case MsgSettings::UserRingtone: + return MSG_RINGTONE_TYPE_USER; + case MsgSettings::DefaultRingtone: + return MSG_RINGTONE_TYPE_DEFAULT; + } + return MSG_RINGTONE_TYPE_DEFAULT; +} diff --git a/src/Common/MsgEngine/src/private/MsgUtilsPrivate.h b/src/Common/MsgEngine/src/private/MsgUtilsPrivate.h index 18432898..d3fe9534 100644 --- a/src/Common/MsgEngine/src/private/MsgUtilsPrivate.h +++ b/src/Common/MsgEngine/src/private/MsgUtilsPrivate.h @@ -52,6 +52,8 @@ namespace Msg static Message::NetworkStatus nativeToNetworkStatus(int status); static int activeNotifPolicyToNative(MsgSettings::ActiveNotifPolicy policy); static MsgTransport::SendResult nativeToSendResult(int sendRes); + static MsgSettings::RingtoneType nativeToRingtoneType(int type); + static int ringtoneTypeToNative(MsgSettings::RingtoneType type); static std::string getStr(msg_struct_t msgStruct, int field, int maxStrLen); static int setStr(msg_struct_t msgStruct, int field, const std::string &text); diff --git a/src/Settings/Controller/inc/Settings.h b/src/Settings/Controller/inc/Settings.h index bab6884c..bfa86e18 100644 --- a/src/Settings/Controller/inc/Settings.h +++ b/src/Settings/Controller/inc/Settings.h @@ -62,7 +62,7 @@ namespace Msg virtual void onCheckButtonChanged(SettingsListViewItem &item); // IMsgSettingsListener - virtual void onNotiSoundChanged(MsgSettings &msgSetting); + virtual void onRingtoneChanged(MsgSettings &msgSetting); // ISystemSettingsManager: virtual void onLanguageChanged(); diff --git a/src/Settings/Controller/src/Settings.cpp b/src/Settings/Controller/src/Settings.cpp index f4084e2e..5d519fd7 100644 --- a/src/Settings/Controller/src/Settings.cpp +++ b/src/Settings/Controller/src/Settings.cpp @@ -241,7 +241,16 @@ void Settings::updateSoundItem() { MSG_LOG("updateSoundItem activated!"); m_pSoundItem->disabled(!getMsgSettings().getAlerts()); - m_pSoundItem->setSubText(MediaUtils::getTitle(getMsgSettings().getNotiSound())); + + std::string ringtoneName; + if(getMsgSettings().getRingtoneType() == MsgSettings::SilentRingtone) + ringtoneName = "Silent"; + else if(getMsgSettings().getRingtoneType() == MsgSettings::DefaultRingtone) + ringtoneName = "Default"; + else if(getMsgSettings().getRingtoneType() == MsgSettings::UserRingtone) + ringtoneName = MediaUtils::getTitle(getMsgSettings().getRingtone()); + + m_pSoundItem->setSubText(ringtoneName); } void Settings::updateVibrationItem() @@ -396,7 +405,7 @@ void Settings::onCheckButtonChanged(SettingsListViewItem &item) callItemHandler(*settingItem); } -void Settings::onNotiSoundChanged(MsgSettings &msgSetting) +void Settings::onRingtoneChanged(MsgSettings &msgSetting) { updateSoundItem(); m_pSoundItem->update(); diff --git a/src/Settings/Controller/src/SettingsSound.cpp b/src/Settings/Controller/src/SettingsSound.cpp index 1a6f4a26..e14628d1 100644 --- a/src/Settings/Controller/src/SettingsSound.cpp +++ b/src/Settings/Controller/src/SettingsSound.cpp @@ -31,7 +31,6 @@ namespace const char *sRingtoneValueSingleFile = "SINGLE_FILE"; const char *sRingtoneKeyFileType = "file_type"; const char *sRingtoneValueSound = "SOUND"; - const char *sRingtoneKeyMarkedMode = "marked_mode"; const char *sRingtoneKeySilent = "silent"; const char *sRingtoneValueSilentShow = "silent show"; const char *sRingtoneKeyDefault = "default"; @@ -55,17 +54,25 @@ SettingsSound::~SettingsSound() static void soundPickerCb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data) { - char *ringtonePath = nullptr; + char *ringtone = nullptr; - app_control_get_extra_data(reply, sRingtoneKeyResult, &ringtonePath); - if (!ringtonePath) - { + app_control_get_extra_data(reply, sRingtoneKeyResult, &ringtone); + if(!ringtone) return; + + auto *settings = static_cast(user_data); + + if(strcmp(ringtone, sRingtoneKeySilent) == 0) + settings->setRingtoneType(MsgSettings::SilentRingtone); + else if(strcmp(ringtone, sRingtoneKeyDefault) == 0) + settings->setRingtoneType(MsgSettings::DefaultRingtone); + else + { + settings->setRingtoneType(MsgSettings::UserRingtone); + settings->setRingtone(ringtone); } - std::string title(MediaUtils::getTitle(ringtonePath)); - static_cast(user_data)->setNotiSound(title); - free(ringtonePath); + free(ringtone); } void SettingsSound::launchSoundPicker() @@ -73,16 +80,27 @@ void SettingsSound::launchSoundPicker() app_control_h h; app_control_create(&h); app_control_set_launch_mode(h, APP_CONTROL_LAUNCH_MODE_GROUP); + app_control_add_extra_data(h, sRingtoneKeyPath, sRingtoneValuePath); app_control_add_extra_data(h, sRingtoneKeyDomain, PACKAGE_NAME); app_control_add_extra_data(h, sRingtoneKeySelectType, sRingtoneValueSingleFile); app_control_add_extra_data(h, sRingtoneKeyFileType, sRingtoneValueSound); - app_control_add_extra_data(h, sRingtoneKeyMarkedMode, m_SettingsHandle.getNotiSound().c_str()); app_control_add_extra_data(h, sRingtoneKeySilent, sRingtoneValueSilentShow); app_control_add_extra_data(h, sRingtoneKeyDefault, sRingtoneValueDefaultShow); app_control_add_extra_data(h, sRingtoneKeyDrmType, sRingtoneValueDrmAll); app_control_add_extra_data(h, sRingtoneKeyTitle, msg("IDS_MSG_HEADER_MESSAGE_TONE_ABB").get()); + std::string selectedData; + if(m_SettingsHandle.getRingtoneType() == MsgSettings::SilentRingtone) + selectedData = sRingtoneKeySilent; + else if(m_SettingsHandle.getRingtoneType() == MsgSettings::DefaultRingtone) + selectedData = sRingtoneKeyDefault; + else if(m_SettingsHandle.getRingtoneType() == MsgSettings::UserRingtone) + selectedData = m_SettingsHandle.getRingtone(); + + const char *selectedDataArray[] = {selectedData.c_str()}; + app_control_add_extra_data_array(h, APP_CONTROL_DATA_SELECTED, selectedDataArray, 1); + app_control_set_app_id(h, sRingtoneAppId); app_control_send_launch_request(h, soundPickerCb, &m_SettingsHandle);