r276 - in trunk/src/target/OM-2007/applications/openmoko-appmanager-demo: data src

caowai_song at gta01.hmw-consulting.de caowai_song at gta01.hmw-consulting.de
Fri Dec 1 07:40:41 CET 2006


Author: caowai_song
Date: 2006-12-01 06:40:24 +0000 (Fri, 01 Dec 2006)
New Revision: 276

Added:
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/unkown.png
Modified:
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/Makefile.am
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-window.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.c
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.h
   trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.c
Log:
Complete a sample demo that use the libmokoui


Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/Makefile.am	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/Makefile.am	2006-12-01 06:40:24 UTC (rev 276)
@@ -3,7 +3,8 @@
              package-installed.png\
              package-mark-install.png\
              package-remove.png\
-             package-upgrade.png
+             package-upgrade.png\
+             unkown.png
 
 resourcedir = $(pkgdatadir)
 resource_DATA = package-available.png\
@@ -11,5 +12,6 @@
                 package-installed.png\
                 package-mark-install.png\
                 package-remove.png\
-                package-upgrade.png
+                package-upgrade.png\
+                unkown.png
 

Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/unkown.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/unkown.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.c	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.c	2006-12-01 06:40:24 UTC (rev 276)
@@ -367,5 +367,5 @@
   g_return_val_if_fail (appdata != NULL, NULL);
   g_return_val_if_fail (id < N_COUNT_PKG_STATUS, NULL);
 
-  return appdata->selectedlist;
+  return appdata->statuspix[id];
 }

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-window.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-window.c	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-window.c	2006-12-01 06:40:24 UTC (rev 276)
@@ -93,12 +93,15 @@
   moko_paned_window_set_lower_pane (window, detail);
 
   //Load the list of all package in the memory
+  /*
   ret = init_package_list (appdata);
   if (ret != OP_SUCCESS)
     {
       g_debug ("Can not initial the libipkg, the result is%d", ret);
       return -1;
     }
+  */
+  ret = navigation_area_insert_test_data (appdata);
 
   gtk_widget_show_all (GTK_WIDGET (window));
   g_debug ("application manager enter main loop");

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.c	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.c	2006-12-01 06:40:24 UTC (rev 276)
@@ -19,6 +19,7 @@
  */
 
 #include "detail-area.h"
+#include "navigation-area.h"
 
 /**
  * @brief Create a detail area to the application manager data
@@ -47,3 +48,48 @@
 
   return scrollwindow;
 }
+
+/**
+ * @brief Update the detail area infomation base on the package that selected
+ * @param appdata The application manager data
+ */
+void 
+detail_area_update_info (ApplicationManagerData *appdata)
+{
+  GtkWidget      *textview;
+  GtkTextBuffer  *buffer;
+  GtkTextIter    iter;
+  GdkPixbuf      *pix;
+  gchar          *name = NULL;
+  gchar          str[256];
+
+  g_debug ("Update the info in the detail area");
+
+  g_return_if_fail (appdata != NULL);
+
+  textview = application_manager_get_tvdetail (appdata);
+  if (textview == NULL)
+    {
+      g_debug ("Textview is NULL");
+      return;
+    }
+
+  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
+  if (buffer == NULL)
+    {
+      g_debug ("Textview not init correctly, textbuffer is NULL");
+      return;
+    }
+
+  name = treeview_get_selected_name (application_manager_get_tvpkglist (appdata));
+
+  pix = create_pixbuf ("unkown.png");
+
+  sprintf (str, "The selected package name is:%s", name);
+  gtk_text_buffer_set_text (buffer, str, -1);
+
+  gtk_text_buffer_get_start_iter (buffer, &iter);
+  gtk_text_buffer_insert_pixbuf (buffer, &iter, pix);
+
+  g_object_unref (pix);
+}

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.h	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.h	2006-12-01 06:40:24 UTC (rev 276)
@@ -26,5 +26,7 @@
 
 GtkWidget *detail_area_new (ApplicationManagerData *appdata);
 
