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

caowai_song at gta01.hmw-consulting.de caowai_song at gta01.hmw-consulting.de
Sun Dec 31 06:49:38 CET 2006


Author: caowai_song
Date: 2006-12-31 06:48:51 +0100 (Sun, 31 Dec 2006)
New Revision: 481

Modified:
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/detail-area.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/ipkgapi.h
   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
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager/src/tool-box.c
Log:
Add install package from local filesystem.


Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.c	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -20,6 +20,9 @@
 
 #include "application-menu.h"
 #include "appmanager-window.h"
+#include "package-list.h"
+#include "ipkgapi.h"
+#include "errorcode.h"
 
 /**
  * @brief The Callback function of the show status menu
@@ -28,6 +31,7 @@
 on_showstatus_activate (GtkMenuItem *menuitem, gpointer user_data)
 {
   g_debug ("Call on_showstatus_activate");
+
 }
 
 /**
@@ -45,7 +49,102 @@
 void 
 on_install_single_application_activate (GtkMenuItem *menuitem, gpointer user_data)
 {
+  ApplicationManagerData  *appdata;
+  GtkWidget  *confirmdialog;
+  gint       ret;
+  GtkWidget      *filechooser;
+  gint           res;
+  GtkFileFilter  *filter;
+  gchar          *filename;
+  char           *newname = NULL;
+
   g_debug ("Call on_install_single_application_activate");
+  g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (user_data));
+  appdata = MOKO_APPLICATION_MANAGER_DATA (user_data);
+
+  if (!package_list_check_marked_list_empty (appdata))
+    {
+      confirmdialog = gtk_message_dialog_new (NULL, 
+                                              GTK_DIALOG_DESTROY_WITH_PARENT,
+                                              GTK_MESSAGE_QUESTION,
+                                              GTK_BUTTONS_YES_NO,
+                                              _("It will unselect all you selected packages, continue?"));
+      ret = gtk_dialog_run (GTK_DIALOG (confirmdialog));
+      gtk_widget_destroy (confirmdialog);
+      if (ret != GTK_RESPONSE_YES)
+        {
+          g_debug ("User cancel");
+          return;
+        }
+    }
+
+  filechooser = gtk_file_chooser_dialog_new(_("Add application"),
+                                            NULL,
+                                            GTK_FILE_CHOOSER_ACTION_OPEN,
+                                            GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+                                            GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                            NULL);
+  gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(filechooser), FALSE);
+  gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(filechooser), FALSE);
+  gtk_window_set_default_size (GTK_WINDOW (filechooser), 400, 300);
+
+  filter = gtk_file_filter_new();
+  gtk_file_filter_set_name(filter, _("Ipk files(*.ipk)"));
+  gtk_file_filter_add_pattern(filter, "*.ipk");
+  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filechooser), filter);
+
+  filter = gtk_file_filter_new();
+  gtk_file_filter_set_name(filter, _("All files(*.*)"));
+  gtk_file_filter_add_pattern(filter, "*");
+  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filechooser), filter);
+
+  res = gtk_dialog_run(GTK_DIALOG(filechooser));
+
+  if( (res == GTK_RESPONSE_ACCEPT) || (res == GTK_RESPONSE_OK) ) {
+    filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filechooser));
+    g_debug ("file name of user selected is :%s\n", filename);
+
+    res = ipkg_install_cmd (filename, "root", &newname);
+    if (res == 0)
+      {
+        package_list_free_all_dynamic (appdata);
+        ret = reinit_package_list (appdata);
+        if (ret != OP_SUCCESS)
+          {
+            g_debug ("Can not initial the libipkg, the result is%d", ret);
+            g_free (filename);
+            gtk_widget_destroy(filechooser);
+            return;
+          }
+        ret = package_list_build_index (appdata);
+        if (ret != OP_SUCCESS)
+          {
+            g_debug ("Can not build index for packages");
+            g_free (filename);
+            gtk_widget_destroy(filechooser);
+            return;
+          }
+        if (newname != NULL)
+          {
+            free (newname);
+            newname = NULL;
+          }
+      }
+    else
+      {
+        g_debug ("Install error, the error message is:%s", get_error_msg());
+        if (newname != NULL)
+          {
+            free (newname);
+            newname = NULL;
+          }
+      }
+
+    g_free (filename);
+  }
+
+  gtk_widget_destroy(filechooser);
+  return;
 }
 
 /**
@@ -120,3 +219,4 @@
 
   return appmenu;
 }
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.h	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/application-menu.h	2006-12-31 05:48:51 UTC (rev 481)
@@ -27,3 +27,4 @@
 GtkMenu *application_menu_new (ApplicationManagerData *appdata);
 
 #endif
+

Modified: 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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/apply-dialog.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -112,3 +112,4 @@
 
   return applydialog;
 }
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.c	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -575,3 +575,4 @@
 
   return appdata->installdialog;
 }
+

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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-data.h	2006-12-31 05:48:51 UTC (rev 481)
@@ -183,3 +183,4 @@
 G_END_DECLS
 
 #endif
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.c	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -121,3 +121,4 @@
 
   return 0;
 }
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.h	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/appmanager-window.h	2006-12-31 05:48:51 UTC (rev 481)
@@ -29,3 +29,4 @@
 #define _(String) (String)
 
 #endif 
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/detail-area.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/detail-area.c	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/detail-area.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -205,3 +205,4 @@
 
   g_object_unref (pix);
 }
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.c	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -293,3 +293,4 @@
   strcpy (priv->installinfolist[priv->installnum], info);
   priv->installnum ++;
 }
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.h	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/install-dialog.h	2006-12-31 05:48:51 UTC (rev 481)
@@ -80,3 +80,4 @@
 G_END_DECLS
 
 #endif
+

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager/src/ipkgapi.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager/src/ipkgapi.h	2006-12-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/ipkgapi.h	2006-12-31 05:48:51 UTC (rev 481)
@@ -94,3 +94,4 @@
 char *get_error_msg();
 
 #endif
+

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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -476,3 +476,4 @@
   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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/navigation-area.h	2006-12-31 05:48:51 UTC (rev 481)
@@ -51,3 +51,4 @@
                                  const gchar *str);
 
 #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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -47,7 +47,6 @@
 } SectionList;
 
 static gint package_list_insert_node_without_check (PackageList *pkglist, IPK_PACKAGE *pkg);
-static void package_list_free_all_dynamic (ApplicationManagerData *appdata);
 
 /**
  * @brief Version compare
@@ -145,6 +144,41 @@
 }
 
 /**
+ * @brief Reinit the package list. Only get the packages from the lib ipkg.
+ * @param appdata The application manager data
+ * @return If success, return OP_SUCCESS, else return error code
+ */
+gint 
+reinit_package_list (ApplicationManagerData *appdata)
+{
+  PKG_LIST_HEAD *head;
+  int ret;
+
+  head = g_malloc (sizeof (PKG_LIST_HEAD));
+  if (head == NULL)
+    {
+      g_debug ("Can not malloc memory for the package list header");
+      return OP_MAMORY_MALLOC_ERROR;
+    }
+
+  head->length = 0;
+  head->pkg_list = NULL;
+
+  ret = ipkg_list_available_cmd (head);
+  if (ret != 0)
+    {
+      //Can't get the package list correctly
+      g_debug ("Can not get the package list, the result is %d\nthe error message is:%s",
+               ret, get_error_msg());
+      g_free (head);
+      return OP_ERROR;
+    }
+
+  application_manager_data_set_pkglist (appdata, head);
+  return OP_SUCCESS;
+}
+
+/**
  * @brief Create a new node of section list.
  *
  * If the param name is NULL, return NULL;
@@ -359,6 +393,8 @@
       nosecpkg = NULL;
       application_manager_data_set_upgrade_list (appdata, nosecpkg);
     }
+
+  application_manager_data_set_current_list (appdata, NULL);
 }
 
 /**
@@ -1389,7 +1425,7 @@
                                          STATUS_REINIT);
       package_list_free_all_dynamic (appdata);
 
-      ret = init_package_list (appdata);
+      ret = reinit_package_list (appdata);
       if (ret != OP_SUCCESS)
         {
           g_debug ("Can not initial the libipkg, the result is%d", ret);
@@ -1414,7 +1450,7 @@
  * @brief Free all dynamic data
  * @param appdata The application manager data
  */
