problem with cleaning wors list after bookmarks closing fixed;
[mdictionary] / src / gui / src / ws_gui_callbacks.c
index df01d91..5f417d8 100644 (file)
@@ -334,11 +334,16 @@ void ws_gui_signal_hander (GError *error, GArray *words, gpointer user_data)
 
                case  WS_DBUS_WORDS_LIST_FULL:
                {
-
                        gtk_widget_show(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));
                break;
                }
 
+               case  WS_DBUS_WORDS_LIST_FILLED_NOT_FULL:
+               {
+                       gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));
+               break;
+               }
+
                case  WS_DBUS_WORDS_LIST_FINISHED:
                {
                        gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_list_searching));
@@ -374,7 +379,6 @@ void ws_gui_search_home_handler(GError *error, GArray *word, gpointer user_data)
         WSGuiApp *data = (WSGuiApp*) user_data;
         osso_rpc_t* osso_data = NULL;
 
-        
         //get the word passed by dbus 
         osso_data = &g_array_index (word, osso_rpc_t, 0); 
 
@@ -416,17 +420,20 @@ void ws_dbus_progress_bar(GError *error, GArray *words, gpointer user_data)
  * @param list - GtkListStore to be remoeved
  * @return
  */
-void ws_gui_clear_list (GtkListStore* list) 
+void ws_gui_clear_list (GtkListStore* list, gpointer user_data) 
 {
+       //WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
        GtkTreeIter iter;
        gboolean tmp;
        
+       //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nws_gui_clear_list\n\n");   
        tmp = gtk_tree_model_get_iter_first(
                         GTK_TREE_MODEL(list),
-                        &iter);
-       
+                        &iter);        
+
        while (tmp == TRUE)
        {
+       //      g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nws_gui_clear_list2\n\n");
                tmp = gtk_list_store_remove(list, &iter);
                
        }
@@ -448,6 +455,7 @@ void ws_gui_dbus_return_words (GError *error, GArray *words, gpointer user_data)
         osso_rpc_t data;
 
         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       ws_gui_app->no_words_found = FALSE;
        
        g_signal_handlers_block_by_func(G_OBJECT 
                        (ws_gui_app->ws_gui_w_list->ws_gui_view),
@@ -466,13 +474,13 @@ void ws_gui_dbus_return_words (GError *error, GArray *words, gpointer user_data)
                 g_array_append_val(tmp, tmp_word);
         }
        
-       g_assert(ws_gui_app->ws_gui_banner_list_searching);
+       //g_assert(ws_gui_app->ws_gui_banner_list_searching);
         //gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_list_searching));
 
        ws_gui_app->loading = FALSE;
        ws_gui_set_toolbar_avail(ws_gui_app);
 
-       ws_gui_app->ws_gui_banner_flag = FALSE;
+       //ws_gui_app->ws_gui_banner_flag = FALSE;
 
        //ws_gui_clear_list(ws_gui_app->ws_gui_w_list->ws_gui_store);
 
@@ -558,15 +566,20 @@ void ws_gui_dbus_return_words (GError *error, GArray *words, gpointer user_data)
        }
        
        
-        if (tmp->len == 0 && ws_gui_app->stop_clicked != TRUE)
+/*     g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "Dlugosc tempa to: %d", tmp->len);
+       g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "w tempie mamy: %s", tmp_word);*/
+        //if (&& ws_gui_app->stop_clicked != TRUE )
+       
+       if ((tmp->len == 0 || tmp_word == NULL) && ws_gui_app->stop_clicked != TRUE )
         {
                 gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
                               _("ws_ni_no_words_found"));
                
                //ws_gui_fill_html(" ", ws_gui_app);
-               ws_gui_app->html_flag = FALSE;
+               //ws_gui_app->html_flag = FALSE;
                g_free(ws_gui_app->last_word);
                ws_gui_app->last_word = NULL;
