r457 - in 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 22 10:20:12 CET 2006
Author: caowai_song
Date: 2006-12-22 10:19:59 +0100 (Fri, 22 Dec 2006)
New Revision: 457
Added:
trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.c
trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.h
Modified:
trunk/src/target/OM-2007/applications/openmoko-appmanager/configure.ac
trunk/src/target/OM-2007/applications/openmoko-appmanager/openmoko-appmanager.pro
trunk/src/target/OM-2007/applications/openmoko-appmanager/src/Makefile.am
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 function that marking all upgradeable packages.
Add the dialog that will display when user choose apply his change.
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/configure.ac
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/configure.ac 2006-12-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/configure.ac 2006-12-22 09:19:59 UTC (rev 457)
@@ -1,5 +1,5 @@
AC_PREREQ(2.53)
-AC_INIT(openmoko-appmanager-demo, 1.0.0, http://www.openmoko.org/)
+AC_INIT(openmoko-appmanager, 1.0.0, http://www.openmoko.org/)
AM_INIT_AUTOMAKE()
AC_CONFIG_SRCDIR(src/appmanager-window.c)
AM_CONFIG_HEADER(config.h)
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/openmoko-appmanager.pro
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/openmoko-appmanager.pro 2006-12-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/openmoko-appmanager.pro 2006-12-22 09:19:59 UTC (rev 457)
@@ -12,7 +12,8 @@
src/package-list.h \
src/pixbuf-list.h \
src/select-menu.h \
- src/tool-box.h
+ src/tool-box.h \
+ src/apply-dialog.h
SOURCES += src/application-menu.c \
src/appmanager-data.c \
src/appmanager-window.c \
@@ -23,7 +24,8 @@
src/package-list.c \
src/pixbuf-list.c \
src/select-menu.c \
- src/tool-box.c
+ src/tool-box.c \
+ src/apply-dialog.c
include ( $(OPENMOKODIR)/devel/qmake/openmoko-include.pro )
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-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/Makefile.am 2006-12-22 09:19:59 UTC (rev 457)
@@ -12,6 +12,7 @@
appmanager-data.c\
package-list.c\
pixbuf-list.c\
- select-menu.c
+ select-menu.c\
+ apply-dialog.c
openmoko_appmanager_LDADD = @OPENMOKO_LIBS@
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.c 2006-12-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.c 2006-12-22 09:19:59 UTC (rev 457)
@@ -0,0 +1,114 @@
+/**
+ * @file apply-dialog.c
+ * @brief It is an infomation dialog that will display the all package
+ * that will be changed.
+ *
+ * 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 <libmokoui/moko-tree-view.h>
+
+#include "apply-dialog.h"
+#include "appmanager-window.h"
+#include "package-list.h"
+
+/**
+ * @brief The id of package list that display in apply dialog.
+ */
+enum {
+ MARK_COL_NAME = 0, ///<Package name
+ MARK_NUM_COL ///<Column number
+};
+
+/**
+ * @brief Create a new apply dialog
+ * @param The application manager data
+ * @return The apply dialog
+ */
+GtkWidget *
+apply_dialog_new (ApplicationManagerData *appdata)
+{
+ GtkWidget *applydialog;
+ GtkWidget *dialogvbox;
+ GtkWidget *applymsg;
+ GtkWidget *listwindow;
+ GtkWidget *applylist;
+ GtkWidget *actionarea;
+ GtkWidget *calcelbutton;
+ GtkWidget *okbutton;
+
+ GtkTreeViewColumn *col;
+ GtkCellRenderer *renderer;
+ GtkTreeStore *store;
+
+ // Create a new dialog and add a GtkTreeview and two button to the dialog
+ applydialog = gtk_dialog_new ();
+ gtk_window_set_title (GTK_WINDOW (applydialog), _("summary"));
+ gtk_window_set_position (GTK_WINDOW (applydialog), GTK_WIN_POS_CENTER_ALWAYS);
+ gtk_window_set_default_size (GTK_WINDOW (applydialog), 200, 300);
+ gtk_window_set_type_hint (GTK_WINDOW (applydialog), GDK_WINDOW_TYPE_HINT_DIALOG);
+
+ dialogvbox = GTK_DIALOG (applydialog)->vbox;
+ gtk_widget_show (dialogvbox);
+
+ applymsg = gtk_label_new (_("Apply the following changes"));
+ gtk_widget_show (applymsg);
+ gtk_box_pack_start (GTK_BOX (dialogvbox), applymsg, FALSE, FALSE, 0);
+
+ applylist = moko_tree_view_new ();
+ gtk_widget_show (applylist);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (applylist), FALSE);
+ gtk_tree_view_set_enable_search (GTK_TREE_VIEW (applylist), FALSE);
+
+ listwindow = GTK_WIDGET (moko_tree_view_put_into_scrolled_window (MOKO_TREE_VIEW (applylist)));
+ gtk_widget_show (listwindow);
+ gtk_box_pack_start (GTK_BOX (dialogvbox), listwindow, TRUE, TRUE, 0);
+
+ actionarea = GTK_DIALOG (applydialog)->action_area;
+ gtk_widget_show (actionarea);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (actionarea), GTK_BUTTONBOX_END);
+
+ calcelbutton = gtk_button_new_from_stock ("gtk-cancel");
+ gtk_widget_show (calcelbutton);
+ gtk_dialog_add_action_widget (GTK_DIALOG (applydialog), calcelbutton, GTK_RESPONSE_CANCEL);
+ GTK_WIDGET_SET_FLAGS (calcelbutton, GTK_CAN_DEFAULT);
+
+ okbutton = gtk_button_new_from_stock ("gtk-ok");
+ gtk_widget_show (okbutton);
+ gtk_dialog_add_action_widget (GTK_DIALOG (applydialog), okbutton, GTK_RESPONSE_OK);
+ GTK_WIDGET_SET_FLAGS (okbutton, GTK_CAN_DEFAULT);
+
+ // Add column to the treeview
+ col = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_title (col, _("Package Name"));
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (col, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (col, renderer,
+ "text", MARK_COL_NAME,
+ NULL);
+ moko_tree_view_append_column (MOKO_TREE_VIEW (applylist), col);
+
+ store = gtk_tree_store_new (MARK_NUM_COL, G_TYPE_STRING);
+
+ package_list_fill_store_with_selected_list (store,
+ application_manager_data_get_selectedlist (appdata),
+ MARK_COL_NAME);
+
+ gtk_tree_view_set_model (GTK_TREE_VIEW (applylist), GTK_TREE_MODEL (store));
+ g_object_unref (GTK_TREE_MODEL (store));
+
+ return applydialog;
+}
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.h 2006-12-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.h 2006-12-22 09:19:59 UTC (rev 457)
@@ -0,0 +1,31 @@
+/**
+ * @file apply-dialog.h
+ * @brief It is an infomation dialog that will display the all package
+ * that will be changed.
+ *
+ * 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_APPLY_DIALOG_H
+#define _FIC_APPLY_DIALOG_H
+
+#include <gtk/gtk.h>
+
+#include "appmanager-data.h"
+
+GtkWidget *apply_dialog_new (ApplicationManagerData *appdata);
+
+#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-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.c 2006-12-22 09:19:59 UTC (rev 457)
@@ -1045,3 +1045,162 @@
tmplist = tmplist->next;
}
}
+
+/**
+ * @brief Check the status of the marked list
+ *
+ * Takecare, the return value of this function is reversed.
+ * If it returns TRUE, means that the marked list is empty
+ * If it returns FALSE, means that the marked list is not empty
+ * @return FALSE The marked list is not empty.\n
+ * TRUE The marked list is empty.
+ */
+gboolean
+package_list_check_marked_list_empty (ApplicationManagerData *appdata)
+{
+ PackageList *mark;
+
+ g_return_val_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata), TRUE);
+
+ mark = application_manager_data_get_selectedlist (appdata);
+ if (mark == NULL)
+ {
+ return TRUE;
+ }
+
+ if (mark->next == mark)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+/**
+ * @brief Fill the GtkTreeStore with the selected package
+ * @param treestore The tree store
+ * @param selectedlist The selected package list
+ * @param column The column that package name will insert
+ */
+void
+package_list_fill_store_with_selected_list (GtkTreeStore *treestore,
+ gpointer *selectedlist,
+ gint column)
+{
+ PackageList *tmplist;
+ PackageList *slist = (PackageList *)selectedlist;
+ GtkTreeIter iter;
+ gboolean needupgrade, needinstall, needremove;
+ GtkTreeIter iterupgrade, iterinstall, iterremove;
+
+ needupgrade = needinstall = needremove = FALSE;
+ tmplist = slist->next;
+ while (tmplist != slist)
+ {
+ switch (tmplist->pkg->mark)
+ {
+ case PKG_STATUS_AVAILABLE_MARK_FOR_INSTALL:
+ needinstall = TRUE;
+ break;
+
+ case PKG_STATUS_UPGRADEABLE_MARK_FOR_UPGRADE:
+ needupgrade = TRUE;
+ break;
+
+ case PKG_STATUS_INSTALLED_MARK_FOR_REMOVE:
+ case PKG_STATUS_UPGRADEABLE_MARK_FOR_REMOVE:
+ needremove = TRUE;
+ break;
+
+ default:
+ g_debug ("The status of package in the marked list is error, the package name is:%s",
+ tmplist->pkg->name);
+ break;
+ }
+ tmplist = tmplist->next;
+ }
+
+ if (needinstall)
+ {
+ gtk_tree_store_append (treestore, &iterinstall, NULL);
+ gtk_tree_store_set (treestore, &iterinstall, column, "To be installed", -1);
+ }
+
+ if (needupgrade)
+ {
+ gtk_tree_store_append (treestore, &iterupgrade, NULL);
+ gtk_tree_store_set (treestore, &iterupgrade, column, "To be upgraded", -1);
+ }
+
+ if (needremove)
+ {
+ gtk_tree_store_append (treestore, &iterremove, NULL);
+ gtk_tree_store_set (treestore, &iterremove, column, "To be removed", -1);
+ }
+
+ tmplist = slist->next;
+ while (tmplist != slist)
+ {
+ switch (tmplist->pkg->mark)
+ {
+ case PKG_STATUS_AVAILABLE_MARK_FOR_INSTALL:
+ gtk_tree_store_append (treestore, &iter, &iterinstall);
+ break;
+
+ case PKG_STATUS_UPGRADEABLE_MARK_FOR_UPGRADE:
+ gtk_tree_store_append (treestore, &iter, &iterupgrade);
+ break;
+
+ case PKG_STATUS_INSTALLED_MARK_FOR_REMOVE:
+ case PKG_STATUS_UPGRADEABLE_MARK_FOR_REMOVE:
+ gtk_tree_store_append (treestore, &iter, &iterremove);
+ break;
+
+ default:
+ tmplist = tmplist->next;
+ continue;
+ }
+ gtk_tree_store_set (treestore, &iter, column, tmplist->pkg->name, -1);
+ tmplist = tmplist->next;
+ }
+}
+
+/**
+ * @brief Mark all upgradeable package for upgrade
+ * @param appdata The application manager data
+ */
+void
+package_list_mark_all_upgradeable (ApplicationManagerData *appdata)
+{
+ PackageList *selectedlist;
+ PackageList *upgradelist;
+ PackageList *tmplist;
+
+ g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata));
+
+ selectedlist = application_manager_data_get_selectedlist (appdata);
+ g_return_if_fail (selectedlist);
+
+ upgradelist = application_manager_data_get_upgradelist (appdata);
+ g_return_if_fail (upgradelist);
+
+ tmplist = upgradelist->next;
+ while (tmplist != upgradelist)
+ {
+ switch (tmplist->pkg->mark)
+ {
+ case PKG_STATUS_UPGRADEABLE:
+ tmplist->pkg->mark = PKG_STATUS_UPGRADEABLE_MARK_FOR_UPGRADE;
+ package_list_insert_node_without_check (selectedlist, tmplist->pkg);
+ break;
+
+ case PKG_STATUS_UPGRADEABLE_MARK_FOR_REMOVE:
+ tmplist->pkg->mark = PKG_STATUS_UPGRADEABLE_MARK_FOR_UPGRADE;
+ break;
+
+ default:
+ break;
+ } // end switch
+ tmplist = tmplist->next;
+ }// end while
+}
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-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.h 2006-12-22 09:19:59 UTC (rev 457)
@@ -61,4 +61,11 @@
GtkListStore *store,
gpointer pkglist,
const gchar *str);
+gboolean
+package_list_check_marked_list_empty (ApplicationManagerData *appdata);
+
+void package_list_fill_store_with_selected_list (GtkTreeStore *treestore,
+ gpointer *selectedlist,
+ gint column);
+void package_list_mark_all_upgradeable (ApplicationManagerData *appdata);
#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-22 07:03:16 UTC (rev 456)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/tool-box.c 2006-12-22 09:19:59 UTC (rev 457)
@@ -21,6 +21,9 @@
#include "tool-box.h"
#include "navigation-area.h"
+#include "package-list.h"
+#include "appmanager-window.h"
+#include "apply-dialog.h"
/**
* @brief The callback function of the button "upgrade"
@@ -28,7 +31,19 @@
void
on_upgrade_clicked (GtkButton *bupgrade, gpointer data)
{
+ GtkWidget *dialog;
+
g_debug ("Clicked the button upgrade");
+ package_list_mark_all_upgradeable (MOKO_APPLICATION_MANAGER_DATA (data));
+ navigation_area_rebuild_from_latest (MOKO_APPLICATION_MANAGER_DATA (data));
+
+ dialog = gtk_message_dialog_new (NULL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+ _("Marked all upgradeable packages"));
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
}
/**
@@ -37,7 +52,29 @@
void
on_apply_clicked (GtkButton *bapply, gpointer data)
{
+ GtkWidget *dialog;
+ gint res;
g_debug ("Clicked the button apply");
+
+ if (package_list_check_marked_list_empty (
+ MOKO_APPLICATION_MANAGER_DATA (data)))
+ {
+ dialog = gtk_message_dialog_new (NULL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+ _("No package that has been selected"));
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ return;
+ }
+
+ dialog = apply_dialog_new (MOKO_APPLICATION_MANAGER_DATA (data));
+ res = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ //FIXME Add code to install/remove/upgrade package
+
+ gtk_widget_destroy (dialog);
}
/**
More information about the commitlog
mailing list