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

caowai_song at gta01.hmw-consulting.de caowai_song at gta01.hmw-consulting.de
Thu Dec 7 10:37:49 CET 2006


Author: caowai_song
Date: 2006-12-07 09:37:28 +0000 (Thu, 07 Dec 2006)
New Revision: 332

Added:
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.h
Modified:
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/Makefile.am
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/filter-menu.c
   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
Log:
Connect the package list with the filter menu


Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/Makefile.am	2006-12-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/Makefile.am	2006-12-07 09:37:28 UTC (rev 332)
@@ -11,6 +11,7 @@
                               detail-area.c\
                               appmanager-data.c\
                               package-list.c\
-                              pixbuf-list.c
+                              pixbuf-list.c\
+                              select-menu.c
 
 openmoko_appmanager_LDADD = @OPENMOKO_LIBS@

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.h	2006-12-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.h	2006-12-07 09:37:28 UTC (rev 332)
@@ -38,9 +38,9 @@
                                                MOKO_TYPE_APPLICATION_MANAGER_DATA))
 #define MOKO_IS_APPLICATION_MANAGER_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
                                                        MOKO_TYPE_APPLICATION_MANAGER_DATA))
-#define MOKO_APPLICATION_MANAGER_DATA_GET_TYPE(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
-                                                     MOKO_TYPE_APPLICATION_MANAGER_DATA, \
-                                                     ApplicationManagerDataClass))
+#define MOKO_APPLICATION_MANAGER_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+                                                      MOKO_TYPE_APPLICATION_MANAGER_DATA, \
+                                                      ApplicationManagerDataClass))
 
 
 /**

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/filter-menu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/filter-menu.c	2006-12-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/filter-menu.c	2006-12-07 09:37:28 UTC (rev 332)
@@ -17,9 +17,12 @@
  *
  *  @author Chaowei Song (songcw at fic-sh.com.cn)
  */
+#include <string.h>
 
 #include "filter-menu.h"
 #include "appmanager-window.h"
+#include "navigation-area.h"
+#include "package-list.h"
 
 /**
  * @brief The callback function of the search result menuitem.
@@ -36,7 +39,16 @@
 void 
 on_installed_activate (GtkMenuItem *menuitem, gpointer userdata)
 {
+  gpointer     pkglist;
+
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (userdata));
   g_debug ("Clicked the installed menuitem");
+
+  pkglist = application_manager_data_get_installedlist (
+                      MOKO_APPLICATION_MANAGER_DATA (userdata));
+
+  navigation_area_refresh_with_package_list (MOKO_APPLICATION_MANAGER_DATA (userdata),
+                                             pkglist);
 }
 
 /**
@@ -45,7 +57,16 @@
 void 
 on_upgradeable_activate (GtkMenuItem *menuitem, gpointer userdata)
 {
+  gpointer     pkglist;
+
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (userdata));
   g_debug ("Clicked the upgradeable menuitem");
+
+  pkglist = application_manager_data_get_upgradelist (
+                      MOKO_APPLICATION_MANAGER_DATA (userdata));
+
+  navigation_area_refresh_with_package_list (MOKO_APPLICATION_MANAGER_DATA (userdata),
+                                             pkglist);
 }
 
 /**
@@ -54,7 +75,16 @@
 void 
 on_selected_activate (GtkMenuItem *menuitem, gpointer userdata)
 {
+  gpointer     pkglist;
+
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (userdata));
   g_debug ("Click the selected menuitem");
+
+  pkglist = application_manager_data_get_selectedlist (
+                      MOKO_APPLICATION_MANAGER_DATA (userdata));
+
+  navigation_area_refresh_with_package_list (MOKO_APPLICATION_MANAGER_DATA (userdata),
+                                             pkglist);
 }
 
 /**
@@ -63,7 +93,38 @@
 void 
 on_dynamic_menu_item_activate (GtkMenuItem *menuitem, gpointer userdata)
 {
+  const gchar  *secname;
+  GtkWidget    *label;
+  gint         ret;
+  gpointer     pkglist;
+
   g_debug ("Click the dynamic menuitem");
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (userdata));
+  label = gtk_bin_get_child (GTK_BIN (menuitem));
+  g_return_if_fail (GTK_IS_LABEL (label));
+
+  secname = gtk_label_get_text (GTK_LABEL (label));
+  g_debug ("Chose the menuitem:%s", secname);
+  ret = strcmp (secname, PACKAGE_LIST_NO_SECTION_STRING);
+  if (ret == 0)
+    {
+      pkglist = application_manager_data_get_nosecpkglist (
+                      MOKO_APPLICATION_MANAGER_DATA (userdata));
+      navigation_area_refresh_with_package_list (
+                      MOKO_APPLICATION_MANAGER_DATA (userdata), 
+                      pkglist);
+      return;
+    }
+
+  pkglist = package_list_get_with_name (MOKO_APPLICATION_MANAGER_DATA (userdata),
+                                        secname);
+  if (pkglist == NULL)
+    {
+      g_debug ("Can not find the section that named:%s", secname);
+      return;
+    }
+  navigation_area_refresh_with_package_list (MOKO_APPLICATION_MANAGER_DATA (userdata),
+                                             pkglist);
 }
 
 /**
@@ -137,3 +198,4 @@
                     G_CALLBACK (on_dynamic_menu_item_activate), appdata);
 
 }
+

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-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.c	2006-12-07 09:37:28 UTC (rev 332)
@@ -23,6 +23,7 @@
 #include "navigation-area.h"
 #include "errorcode.h"
 #include "detail-area.h"
+#include "package-list.h"
 
 /**
  * @brief The callback function of the signal "cursor-changed"
@@ -241,3 +242,31 @@
 
   return NULL;
 }
+
+/**
+ * @brief Refresh the navigation area with the package list
+ */
+void 
+navigation_area_refresh_with_package_list (ApplicationManagerData *appdata, 
+                                           gpointer pkglist)
+{
+  GtkWidget     *treeview;
+  GtkTreeModel  *model;
+  GtkListStore  *store;
+
+  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);
+
+  translate_package_list_to_store (appdata, store, pkglist);
+
+  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-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.h	2006-12-07 09:37:28 UTC (rev 332)
@@ -38,4 +38,7 @@
 
 gchar *treeview_get_selected_name (GtkWidget *treeview);
 
