Send commitlog mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. r3366 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
   2. r3367 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
   3. r3368 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
   4. r3369 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
   5. r3370 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
--- Begin Message ---
Author: thomas
Date: 2007-11-07 16:21:27 +0100 (Wed, 07 Nov 2007)
New Revision: 3366

Added:
   
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.c
   
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am
Log:
* src/Makefile.am:
* src/am-progress-dialog.c:
* src/am-progress-dialog.h:

Add a generic progress dialog class


Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-06 16:56:07 UTC (rev 3365)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:21:27 UTC (rev 3366)
@@ -1,3 +1,11 @@
+2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
+
+       * src/Makefile.am:
+       * src/am-progress-dialog.c:
+       * src/am-progress-dialog.h:
+
+       Add a generic progress dialog class
+
 2007-11-06  Thomas Wood  <[EMAIL PROTECTED]>
 
        * src/appmanager-data.h:

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am    
    2007-11-06 16:56:07 UTC (rev 3365)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am    
    2007-11-07 15:21:27 UTC (rev 3366)
@@ -15,6 +15,7 @@
                               apply-dialog.c\
                               install-dialog.c \
                               search-bar.c \
-                              ipkg-utils.c
+                              ipkg-utils.c \
+                              am-progress-dialog.c
 
 openmoko_appmanager_LDADD = @OPENMOKO_LIBS@

Added: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.c
       2007-11-06 16:56:07 UTC (rev 3365)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.c
       2007-11-07 15:21:27 UTC (rev 3366)
@@ -0,0 +1,145 @@
+/* am-progress-dialog.c */
+
+#include <gtk/gtk.h>
+#include "am-progress-dialog.h"
+
+G_DEFINE_TYPE (AmProgressDialog, am_progress_dialog, GTK_TYPE_DIALOG)
+
+#define PROGRESS_DIALOG_PRIVATE(o) \
+  (G_TYPE_INSTANCE_GET_PRIVATE ((o), AM_TYPE_PROGRESS_DIALOG, 
AmProgressDialogPrivate))
+
+typedef struct _AmProgressDialogPrivate AmProgressDialogPrivate;
+
+struct _AmProgressDialogPrivate
+{
+  GtkWidget *label;
+  GtkWidget *details;
+  GtkWidget *pbar;
+  gint       pulse_source;
+};
+
+static void
+am_progress_dialog_class_init (AmProgressDialogClass *klass)
+{
+  /* GObjectClass *object_class = G_OBJECT_CLASS (klass); */
+
+  g_type_class_add_private (klass, sizeof (AmProgressDialogPrivate));
+}
+
+static void
+am_progress_dialog_init (AmProgressDialog *self)
+{
+  GtkWidget *vbox, *w, *sw;
+  
+  AmProgressDialogPrivate *priv = PROGRESS_DIALOG_PRIVATE (self);
+
+  gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_OK, GTK_RESPONSE_OK);
+  gtk_dialog_set_has_separator (GTK_DIALOG (self), FALSE);
+  gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG (self)->action_area), 
FALSE);
+  
+  vbox = gtk_vbox_new (FALSE, 6);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
+  gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (self)->vbox), vbox);
+
+  priv->label = gtk_label_new (NULL);
+  gtk_misc_set_alignment (GTK_MISC (priv->label), 0, 0);
+  gtk_box_pack_start (GTK_BOX (vbox), priv->label, FALSE, FALSE, 0);
+  
+  priv->pbar = gtk_progress_bar_new ();
+  gtk_box_pack_start (GTK_BOX (vbox), priv->pbar, FALSE, FALSE, 0);
+  
+  w = gtk_expander_new ("Details");
+  gtk_box_pack_start_defaults (GTK_BOX (vbox), w);
+  
+  sw = gtk_scrolled_window_new (NULL, NULL);
+  gtk_container_add (GTK_CONTAINER (w), sw);
+  
+  priv->details = gtk_text_view_new ();
+  gtk_container_add (GTK_CONTAINER (sw), priv->details);
+  
+  gtk_widget_show_all (vbox);
+}
+
+static gboolean
+progress_bar_pulse (GtkProgressBar *pbar)
+{
+  if (GTK_IS_PROGRESS_BAR (pbar))
+  {
+    gtk_progress_bar_pulse (pbar);
+    return TRUE;
+  }
+  
+  return FALSE;
+}
+
+
+
+/* public functions */
+
+GtkWidget*
+am_progress_dialog_new (void)
+{
+  return g_object_new (AM_TYPE_PROGRESS_DIALOG, NULL);
+}
+
+GtkWidget*
+am_progress_dialog_new_full (gchar *title, gchar *message, gdouble fraction)
+{
+  GtkWidget *w;
+  AmProgressDialogPrivate *priv;
+  
+  w = am_progress_dialog_new ();
+  
+  priv = PROGRESS_DIALOG_PRIVATE (w);
+  
+  gtk_window_set_title (GTK_WINDOW (w), title);
+  
+  gtk_label_set_text (GTK_LABEL (priv->label), message);
+  
+  am_progress_dialog_set_progress (AM_PROGRESS_DIALOG (w), fraction);
+
+  return w;
+}
+
+void
+am_progress_dialog_set_progress (AmProgressDialog *dialog, gdouble fraction)
+{
+  AmProgressDialogPrivate *priv;
+  priv = PROGRESS_DIALOG_PRIVATE (dialog);
+  
+  if (priv->pulse_source)
+    g_source_remove (priv->pulse_source);
+  
+  if (fraction < 0)
+    priv->pulse_source = g_timeout_add (250, (GSourceFunc) progress_bar_pulse, 
priv->pbar);
+  else
+    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->pbar), fraction);
+  
+  gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG (dialog)->action_area), 
+                            (fraction == 1));
+  
+}
+
+void
+am_progress_dialog_append_details_text (AmProgressDialog *dialog, gchar *text)
+{
+  GtkTextBuffer *buf;
+  GtkTextIter iter;
+  AmProgressDialogPrivate *priv;
+  priv = PROGRESS_DIALOG_PRIVATE (dialog);
+
+  
+  buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->details));
+  
+  gtk_text_buffer_get_end_iter (buf, &iter);
+  gtk_text_buffer_insert (buf, &iter, text, -1);
+}
+
+void
+am_progress_dialog_set_label_text (AmProgressDialog *dialog, gchar *text)
+{
+  AmProgressDialogPrivate *priv;
+  priv = PROGRESS_DIALOG_PRIVATE (dialog);
+
+  gtk_label_set_text (GTK_LABEL (priv->label), text);
+}