+void detail_area_update_info (ApplicationManagerData *appdata);
+
 #endif
 

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.c	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.c	2006-12-01 06:40:24 UTC (rev 276)
@@ -21,7 +21,33 @@
 
 #include "appmanager-window.h"
 #include "navigation-area.h"
+#include "errorcode.h"
+#include "detail-area.h"
 
+/**
+ * @brief The callback function of the signal "cursor-changed"
+ */
+void 
+on_treeview_cursor_changed (GtkTreeView *treeview, 
+                            gpointer     user_data)
+{
+  g_debug ("Call the on_treeview_cursor_changed");
+
+  detail_area_update_info ((ApplicationManagerData *) user_data);
+}
+
+/**
+ * @brief The callback function of the signal "unselect-all"
+ */
+gboolean 
+on_treeview_unselect_all (GtkTreeView *treeview,
+                          gpointer     user_data)
+{
+  g_debug ("Call the on_treeview_unselect_all");
+
+  return FALSE;
+}
+
 static GtkListStore *
 create_package_list_store (void)
 {
@@ -59,7 +85,6 @@
   col = gtk_tree_view_column_new ();
   gtk_tree_view_column_set_title (col, _("S"));
   gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-  //gtk_tree_view_column_set_fixed_width (col, 20);
 
   renderer = gtk_cell_renderer_pixbuf_new ();
   gtk_tree_view_column_pack_start (col, renderer, FALSE);
@@ -73,7 +98,6 @@
   col = gtk_tree_view_column_new ();
   gtk_tree_view_column_set_title (col, _("Name"));
   gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-  //gtk_tree_view_column_set_fixed_width (col, 240);
 
   renderer = gtk_cell_renderer_text_new ();
   gtk_tree_view_column_pack_start (col, renderer, FALSE);
@@ -99,9 +123,121 @@
   model = GTK_TREE_MODEL (create_package_list_store ());
   gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model);
   g_object_unref (model);
+  // FIXME Set the treeview as the single selection mode now.
+  // Maybe it uses the multi selection mode in the feature. 
+  gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
+                               GTK_SELECTION_SINGLE);
 
   scrollwindow = GTK_WIDGET (moko_tree_view_put_into_scrolled_window (MOKO_TREE_VIEW (treeview)));
   application_manager_data_set_tvpkglist (appdata, treeview);
 
+  // Connect signal to the treeview
+  g_signal_connect ((gpointer) treeview, "cursor_changed",
+                    G_CALLBACK (on_treeview_cursor_changed),
+                    appdata);
+
+  g_signal_connect ((gpointer) treeview, "unselect_all",
+                    G_CALLBACK (on_treeview_cursor_changed),
+                    appdata);
+
+
   return scrollwindow;
 }
+
+/**
+ * @brief Insert test data
+ */
+gint 
+navigation_area_insert_test_data (ApplicationManagerData *appdata)
+{
+  GtkWidget  *treeview;
+
+  GtkTreeModel  *model;
+  GtkListStore  *store;
+  GtkTreeIter   iter;
+  GdkPixbuf     *pix = NULL;
+
+  treeview = application_manager_get_tvpkglist (appdata);
+  if (treeview == NULL)
+    {
+      g_debug ("Treeview not init correctly");
+      return OP_ERROR;
+    }
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+  store = GTK_LIST_STORE (model);
+  if (store == NULL)
+    {
+      g_debug ("The store of package list not init correctly");
+      return OP_ERROR;
+    }
+
+  g_object_ref (model);
+  gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), NULL);
+  gtk_list_store_clear (store);
+
+  pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_AVAILABLE);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      COL_STATUS, pix,
+                      COL_NAME, "test-core",
+                      COL_SIZE, "11k",
+                      COL_POINTER, NULL,
+                      -1);
+
+  pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_INSTALLED);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      COL_STATUS, pix,
+                      COL_NAME, "test-vim",
+                      COL_SIZE, "21k",
+                      COL_POINTER, NULL,
+                      -1);
+
+  pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_UPGRADEABLE);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      COL_STATUS, pix,
+                      COL_NAME, "test-game",
+                      COL_SIZE, "188k",
+                      COL_POINTER, NULL,
+                      -1);
+
+  pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_AVAILABLE_MARK_FOR_INSTALL);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      COL_STATUS, pix,
+                      COL_NAME, "test-dialer",
+                      COL_SIZE, "211k",
+                      COL_POINTER, NULL,
+                      -1);
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), model);
+  g_object_unref (model);
+
+  return OP_SUCCESS;
+}
+
+/**
+ * @brief Get the name that the roll was selected from the treeview
+ * @param treeview The treeview
+ * @return The package name. 
+ *   -If there is not any row selected, it will return NULL.
+ *   -If the return is not NULL, it must be freed by g_free.
+ */
+gchar *
+treeview_get_selected_name (GtkWidget *treeview)
+{
+  GtkTreeModel     *model;
+  GtkTreeIter      iter;
+  GtkTreeSelection *selection;
+  gchar            *name = NULL;
+
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+  if (gtk_tree_selection_get_selected (selection, &model, &iter))
+    {
+      gtk_tree_model_get (model, &iter, COL_NAME, &name, -1);
+      return name;
+    }
+
+  return NULL;
+}

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.h	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.h	2006-12-01 06:40:24 UTC (rev 276)
@@ -34,4 +34,8 @@
 
 GtkWidget *navigation_area_new (ApplicationManagerData *appdata);
 
