[Title] Fix issue that the most visited item can't be deleted.
authorHyerim Bae <hyerim.bae@samsung.com>
Tue, 4 Sep 2012 08:53:57 +0000 (17:53 +0900)
committerHyerim Bae <hyerim.bae@samsung.com>
Tue, 4 Sep 2012 09:32:26 +0000 (18:32 +0900)
[Issue#] N_SE-8861
[Problem] The most visited item can't be deleted.
[Cause] The most visited item index is wrong.
[Solution] Delete the most visited item with url.
[Team] Browser UI
[Developer] Hyerim Bae
[Request] N/A

Change-Id: I4795a74b9dedb9a293bf61432b1b916acf03e7b0

src/database/most-visited-sites-db.cpp
src/database/most-visited-sites-db.h
src/most-visited-sites/most-visited-sites.cpp

index a1a961a..b491943 100644 (file)
@@ -94,6 +94,36 @@ Eina_Bool Most_Visited_Sites_DB::is_in_bookmark(const char* url, int *bookmark_i
        return (error == SQLITE_ROW);\r
 }\r
 \r
+Eina_Bool Most_Visited_Sites_DB::delete_most_visited_sites_item(const char * url)\r
+{\r
+       int error = db_util_open(BROWSER_MOST_VISITED_SITES_DB_PATH, &m_db_descriptor, DB_UTIL_REGISTER_HOOK_METHOD);\r
+       if (error != SQLITE_OK) {\r
+               db_util_close(m_db_descriptor);\r
+               m_db_descriptor = NULL;\r
+               BROWSER_LOGD("check here");\r
+               return EINA_FALSE;\r
+       }\r
+\r
+       sqlite3_stmt *sqlite3_stmt = NULL;\r
+       error = sqlite3_prepare_v2(m_db_descriptor, "delete from mostvisited where address=?",\r
+                                                               -1, &sqlite3_stmt, NULL);\r
+       if (error != SQLITE_OK) {\r
+               db_util_close(m_db_descriptor);\r
+               return EINA_FALSE;\r
+       }\r
+\r
+       if (sqlite3_bind_text(sqlite3_stmt, 1, url, -1, NULL) != SQLITE_OK)\r
+               BROWSER_LOGE("sqlite3_bind_int is failed.");\r
+\r
+       error = sqlite3_step(sqlite3_stmt);\r
+       if (sqlite3_finalize(sqlite3_stmt) != SQLITE_OK)\r
+               BROWSER_LOGE("sqlite3_finalize is failed.");\r
+\r
+       db_util_close(m_db_descriptor);\r
+\r
+       return (error == SQLITE_OK || error == SQLITE_DONE);\r
+}\r
+\r
 Eina_Bool Most_Visited_Sites_DB::delete_most_visited_sites_item(int index)\r
 {\r
        int error = db_util_open(BROWSER_MOST_VISITED_SITES_DB_PATH, &m_db_descriptor, DB_UTIL_REGISTER_HOOK_METHOD);\r
index 0834839..882feb3 100644 (file)
@@ -46,6 +46,7 @@ public:
        Eina_Bool save_most_visited_sites_item(int index, const char *url,\r
                                                const char *title, const char *screen_shot);\r
        Eina_Bool delete_most_visited_sites_item(int index);\r
+       Eina_Bool delete_most_visited_sites_item(const char *url);\r
        Eina_Bool delete_most_visited_sites_history_item(int history_id);\r
        std::string get_history_id_by_url(const char* url);\r
        std::string get_history_title_by_id(const char* id);\r
index a431cba..dc38d9e 100644 (file)
@@ -406,7 +406,7 @@ void Most_Visited_Sites::__context_popup_unpin_clicked_cb(void *data, Evas_Objec
                index++;
        } while (it = elm_gengrid_item_next_get(it));
 
-       if (!most_visited_sites->m_most_visited_sites_db->delete_most_visited_sites_item(index)) {
+       if (!most_visited_sites->m_most_visited_sites_db->delete_most_visited_sites_item(most_visited_sites->m_selected_item->url)) {
                BROWSER_LOGE("delete_most_visited_sites_item failed");
                return;
        }
@@ -506,13 +506,17 @@ Eina_Bool Most_Visited_Sites::_delete_selected_item(void)
                        index++;
                } while (it = elm_gengrid_item_next_get(it));
 
-               if (!m_most_visited_sites_db->delete_most_visited_sites_item(index)) {
+
+               BROWSER_LOGD("delete_most_visited_sites_item index = %d", m_selected_item->item);
+               if (!m_most_visited_sites_db->delete_most_visited_sites_item(m_selected_item->url)) {
                        BROWSER_LOGE("delete_most_visited_sites_item failed");
                        return EINA_FALSE;
                }
 
                std::string history_id;
                history_id = m_most_visited_sites_db->get_history_id_by_url(m_selected_item->url);
+
+               BROWSER_LOGD("delete_most_visited_sites_item history_id = %s, atoi(m_selected_item->history_id) = %d", history_id.c_str(), atoi(m_selected_item->history_id));
                if (!m_most_visited_sites_db->delete_most_visited_sites_history_item(atoi(m_selected_item->history_id))) {
                        BROWSER_LOGE("delete_most_visited_sites_history_item failed");
                        return EINA_FALSE;
@@ -520,6 +524,7 @@ Eina_Bool Most_Visited_Sites::_delete_selected_item(void)
 
                is_ranked = EINA_TRUE;
        } else {
+               BROWSER_LOGD("delete_most_visited_sites_item atoi(m_selected_item->history_id) = %d", atoi(m_selected_item->history_id));
                if (!m_most_visited_sites_db->delete_most_visited_sites_history_item(atoi(m_selected_item->history_id))) {
                        BROWSER_LOGE("delete_most_visited_sites_history_item failed");
                        return EINA_FALSE;
@@ -828,7 +833,7 @@ Eina_Bool Most_Visited_Sites::_item_moved(void)
        int index = 0;
        Elm_Object_Item *it = elm_gengrid_first_item_get(m_gengrid);
        do {
-               if (!m_most_visited_sites_db->delete_most_visited_sites_item(index))
+               if (!m_most_visited_sites_db->delete_most_visited_sites_item(m_selected_item->url))
                        BROWSER_LOGE("fail to delete slot %d", index);
 
                most_visited_sites_item *item = (most_visited_sites_item *)elm_object_item_data_get(it);