Added: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
       2007-11-06 16:56:07 UTC (rev 3365)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
       2007-11-07 15:21:27 UTC (rev 3366)
@@ -0,0 +1,50 @@
+/* am-progress-dialog.h */
+
+#ifndef _AM_PROGRESS_DIALOG
+#define _AM_PROGRESS_DIALOG
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define AM_TYPE_PROGRESS_DIALOG am_progress_dialog_get_type()
+
+#define AM_PROGRESS_DIALOG(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+  AM_TYPE_PROGRESS_DIALOG, AmProgressDialog))
+
+#define AM_PROGRESS_DIALOG_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST ((klass), \
+  AM_TYPE_PROGRESS_DIALOG, AmProgressDialogClass))
+
+#define AM_IS_PROGRESS_DIALOG(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+  AM_TYPE_PROGRESS_DIALOG))
+
+#define AM_IS_PROGRESS_DIALOG_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+  AM_TYPE_PROGRESS_DIALOG))
+
+#define AM_PROGRESS_DIALOG_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+  AM_TYPE_PROGRESS_DIALOG, AmProgressDialogClass))
+
+typedef struct {
+  GtkDialog parent;
+} AmProgressDialog;
+
+typedef struct {
+  GtkDialogClass parent_class;
+} AmProgressDialogClass;
+
+GType am_progress_dialog_get_type (void);
+
+GtkWidget* am_progress_dialog_new (void);
+GtkWidget* am_progress_dialog_new_full (gchar *title, gchar *message, gdouble 
fraction);
+
+void am_progress_dialog_append_details_text (AmProgressDialog *dialog, gchar 
*text);
+void am_progress_dialog_set_progress (AmProgressDialog *dialog, gdouble 
fraction);
+
+G_END_DECLS
+
+#endif /* _AM_PROGRESS_DIALOG */




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2007-11-07 16:34:07 +0100 (Wed, 07 Nov 2007)
New Revision: 3367

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.c
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.h
Log:
* src/ipkgapi.c:
* src/ipkgapi.h:

Add ipkg_update_cmd() to update the package lists


Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:21:27 UTC (rev 3366)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:34:07 UTC (rev 3367)
@@ -1,5 +1,12 @@
 2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/ipkgapi.c:
