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