-static void 
+void 
 package_list_free_all_dynamic (ApplicationManagerData *appdata)
 {
   PKG_LIST_HEAD *pkgheader;
@@ -1458,3 +1494,4 @@
 
   return number;
 }
+

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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/package-list.h	2006-12-31 05:48:51 UTC (rev 481)
@@ -26,6 +26,8 @@
 
 gint init_package_list (ApplicationManagerData *appdata);
 
+gint reinit_package_list (ApplicationManagerData *appdata);
+
 gint package_list_build_index (ApplicationManagerData *appdata);
 
 void package_list_add_section_to_filter_menu (ApplicationManagerData *appdata);
@@ -71,6 +73,9 @@
 
 gpointer package_list_execute_change (gpointer data);
 
+void package_list_free_all_dynamic (ApplicationManagerData *appdata);
+
 gint package_list_get_number_of_selected (ApplicationManagerData *appdata);
 
 #endif
+

Modified: 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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/select-menu.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -403,3 +403,4 @@
                   (event != NULL) ? event->button : 0,
                   gdk_event_get_time((GdkEvent *) event));
 }
+

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-31 01:40:37 UTC (rev 480)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager/src/tool-box.c	2006-12-31 05:48:51 UTC (rev 481)
@@ -191,3 +191,4 @@
 
   return toolbox;
 }
+





More information about the commitlog mailing list