+       * src/ipkgapi.h:
+
+       Add ipkg_update_cmd() to update the package lists
+
+2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
+
        * src/Makefile.am:
        * src/am-progress-dialog.c:
        * src/am-progress-dialog.h:

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.c  
2007-11-07 15:21:27 UTC (rev 3366)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.c  
2007-11-07 15:34:07 UTC (rev 3367)
@@ -1092,4 +1092,17 @@
     return -1;
 }
 
-
+/*
+ * @brief Update the package list
+ *
+ */
+int ipkg_update_cmd ()
+{
+  args_t args;
+  
+  memset (&args, 0, sizeof (args));
+  
+  args_init (&args);
+  
+  return ipkg_lists_update (&args);
+}

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.h  
2007-11-07 15:21:27 UTC (rev 3366)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkgapi.h  
2007-11-07 15:34:07 UTC (rev 3367)
@@ -88,6 +88,8 @@
 int ipkg_remove_cmd(char *pkg_name);
 int ipkg_search_cmd(char *pkg_name, PKG_LIST_HEAD *pkg_list_head);
 
+int ipkg_update_cmd ();
+
 void free_pkg_list(PKG_LIST_HEAD *head);
 void free_pkg_detail_info(PACKAGE_DETAIL_INFO *info);
 




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2007-11-07 16:37:20 +0100 (Wed, 07 Nov 2007)
New Revision: 3368

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h
Log:
* src/ipkg-utils.c:
* src/ipkg-utils.h:

- Use generic progress dialog to display progress of ipkg functions
- Add package list update functionality


Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:34:07 UTC (rev 3367)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:37:20 UTC (rev 3368)
@@ -1,5 +1,13 @@
 2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/ipkg-utils.c:
+       * src/ipkg-utils.h:
+
+       - Use generic progress dialog to display progress of ipkg functions
+       - Add package list update functionality
+
+2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
+
        * src/ipkgapi.c:
        * src/ipkgapi.h:
 

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c   
    2007-11-07 15:34:07 UTC (rev 3367)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c   
    2007-11-07 15:37:20 UTC (rev 3368)
@@ -20,146 +20,155 @@
  
 #include "appmanager-data.h"
 #include "ipkgapi.h"
+#include "am-progress-dialog.h"
 
 typedef struct
 {
   gchar *package_name;
-  int pulse_source;
-  GtkWidget *label;
-  GtkWidget *pbar;
-  GtkWidget *details;
-  GtkWidget *dlg;
-  int (*func)();
-} IpkgRunData;
+  GtkWidget *progress_dialog;
+  gboolean remove; /* true if we want to remove the package */
+} ThreadData;
 
-static void
-add_text_to_textview (GtkTextView *tv, gchar *text)
+static gpointer
+install_thread_func (ThreadData *data)
 {
-  GtkTextBuffer *buf;
-  GtkTextIter iter;
-  
-  buf = gtk_text_view_get_buffer (tv);
-  
-  gtk_text_buffer_get_end_iter (buf, &iter);
-  gtk_text_buffer_insert (buf, &iter, text, -1);
-}
+  int ret;
+  gchar *real_name;
+  gchar *success_string, *failure_string;
 
-static gboolean
-progress_bar_pulse (GtkProgressBar *pbar)
-{
-  if (GTK_IS_PROGRESS_BAR (pbar))
+  if (!data->remove)
   {
-    gtk_progress_bar_pulse (pbar);
-    return TRUE;
+    ret = ipkg_install_cmd (data->package_name, "root", &real_name);
+    success_string = "Install succeeded\n";
+    failure_string = "Install failed\n";
   }
+  else
+  {
+    ret = ipkg_remove_cmd (data->package_name);
+    success_string = "Removal succeeded\n";
+    failure_string = "Removal failed\n";
+  }
+
+  if (ret == 0)
+  {
+    gdk_threads_enter ();
+    am_progress_dialog_set_progress (data->progress_dialog, 1);
+    am_progress_dialog_append_details_text (data->progress_dialog, 
success_string);
+    am_progress_dialog_set_label_text (data->progress_dialog, success_string);
+    gdk_threads_leave ();
+  }
+  else
+  {
+    gchar *err;
+
+    err = get_error_msg ();
+
+    gdk_threads_enter ();
+    am_progress_dialog_set_progress (data->progress_dialog, 1);
+    am_progress_dialog_append_details_text (data->progress_dialog, 
failure_string);
+    am_progress_dialog_set_label_text (data->progress_dialog, failure_string);
+    am_progress_dialog_append_details_text (data->progress_dialog, err);
+    gdk_threads_leave ();
   
-  return FALSE;
+  }
+
+  g_free (data);
+
+  return NULL;
 }
 
 static gpointer
