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