+void navigation_area_refresh_with_package_list (ApplicationManagerData *appdata, 
+                                                gpointer pkglist);
+
 #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-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.c	2006-12-07 09:37:28 UTC (rev 332)
@@ -23,6 +23,7 @@
 #include "ipkgapi.h"
 #include "filter-menu.h"
 #include "errorcode.h"
+#include "navigation-area.h"
 
 /**
  * @brief The structor of Package list node
@@ -760,6 +761,87 @@
 
   if (tmppkg->next != tmppkg)
     {
-      filter_menu_add_item (filtermenu, "no section", appdata);
+      filter_menu_add_item (filtermenu, PACKAGE_LIST_NO_SECTION_STRING, appdata);
     }
 }
+
+/**
+ * @brief Insert node to store
+ */
+static void 
+insert_node_to_store (ApplicationManagerData *appdata, 
+                      GtkListStore *store, 
+                      IPK_PACKAGE *pkg)
+{
+  GtkTreeIter   iter;
+  GdkPixbuf    *pix = NULL;
+
+  pix = application_manager_data_get_status_pixbuf (appdata, pkg->mark);
+
+  gtk_list_store_append (store, &iter);
+
+  gtk_list_store_set (store, &iter,
+                      COL_STATUS, pix,
+                      COL_NAME, pkg->name,
+                      COL_SIZE, pkg->size,
+                      COL_POINTER, pkg,
+                      -1);
+
+}
+
+/**
+ * @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
+ */
+void 
+translate_package_list_to_store (ApplicationManagerData *appdata, 
+                                 GtkListStore *store, 
+                                 gpointer pkglist)
+{
+  PackageList *pkglisthead = (PackageList *)pkglist;
+  PackageList *tmplist;
+
+  tmplist = pkglisthead->next;
+  while (tmplist != pkglisthead)
+    {
+      insert_node_to_store (appdata, store, tmplist->pkg);
+      tmplist = tmplist->next;
+    }
+}
+
+/**
+ * @brief Get the package list which section name equals the "name"
+ * from the dynamic section list
+ * @param appdata The application manager data
+ * @param name The section name
+ */
+gpointer 
+package_list_get_with_name (ApplicationManagerData *appdata,
+                            const gchar *name)
+{
+  SectionList  *seclist;
+
+  g_return_val_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata), NULL);
+
+  seclist = application_manager_data_get_sectionlist (appdata);
+  if (seclist == NULL)
+    {
+      g_debug ("Section list is NULL");
+      return NULL;
+    }
+
+  seclist = seclist->next;
+  while (seclist != NULL)
+    {
+      if ( 0 == strcmp (name, seclist->name))
+        {
+          return &(seclist->head);
+        }
+      seclist = seclist->next;
+    }
+
+  return NULL;
+}

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-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.h	2006-12-07 09:37:28 UTC (rev 332)
@@ -22,10 +22,19 @@
 
 #include <gtk/gtk.h>
 
+#define PACKAGE_LIST_NO_SECTION_STRING "no section"
+
 gint init_package_list (ApplicationManagerData *appdata);
 
 gint package_list_build_index (ApplicationManagerData *appdata);
 
 void package_list_add_section_to_filter_menu (ApplicationManagerData *appdata);
 
+void translate_package_list_to_store (ApplicationManagerData *appdata, 
+                                      GtkListStore *store, 
+                                      gpointer pkglist);
+
+gpointer package_list_get_with_name (ApplicationManagerData *appdata,
+                                     const gchar *name);
+
 #endif