-install_thread_func (IpkgRunData *data)
+update_package_list_thread (AmProgressDialog *dlg)
 {
   int ret;
-  gchar *real_name;
   
-  ret = data->func (data->package_name, "root", &real_name);
-  g_source_remove (data->pulse_source);
-
+  ret = ipkg_update_cmd ();
+  
   if (ret == 0)
   {
     gdk_threads_enter ();
-    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data->pbar), 1.0);
-    gtk_label_set_text (GTK_LABEL (data->label), "Succeeded!");
-    add_text_to_textview (GTK_TEXT_VIEW (data->details), "Operation 
succeeded\n");
-    gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG(data->dlg)->action_area), 
TRUE);
+    am_progress_dialog_set_progress (AM_PROGRESS_DIALOG (dlg), 1);
+    am_progress_dialog_append_details_text (AM_PROGRESS_DIALOG (dlg),
+                                            "Updated\n");
+    am_progress_dialog_set_label_text (AM_PROGRESS_DIALOG (dlg),
+                                       "Package list updated");
     gdk_threads_leave ();
   }
   else
   {
-    gchar *err, *message;
+    gchar *err;
 
     err = get_error_msg ();
-    message = g_strdup_printf ("Operation failed: %s", err);
 
     gdk_threads_enter ();
-    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data->pbar), 1.0);
-    gtk_label_set_text (GTK_LABEL (data->label), "Failed");
-    add_text_to_textview (GTK_TEXT_VIEW (data->details), message);
-    gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG(data->dlg)->action_area), 
TRUE);
+    am_progress_dialog_set_progress (AM_PROGRESS_DIALOG (dlg), 1);
+    am_progress_dialog_set_label_text (AM_PROGRESS_DIALOG (dlg),
+                                       "Error updating package list");
+    am_progress_dialog_append_details_text (AM_PROGRESS_DIALOG (dlg),
+                                            "Error updating package list\n");
+    am_progress_dialog_append_details_text (AM_PROGRESS_DIALOG (dlg), err);
     gdk_threads_leave ();
   
-    g_free (message);
   }
-
-  g_free (data);
-
+  
   return NULL;
 }
 
-
-
 void
-run_func_with_gui (ApplicationManagerData *data, gchar *name, int (*func)())
+install_package (ApplicationManagerData *data, gchar *name)
 {
+  GtkWidget *dlg;
   gchar *s;
-  GtkWidget *dlg, *vbox, *label, *progress, *details, *w, *sw;
+  ThreadData *td;
 
-  IpkgRunData *install_data;
+  td = g_new0 (ThreadData, 1);
+
+  s = g_strdup_printf ("Installing \"%s\"", name);
+  dlg = am_progress_dialog_new_full ("Install", s, -1);
+  g_free (s);
   
-  dlg = gtk_dialog_new_with_buttons ("Update", GTK_WINDOW (data->mwindow),
-                                     GTK_DIALOG_MODAL,
-                                     GTK_STOCK_OK, GTK_RESPONSE_CANCEL,
-                                     NULL);
-  gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE);
-  gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG (dlg)->action_area), FALSE);
+  td->package_name = name;
+  td->progress_dialog = dlg;
+  td->remove = FALSE;
   
-  vbox = gtk_vbox_new (FALSE, 6);
-  gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
-  gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox);
+  g_thread_create ((GThreadFunc) install_thread_func, td, FALSE, NULL);
+
+  gtk_dialog_run (GTK_DIALOG (dlg));
+  gtk_widget_destroy (dlg);  
+}
+
+void
+remove_package (ApplicationManagerData *data, gchar *name)
+{
+  GtkWidget *dlg;
+  gchar *s;
+  ThreadData *td;
   
-  s = g_strdup_printf ("Updating status of \"%s\"", name);
-  label = gtk_label_new (s);
-  gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+  td = g_new0 (ThreadData, 1);
+
+  s = g_strdup_printf ("Removing \"%s\"", name);
+  dlg = am_progress_dialog_new_full ("Install", s, -1);
   g_free (s);
   
-  progress = gtk_progress_bar_new ();
-  gtk_box_pack_start (GTK_BOX (vbox), progress, FALSE, FALSE, 0);
+  td->package_name = name;
+  td->progress_dialog = dlg;
+  td->remove = TRUE;
   
-  w = gtk_expander_new ("Details");
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), w);
-  
-  sw = gtk_scrolled_window_new (NULL, NULL);
-  gtk_container_add (GTK_CONTAINER (w), sw);
-  
-  details = gtk_text_view_new ();
-  gtk_container_add (GTK_CONTAINER (sw), details);
+  g_thread_create ((GThreadFunc) install_thread_func, td, FALSE, NULL);
 