+gint navigation_area_insert_test_data (ApplicationManagerData *appdata);
+
+gchar *treeview_get_selected_name (GtkWidget *treeview);
+
 #endif

Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.c	2006-11-30 20:48:23 UTC (rev 275)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.c	2006-12-01 06:40:24 UTC (rev 276)
@@ -236,37 +236,17 @@
   g_free (seclist);
 }
 
-
 /**
- * @brief Build a detailed index for the packages list in the application
- * manager data
- * @param appdata The application manager data
- * @return If success, return OP_SUCCESS, else return error code
+ * @brief Clear the old index
  */
-gint 
-package_list_build_index (ApplicationManagerData *appdata)
+static void 
+package_list_clear_old_index (ApplicationManagerData *appdata)
 {
-  PKG_LIST_HEAD *pkglist;
-
   SectionList *sectionlist = NULL;
   PackageList *installed = NULL;
   PackageList *upgrade = NULL;
   PackageList *selected = NULL;
 
-  // Get the package list from application manager data
-  pkglist = (PKG_LIST_HEAD *) application_manager_data_get_pkglist (appdata);
-  if (pkglist == NULL)
-    {
-      g_debug ("The package list is not available");
-      return OP_ERROR;
-    }
-
-  if (pkglist->pkg_list == NULL)
-    {
-      g_debug ("The package list is not available");
-      return OP_ERROR;
-    }
-
   // Get the section list from the application manager data
   // If the section list is not NULL, clear it.
   sectionlist = (SectionList *) application_manager_data_get_sectionlist (appdata);
@@ -309,8 +289,43 @@
       selected = NULL;
       application_manager_data_set_upgrade_list (appdata, selected);
     }
+}
 
+
+/**
+ * @brief Build a detailed index for the packages list in the application
+ * manager data
+ * @param appdata The application manager data
+ * @return If success, return OP_SUCCESS, else return error code
+ */
+gint 
+package_list_build_index (ApplicationManagerData *appdata)
+{
+  PKG_LIST_HEAD *pkglist;
+
+  SectionList *sectionlist = NULL;
+  //PackageList *installed = NULL;
+  //PackageList *upgrade = NULL;
+  //PackageList *selected = NULL;
+
+  // Get the package list from application manager data
+  pkglist = (PKG_LIST_HEAD *) application_manager_data_get_pkglist (appdata);
+  if (pkglist == NULL)
+    {
+      g_debug ("The package list is not available");
+      return OP_ERROR;
+    }
+
+  if (pkglist->pkg_list == NULL)
+    {
+      g_debug ("The package list is not available");
+      return OP_ERROR;
+    }
+
+  package_list_clear_old_index (appdata);
+
   sectionlist = g_malloc (sizeof (SectionList));
 
   return OP_SUCCESS;
 }
+





More information about the commitlog mailing list