Get Ringtone path from system setting api
[platform/core/system/libstorage.git] / src / storage.c
index dcf301d..e21b0cd 100644 (file)
@@ -19,6 +19,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <system_settings.h>
 
 #include "common.h"
 #include "list.h"
@@ -33,7 +34,7 @@ const char *dir_path[STORAGE_DIRECTORY_MAX] = {
        [STORAGE_DIRECTORY_MUSIC] = "Music",
        [STORAGE_DIRECTORY_DOCUMENTS] = "Documents",
        [STORAGE_DIRECTORY_OTHERS] = "Others",
-       [STORAGE_DIRECTORY_SYSTEM_RINGTONES] = "/usr/apps/org.tizen.setting/shared/res/settings/Ringtones",
+       [STORAGE_DIRECTORY_SYSTEM_RINGTONES] = "",
 };
 
 static dd_list *st_head;
@@ -100,6 +101,8 @@ API int storage_get_directory(int storage_id, storage_directory_e type, char **p
        const struct storage_ops *st;
        const char *root;
        char temp[PATH_MAX];
+       char *temp2, *end;
+       int ret;
 
        if (!path) {
                _E("Invalid parameger");
@@ -124,9 +127,18 @@ API int storage_get_directory(int storage_id, storage_directory_e type, char **p
        }
 
        root = st->root();
-       if (type == STORAGE_DIRECTORY_SYSTEM_RINGTONES)
-               snprintf(temp, PATH_MAX, "%s", dir_path[type]);
-       else
+       if (type == STORAGE_DIRECTORY_SYSTEM_RINGTONES) {
+               ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &temp2);
+               if (ret < 0) {
+                       _E("Failed to get ringtone path : %d", ret);
+                       return STORAGE_ERROR_OPERATION_FAILED;
+               }
+               end = strrchr(temp2, '/');
+               if (end)
+                       *end = '\0';
+               snprintf(temp, PATH_MAX, "%s", temp2);
+               free(temp2);
+       } else
                snprintf(temp, PATH_MAX, "%s/%s", root, dir_path[type]);
 
        *path = strdup(temp);