-  install_data = g_new0 (IpkgRunData, 1);
-  install_data->package_name = name;
-  install_data->pulse_source = g_timeout_add (250, (GSourceFunc) 
progress_bar_pulse, progress);
-  install_data->label = label;
-  install_data->pbar = progress;
-  install_data->details = details;
-  install_data->dlg = dlg;
-  install_data->func = func;
-
-  g_thread_create ((GThreadFunc) install_thread_func, install_data, FALSE, 
NULL);
-
-  gtk_widget_show_all (vbox);
   gtk_dialog_run (GTK_DIALOG (dlg));
-
-  gtk_widget_destroy (dlg);
+  gtk_widget_destroy (dlg);  
 }
 
 void
-install_package (ApplicationManagerData *data, gchar *name)
+update_package_list (ApplicationManagerData *data)
 {
-  run_func_with_gui (data, name, ipkg_install_cmd);
-}
+  GtkWidget *dlg;
 
-void
-remove_package (ApplicationManagerData *data, gchar *name)
-{
-  run_func_with_gui (data, name, ipkg_remove_cmd);
+  dlg = am_progress_dialog_new_full ("Update", "Updating package list", -1);
+  
+  g_thread_create ((GThreadFunc) update_package_list_thread, dlg, FALSE, NULL);
+
+  gtk_dialog_run (GTK_DIALOG (dlg));
+  gtk_widget_destroy (dlg);
 }

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h   
    2007-11-07 15:34:07 UTC (rev 3367)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h   
    2007-11-07 15:37:20 UTC (rev 3368)
@@ -21,5 +21,6 @@
 
 void install_package (ApplicationManagerData *data, gchar *name);
 void remove_package (ApplicationManagerData *data, gchar *name);
+void update_package_list (ApplicationManagerData *data);
 
 #endif /* IPKG_UTILS_H */




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2007-11-07 16:38:56 +0100 (Wed, 07 Nov 2007)
New Revision: 3369

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
   
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
Log:
* src/appmanager-window.c: (main): Request a package list update if the
package list could not be opened.

* src/tool-box.c: (on_upgrade_clicked): Use the upgrade button to
update the package list


Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:37:20 UTC (rev 3368)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:38:56 UTC (rev 3369)
@@ -1,5 +1,13 @@
 2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/appmanager-window.c: (main): Request a package list update if the
+       package list could not be opened.
+
+       * src/tool-box.c: (on_upgrade_clicked): Use the upgrade button to
+       update the package list
+
+2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
+
        * src/ipkg-utils.c:
        * src/ipkg-utils.h:
 

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
        2007-11-07 15:37:20 UTC (rev 3368)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
        2007-11-07 15:38:56 UTC (rev 3369)
@@ -31,6 +31,8 @@
 #include "select-menu.h"
 #include "search-bar.h"
 
+#include "ipkg-utils.h"
+
 /*
  * @brief The start function.
  */
@@ -131,16 +133,46 @@
   /* Load the list of all package in the memory */
   ret = init_package_list (appdata);
   if (ret != OP_SUCCESS)
-    {
-      g_debug ("Can not initialize libipkg, result was %d, aborting.", ret);
-      return -1;
-    }
+  {
+    g_debug ("Can not initialize libipkg, result was %d, aborting.", ret);
+    return -1;
+  }
+
   ret = package_list_build_index (appdata);
   if (ret != OP_SUCCESS)
