AppForegroundPolicy // App is running and on foreground, but not in conversation.
};
+ enum RingtoneType
+ {
+ DefaultRingtone,
+ SilentRingtone,
+ UserRingtone
+ };
+
public:
MsgSettings();
virtual ~MsgSettings();
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;
{
public:
virtual ~IMsgSettingsListener() {}
- virtual void onNotiSoundChanged(MsgSettings &msgSetting) {};
+ virtual void onRingtoneChanged(MsgSettings &msgSetting) {};
};
}
#include <vconf-internal-msg-keys.h>
#include <vconf.h>
-namespace
-{
- const char *ringtoneDefault = "default";
- const char *ringtoneSilent = "silent";
-}
-
using namespace Msg;
MsgSettingsPrivate::MsgSettingsPrivate(msg_handle_t serviceHandle)
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)
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;
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;
+}
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);
virtual void onCheckButtonChanged(SettingsListViewItem &item);
// IMsgSettingsListener
- virtual void onNotiSoundChanged(MsgSettings &msgSetting);
+ virtual void onRingtoneChanged(MsgSettings &msgSetting);
// ISystemSettingsManager:
virtual void onLanguageChanged();
{
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()
callItemHandler(*settingItem);
}
-void Settings::onNotiSoundChanged(MsgSettings &msgSetting)
+void Settings::onRingtoneChanged(MsgSettings &msgSetting)
{
updateSoundItem();
m_pSoundItem->update();
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";
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<MsgSettings*>(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<MsgSettings*>(user_data)->setNotiSound(title);
- free(ringtonePath);
+ free(ringtone);
}
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);