Ringtone module 87/104587/1
authorRadek Kintop <r.kintop@samsung.com>
Tue, 13 Dec 2016 15:05:54 +0000 (16:05 +0100)
committerRadek Kintop <r.kintop@samsung.com>
Tue, 13 Dec 2016 15:05:54 +0000 (16:05 +0100)
- fixed situation when appctl custom directory is equal to default directory

Change-Id: I246ed1782770422e9356b1d9eac9940f849c6b57
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
setting-ringtone/include/setting-ringtone.h
setting-ringtone/src/setting-ringtone-main.c
setting-ringtone/src/setting-ringtone.c

index fead1223a9b5450c0ad072b64bd4aabfe4793fd3..89eaeef9c8375cab74d615d717ad8a21cbffb622 100644 (file)
 
 #define SETTING_RINGTONE_PACKAGE_NAME "org.tizen.setting-ringtone"
 
+#define RINGTONE_DIR_PATH      _TZ_SYS_SHARE"/settings/Ringtones"
+#define RINGTONE_DIR_PATH_1    _TZ_SYS_SHARE"/settings/Ringtones/"
+#define ALERT_DIR_PATH         _TZ_SYS_SHARE"/settings/Alerts"
+#define ALERT_DIR_PATH_1       _TZ_SYS_SHARE"/settings/Alerts/"
+#define RINGTONE_FILE_PATH_DEF _TZ_SYS_SHARE\
+                               "/settings/Ringtones/Over_the_horizon.ogg"
+#define ALERT_FILE_PATH_DEF    _TZ_SYS_SHARE"/settings/Alerts/Beep_Once.ogg"
+
 /**
  * SettingRingtoneData contains module specific runtime data.
  */
index 82dd41259ad68dcb0fdbda067764bd1067759ea6..72991c5a7a8645fd641e5dfd02af05c5e885c84c 100755 (executable)
 #include <system_settings.h>
 #include <call-manager.h>
 
-#define RINGTONE_DIR_PATH      _TZ_SYS_SHARE"/settings/Ringtones"
-#define RINGTONE_DIR_PATH_1    _TZ_SYS_SHARE"/settings/Ringtones/"
-#define ALERT_DIR_PATH         _TZ_SYS_SHARE"/settings/Alerts"
-#define ALERT_DIR_PATH_1       _TZ_SYS_SHARE"/settings/Alerts/"
-#define RINGTONE_FILE_PATH_DEF _TZ_SYS_SHARE\
-                               "/settings/Ringtones/Over_the_horizon.ogg"
-#define ALERT_FILE_PATH_DEF    _TZ_SYS_SHARE"/settings/Alerts/Beep_Once.ogg"
 #define RINGTONE_SELECTED_IS_DEFAULT_KEY       "is_default"
 
 static int setting_ringtone_create(void *cb);
index a398065a9efa2e0f3fa6163b783f7e873dd09f5b..5d0f71000a4c39b8c14b35464bdda2af150f0d54 100644 (file)
@@ -55,10 +55,9 @@ bool __parse_appctl_request(app_control_h service, void *priv)
        (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]);
+               ad->appctl_file_path = strndup(paths[0], PATH_MAX);
        } else {
                ad->appctl_file_path = strdup("");
        }
@@ -67,24 +66,60 @@ bool __parse_appctl_request(app_control_h service, void *priv)
        paths = NULL;
        paths_len = 0;
        (void)app_control_get_extra_data_array(service, APP_CONTROL_DATA_PATH, &paths, &paths_len);
+       ad->appctl_dir_path = NULL;
        if (paths_len > 0) {
-               ad->appctl_dir_path = strdup(paths[0]);
-       } else {
-               ad->appctl_dir_path = strdup("");
+
+               /* This is the situation when someone has chosen one of
+                * the default paths as extension path. In this case we
+                * can't list directory twice. */
+               ad->appctl_dir_path = strndup(paths[0], PATH_MAX);
+               if (!strncmp(paths[0], RINGTONE_DIR_PATH, PATH_MAX) ||
+                       !strncmp(paths[0], RINGTONE_DIR_PATH_1, PATH_MAX)) {
+                       ad->show_notification = false;
+                       free(ad->appctl_dir_path);
+                       ad->appctl_dir_path = NULL;
+                       SETTING_TRACE("Caller has selected "\
+                                       "ringtone path as extension path");
+               }
+
+               if (!strncmp(paths[0], ALERT_DIR_PATH, PATH_MAX) ||
+                       !strncmp(paths[0], ALERT_DIR_PATH_1, PATH_MAX)) {
+                       ad->show_notification = true;
+                       free(ad->appctl_dir_path);
+                       ad->appctl_dir_path = NULL;
+                       SETTING_TRACE("Caller has selected "\
+                                       "notification path as extension path");
+               }
        }
        free(paths);
 
-       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_dir_path || strnlen(ad->appctl_dir_path, PATH_MAX) == 0) {
+               if (!ad->show_notification) {
+                       SETTING_TRACE("custom dir path is NULL, only setting "\
+                                       "defaults will be shown %s",
+                                       _TZ_SYS_SHARE"/settings/Ringtones");
+               } else {
+                       SETTING_TRACE("custom dir path is NULL, only setting "\
+                                       "defaults will be shown %s",
+                                       _TZ_SYS_SHARE"/settings/Alerts");
+               }
+       }
 
-       if (!ad->appctl_file_path || strnlen(ad->appctl_file_path, PATH_MAX))
-               SETTING_TRACE("selected path is NULL, setting to default ring tone");
+       if (!ad->appctl_file_path || strnlen(ad->appctl_file_path, PATH_MAX)) {
+               if (!ad->show_notification) {
+                       SETTING_TRACE("custom selected path is NULL, "\
+                                               "setting to default ring tone");
+               } else {
+                       SETTING_TRACE("custom selected path is NULL, "\
+                                       "setting to default notification tone");
+               }
+       }
 
        SETTING_TRACE("caller is settings app: %d %s", ad->caller_is_settings_app, caller_id);
-       SETTING_TRACE("dir path: %s", ad->appctl_dir_path);
-       SETTING_TRACE("current file path: %s", ad->appctl_file_path);
+       SETTING_TRACE("custom dir path: %s", ad->appctl_dir_path);
+       SETTING_TRACE("custom selected file path: %s", ad->appctl_file_path);
        if (ad->default_substitution)
-               SETTING_TRACE("Default file path will be set to %s",
+               SETTING_TRACE("Default Item file path will be set to %s",
                                ad->default_substitution);
        free(caller_id);