+               ws_gui_app->no_words_found = TRUE;
         }
 
        g_signal_handlers_unblock_by_func(G_OBJECT(
@@ -675,6 +688,9 @@ void ws_gui_free_memory(gpointer user_data)
 
         pango_font_description_free(ws_gui_app->p);
 
+       g_free(ws_gui_app->welcome_note);
+       ws_gui_app->welcome_note = NULL;
+
        g_string_free(ws_gui_app->raw_translation, TRUE);
         g_free(ws_gui_app->last_word);
        g_free(ws_gui_app->ws_gui_w_list);
@@ -826,7 +842,7 @@ void ws_gui_words_list_hide_from_menu(GtkCheckMenuItem *checkmenuitem,
         if (gtk_check_menu_item_get_active(
            GTK_CHECK_MENU_ITEM(ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list)))
         {
-                gtk_widget_hide(ws_gui_app->ws_gui_scrolledwindow_left);
+                gtk_widget_hide(ws_gui_app->ws_gui_list_vbox);
                 gtk_toggle_tool_button_set_active(
                   GTK_TOGGLE_TOOL_BUTTON(ws_gui_app->ws_gui_toobar_button_hide),
                   TRUE);
@@ -836,7 +852,7 @@ void ws_gui_words_list_hide_from_menu(GtkCheckMenuItem *checkmenuitem,
         }
         else 
         {
-                gtk_widget_show(ws_gui_app->ws_gui_scrolledwindow_left);
+                gtk_widget_show(ws_gui_app->ws_gui_list_vbox);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(
                                          ws_gui_app->ws_gui_toobar_button_hide),
                                          FALSE);
@@ -860,7 +876,7 @@ void ws_gui_words_list_hide(GtkToggleButton *togglebutton, gpointer user_data)
         if (gtk_toggle_tool_button_get_active(
                  GTK_TOGGLE_TOOL_BUTTON(ws_gui_app->ws_gui_toobar_button_hide)))
         {
-                gtk_widget_hide(ws_gui_app->ws_gui_scrolledwindow_left);
+                gtk_widget_hide(ws_gui_app->ws_gui_list_vbox);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(
                                          ws_gui_app->ws_gui_toobar_button_hide),
                                          TRUE);
@@ -870,7 +886,7 @@ void ws_gui_words_list_hide(GtkToggleButton *togglebutton, gpointer user_data)
         }
         else 
         {
-                gtk_widget_show(ws_gui_app->ws_gui_scrolledwindow_left);
+                gtk_widget_show(ws_gui_app->ws_gui_list_vbox);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(
                                          ws_gui_app->ws_gui_toobar_button_hide),
                                          FALSE);
@@ -1013,7 +1029,7 @@ void ws_gui_history_back(GtkButton *button, gpointer user_data)
                                                gchar*, 
                                        ws_gui_app->ws_gui_history_cur_pos))
                                        );
-               gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
+               //gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
                //gtk_widget_show(ws_gui_app->ws_gui_banner_translation_loading);
                ws_gui_app->loading = TRUE;
                ws_gui_set_toolbar_avail(ws_gui_app);
@@ -1065,7 +1081,7 @@ void ws_gui_history_next(GtkButton *button, gpointer user_data)
                                                ws_gui_app->ws_gui_history_cur_pos))
                                        );
                
-               gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
+               //gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
                //gtk_widget_show(ws_gui_app->ws_gui_banner_translation_loading);
                ws_gui_app->loading = TRUE;
                ws_gui_set_toolbar_avail(ws_gui_app);
@@ -1160,7 +1176,7 @@ GtkTreeModel * create_and_fill_model (GArray *words_list, gpointer user_data)
 
        if (tmp != NULL)
        {
-               ws_gui_clear_list(ws_gui_app->ws_gui_w_list->ws_gui_store);
+               ws_gui_clear_list(ws_gui_app->ws_gui_w_list->ws_gui_store, ws_gui_app);
        }
 
        gboolean valid;
@@ -1303,8 +1319,8 @@ void ws_gui_popup_search(GtkMenuItem *menuitem, gpointer user_data)
                                       temp,
                                       NULL);
                 ws_dbus_client_find_word (ws_gui_app->dbus_data, temp);
