* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include <vconf.h>
+#include "sst_json.h"
+#include <json-glib/json-glib.h>
+#include <vconf.h>
#include "sst.h"
-#include "sst_core.h"
-#include "sst_json.h"
-static void ss_json_ringtone_save(JsonNode *root)
+struct sst_json_s {
+ JsonParser *parser;
+ JsonNode *root;
+};
+
+static void _json_save_ringtone(JsonNode *root)
{
- // write here
JsonGenerator *generator = json_generator_new();
json_generator_set_root(generator, root);
- json_generator_set_pretty(generator, TRUE);
-#ifdef USE_JSONFILE
- GError *error = NULL;
- gboolean ret = json_generator_to_file(generator, filename, &error);
-#else
- gchar *result = json_generator_to_data(generator, NULL);
- vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST, (char*)result);
-#endif
+ gchar *data = json_generator_to_data(generator, NULL);
+ DBG("ringtone json : %s", data);
+
+ const char *key = VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST;
+ if (vconf_set_str(key, data))
+ ERR("vconf_set_str(%s) Fail", key);
+ g_free(data);
g_object_unref(generator);
}
-JsonParser* ss_json_ringtone_open_file(char *path)
+sst_json_h* sst_json_load_ringtone()
{
- JsonParser *parser;
- //JsonNode *root;
- GError *error;
-
- parser = json_parser_new();
+ GError *error = NULL;
+ sst_json_h *handle = calloc(1, sizeof(struct sst_json_s));
+ if (NULL == handle) {
+ ERR("calloc() Fail");
+ return NULL;
+ }
+ char *load_data = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST);
- error = NULL;
- json_parser_load_from_file(parser, path, &error);
+ handle->parser = json_parser_new();
+ json_parser_load_from_data(handle->parser, load_data, -1, &error);
+ free(load_data);
if (error) {
- SST_SECURE_TRACE("Unable to parse `%s': %s\n", path, error->message);
+ ERR("json_parser_load_from_data() Fail(%s)", error->message);
g_error_free(error);
- g_object_unref(parser);
+ g_object_unref(handle->parser);
+ free(handle);
return NULL;
}
+ handle->root = json_parser_get_root(handle->parser);
- return parser;
+ return handle;
}
-JsonParser* ss_json_ringtone_load_from_data()
+void sst_json_unref(sst_json_h *handle)
{
- JsonParser *parser;
- //JsonNode *root;
- GError *error;
-
- parser = json_parser_new();
-
- error = NULL;
- char *load_data = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST);
- json_parser_load_from_data(parser, load_data, -1, &error);
- if (error) {
- SST_SECURE_TRACE("Unable to load data : %s \n", error->message);
- g_error_free(error);
- g_object_unref(parser);
- return NULL;
- }
- return parser;
+ g_object_unref(handle->parser);
+ free(handle);
}
-void ss_json_ringtone_add(JsonNode *root, char *filename, char *nameval, char *pathval)
+void sst_json_add_ringtone(sst_json_h *handle, const char *nameval, const char *pathval)
{
+ JsonNode *root = handle->root;
JsonNode *menu_item = json_node_new(JSON_NODE_OBJECT);
JsonObject *object = json_object_new();
json_node_take_object(menu_item, object);
JsonArray *menu = json_node_get_array(root);
json_array_add_element(menu, menu_item);
- ss_json_ringtone_save(root);
+ _json_save_ringtone(root);
}
-void ss_json_ringtone_print(JsonNode *root)
+void sst_json_get_ringtones(sst_json_h *handle, system_settings_iter_cb cb, void *user_data)
{
- JsonNode *node = root;
+ int i;
- JsonGenerator *generator = json_generator_new();
- json_generator_set_root(generator, node);
- json_generator_set_pretty(generator, TRUE);
- gchar *data = json_generator_to_data(generator, NULL);
- //SETTING_TRACE("%s", (char * )data);
- SST_SECURE_TRACE("-------------------------------------------------------\n");
- SST_SECURE_TRACE("%s", data);
- SST_SECURE_TRACE("-------------------------------------------------------\n");
+ RET_IF(NULL == cb);
+ RET_IF(NULL == handle);
- SST_SECURE_TRACE("VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST SET !!!!\n");
- vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST, (char*)data);
- g_free(data);
- g_object_unref(generator);
+ JsonArray *ringtone_list = json_node_get_array(handle->root);
+ int size = json_array_get_length(ringtone_list);
+ for (i = 0; i < size; i++) {
+ JsonObject *ringtone = json_array_get_object_element(ringtone_list, i);
+ //const char *name = json_object_get_string_member(ringtone, "name");
+ const char *path = json_object_get_string_member(ringtone, "path");
+ if (NULL == path)
+ continue;
+
+ if (false == cb(i, path, user_data)) {
+ ERR("callback return false");
+ break;
+ }
+ }
}
-void ss_json_ringtone_remove(JsonNode *root, char *filename, char *path_to_del)
+void sst_json_remove_ringtone(sst_json_h *handle, const char *path_to_del)
{
- int size = json_array_get_length(json_node_get_array(root));
+ int i;
- SST_SECURE_TRACE("BBB size : (%d) \n", size);
- int i = 0;
+ RET_IF(NULL == handle);
+ RET_IF(NULL == path_to_del);
+
+ JsonNode *root = handle->root;
+ int size = json_array_get_length(json_node_get_array(root));
+ DBG("size(%d)", size);
for (i = 0; i < size; i++) {
JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
//char *nameval = (char*)json_object_get_string_member(ringtone, "name");
char *pathval = (char*)json_object_get_string_member(ringtone, "path");
- if (pathval && !strcmp(pathval, path_to_del)) {
+ if (pathval && SST_EQUAL == strcmp(pathval, path_to_del)) {
json_array_remove_element(json_node_get_array(root), i);
- SST_SECURE_TRACE("remove BBB : (%s) --- (%s) \n", pathval, path_to_del);
+ DBG("removed(%s)", pathval);
}
}
- ss_json_ringtone_save(root);
+ _json_save_ringtone(root);
}
-bool ss_json_ringtone_contain(JsonNode *root, char *newfile)
+bool sst_json_contain_ringtone(sst_json_h *handle, const char *ringtone_path)
{
- int size = json_array_get_length(json_node_get_array(root));
+ int i;
- bool ret = false;
+ RETV_IF(NULL == handle, false);
+ RETV_IF(NULL == ringtone_path, false);
- int i = 0;
+ JsonNode *root = handle->root;
+ int size = json_array_get_length(json_node_get_array(root));
for (i = 0; i < size; i++) {
JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
//char *nameval = (char*)json_object_get_string_member(ringtone, "name");
char *pathval = (char*)json_object_get_string_member(ringtone, "path");
- //SETTING_TRACE("(%s) --- (%s) \n", name, path);
- if (pathval && !strcmp(pathval, newfile)) {
- //SETTING_TRACE("FOUND\n");
- ret = true;
- break;
- } else {
- //SETTING_TRACE("*NOT* FOUND\n");
- ret = false;
- }
+ if (pathval && SST_EQUAL == strcmp(pathval, ringtone_path))
+ return true;
}
- return ret;
-}
-
-void ss_json_ringtone_list(JsonNode *root)
-{
- int size = json_array_get_length(json_node_get_array(root));
-
- int i = 0;
- for (i = 0; i < size; i++) {
- JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
- char *name = (char*)json_object_get_string_member(ringtone, "name");
- char *path = (char*)json_object_get_string_member(ringtone, "path");
- SST_SECURE_TRACE("(%s) --- (%s) \n", name, path);
- }
+ return false;
}