- new feature: caller can specify custom file to be associated with Default item
Change-Id: I34927676b8f6d4fbaa9565bb5d18b52b21c24d87
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
sound_stream_info_h ringtone_sound_stream_info;
player_h media_player;
- char *dir_path;
- char *appctl_file_path;
- bool show_notification; /* by default, this application looks into ringtone directory*/
+ char *appctl_dir_path; /* This is the directory to be listed upon
+ ring tone application startup.
+ Normally this application looks into its default
+ directory. If the caller passes custom
+ directory, then it will also list files from
+ there.
+ Depends on appctl APP_CONTROL_DATA_PATH
+ parameter. */
+ char *appctl_file_path; /* This is the filename to be selected upon
+ ring tone application startup.
+ Depends on appctl APP_CONTROL_DATA_SELECTED
+ parameter. */
+ bool show_notification; /* By default, this application
+ looks into ring tone directory.
+ If this flag is set it will look
+ into notifications directory.
+ Depends on appctl "show_notification" parameter.
+ */
+ char *default_substitution; /* This application displays "Default item"
+ if the caller is external application
+ (other than settings).
+ By default "Default" item is assigned
+ RINGTONE_FILE_PATH_DEF or
+ ALERT_FILE_PATH_DEF
+ (depending on show_notification flag).
+ The default_substitution allows external
+ application to change such assignment.
+ It can pass it's own default file path.
+ Depends on appctl "default_substitution"
+ parameter.*/
bool caller_is_settings_app;
char *selected_file_path;
if (ad->media_player)
ringtone_stop_sound(ad);
- free(ad->dir_path);
+ free(ad->appctl_dir_path);
free(ad->appctl_file_path);
free(ad->selected_file_path);
- ad->dir_path = ad->appctl_file_path = ad->selected_file_path = NULL;
+ free(ad->default_substitution);
+ ad->appctl_dir_path = ad->appctl_file_path = ad->selected_file_path =
+ ad->default_substitution = NULL;
EINA_LIST_FREE(ad->filelist, node) {
free(node->path);
static char *_get_default_filepath(SettingRingtoneData *ad)
{
- char *default_ringtone = NULL;
retv_if(ad == NULL, NULL);
+ /* This is an override from appctl parameter "default_substitution": */
+ if (ad->default_substitution)
+ return strndup(ad->default_substitution, PATH_MAX);
+
if (ad->show_notification)
- default_ringtone = strdup(ALERT_FILE_PATH_DEF);
- else
- default_ringtone = strdup(RINGTONE_FILE_PATH_DEF);
+ return strndup(ALERT_FILE_PATH_DEF, PATH_MAX);
- return default_ringtone;
+ return strndup(RINGTONE_FILE_PATH_DEF, PATH_MAX);
}
static void _move_more_ctxpopup(SettingRingtoneData *ad)
SETTING_TRACE_ERROR(
"Failed to get default file list from %s",
ALERT_DIR_PATH);
- append_custom_dir = (safeStrCmp(ALERT_DIR_PATH, ad->dir_path)
- && safeStrCmp(ALERT_DIR_PATH_1, ad->dir_path));
+ append_custom_dir = (safeStrCmp(ALERT_DIR_PATH, ad->appctl_dir_path)
+ && safeStrCmp(ALERT_DIR_PATH_1, ad->appctl_dir_path));
} else {
ret = get_filelist_from_dir_path(RINGTONE_DIR_PATH,
&ad->filelist);
SETTING_TRACE_ERROR(
"Failed to get default file list from %s",
RINGTONE_DIR_PATH);
- append_custom_dir = (safeStrCmp(RINGTONE_DIR_PATH, ad->dir_path)
- && safeStrCmp(RINGTONE_DIR_PATH_1, ad->dir_path));
+ append_custom_dir = (safeStrCmp(RINGTONE_DIR_PATH, ad->appctl_dir_path)
+ && safeStrCmp(RINGTONE_DIR_PATH_1, ad->appctl_dir_path));
}
/* Also if appctl caller has added custom dir, append it: */
- if (append_custom_dir && ad->dir_path) {
- SETTING_TRACE("ad->dir_path = %s", ad->dir_path);
- ret = get_filelist_from_dir_path(ad->dir_path, &ad->filelist);
+ if (append_custom_dir && ad->appctl_dir_path) {
+ SETTING_TRACE("ad->appctl_dir_path = %s", ad->appctl_dir_path);
+ ret = get_filelist_from_dir_path(ad->appctl_dir_path, &ad->filelist);
if (ret != 0)
SETTING_TRACE_ERROR(
"Failed to get customdir filelist, ret = %d %s",
- ret, ad->dir_path);
+ ret, ad->appctl_dir_path);
}
}
if (!safeStrCmp(full_path, ad->appctl_file_path)) {
cur_pos = cnt;
cur_item = item_data->item;
+ free(ad->selected_file_path);
ad->selected_file_path = strdup(full_path);
}
cnt++;
free(show_notification);
show_notification = NULL;
+ ad->default_substitution = NULL;
+ (void)app_control_get_extra_data(service, "default_substitution",
+ &ad->default_substitution);
+
+
(void)app_control_get_extra_data_array(service, APP_CONTROL_DATA_SELECTED, &paths, &paths_len);
if (paths_len > 0) {
ad->appctl_file_path = strdup(paths[0]);
paths_len = 0;
(void)app_control_get_extra_data_array(service, APP_CONTROL_DATA_PATH, &paths, &paths_len);
if (paths_len > 0) {
- ad->dir_path = strdup(paths[0]);
+ ad->appctl_dir_path = strdup(paths[0]);
} else {
- ad->dir_path = strdup("");
+ ad->appctl_dir_path = strdup("");
}
free(paths);
- if (!ad->dir_path || strnlen(ad->dir_path, PATH_MAX) == 0)
+ if (!ad->appctl_dir_path || strnlen(ad->appctl_dir_path, PATH_MAX) == 0)
SETTING_TRACE("dir path is NULL, setting only defaults will be shown %s", _TZ_SYS_SHARE"/settings/Ringtones");
if (!ad->appctl_file_path || strnlen(ad->appctl_file_path, PATH_MAX))
- SETTING_TRACE("selected path is NULL, setting to default ringtone");
+ SETTING_TRACE("selected path is NULL, setting to default ring tone");
SETTING_TRACE("caller is settings app: %d %s", ad->caller_is_settings_app, caller_id);
- SETTING_TRACE("dir path: %s", ad->dir_path);
+ SETTING_TRACE("dir path: %s", ad->appctl_dir_path);
SETTING_TRACE("current file path: %s", ad->appctl_file_path);
-
+ if (ad->default_substitution)
+ SETTING_TRACE("Default file path will be set to %s",
+ ad->default_substitution);
free(caller_id);
return TRUE;