r419 - trunk/src/target/OM-2007/applications/openmoko-appmanager/src

caowai_song at gta01.hmw-consulting.de caowai_song at gta01.hmw-consulting.de
Fri Dec 15 09:56:40 CET 2006


Author: caowai_song
Date: 2006-12-15 09:56:31 +0100 (Fri, 15 Dec 2006)
New Revision: 419

Modified:
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/tool-box.c
Log:
Add the search from the package list


Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.c	2006-12-15 04:24:12 UTC (rev 418)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.c	2006-12-15 08:56:31 UTC (rev 419)
@@ -320,6 +320,8 @@
   GtkTreeSelection *selection;
   gchar            *name = NULL;
 
+  g_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), NULL);
+
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
   if (gtk_tree_selection_get_selected (selection, &model, &iter))
     {
@@ -332,6 +334,8 @@
 
 /**
  * @brief Refresh the navigation area with the package list
+ * @param appdata The application manager data
+ * @param pkglist The pachage list
  */
 void 
 navigation_area_refresh_with_package_list (ApplicationManagerData *appdata, 
@@ -341,6 +345,8 @@
   GtkTreeModel  *model;
   GtkListStore  *store;
 
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata));
+
   treeview = application_manager_get_tvpkglist (appdata);
   g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
 
@@ -359,3 +365,112 @@
   gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), model);
   g_object_unref (model);
 }
+
+/**
+ * @brief Rebuild the navigation list from the latest package list
+ * @param appdata The application manager data
+ */
+void 
+navigation_area_rebuild_from_latest (ApplicationManagerData *appdata)
+{
+  gpointer       pkglist;
+
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata));
+
+  pkglist = application_manager_data_get_currentlist (appdata);
+
+  navigation_area_refresh_with_package_list (appdata, pkglist);
+}
+
+/**
+ * @brief Rebuild the navigagion list from the search result of the latest
+ * package list
+ * @param appdata The application manager data
+ * @param str The search string
+ */
+void 
+navigation_area_rebuild_search_result (ApplicationManagerData *appdata,
+                                       const gchar *str)
+{
+  GtkWidget     *treeview;
+  GtkTreeModel  *model;
+  GtkListStore  *store;
+
+  gpointer       pkglist;
+
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata));
+
+  pkglist = application_manager_data_get_currentlist (appdata);
+
+  treeview = application_manager_get_tvpkglist (appdata);
+  g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+  g_return_if_fail (GTK_IS_TREE_MODEL (model));
+  store = GTK_LIST_STORE (model);
+
+  g_object_ref (model);
+  gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), NULL);
+  gtk_list_store_clear (store);
+
+  //FIXME Add search and build the store
+  search_and_translate_package_list_to_store (appdata, store, pkglist, str);
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), model);
+  g_object_unref (model);
+}
+
+/**
+ * @brief Increase search for the package list
+ * @param appdata The application manager data
+ * @param str The search string
+ */
+void 
+navigation_area_increase_search (ApplicationManagerData *appdata,
+                                 const gchar *str)
+{
+  GtkWidget     *treeview;
+  GtkTreeModel  *model;
+  GtkTreeIter   iter, next;
+  gint          res;
+  gchar         *pkgname = NULL;
+
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata));
+
+  treeview = application_manager_get_tvpkglist (appdata);
+  g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+  g_return_if_fail (GTK_IS_TREE_MODEL (model));
+
+  g_object_ref (model);
+  gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), NULL);
+
+  res = gtk_tree_model_get_iter_first (model, &next);
+  while (res)
+    {
+      iter = next;
+      res = gtk_tree_model_iter_next (model, &next);
+
+      gtk_tree_model_get (model, &iter, COL_NAME, &pkgname, -1);
+      if (pkgname == NULL)
+        {
+          g_debug ("Can not the package name in a row");
+          continue;
+        }
+      
+      if (strstr ((char *)pkgname, (char *)str) != NULL)
+        {
+          g_free (pkgname);
+          pkgname = NULL;
+          continue;
+        }
+
+      gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+      g_free (pkgname);
+      pkgname = NULL;
+    }
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), model);
+  g_object_unref (model);
+}

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.h	2006-12-15 04:24:12 UTC (rev 418)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.h	2006-12-15 08:56:31 UTC (rev 419)
@@ -41,4 +41,13 @@
 void navigation_area_refresh_with_package_list (ApplicationManagerData *appdata, 
                                                 gpointer pkglist);
 
+void navigation_area_rebuild_from_latest (ApplicationManagerData *appdata);
+
+void navigation_area_rebuild_search_result (ApplicationManagerData *appdata,
+                                            const gchar *str);
+
+void 
+navigation_area_increase_search (ApplicationManagerData *appdata,
+                                 const gchar *str);
+
 #endif

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.c	2006-12-15 04:24:12 UTC (rev 418)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.c	2006-12-15 08:56:31 UTC (rev 419)
@@ -1020,3 +1020,28 @@
   return package->maintainer;
 }
 
+/**
+ * @brief Put the nodes in the package list to the GtkListStore
+ *
+ * @param appdata The application manager data
+ * @param store The list store
+ * @param pkglist The package list
+ * @param str The search string
+ */
+void 
+search_and_translate_package_list_to_store (ApplicationManagerData *appdata, 
+                                            GtkListStore *store, 
+                                            gpointer pkglist,
+                                            const gchar *str)
+{
+  PackageList *pkglisthead = (PackageList *)pkglist;
+  PackageList *tmplist;
+
+  tmplist = pkglisthead->next;
+  while (tmplist != pkglisthead)
+    {
+      if (strstr (tmplist->pkg->name, str) != NULL)
+        insert_node_to_store (appdata, store, tmplist->pkg);
+      tmplist = tmplist->next;
+    }
+}

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.h	2006-12-15 04:24:12 UTC (rev 418)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.h	2006-12-15 08:56:31 UTC (rev 419)
@@ -57,4 +57,8 @@
 
 char *package_list_get_package_maintainer (gpointer pkg);
 
+void search_and_translate_package_list_to_store (ApplicationManagerData *appdata, 
+                                                 GtkListStore *store, 
+                                                 gpointer pkglist,
+                                                 const gchar *str);
 #endif

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/tool-box.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/tool-box.c	2006-12-15 04:24:12 UTC (rev 418)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/tool-box.c	2006-12-15 08:56:31 UTC (rev 419)
@@ -20,6 +20,7 @@
 #include <string.h>
 
 #include "tool-box.h"
+#include "navigation-area.h"
 
 /**
  * @brief The callback function of the button "upgrade"
@@ -64,6 +65,7 @@
     {
       //FIXME Add code later
       g_debug ("The length of search string is 0");
+      navigation_area_rebuild_from_latest (appdata);
       return;
     }
 
@@ -79,13 +81,13 @@
 
   if (strstr ((char *)searchstr, (char *)searchhistory) != NULL)
     {
-      //FIXME Add code later
       g_debug ("Increase search");
+      navigation_area_increase_search (appdata, searchstr);
     }
   else 
     {
-      //FIXME Add code later
       g_debug ("Search from the beginning");
+      navigation_area_rebuild_search_result (appdata, searchstr);
     }
 
   strncpy (searchhistory, searchstr, MAX_SEARCH_ENTRY_TEXT_LENGTH);





More information about the commitlog mailing list