Added: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.c	2006-12-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.c	2006-12-07 09:37:28 UTC (rev 332)
@@ -0,0 +1,80 @@
+/**
+ *  @file select-menu.c
+ *  @brief The select menu that popuo in the treeview
+ *
+ *  Copyright (C) 2006 First International Computer Inc.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2.1 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date$) [$Author$]
+ *
+ *  @author Chaowei Song (songcw at fic-sh.com.cn)
+ */
+
+#include "select-menu.h"
+#include "appmanager-window.h"
+
+static void moko_select_menu_class_init (MokoSelectMenuClass *klass);
+static void moko_select_menu_init (MokoSelectMenu *data);
+
+G_DEFINE_TYPE (MokoSelectMenu, moko_select_menu, GTK_TYPE_MENU)
+
+#define MOKO_SELECT_MENU_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MOKO_TYPE_SELECT_MENU, MokoSelectMenuPriv))
+
+typedef struct _MokoSelectMenuPriv {
+  GtkWidget   *unmark;
+  GtkWidget   *markinstall;
+  GtkWidget   *markupgrade;
+  GtkWidget   *markremove;
+} MokoSelectMenuPriv;
+
+static void 
+moko_select_menu_class_init (MokoSelectMenuClass *klass)
+{
+  g_type_class_add_private (klass, sizeof (MokoSelectMenuPriv));
+}
+
+static void 
+moko_select_menu_init (MokoSelectMenu *data)
+{
+  g_debug ("New a moko select menu");
+}
+
+/**
+ * @brief Create a new select menu
+ * @param appdata The application manager data
+ * @return The MokoSelectMenu
+ */
+MokoSelectMenu *
+moko_select_menu_new (ApplicationManagerData *appdata)
+{
+  MokoSelectMenu *self = MOKO_SELECT_MENU (g_object_new (MOKO_TYPE_SELECT_MENU, NULL));
+  MokoSelectMenuPriv *priv = MOKO_SELECT_MENU_GET_PRIVATE (self);
+
+  priv->unmark = gtk_menu_item_new_with_mnemonic (_("unmark"));
+  gtk_widget_show (priv->unmark);
+  gtk_container_add (GTK_CONTAINER (self), priv->unmark);
+
+
+  priv->markinstall = gtk_menu_item_new_with_mnemonic (_("mark install"));
+  gtk_widget_show (priv->markinstall);
+  gtk_container_add (GTK_CONTAINER (self), priv->markinstall);
+
+  priv->markupgrade = gtk_menu_item_new_with_mnemonic (_("mark upgrade"));
+  gtk_widget_show (priv->markupgrade);
+  gtk_container_add (GTK_CONTAINER (self), priv->markupgrade);
+
+  priv->markremove = gtk_menu_item_new_with_mnemonic (_("mark remove"));
+  gtk_widget_show (priv->markremove);
+  gtk_container_add (GTK_CONTAINER (self), priv->markremove);
+
+  return self;
+}
+

Added: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.h	2006-12-07 08:25:02 UTC (rev 331)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.h	2006-12-07 09:37:28 UTC (rev 332)
@@ -0,0 +1,55 @@
+/**
+ *  @file select-menu.h
+ *  @brief The select menu that popuo in the treeview
+ *
+ *  Copyright (C) 2006 First International Computer Inc.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2.1 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date$) [$Author$]
+ *
+ *  @author Chaowei Song (songcw at fic-sh.com.cn)
+ */
+#ifndef _FIC_SELECT_MENU_H
+#define _FIC_SELECT_MENU_H
+
+#include <gtk/gtk.h>
+
+#include "appmanager-data.h"
+
+G_BEGIN_DECLS
+
+#define MOKO_TYPE_SELECT_MENU (moko_select_menu_get_type ())
+#define MOKO_SELECT_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MOKO_TYPE_SELECT_MENU, MokoSelectMenu))
+#define MOKO_SELECT_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOKO_TYPE_SELECT_MENU, MokoSelectMenuClass))
+#define MOKO_IS_SELECT_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MOKO_TYPE_SELECT_MENU))
+#define MOKO_IS_SELECT_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOKO_TYPE_SELECT_MENU))
+#define MOKO_SELECT_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOKO_TYPE_SELECT_MENU, MokoSelectMenuClass))
+
+typedef struct _MokoSelectMenu MokoSelectMenu;
+typedef struct _MOkoSelectMenuClass MokoSelectMenuClass;
+
+struct _MokoSelectMenu {
+  GtkMenu   *parent;
+};
+
+struct _MOkoSelectMenuClass {
+  GtkMenuClass  *parent_class;
+};
+
+GType moko_select_menu_get_type (void);
+
+MokoSelectMenu *moko_select_menu_new (ApplicationManagerData *appdata);
+
+G_END_DECLS
+
+#endif
+
+





More information about the commitlog mailing list