Fixed SETTING_INCOMING_CALL_PATH define.
[platform/core/api/system-settings.git] / src / system_settings_json.c
1
2 #include <system_settings.h>
3 #include <system_settings_private.h>
4 #include <system_settings_json.h>
5
6 #include <vconf.h>
7
8 //#define VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST
9
10 static void ss_json_ringtone_save(JsonNode *root)
11 {
12         // write here
13         JsonGenerator *generator = json_generator_new();
14         json_generator_set_root(generator, root);
15         g_object_set(generator, "pretty", TRUE, NULL);
16 #ifdef USE_JSONFILE
17         GError *error = NULL;
18         gboolean ret = json_generator_to_file(generator, filename, &error);
19 #else
20         gchar* result = json_generator_to_data(generator, NULL);
21         vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST, (char*)result);
22 #endif
23         g_object_unref(generator);
24 }
25
26
27 JsonParser* ss_json_ringtone_open_file(char* path)
28 {
29         JsonParser *parser;
30         //JsonNode *root;
31         GError *error;
32
33         parser = json_parser_new();
34
35         error = NULL;
36         json_parser_load_from_file(parser, path, &error);
37         if (error) {
38                 SETTING_TRACE("Unable to parse `%s': %s\n", path, error->message);
39                 g_error_free(error);
40                 g_object_unref(parser);
41                 return NULL;
42         }
43
44         return parser;
45 }
46
47 JsonParser* ss_json_ringtone_load_from_data()
48 {
49         JsonParser *parser;
50         //JsonNode *root;
51         GError *error;
52
53         parser = json_parser_new();
54
55         error = NULL;
56         char* load_data = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST);
57         json_parser_load_from_data(parser, load_data, -1, &error);
58         if (error) {
59                 SETTING_TRACE("Unable to load data : %s \n", error->message);
60                 g_error_free(error);
61                 g_object_unref(parser);
62                 return NULL;
63         }
64         return parser;
65 }
66
67 void ss_json_ringtone_add(JsonNode *root, char* filename, char* nameval, char* pathval)
68 {
69         SETTING_TRACE_BEGIN;
70
71         JsonNode* menu_item = json_node_new(JSON_NODE_OBJECT);
72         JsonObject *object = json_object_new();
73         json_node_take_object(menu_item, object);
74         json_object_set_string_member(object, "name", nameval);
75         json_object_set_string_member(object, "path", pathval);
76
77         JsonArray* menu = json_node_get_array(root);
78         json_array_add_element(menu, menu_item);
79
80         ss_json_ringtone_save(root);
81 }
82
83 void ss_json_ringtone_print(JsonNode *root)
84 {
85         JsonNode *node = root;
86
87         JsonGenerator *generator = json_generator_new();
88         g_object_set(generator, "pretty", TRUE, NULL);
89         json_generator_set_root(generator, node);
90         gchar *data = json_generator_to_data(generator, NULL);
91         //SETTING_TRACE("%s", (char * )data);
92         SETTING_TRACE("-------------------------------------------------------\n");
93         SETTING_TRACE("%s", data);
94         SETTING_TRACE("-------------------------------------------------------\n");
95
96         SETTING_TRACE("VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST SET !!!!\n");
97         vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST, (char*)data);
98         g_free(data);
99         g_object_unref(generator);
100 }
101
102 void ss_json_ringtone_remove(JsonNode *root,  char* filename, char* path_to_del)
103 {
104         int size = json_array_get_length(json_node_get_array(root));
105
106         SETTING_TRACE("BBB size : (%d) \n", size);
107         int i = 0;
108         for (i = 0; i < size ; i++) {
109                 JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
110                 //char *nameval = (char *)json_object_get_string_member(ringtone, "name");
111                 char *pathval = (char *)json_object_get_string_member(ringtone, "path");
112
113                 if (pathval && !strcmp(pathval, path_to_del)) {
114                         json_array_remove_element(json_node_get_array(root), i);
115                         SETTING_TRACE("remove BBB : (%s) --- (%s) \n", pathval, path_to_del);
116                 }
117         }
118
119         ss_json_ringtone_save(root);
120 }
121
122 bool ss_json_ringtone_contain(JsonNode *root, char* newfile)
123 {
124         int size = json_array_get_length(json_node_get_array(root));
125
126         bool ret = false;
127
128         int i = 0;
129         for (i = 0; i < size ; i++) {
130                 JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
131                 //char *nameval = (char *)json_object_get_string_member(ringtone, "name");
132                 char *pathval = (char *)json_object_get_string_member(ringtone, "path");
133                 //SETTING_TRACE("(%s) --- (%s) \n", name, path);
134
135
136                 if (pathval && !strcmp(pathval, newfile)) {
137                         //SETTING_TRACE("FOUND\n");
138                         ret = true;
139                         break;
140                 } else {
141                         //SETTING_TRACE("*NOT* FOUND\n");
142                         ret = false;
143                 }
144         }
145
146         return ret;
147 }
148
149 void ss_json_ringtone_list(JsonNode *root)
150 {
151         int size = json_array_get_length(json_node_get_array(root));
152
153         int i = 0;
154         for (i = 0; i < size ; i++) {
155                 JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
156                 char *name = (char *)json_object_get_string_member(ringtone, "name");
157                 char *path = (char *)json_object_get_string_member(ringtone, "path");
158                 SETTING_TRACE("(%s) --- (%s) \n", name, path);
159         }
160 }
161
162