+  {
+    GtkWidget *dlg;
+      
+    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_QUESTION,
+                                  GTK_BUTTONS_YES_NO,
+                                  "Package list not available. "
+                                  "Would you like to update it now?");
+    if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_YES)
     {
+      /* update the package list */
+      update_package_list (appdata);
+
+      /* try to reload the package list */
+      ret = reinit_package_list (appdata);
+      ret = package_list_build_index (appdata);
+
+      gtk_widget_destroy (dlg);
+
+      if (ret != OP_SUCCESS)
+      {
+        dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, 
GTK_BUTTONS_OK,
+                                "Could not update the package list");
+        gtk_dialog_run (GTK_DIALOG (dlg));
+        gtk_widget_destroy (dlg);
+        return -1;
+      }
+    }
+    else      
+    {
       g_debug ("Can not build index for packages, aborting.");
       return -1;
     }
+  }
 
   /* Add section list to the filter menu */
   package_list_add_section_to_filter_menu (appdata);

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 
2007-11-07 15:37:20 UTC (rev 3368)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 
2007-11-07 15:38:56 UTC (rev 3369)
@@ -35,6 +35,8 @@
 void 
 on_upgrade_clicked (GtkButton *bupgrade, gpointer data)
 {
+  update_package_list (data);
+  /*
   GtkWidget *dialog;
 
   g_debug ("Clicked the button upgrade");
@@ -50,6 +52,7 @@
   gtk_dialog_run (GTK_DIALOG (dialog));
   gtk_widget_destroy (dialog);
   g_debug ("destroy a dialog");
+  */
 }
 
 




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2007-11-07 16:54:27 +0100 (Wed, 07 Nov 2007)
New Revision: 3370

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
   
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c
Log:
* src/am-progress-dialog.h:
* src/ipkg-utils.c:

Fix compiler warnings


Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:38:56 UTC (rev 3369)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-11-07 15:54:27 UTC (rev 3370)
@@ -1,5 +1,12 @@
 2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/am-progress-dialog.h:
+       * src/ipkg-utils.c:
+
+       Fix compiler warnings
+
+2007-11-07  Thomas Wood  <[EMAIL PROTECTED]>
+
        * src/appmanager-window.c: (main): Request a package list update if the
        package list could not be opened.
 

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
       2007-11-07 15:38:56 UTC (rev 3369)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/am-progress-dialog.h
       2007-11-07 15:54:27 UTC (rev 3370)
@@ -44,6 +44,7 @@
 
 void am_progress_dialog_append_details_text (AmProgressDialog *dialog, gchar 
*text);
 void am_progress_dialog_set_progress (AmProgressDialog *dialog, gdouble 
fraction);
+void am_progress_dialog_set_label_text (AmProgressDialog *dialog, gchar *text);
 
 G_END_DECLS
 

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c   
    2007-11-07 15:38:56 UTC (rev 3369)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c   
    2007-11-07 15:54:27 UTC (rev 3370)
@@ -34,7 +34,7 @@
 {
   int ret;
   gchar *real_name;
-  gchar *success_string, *failure_string;
+  gchar *success_string, *failure_string, *s;
 
   if (!data->remove)
   {
@@ -51,26 +51,22 @@
 
   if (ret == 0)
   {
-    gdk_threads_enter ();
-    am_progress_dialog_set_progress (data->progress_dialog, 1);
-    am_progress_dialog_append_details_text (data->progress_dialog, 
success_string);
-    am_progress_dialog_set_label_text (data->progress_dialog, success_string);
-    gdk_threads_leave ();
+    s = success_string;
   }
   else
   {
-    gchar *err;
+    s = failure_string;
+  }
+  gchar *err;
 
-    err = get_error_msg ();
-
-    gdk_threads_enter ();
-    am_progress_dialog_set_progress (data->progress_dialog, 1);
-    am_progress_dialog_append_details_text (data->progress_dialog, 
failure_string);
-    am_progress_dialog_set_label_text (data->progress_dialog, failure_string);
-    am_progress_dialog_append_details_text (data->progress_dialog, err);
-    gdk_threads_leave ();
+  err = get_error_msg ();  
   
-  }
+  gdk_threads_enter ();
+  am_progress_dialog_set_progress (AM_PROGRESS_DIALOG (data->progress_dialog), 
1);
+  am_progress_dialog_append_details_text (AM_PROGRESS_DIALOG 
(data->progress_dialog), s);
+  am_progress_dialog_set_label_text (AM_PROGRESS_DIALOG 
(data->progress_dialog), s);
+  am_progress_dialog_append_details_text (AM_PROGRESS_DIALOG 
(data->progress_dialog), err);
+  gdk_threads_leave ();
 
   g_free (data);
 




--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to