-               gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
-        }
+               //gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
+       }
         else
         {
                 hildon_banner_show_information(
@@ -1453,8 +1469,8 @@ void ws_gui_search(GtkWidget * widget, gpointer user_data)
        
        ws_gui_app->stop_clicked = FALSE;
 
-        if (ws_gui_app->ws_gui_banner_flag == FALSE) 
-       {
+       // if (ws_gui_app->ws_gui_banner_flag == FALSE) 
+       //{
        gchar* ws_gui_text = NULL;
         g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
                      "prefix",
@@ -1463,6 +1479,11 @@ void ws_gui_search(GtkWidget * widget, gpointer user_data)
 
        if (ws_gui_app->bookmark_mode == FALSE) 
        {
+               if (ws_gui_app->first_run == TRUE)
+               {
+                       ws_gui_app->first_run = FALSE;
+               }
+
                g_free(ws_gui_app->last_searched);
                ws_gui_app->last_searched = NULL;
                ws_gui_app->last_searched = g_strdup(ws_gui_text);
@@ -1482,11 +1503,12 @@ void ws_gui_search(GtkWidget * widget, gpointer user_data)
                 ws_gui_app->loading = TRUE;
                ws_gui_set_toolbar_avail(ws_gui_app);
 
-                ws_gui_app->ws_gui_banner_flag = TRUE;
+               //ws_gui_app->ws_gui_banner_flag = TRUE;
                 //ws_gui_fill_html(" ", ws_gui_app);
-               ws_gui_app->html_flag = FALSE;
+               //ws_gui_app->html_flag = FALSE;
                 ws_dbus_client_find_word (ws_gui_app->dbus_data, ws_gui_text);
-               gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));
+               //gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));
+               
                g_free(ws_gui_text);
                }
                else 
@@ -1497,7 +1519,7 @@ void ws_gui_search(GtkWidget * widget, gpointer user_data)
         }
        g_free(ws_gui_app->last_word);
        ws_gui_app->last_word=NULL;
-       }
+       //}
 }
 
 /** stop search process
@@ -1510,14 +1532,15 @@ void ws_gui_search_stop(GtkButton *button, gpointer user_data)
 {
         WSGuiApp* ws_gui_app = (WSGuiApp *)user_data;
        ws_gui_app->stop_clicked = TRUE;
-        if (ws_gui_app->ws_gui_banner_flag == TRUE || ws_gui_app->loading == TRUE) 
+       // if (ws_gui_app->ws_gui_banner_flag == TRUE || ws_gui_app->loading == TRUE) 
+       if (ws_gui_app->loading == TRUE) 
         {
                 //gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_list_searching));
 
                ws_gui_app->loading = FALSE;
                ws_gui_set_toolbar_avail(ws_gui_app);           
 
-               ws_gui_app->ws_gui_banner_flag = FALSE;
+               //ws_gui_app->ws_gui_banner_flag = FALSE;
                
                 ws_dbus_notify(ws_gui_app->dbus_data, WS_DBUS_INFO_STOP_SEARCH);
                 gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
@@ -1575,11 +1598,24 @@ void ws_gui_menu_quit(GtkMenuItem *menuitem, gpointer user_data)
 void ws_gui_fill_html(char *html_context, gpointer user_data) 
 {
        WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
-        gtk_html_set_editable (GTK_HTML(ws_gui_app->ws_gui_html), FALSE);
-
+       
+       gtk_html_set_editable (GTK_HTML(ws_gui_app->ws_gui_html), FALSE);
+       if (ws_gui_app->first_run == TRUE && ws_gui_app->bookmark_mode==FALSE)
+       {
+       gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
+                                  ws_gui_app->welcome_note,
+                                  -1);
+       g_object_set(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
+                                     "prefix",
+                                      "",
+                                      NULL);
+       }
+       else
+       {
         gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
                                   html_context,
                                   -1);
+       }
 }
 
 /** read adjustment of left scrollwindow, which is necessary to navigate with 
@@ -1915,7 +1951,7 @@ void ws_gui_dictionary_open_bookmark(GtkMenuItem *menuitem, gpointer user_data)
        ws_gui_read_active_dictionaries(ws_gui_app);
        
        /*list has to be cleared if we're gonna use a completely different dict*/
