r4439 - in trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: . src
thomas at docs.openmoko.org
thomas at docs.openmoko.org
Thu May 15 18:34:24 CEST 2008
Author: thomas
Date: 2008-05-15 18:34:23 +0200 (Thu, 15 May 2008)
New Revision: 4439
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
Log:
2008-05-15 Thomas Wood <thomas at openedhand.com>
* src/tool-box.c: (progress_update_cb),
(start_install): Add a progress dialog and seperate thread for package
install
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2008-05-15 13:34:12 UTC (rev 4438)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2008-05-15 16:34:23 UTC (rev 4439)
@@ -1,3 +1,9 @@
+2008-05-15 Thomas Wood <thomas at openedhand.com>
+
+ * src/tool-box.c: (progress_update_cb),
+ (start_install): Add a progress dialog and seperate thread for package
+ install
+
2008-05-09 Thomas Wood <thomas at openedhand.com>
* configure.ac:
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 2008-05-15 13:34:12 UTC (rev 4438)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 2008-05-15 16:34:23 UTC (rev 4439)
@@ -25,6 +25,7 @@
#include "navigation-area.h"
#include "appmanager-window.h"
#include "ipkg-utils.h"
+#include "am-progress-dialog.h"
/*
* @brief The callback function of the button "upgrade"
@@ -62,15 +63,51 @@
*/
}
-
void
-on_install_clicked (GtkWidget *button, ApplicationManagerData *data)
+progress_update_cb (opkg_t *opkg, const opkg_progress_data_t *pdata, void *am_progress_dialog)
{
+ AmProgressDialog *dlg = AM_PROGRESS_DIALOG (am_progress_dialog);
+ gchar *text, *name;
+
+ if (!dlg)
+ return;
+
+ if (pdata->package)
+ name = pdata->package->name;
+ else
+ name = "";
+
+ gdk_threads_enter();
+ am_progress_dialog_set_progress (dlg, pdata->percentage / 100.0);
+
+ switch (pdata->action)
+ {
+ case OPKG_INSTALL:
+ text = g_strdup_printf ("Installing %s...", name);
+ break;
+ case OPKG_REMOVE:
+ text = g_strdup_printf ("Removing %s...", name);
+ break;
+ case OPKG_DOWNLOAD:
+ text = g_strdup_printf ("Downloading %s...", name);
+ break;
+ default:
+ text = g_strdup ("Please wait...");
+ }
+
+ am_progress_dialog_set_label_text (dlg, text);
+ g_free (text);
+ gdk_threads_leave();
+
+}
+void start_install (ApplicationManagerData *data)
+{
GtkTreeSelection *sel;
GtkTreeModel *model;
GtkTreeIter iter;
gchar *name;
GtkWidget *dialog;
+ gint ret;
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (data->tvpkglist));
@@ -78,16 +115,33 @@
return;
gtk_tree_model_get (model, &iter, COL_NAME, &name, -1);
+
- if (opkg_install_package (data->opkg, name, NULL, NULL) == 0)
+ ret = opkg_install_package (data->opkg, name, progress_update_cb, data->installdialog);
+
+ gdk_threads_enter();
+ if (ret == 0)
dialog = gtk_message_dialog_new (NULL,0, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s was installed", name);
else
dialog = gtk_message_dialog_new (NULL,0, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s could not be installed", name);
+
+ gtk_widget_destroy (data->installdialog);
+
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
+ gdk_threads_leave();
}
void
+on_install_clicked (GtkWidget *button, ApplicationManagerData *data)
+{
+ data->installdialog = am_progress_dialog_new ();
+ gtk_widget_show_all (data->installdialog);
+
+ g_thread_create ((GThreadFunc) start_install, data, FALSE, NULL);
+}
+
+void
on_remove_clicked (GtkWidget *button, ApplicationManagerData *data)
{
GtkTreeSelection *sel;
More information about the commitlog
mailing list