#include <db-util.h>\r
#include <favorites.h>\r
#include <favorites_private.h>\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+#include "bookmark-adaptor.h"\r
+#include "time.h"\r
+#endif\r
\r
sqlite3 *gl_internet_bookmark_db = 0;\r
\r
\r
/* folder + bookmark */\r
nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
- "select count(*) from bookmarks where type=1 and parent != 0",\r
+ "select count(*) from bookmarks where type=1",\r
-1, &stmt, NULL);\r
if (nError != SQLITE_OK) {\r
FAVORITES_LOGE("sqlite3_prepare_v2 is failed(%s).\n",\r
/* Get bookmarks list only under given folder */\r
sprintf(query, "select id, type, parent, address, title, editable,\\r
creationdate, updatedate, sequence \\r
- from bookmarks where type=1 and parent != 0 order by sequence");\r
+ from bookmarks where type=1 order by sequence");\r
FAVORITES_LOGE("query: %s", query);\r
\r
if (_favorites_open_bookmark_db() < 0) {\r
}\r
m_list->count = i;\r
\r
- if (i <= 0) {\r
- FAVORITES_LOGE("sqlite3_step is failed");\r
- _favorites_close_bookmark_db();\r
- _favorites_free_bookmark_list(m_list);\r
- return NULL;\r
+ if (nError == SQLITE_DONE) {\r
+ if (m_list->count > 0) {\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return m_list;\r
+ } else if (m_list->count == 0) {\r
+ FAVORITES_LOGE("There is no folders");\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ _favorites_free_bookmark_list(m_list);\r
+ return NULL;\r
+ }\r
}\r
+ FAVORITES_LOGE("sqlite3_step is failed");\r
_favorites_finalize_bookmark_db(stmt);\r
- return m_list;\r
+ return NULL;\r
}\r
\r
int _favorites_get_unixtime_from_datetime(char *datetime)\r
FAVORITES_LOGD("Not Allow file://");\r
return FAVORITES_ERROR_INVALID_PARAMETER;\r
}\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ if (parent_id != _get_root_folder_id()) {\r
+ /* check whether folder is exist or not. */\r
+ if (_get_exists_id(parent_id) <= 0) {\r
+ FAVORITES_LOGE("Not found parent folder (%d)\n", parent_id);\r
+ return FAVORITES_ERROR_NO_SUCH_FILE;\r
+ }\r
+ }\r
+ FAVORITES_LOGD("[%s][%s][%d]", title, address, parent_id);\r
+ int id = -1;\r
+ int *ids = NULL;\r
+ int ids_count = -1;\r
+ bp_bookmark_adaptor_get_duplicated_url_ids_p(&ids, &ids_count, 1,\r
+ -1, -1, 0, 0, address, 0);\r
+ if (ids_count > 0)\r
+ id = ids[0];\r
+ free(ids);\r
+\r
+ if (ids_count > 0) {\r
+ FAVORITES_LOGE("same URI is already exist");\r
+ return FAVORITES_ERROR_ITEM_ALREADY_EXIST;\r
+ }\r
\r
+ bp_bookmark_info_fmt info;\r
+ memset(&info, 0x00, sizeof(bp_bookmark_info_fmt));\r
+ info.type = 0;\r
+ info.parent = parent_id;\r
+ info.sequence = -1;\r
+ info.access_count = -1;\r
+ info.editable = 1;\r
+ time_t seconds = 0;\r
+ info.date_created = time(&seconds);\r
+ info.date_modified = time(&seconds);\r
+ if (address != NULL && strlen(address) > 0)\r
+ info.url = strdup(address);\r
+ if (title != NULL && strlen(title) > 0)\r
+ info.title = strdup(title);\r
+\r
+ int ret = bp_bookmark_adaptor_easy_create(&id, &info);\r
+ if (ret == 0) {\r
+ ret = bp_bookmark_adaptor_set_sequence(id, -1); // max sequence\r
+ bp_bookmark_adaptor_easy_free(&info);\r
+ if (ret == 0) {\r
+ *saved_bookmark_id = id;\r
+ FAVORITES_LOGD("bp_bookmark_adaptor_easy_create is success(id:%d)", *saved_bookmark_id);\r
+ bp_bookmark_adaptor_publish_notification();\r
+ return FAVORITES_ERROR_NONE;\r
+ }\r
+ }\r
+ int errcode = bp_bookmark_adaptor_get_errorcode();\r
+ bp_bookmark_adaptor_easy_free(&info);\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_easy_create is failed[%d]", errcode);\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+#else\r
+ int nError;\r
+ sqlite3_stmt *stmt;\r
+#if defined(ROOT_IS_ZERO)\r
+ if (parent_id != _get_root_folder_id()) {\r
+ /* check whether folder is exist or not. */\r
+ if (_get_exists_id(parent_id) <= 0) {\r
+ FAVORITES_LOGE("Not found parent folder (%d)\n", parent_id);\r
+ return FAVORITES_ERROR_NO_SUCH_FILE;\r
+ }\r
+ }\r
+#else\r
if (parent_id > 0) {\r
/* check whether folder is exist or not. */\r
if (_get_exists_id(parent_id) <= 0) {\r
} else {\r
parent_id = _get_root_folder_id();\r
}\r
+#endif\r
FAVORITES_LOGD("[%s][%s][%d]", title, address, parent_id);\r
\r
int uid = _get_exists_bookmark(address);\r
return FAVORITES_ERROR_DB_FAILED;\r
}\r
\r
- int nError;\r
- sqlite3_stmt *stmt;\r
-\r
nError =\r
sqlite3_prepare_v2(gl_internet_bookmark_db,\r
"INSERT INTO bookmarks (type, parent, address, title, creationdate,\\r
FAVORITES_LOGE("sqlite3_step is failed");\r
_favorites_close_bookmark_db();\r
return FAVORITES_ERROR_DB_FAILED;\r
+#endif\r
}\r
\r
int _add_folder(const char *title, int parent_id, int *saved_folder_id)\r
FAVORITES_LOGD("Invalid param: Title is empty");\r
return FAVORITES_ERROR_INVALID_PARAMETER;\r
}\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ if (parent_id != _get_root_folder_id()) {\r
+ /* check whether folder is exist or not. */\r
+ if (_get_exists_id(parent_id) <= 0) {\r
+ FAVORITES_LOGE("Not found parent folder (%d)\n", parent_id);\r
+ return FAVORITES_ERROR_NO_SUCH_FILE;\r
+ }\r
+ }\r
+ int id = -1;\r
+ int *ids = NULL;\r
+ int ids_count = -1;\r
+ bp_bookmark_adaptor_get_duplicated_title_ids_p(&ids, &ids_count, 1,\r
+ -1, parent_id, 1, 0, title, 0);\r
+ if (ids_count > 0)\r
+ id = ids[0];\r
+ free(ids);\r
+\r
+ if (ids_count > 0) {\r
+ FAVORITES_LOGE("same title with same parent is already exist");\r
+ return FAVORITES_ERROR_ITEM_ALREADY_EXIST;\r
+ }\r
+\r
+ bp_bookmark_info_fmt info;\r
+ memset(&info, 0x00, sizeof(bp_bookmark_info_fmt));\r
+ info.type = 1;\r
+ info.parent = parent_id;\r
+ info.sequence = -1;\r
+ info.access_count = -1;\r
+ info.editable = 1;\r
+ if (title != NULL && strlen(title) > 0)\r
+ info.title = strdup(title);\r
+ int ret = bp_bookmark_adaptor_easy_create(&id, &info);\r
+ if (ret == 0) {\r
+ ret = bp_bookmark_adaptor_set_sequence(id, -1); // max sequence\r
+ bp_bookmark_adaptor_easy_free(&info);\r
+ if (ret == 0) {\r
+ *saved_folder_id = id;\r
+ FAVORITES_LOGD("bmsvc_add_bookmark is success(id:%d)", *saved_folder_id);\r
+ bp_bookmark_adaptor_publish_notification();\r
+ return FAVORITES_ERROR_NONE;\r
+ }\r
+ }\r
+ int errcode = bp_bookmark_adaptor_get_errorcode();\r
+ bp_bookmark_adaptor_easy_free(&info);\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_easy_create is failed[%d]", errcode);\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+#else\r
+#if defined(ROOT_IS_ZERO)\r
+ if (parent_id != _get_root_folder_id()) {\r
+ /* check whether folder is exist or not. */\r
+ if (_get_exists_id(parent_id) <= 0) {\r
+ FAVORITES_LOGE("Not found parent folder (%d)\n", parent_id);\r
+ return FAVORITES_ERROR_NO_SUCH_FILE;\r
+ }\r
+ }\r
+#else\r
if (parent_id > 0) {\r
/* check whether folder is exist or not. */\r
if (_get_exists_id(parent_id) <= 0) {\r
} else {\r
parent_id = _get_root_folder_id();\r
}\r
+#endif\r
FAVORITES_LOGD("[%s][%d]", title, parent_id);\r
\r
int uid = _get_exists_folder(title, parent_id);\r
/* ignore this call.. already exist. */\r
if (uid > 0) {\r
- FAVORITES_LOGE("Bookmark is already exist. cancel the add operation.");\r
+ FAVORITES_LOGE("Folder is already exist. cancel the add operation.");\r
return FAVORITES_ERROR_ITEM_ALREADY_EXIST;\r
}\r
\r
FAVORITES_LOGE("sqlite3_step is failed");\r
_favorites_close_bookmark_db();\r
return FAVORITES_ERROR_DB_FAILED;\r
+#endif\r
}\r
\r
\r
int _get_root_folder_id(void)\r
{\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ FAVORITES_LOGE("SYNC");\r
+ int root_id = -1;\r
+ bp_bookmark_adaptor_get_root(&root_id);\r
+ return root_id;\r
+#else\r
+#if defined(ROOT_IS_ZERO)\r
+ return 0;\r
+#else\r
+ FAVORITES_LOGE("NOT SYNC");\r
return 1;\r
+#endif\r
+#endif\r
}\r
\r
int _get_exists_id(int id)\r
{\r
- FAVORITES_LOGE("\n");\r
+ FAVORITES_LOGE("");\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int value = -1;\r
+ int ret = -1;\r
+ int errorcode = -1;\r
+ ret = bp_bookmark_adaptor_get_type(id, &value);\r
+ if (ret < 0) {\r
+ errorcode = bp_bookmark_adaptor_get_errorcode();\r
+ if (errorcode == BP_BOOKMARK_ERROR_NO_DATA)\r
+ return 0;\r
+ else\r
+ return -1;\r
+ }\r
+ return 1;\r
+#else\r
int nError;\r
sqlite3_stmt *stmt;\r
\r
\r
_favorites_close_bookmark_db();\r
return -1;\r
+#endif\r
}\r
\r
int _get_exists_bookmark(const char *address)\r
int _get_bookmark_id(const char *address)\r
{\r
FAVORITES_LOGE("");\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int id = -1;\r
+ int *ids = NULL;\r
+ int ids_count = -1;\r
+ bp_bookmark_adaptor_get_duplicated_url_ids_p(&ids, &ids_count, 1,\r
+ -1, -1, 0, 0, address, 0);\r
+ if (ids_count > 0)\r
+ id = ids[0];\r
+ free(ids);\r
+\r
+ if (ids_count > 0) {\r
+ return id;\r
+ }\r
+ FAVORITES_LOGE("There is no such bookmark url exists.");\r
+ return -1;\r
+#else\r
int nError;\r
sqlite3_stmt *stmt;\r
\r
sqlite3_errmsg(gl_internet_bookmark_db));\r
_favorites_close_bookmark_db();\r
return -1;\r
+#endif\r
}\r
\r
int _get_folder_id(const char *title, const int parent)\r
{\r
FAVORITES_LOGE("");\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int id = -1;\r
+ int *ids = NULL;\r
+ int ids_count = -1;\r
+ bp_bookmark_adaptor_get_duplicated_title_ids_p(&ids, &ids_count, 1,\r
+ -1, parent, 1, 0, title, 0);\r
+ if (ids_count > 0)\r
+ id = ids[0];\r
+ free(ids);\r
+\r
+ if (ids_count > 0) {\r
+ return id;\r
+ }\r
+ FAVORITES_LOGE("There is no such folder exists.");\r
+ return -1;\r
+#else\r
int nError;\r
sqlite3_stmt *stmt;\r
\r
sqlite3_errmsg(gl_internet_bookmark_db));\r
_favorites_close_bookmark_db();\r
return -1;\r
+#endif\r
+}\r
+\r
+int _get_count_by_folder(int parent_id)\r
+{\r
+ int nError;\r
+ sqlite3_stmt *stmt;\r
+ FAVORITES_LOGE("");\r
+ \r
+ if (_favorites_open_bookmark_db() < 0) {\r
+ FAVORITES_LOGE("db_util_open is failed\n");\r
+ return -1;\r
+ }\r
+\r
+ /*bookmark */\r
+ nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
+ "select count(*) from bookmarks where parent=?",\r
+ -1, &stmt, NULL);\r
+ if (nError != SQLITE_OK) {\r
+ FAVORITES_LOGE("sqlite3_prepare_v2 is failed(%s).\n",\r
+ sqlite3_errmsg(gl_internet_bookmark_db));\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return -1;\r
+ }\r
+\r
+ if (sqlite3_bind_int(stmt, 1, parent_id) != SQLITE_OK) {\r
+ FAVORITES_LOGE("sqlite3_bind_int is failed");\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return -1;\r
+ }\r
+\r
+ nError = sqlite3_step(stmt);\r
+ if (nError == SQLITE_ROW) {\r
+ int count = sqlite3_column_int(stmt, 0);\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ FAVORITES_LOGE("count: %d", count);\r
+ return count;\r
+ } else if (nError == SQLITE_DONE) {\r
+ FAVORITES_LOGE("No rows");\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return -1;\r
+ }\r
+ FAVORITES_LOGE("sqlite3_step is failed");\r
+ _favorites_close_bookmark_db();\r
+ return -1;\r
+}\r
+\r
+\r
+int _get_list_by_folder(int parent_id, bookmark_list_h *list)\r
+{\r
+ FAVORITES_LOGD("");\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int *ids = NULL;\r
+ int ids_count = -1;\r
+ bp_bookmark_info_fmt info;\r
+ if (bp_bookmark_adaptor_get_sequence_child_ids_p(&ids, &ids_count, -1, 0, parent_id, -1, 0) < 0) {\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_get_sequence_child_ids_p is failed");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+\r
+ FAVORITES_LOGD("ids_count: %d", ids_count);\r
+ if (ids_count < 0) {\r
+ FAVORITES_LOGE("bookmark list is empty");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+\r
+ *list = (bookmark_list_h) calloc(1, sizeof(bookmark_list_s));\r
+ (*list)->count = 0;\r
+ (*list)->item =\r
+ (bookmark_entry_internal_h) calloc(ids_count, sizeof(bookmark_entry_internal_s));\r
+ int i = 0;\r
+ for(i = 0; i < ids_count; i++) {\r
+ (*list)->item[i].id = ids[i];\r
+ if (bp_bookmark_adaptor_get_info(ids[i], (BP_BOOKMARK_O_TYPE |\r
+ BP_BOOKMARK_O_PARENT | BP_BOOKMARK_O_SEQUENCE |\r
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |\r
+ BP_BOOKMARK_O_TITLE | BP_BOOKMARK_O_DATE_CREATED |\r
+ BP_BOOKMARK_O_DATE_MODIFIED), &info) == 0) {\r
+ (*list)->item[i].is_folder = info.type;\r
+ (*list)->item[i].folder_id = info.parent;\r
+ (*list)->item[i].orderIndex = info.sequence;\r
+ (*list)->item[i].editable = info.editable;\r
+\r
+ if (info.url != NULL && strlen(info.url) > 0)\r
+ (*list)->item[i].address = strdup(info.url);\r
+ if (info.title != NULL && strlen(info.title) > 0)\r
+ (*list)->item[i].title = strdup(info.title);\r
+ FAVORITES_LOGD("Title: %s", (*list)->item[i].title);\r
+\r
+ (*list)->item[i].creationdate = NULL;\r
+ (*list)->item[i].creationdate = (char *)calloc(128, sizeof(char));\r
+ strftime((*list)->item[i].creationdate,128,"%Y-%m-%d %H:%M:%S",localtime((time_t *)&(info.date_created)));\r
+\r
+ (*list)->item[i].updatedate = NULL;\r
+ (*list)->item[i].updatedate = (char *)calloc(128, sizeof(char));\r
+ strftime((*list)->item[i].updatedate,128,"%Y-%m-%d %H:%M:%S",localtime((time_t *)&(info.date_modified)));\r
+ }\r
+ bp_bookmark_adaptor_easy_free(&info);\r
+ }\r
+ (*list)->count = i;\r
+ FAVORITES_LOGE("bookmark list count : %d", (*list)->count);\r
+ free(ids);\r
+ return FAVORITES_ERROR_NONE;\r
+#else\r
+ int nError;\r
+ sqlite3_stmt *stmt;\r
+\r
+ int item_count = _get_count_by_folder(parent_id);\r
+ if (item_count < 0) {\r
+ FAVORITES_LOGD("_get_count_by_folder is failed");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+\r
+ if (_favorites_open_bookmark_db() < 0) {\r
+ FAVORITES_LOGE("db_util_open is failed\n");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+ nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
+ "select id, type, parent, address, title, editable,\\r
+ creationdate, updatedate, sequence \\r
+ from bookmarks where parent=? order by sequence",\r
+ -1, &stmt, NULL);\r
+ if (nError != SQLITE_OK) {\r
+ FAVORITES_LOGE("sqlite3_prepare_v2 is failed(%s).\n",\r
+ sqlite3_errmsg(gl_internet_bookmark_db));\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+\r
+ if (sqlite3_bind_int(stmt, 1, parent_id) != SQLITE_OK) {\r
+ FAVORITES_LOGE("sqlite3_bind_int is failed.\n");\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return -1;\r
+ }\r
+\r
+ *list = (bookmark_list_h) calloc(1, sizeof(bookmark_list_s));\r
+ (*list)->count = 0;\r
+ (*list)->item =\r
+ (bookmark_entry_internal_h) calloc(item_count, sizeof(bookmark_entry_internal_s));\r
+ int i = 0;\r
+ while ((nError = sqlite3_step(stmt)) == SQLITE_ROW && (i < item_count)) {\r
+ (*list)->item[i].id = sqlite3_column_int(stmt, 0);\r
+ (*list)->item[i].is_folder = sqlite3_column_int(stmt, 1);\r
+ (*list)->item[i].folder_id = sqlite3_column_int(stmt, 2);\r
+\r
+ (*list)->item[i].address = NULL;\r
+ if (!(*list)->item[i].is_folder) {\r
+ const char *url = (const char *)(sqlite3_column_text(stmt, 3));\r
+ if (url) {\r
+ int length = strlen(url);\r
+ if (length > 0) {\r
+ (*list)->item[i].address = (char *)calloc(length + 1, sizeof(char));\r
+ memcpy((*list)->item[i].address, url, length);\r
+ FAVORITES_LOGE ("url:%s\n", url);\r
+ }\r
+ }\r
+ }\r
+\r
+ const char *title = (const char *)(sqlite3_column_text(stmt, 4));\r
+ (*list)->item[i].title = NULL;\r
+ if (title) {\r
+ int length = strlen(title);\r
+ if (length > 0) {\r
+ (*list)->item[i].title = (char *)calloc(length + 1, sizeof(char));\r
+ memcpy((*list)->item[i].title, title, length);\r
+ }\r
+ }\r
+ (*list)->item[i].editable = sqlite3_column_int(stmt, 5);\r
+\r
+ const char *creationdate = (const char *)(sqlite3_column_text(stmt, 6));\r
+ (*list)->item[i].creationdate = NULL;\r
+ if (creationdate) {\r
+ int length = strlen(creationdate);\r
+ if (length > 0) {\r
+ (*list)->item[i].creationdate = (char *)calloc(length + 1, sizeof(char));\r
+ memcpy((*list)->item[i].creationdate, creationdate, length);\r
+ }\r
+ }\r
+ const char *updatedate = (const char *)(sqlite3_column_text(stmt, 7));\r
+ (*list)->item[i].updatedate = NULL;\r
+ if (updatedate) {\r
+ int length = strlen(updatedate);\r
+ if (length > 0) {\r
+ (*list)->item[i].updatedate = (char *)calloc(length + 1, sizeof(char));\r
+ memcpy((*list)->item[i].updatedate, updatedate, length);\r
+ }\r
+ }\r
+\r
+ (*list)->item[i].orderIndex = sqlite3_column_int(stmt, 8);\r
+ i++;\r
+ }\r
+\r
+ (*list)->count = i;\r
+ FAVORITES_LOGE("bookmark list count : %d", (*list)->count);\r
+\r
+ if ((nError != SQLITE_ROW) && (nError != SQLITE_DONE)) {\r
+ FAVORITES_LOGE("sqlite3_step is failed(%s).\n",\r
+ sqlite3_errmsg(gl_internet_bookmark_db));\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+\r
+ _favorites_finalize_bookmark_db(stmt);\r
+ return FAVORITES_ERROR_NONE;\r
+#endif\r
+}\r
+\r
+int _set_full_tree_to_html_recur(int parent_id, FILE *fp, int depth)\r
+{\r
+ FAVORITES_LOGD("depth: %d", depth);\r
+ if (parent_id < 0)\r
+ return FAVORITES_ERROR_INVALID_PARAMETER;\r
+ if (fp == NULL)\r
+ return FAVORITES_ERROR_INVALID_PARAMETER;\r
+ if (depth < 0)\r
+ return FAVORITES_ERROR_INVALID_PARAMETER;\r
+\r
+ bookmark_list_h child_list = NULL;\r
+\r
+ int ret = _get_list_by_folder(parent_id, &child_list);\r
+\r
+ if (ret != FAVORITES_ERROR_NONE)\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+\r
+ int i = 0;\r
+ int j = 0;\r
+ FAVORITES_LOGD("list->count: %d", child_list->count);\r
+ for (i=0; i < (child_list->count); i++) {\r
+ FAVORITES_LOGD("title: %s", child_list->item[i].title);\r
+ if (child_list->item[i].is_folder) {\r
+ for (j=0 ; j < depth ; j++) {\r
+ fputs("\t", fp);\r
+ }\r
+ int folder_adddate_unixtime = 0;\r
+ folder_adddate_unixtime =\r
+ _favorites_get_unixtime_from_datetime(\r
+ child_list->item[i].creationdate);\r
+ fprintf(fp, "<DT><H3 FOLDED ADD_DATE=\"%d\">%s</H3>\n",\r
+ folder_adddate_unixtime, child_list->item[i].title);\r
+ for (j=0 ; j < depth ; j++) {\r
+ fputs("\t", fp);\r
+ }\r
+ fputs("<DL><p>\n", fp);\r
+ ret = _set_full_tree_to_html_recur(child_list->item[i].id, fp, depth+1);\r
+ if (ret != FAVORITES_ERROR_NONE) {\r
+ _favorites_free_bookmark_list(child_list);\r
+ return ret;\r
+ }\r
+ for (j=0 ; j < depth ; j++) {\r
+ fputs("\t", fp);\r
+ }\r
+ fputs("</DL><p>\n", fp);\r
+ }else {\r
+ int bookmark_adddate_unixtime =\r
+ _favorites_get_unixtime_from_datetime(\r
+ child_list->item[i].creationdate);\r
+\r
+ if(bookmark_adddate_unixtime<0)\r
+ bookmark_adddate_unixtime=0;\r
+\r
+ int bookmark_updatedate_unixtime =\r
+ _favorites_get_unixtime_from_datetime(\r
+ child_list->item[i].updatedate);\r
+\r
+ if(bookmark_updatedate_unixtime<0)\r
+ bookmark_updatedate_unixtime=0;\r
+\r
+ for (j=0 ; j < depth ; j++) {\r
+ fputs("\t", fp);\r
+ }\r
+ fprintf(fp,"<DT><A HREF=\"%s\" ",\r
+ child_list->item[i].address);\r
+ fprintf(fp,"ADD_DATE=\"%d\" ",\r
+ bookmark_adddate_unixtime);\r
+ fprintf(fp,"LAST_VISIT=\"%d\" ",\r
+ bookmark_updatedate_unixtime);\r
+ fprintf(fp,"LAST_MODIFIED=\"%d\">",\r
+ bookmark_updatedate_unixtime);\r
+ fprintf(fp,"%s</A>\n", child_list->item[i].title );\r
+ }\r
+ }\r
+\r
+ _favorites_free_bookmark_list(child_list);\r
+ return FAVORITES_ERROR_NONE;\r
}\r
\r
/*************************************************************\r
*************************************************************/\r
int favorites_bookmark_get_root_folder_id(int *root_id)\r
{\r
+ FAVORITES_LOGE("");\r
if (!root_id)\r
return FAVORITES_ERROR_INVALID_PARAMETER;\r
\r
*root_id = _get_root_folder_id();\r
+ FAVORITES_LOGE("root_id: %d", *root_id);\r
return FAVORITES_ERROR_NONE;\r
}\r
\r
int favorites_bookmark_get_count(int *count)\r
{\r
FAVORITES_LOGD("");\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int ids_count = 0;\r
+ int *ids = NULL;\r
+ bp_bookmark_adaptor_get_full_ids_p(&ids, &ids_count);\r
+ *count = ids_count;\r
+ free(ids);\r
+\r
+ if (*count <0) {\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_get_full_ids_p is failed\n");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+ return FAVORITES_ERROR_NONE;\r
+#else\r
int nError;\r
sqlite3_stmt *stmt;\r
\r
}\r
\r
/* folder + bookmark */\r
+#if defined(ROOT_IS_ZERO)\r
+ nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
+ "select count(*) from bookmarks",\r
+ -1, &stmt, NULL);\r
+#else\r
nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
"select count(*) from bookmarks where parent != 0",\r
-1, &stmt, NULL);\r
+#endif\r
if (nError != SQLITE_OK) {\r
FAVORITES_LOGE("sqlite3_prepare_v2 is failed(%s).\n",\r
sqlite3_errmsg(gl_internet_bookmark_db));\r
}\r
_favorites_close_bookmark_db();\r
return FAVORITES_ERROR_DB_FAILED;\r
+#endif\r
}\r
\r
int favorites_bookmark_foreach(favorites_bookmark_foreach_cb callback,void *user_data)\r
{\r
FAVORITES_NULL_ARG_CHECK(callback);\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int ids_count = 0;\r
+ int *ids = NULL;\r
+ int func_ret = 0;\r
+ int is_folder = -1;\r
+ int editable = -1;\r
+\r
+ if (bp_bookmark_adaptor_get_full_ids_p(&ids, &ids_count) < 0) {\r
+ FAVORITES_LOGE ("bp_bookmark_adaptor_get_full_ids_p is failed.\n");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+\r
+ FAVORITES_LOGD("bp_bookmark_adaptor_get_full_ids_p count : %d", ids_count);\r
+ if (ids_count > 0) {\r
+ int i = 0;\r
+ for (i = 0; i < ids_count; i++) {\r
+ FAVORITES_LOGD("I[%d] id : %d", i, ids[i]);\r
+ favorites_bookmark_entry_s result;\r
+ memset(&result, 0x00, sizeof(favorites_bookmark_entry_s));\r
+ result.id = ids[i];\r
+ bp_bookmark_adaptor_get_type(result.id, &is_folder);\r
+ if (is_folder > 0)\r
+ result.is_folder = 1;\r
+ else\r
+ result.is_folder = 0;\r
+ FAVORITES_LOGD("is_folder : %d", result.is_folder);\r
+ bp_bookmark_adaptor_get_parent_id(result.id, &(result.folder_id));\r
+ FAVORITES_LOGD("folder_id : %d", result.folder_id);\r
+ bp_bookmark_adaptor_get_url(result.id, &(result.address));\r
+ FAVORITES_LOGD("address : %s", result.address);\r
+ bp_bookmark_adaptor_get_title(result.id, &(result.title));\r
+ FAVORITES_LOGD("title : %s", result.title);\r
+ bp_bookmark_adaptor_get_is_editable(result.id, &editable);\r
+ if (editable > 0)\r
+ result.editable = 1;\r
+ else\r
+ result.editable = 0;\r
+ bp_bookmark_adaptor_get_sequence(result.id, &(result.order_index));\r
+ FAVORITES_LOGD("order_index : %d", result.order_index);\r
+\r
+ result.creation_date = NULL;\r
+ int recv_int = -1;\r
+ bp_bookmark_adaptor_get_date_created(result.id, &recv_int);\r
+ result.creation_date = (char *)calloc(128, sizeof(char));\r
+ strftime(result.creation_date,128,"%Y-%m-%d %H:%M:%S",localtime((time_t *)&recv_int));\r
+ FAVORITES_LOGD("Creationdata:%s", result.creation_date);\r
+\r
+ result.update_date = NULL;\r
+ bp_bookmark_adaptor_get_date_modified(result.id, &recv_int);\r
+ result.update_date = (char *)calloc(128, sizeof(char));\r
+ strftime(result.update_date,128,"%Y-%m-%d %H:%M:%S",localtime((time_t *)&recv_int));\r
+ FAVORITES_LOGD("update_date:%s", result.update_date);\r
+\r
+ result.visit_date = NULL;\r
+ bp_bookmark_adaptor_get_date_visited(result.id, &recv_int);\r
+ result.visit_date = (char *)calloc(128, sizeof(char));\r
+ strftime(result.visit_date,128,"%Y-%m-%d %H:%M:%S",localtime((time_t *)&recv_int));\r
+ FAVORITES_LOGD("visit_date:%s", result.visit_date);\r
+\r
+ func_ret = callback(&result, user_data);\r
+ _favorites_free_bookmark_entry(&result);\r
+ if(func_ret == 0) \r
+ break;\r
+ }\r
+ }\r
+ free(ids);\r
+ FAVORITES_LOGE ("There are no more bookmarks.\n");\r
+ return FAVORITES_ERROR_NONE;\r
+#else\r
int nError;\r
int func_ret = 0;\r
sqlite3_stmt *stmt;\r
FAVORITES_LOGE("db_util_open is failed\n");\r
return FAVORITES_ERROR_DB_FAILED;\r
}\r
+#if defined(ROOT_IS_ZERO)\r
+ nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
+ "select id, type, parent, address, title, editable,\\r
+ creationdate, updatedate, sequence \\r
+ from bookmarks order by sequence",\r
+ -1, &stmt, NULL);\r
+#else\r
nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
"select id, type, parent, address, title, editable,\\r
creationdate, updatedate, sequence \\r
from bookmarks where parent != 0 order by sequence",\r
-1, &stmt, NULL);\r
+#endif\r
if (nError != SQLITE_OK) {\r
FAVORITES_LOGE("sqlite3_prepare_v2 is failed(%s).\n",\r
sqlite3_errmsg(gl_internet_bookmark_db));\r
if (length > 0) {\r
result.title = (char *)calloc(length + 1, sizeof(char));\r
memcpy(result.title, title, length);\r
+ FAVORITES_LOGE ("title:%s\n", title);\r
}\r
}\r
result.editable = sqlite3_column_int(stmt, 5);\r
FAVORITES_LOGE ("There are no more bookmarks.\n");\r
_favorites_finalize_bookmark_db(stmt);\r
return FAVORITES_ERROR_NONE;\r
+#endif\r
}\r
\r
-int favorites_bookmark_export_list(const char * file_path)\r
+int favorites_bookmark_export_list(const char *file_path)\r
{\r
FAVORITES_NULL_ARG_CHECK(file_path);\r
- FILE *fp = NULL;\r
- bookmark_list_h folders_list = NULL;\r
- bookmark_list_h bookmarks_list = NULL;\r
\r
- /* Get list of all bookmarks */\r
- folders_list = _favorites_bookmark_get_folder_list();\r
- if(folders_list == NULL ) {\r
- FAVORITES_LOGE("There is no folders even root folder");\r
- return FAVORITES_ERROR_DB_FAILED;\r
- }\r
+ int root_id = -1;\r
+ favorites_bookmark_get_root_folder_id(&root_id);\r
\r
- fp = fopen( file_path, "w");\r
- if(fp == NULL) {\r
+ FILE *fp = NULL;\r
+ FAVORITES_LOGE("file_path: %s", file_path);\r
+ fp = fopen(file_path, "w");\r
+ if (fp == NULL) {\r
FAVORITES_LOGE("file opening is failed.");\r
- _favorites_free_bookmark_list(folders_list);\r
return FAVORITES_ERROR_INVALID_PARAMETER;\r
}\r
fputs("<!DOCTYPE NETSCAPE-Bookmark-file-1>\n", fp);\r
fputs("<TITLE>Bookmarks</TITLE>\n", fp);\r
fputs("<H1>Bookmarks</H1>\n", fp);\r
fputs("<DL><p>\n", fp);\r
- /*Set subfolders and its bookmark items */\r
- int i = 0;\r
- int folder_adddate_unixtime = 0;\r
- int k=0;\r
- int bookmark_adddate_unixtime = 0;\r
- int bookmark_updatedate_unixtime = 0;\r
- for(i=0; i < (folders_list->count); i++) {\r
- folder_adddate_unixtime =\r
- _favorites_get_unixtime_from_datetime(\r
- folders_list->item[i].creationdate);\r
- FAVORITES_LOGE("TITLE: %s", folders_list->item[i].title);\r
-\r
- fprintf(fp, "\t<DT><H3 FOLDED ADD_DATE=\"%d\">%s</H3>\n", \r
- folder_adddate_unixtime, folders_list->item[i].title);\r
- fputs("\t<DL><p>\n", fp);\r
- /* Get bookmarks under this folder and put the list into the file*/\r
- _favorites_free_bookmark_list(bookmarks_list);\r
- bookmarks_list = NULL;\r
- bookmarks_list = _favorites_get_bookmark_list_at_folder(\r
- folders_list->item[i].id);\r
- if(bookmarks_list!= NULL){\r
- for(k=0;k<(bookmarks_list->count); k++){\r
- bookmark_adddate_unixtime =\r
- _favorites_get_unixtime_from_datetime(\r
- bookmarks_list->item[k].creationdate);\r
-\r
- if(bookmark_adddate_unixtime<0)\r
- bookmark_adddate_unixtime=0;\r
-\r
- bookmark_updatedate_unixtime =\r
- _favorites_get_unixtime_from_datetime(\r
- bookmarks_list->item[k].updatedate);\r
-\r
- if(bookmark_updatedate_unixtime<0)\r
- bookmark_updatedate_unixtime=0;\r
-\r
- fprintf(fp,"\t\t<DT><A HREF=\"%s\" ", \r
- bookmarks_list->item[k].address);\r
- fprintf(fp,"ADD_DATE=\"%d\" ",\r
- bookmark_adddate_unixtime);\r
- fprintf(fp,"LAST_VISIT=\"%d\" ",\r
- bookmark_updatedate_unixtime);\r
- fprintf(fp,"LAST_MODIFIED=\"%d\">",\r
- bookmark_updatedate_unixtime);\r
- fprintf(fp,"%s</A>\n", bookmarks_list->item[k].title );\r
- }\r
- }\r
- fputs("\t</DL><p>\n", fp);\r
- }\r
-\r
- /*Set root folder's bookmark items */\r
- _favorites_free_bookmark_list(bookmarks_list);\r
- bookmarks_list = NULL;\r
- bookmarks_list = _favorites_get_bookmark_list_at_folder(1);\r
- if(bookmarks_list!= NULL){\r
- for(k=0;k<(bookmarks_list->count); k++){\r
- bookmark_adddate_unixtime =\r
- _favorites_get_unixtime_from_datetime(\r
- bookmarks_list->item[k].creationdate);\r
-\r
- if(bookmark_adddate_unixtime<0)\r
- bookmark_adddate_unixtime=0;\r
-\r
- bookmark_updatedate_unixtime =\r
- _favorites_get_unixtime_from_datetime(\r
- bookmarks_list->item[k].updatedate);\r
-\r
- if(bookmark_updatedate_unixtime<0)\r
- bookmark_updatedate_unixtime=0;\r
\r
- fprintf(fp,"\t<DT><A HREF=\"%s\" ", \r
- bookmarks_list->item[k].address);\r
- fprintf(fp,"ADD_DATE=\"%d\" ",\r
- bookmark_adddate_unixtime);\r
- fprintf(fp,"LAST_VISIT=\"%d\" ",\r
- bookmark_updatedate_unixtime);\r
- fprintf(fp,"LAST_MODIFIED=\"%d\">",\r
- bookmark_updatedate_unixtime);\r
- fprintf(fp,"%s</A>\n", bookmarks_list->item[k].title );\r
- }\r
+ int ret = -1;\r
+ ret = _set_full_tree_to_html_recur(root_id, fp, 1);\r
+ if (ret != FAVORITES_ERROR_NONE) {\r
+ fclose(fp);\r
+ return FAVORITES_ERROR_DB_FAILED;\r
}\r
+\r
fputs("</DL><p>\n", fp);\r
fclose(fp);\r
- _favorites_free_bookmark_list(bookmarks_list);\r
- _favorites_free_bookmark_list(folders_list);\r
-\r
return FAVORITES_ERROR_NONE;\r
}\r
\r
int favorites_bookmark_get_favicon(int id, Evas *evas, Evas_Object **icon)\r
{\r
+ FAVORITES_LOGD("");\r
FAVORITES_INVALID_ARG_CHECK(id<0);\r
FAVORITES_NULL_ARG_CHECK(evas);\r
FAVORITES_NULL_ARG_CHECK(icon);\r
-\r
- sqlite3_stmt *stmt;\r
- char query[1024];\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ void *favicon_data_temp=NULL;\r
+ favicon_entry_h favicon;\r
+ favicon = (favicon_entry_h) calloc(1, sizeof(favicon_entry_s));\r
+ int ret = bp_bookmark_adaptor_get_favicon(id, (unsigned char **)&favicon_data_temp, &(favicon->length));\r
+ if (ret == 0) {\r
+ if (bp_bookmark_adaptor_get_favicon_width(id, &(favicon->w)) == 0) {\r
+ if (bp_bookmark_adaptor_get_favicon_height(id, &(favicon->h)) == 0) {\r
+ FAVORITES_LOGD("favicon is successfully loaded.");\r
+ } else {\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_set_favicon_height is failed");\r
+ *icon = NULL;\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+ } else {\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_set_favicon_width is failed");\r
+ *icon = NULL;\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+ } else {\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_set_favicon is failed");\r
+ *icon = NULL;\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+ FAVORITES_LOGD("len: %d, w:%d, h:%d", favicon->length, favicon->w, favicon->h);\r
+ if (favicon->length > 0){\r
+ *icon = evas_object_image_filled_add(evas);\r
+ evas_object_image_colorspace_set(*icon, EVAS_COLORSPACE_ARGB8888);\r
+ evas_object_image_size_set(*icon, favicon->w, favicon->h);\r
+ evas_object_image_fill_set(*icon, 0, 0, favicon->w, favicon->h);\r
+ evas_object_image_filled_set(*icon, EINA_TRUE);\r
+ evas_object_image_alpha_set(*icon,EINA_TRUE);\r
+ evas_object_image_data_set(*icon, favicon_data_temp);\r
+ return FAVORITES_ERROR_NONE;\r
+ }\r
+ *icon = NULL;\r
+ FAVORITES_LOGE("favicon length is 0");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+#else\r
void *favicon_data_temp=NULL;\r
favicon_entry_h favicon;\r
+ sqlite3_stmt *stmt;\r
+ char query[1024];\r
int nError;\r
\r
memset(&query, 0x00, sizeof(char)*1024);\r
\r
_favorites_close_bookmark_db();\r
return FAVORITES_ERROR_NONE;\r
+#endif\r
}\r
\r
int favorites_bookmark_set_favicon(int bookmark_id, Evas_Object *icon)\r
{\r
+ FAVORITES_LOGD("");\r
FAVORITES_INVALID_ARG_CHECK(bookmark_id<0);\r
FAVORITES_NULL_ARG_CHECK(icon);\r
-\r
- int nError;\r
- sqlite3_stmt *stmt;\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int icon_w = 0;\r
+ int icon_h = 0;\r
+ int stride = 0;\r
+ int icon_length = 0;\r
+ void *icon_data = (void *)evas_object_image_data_get(icon, EINA_TRUE);\r
+ evas_object_image_size_get(icon, &icon_w, &icon_h);\r
+ stride = evas_object_image_stride_get(icon);\r
+ icon_length = icon_h * stride;\r
+ FAVORITES_LOGD("favicon size w:%d, h:%d, stride: %d", icon_w, icon_h, stride);\r
+ int ret = bp_bookmark_adaptor_set_favicon(bookmark_id,(const unsigned char *)icon_data, icon_length);\r
+ if (ret == 0) {\r
+ if (bp_bookmark_adaptor_set_favicon_width(bookmark_id, icon_w) == 0) {\r
+ if (bp_bookmark_adaptor_set_favicon_height(bookmark_id, icon_h) == 0) {\r
+ FAVORITES_LOGE("favicon is successfully saved.");\r
+ bp_bookmark_adaptor_publish_notification();\r
+ return FAVORITES_ERROR_NONE;\r
+ } else\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_set_favicon_height is failed");\r
+ } else\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_set_favicon_width is failed");\r
+ } else\r
+ FAVORITES_LOGE("bp_bookmark_adaptor_set_favicon is failed");\r
+ FAVORITES_LOGE("set favicon is failed");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+#else\r
int icon_w = 0;\r
int icon_h = 0;\r
int stride = 0;\r
stride = evas_object_image_stride_get(icon);\r
icon_length = icon_h * stride;\r
FAVORITES_LOGD("favicon size w:%d, h:%d, stride: %d", icon_w, icon_h, stride);\r
+ int nError;\r
+ sqlite3_stmt *stmt;\r
\r
if (_favorites_open_bookmark_db() < 0) {\r
FAVORITES_LOGE("db_util_open is failed\n");\r
FAVORITES_LOGE("sqlite3_step is failed");\r
_favorites_close_bookmark_db();\r
return FAVORITES_ERROR_DB_FAILED;\r
+#endif\r
}\r
\r
int favorites_bookmark_delete_bookmark(int id)\r
{\r
+ FAVORITES_LOGE("");\r
FAVORITES_INVALID_ARG_CHECK(id<0);\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ if (bp_bookmark_adaptor_delete(id) < 0)\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ else {\r
+ bp_bookmark_adaptor_publish_notification();\r
+ return FAVORITES_ERROR_NONE;\r
+ }\r
+#else\r
int nError;\r
sqlite3_stmt *stmt;\r
\r
return FAVORITES_ERROR_DB_FAILED;\r
}\r
\r
+#if defined(ROOT_IS_ZERO)\r
+ nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
+ "delete from bookmarks where id=?", -1, &stmt, NULL);\r
+#else\r
nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
"delete from bookmarks where id=? and parent != 0", -1, &stmt, NULL);\r
+#endif\r
if (nError != SQLITE_OK) {\r
FAVORITES_LOGE("sqlite3_prepare_v2 is failed(%s).\n",\r
sqlite3_errmsg(gl_internet_bookmark_db));\r
FAVORITES_LOGE("sqlite3_step is failed");\r
_favorites_close_bookmark_db();\r
return FAVORITES_ERROR_DB_FAILED;\r
+#endif\r
}\r
\r
int favorites_bookmark_delete_all_bookmarks(void)\r
{\r
+ FAVORITES_LOGD("");\r
+#if defined(BROWSER_BOOKMARK_SYNC)\r
+ int ids_count = 0;\r
+ int *ids = NULL;\r
+\r
+ if (bp_bookmark_adaptor_get_full_ids_p(&ids, &ids_count) < 0) {\r
+ FAVORITES_LOGE ("bp_bookmark_adaptor_get_full_ids_p is failed.\n");\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ }\r
+\r
+ FAVORITES_LOGD("bp_bookmark_adaptor_get_full_ids_p count : %d", ids_count);\r
+ if (ids_count > 0) {\r
+ int i = 0;\r
+ for (i = 0; i < ids_count; i++) {\r
+ FAVORITES_LOGD("I[%d] id : %d", i, ids[i]);\r
+ if (bp_bookmark_adaptor_delete(ids[i]) < 0) {\r
+ free(ids);\r
+ return FAVORITES_ERROR_DB_FAILED;\r
+ } else\r
+ bp_bookmark_adaptor_publish_notification();\r
+ }\r
+ }\r
+ free(ids);\r
+ return FAVORITES_ERROR_NONE;\r
+#else\r
int nError;\r
sqlite3_stmt *stmt;\r
\r
return FAVORITES_ERROR_DB_FAILED;\r
}\r
\r
+#if defined(ROOT_IS_ZERO)\r
+ nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
+ "delete from bookmarks", -1, &stmt, NULL);\r
+#else\r
nError = sqlite3_prepare_v2(gl_internet_bookmark_db,\r
"delete from bookmarks where parent !=0", -1, &stmt, NULL);\r
+#endif\r
if (nError != SQLITE_OK) {\r
FAVORITES_LOGE("sqlite3_prepare_v2 is failed(%s).\n",\r
sqlite3_errmsg(gl_internet_bookmark_db));\r
FAVORITES_LOGE("sqlite3_step is failed");\r
_favorites_close_bookmark_db();\r
return FAVORITES_ERROR_DB_FAILED;\r
+#endif\r
}\r
\r