-       ws_gui_clear_list(ws_gui_app->ws_gui_w_list->ws_gui_store);
+       ws_gui_clear_list(ws_gui_app->ws_gui_w_list->ws_gui_store, ws_gui_app);
        g_free(ws_gui_app->last_word);
        ws_gui_app->last_word = NULL;
 
@@ -1935,13 +1971,12 @@ void ws_gui_dictionary_open_bookmark(GtkMenuItem *menuitem, gpointer user_data)
        ws_gui_app->ws_gui_history_cur_pos = -1;
        }
        ws_gui_check_history(ws_gui_app);
-       
        ws_gui_fill_html(" ", ws_gui_app);
        ws_gui_app->html_flag = FALSE;
        ws_dbus_client_find_word(ws_gui_app->dbus_data, "*");
        gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
-       ws_gui_search(NULL, ws_gui_app);
        
+       ws_gui_search(NULL, ws_gui_app);
 }
 
 /** closes bookmarks database 
@@ -1973,9 +2008,9 @@ void ws_gui_dictionary_close_bookmark(GtkMenuItem *menuitem, gpointer user_data)
        ws_gui_check_history(ws_gui_app);
 
        ws_gui_fill_html(" ", ws_gui_app);
-       ws_gui_app->html_flag = FALSE;
-       g_strstrip(ws_gui_app->last_searched);
-       if (ws_gui_app->last_searched != NULL) 
+       ws_gui_app->html_flag = TRUE;
+       //g_strstrip(ws_gui_app->last_searched);
+       if (g_strstrip(ws_gui_app->last_searched) != NULL && ws_gui_app->first_run == FALSE) 
        {
        g_object_set(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
                                      "prefix",
@@ -1986,6 +2021,10 @@ void ws_gui_dictionary_close_bookmark(GtkMenuItem *menuitem, gpointer user_data)
        }
        else
        {
+               gtk_list_store_clear(ws_gui_app->ws_gui_w_list->ws_gui_store);
+       }
+/*     else if (ws_gui_app->first_run == FALSE) 
+       {
                g_object_set(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
                                     "prefix",
                                       "\0",
@@ -1999,7 +2038,7 @@ void ws_gui_dictionary_close_bookmark(GtkMenuItem *menuitem, gpointer user_data)
                ws_dbus_client_find_word(ws_gui_app->dbus_data, ws_gui_app->last_searched);
                gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
                ws_gui_search(NULL, ws_gui_app);        
-       }
+       }*/
 }
 
 /** adds bookmark to bookmarks database 
@@ -2039,13 +2078,14 @@ void ws_gui_dictionary_remove_bookmark(GtkMenuItem *menuitem,
        {
                ws_gui_remove_bookmark_dialog(ws_gui_app);
 
+               ws_gui_clear_list(ws_gui_app->ws_gui_w_list->ws_gui_store, ws_gui_app);
                gchar *temp;
                g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
                                       "prefix",
                                       &temp,
                                       NULL);
                ws_dbus_client_find_word (ws_gui_app->dbus_data, temp);
-               gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
+               //gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
                
        }
        else
@@ -2346,3 +2386,22 @@ void ws_gui_set_toolbar_avail(gpointer user_data) {
                        TRUE);
        }
 }
+
+void ws_refresh_search_results(gpointer user_data) {
+       
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+
+       //refreshing the words list and translation pane
+       gchar *temp;
+       g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
+                               "prefix",
+                               &temp,
+                               NULL);
+       
+       if (ws_gui_app->first_run == FALSE)
+       {
+               ws_dbus_client_find_word (ws_gui_app->dbus_data, temp);
+       }
+       //gtk_widget_hide(ws_gui_app->ws_gui_list_hbox);
+       //-----------------------------------------------
+}