r274 - 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
Thu Nov 30 10:18:25 CET 2006
Author: caowai_song
Date: 2006-11-30 09:17:43 +0000 (Thu, 30 Nov 2006)
New Revision: 274
Added:
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/Makefile.am
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-available.png
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-installed-outdated.png
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-installed.png
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-mark-install.png
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-remove.png
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-upgrade.png
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/errorcode.h
Modified:
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/Makefile.am
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/configure.ac
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/application-menu.c
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.h
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/filter-menu.c
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.c
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.h
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.c
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.h
trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/tool-box.c
Log:
Continue to build the framework
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/Makefile.am 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/Makefile.am 2006-11-30 09:17:43 UTC (rev 274)
@@ -1,2 +1,2 @@
-SUBDIRS = src
+SUBDIRS = src data
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/configure.ac
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/configure.ac 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/configure.ac 2006-11-30 09:17:43 UTC (rev 274)
@@ -22,4 +22,5 @@
AC_OUTPUT([
Makefile
src/Makefile
+data/Makefile
])
Added: 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 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/Makefile.am 2006-11-30 09:17:43 UTC (rev 274)
@@ -0,0 +1,15 @@
+EXTRA_DIST = package-available.png\
+ package-installed-outdated.png\
+ package-installed.png\
+ package-mark-install.png\
+ package-remove.png\
+ package-upgrade.png
+
+resourcedir = $(pkgdatadir)
+resource_DATA = package-available.png\
+ package-installed-outdated.png\
+ package-installed.png\
+ package-mark-install.png\
+ package-remove.png\
+ package-upgrade.png
+
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-available.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-available.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-installed-outdated.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-installed-outdated.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-installed.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-installed.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-mark-install.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-mark-install.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-remove.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-remove.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-upgrade.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/data/package-upgrade.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/application-menu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/application-menu.c 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/application-menu.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -68,8 +68,8 @@
}
/**
- * @brief Create a new application menu for a window.
- * @param window The main window that the menu will add to.
+ * @brief Create a new application menu for the application manager
+ * @param appdata The application manager data
* @return The GtkMenu widget. If there is error,
* it will return NULL.
*/
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 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -20,6 +20,10 @@
#include "appmanager-data.h"
+/**
+ * @brief Create a new ApplicationManagerData
+ * @return The ApplicationManagerData. If fail to create, it will return NULL.
+ */
ApplicationManagerData *
application_manager_data_new (void)
{
@@ -44,64 +48,324 @@
for (i = 0; i < N_COUNT_PKG_STATUS; i++)
{
- data->statusPix[i] = NULL;
+ data->statuspix[i] = NULL;
}
return data;
}
+/**
+ * @brief Set the moko panad window to the application manager data
+ * @param appdata The application manager data struct
+ * @param window The main window
+ */
void
application_manager_data_set_main_window (ApplicationManagerData *appdata,
MokoPanedWindow *window)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->mwindow = window;
}
+/**
+ * @brief Set the treeview widget of package list to the
+ * application manager data
+ * @param appdata The application manager data struct
+ * @param tvpkglist The treeview widget of the package list
+ */
void
application_manager_data_set_tvpkglist (ApplicationManagerData *appdata,
GtkWidget *tvpkglist)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->tvpkglist = tvpkglist;
}
+/**
+ * @brief Set the textview widget of detail to the application manager data
+ * @param appdata The application manager data struct
+ * @param tvdetail The textview widget of detail
+ */
void
application_manager_data_set_tvdetail (ApplicationManagerData *appdata,
GtkWidget *tvdetail)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->tvdetail = tvdetail;
}
+/**
+ * @brief Set the header of package list to the application manager data
+ * @param appdata The application manager data struct
+ * @param pkglist The header of the package list
+ */
void
application_manager_data_set_pkglist (ApplicationManagerData *appdata,
gpointer pkglist)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->pkglist = pkglist;
}
+/**
+ * @brief Set the header of section list to the application manager data
+ * @param appdata The application manager data struct
+ * @param sectionlist The header of the section list
+ */
void
application_manager_data_set_section_list (ApplicationManagerData *appdata,
gpointer sectionlist)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->sectionlist = sectionlist;
}
+/**
+ * @brief Set the header of the installed list to the application manager data
+ * @param appdata The application manager data struct
+ * @param installedlist The header of the installed list
+ */
void
application_manager_data_set_installed_list (ApplicationManagerData *appdata,
gpointer installedlist)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->installedlist = installedlist;
}
+/**
+ * @brief Set the header of the upgrade list to the application manager data
+ * @param appdata The application manager data struct
+ * @param upgradelist The header of the upgrade list
+ */
void
application_manager_data_set_upgrade_list (ApplicationManagerData *appdata,
gpointer upgradelist)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->upgradelist = upgradelist;
}
+/**
+ * @brief Set the header of the selected list to the application manager data
+ * @param appdata The application manager data struct
+ * @param selectedlist The header of the selected list
+ */
void
application_manager_data_set_selected_list (ApplicationManagerData *appdata,
gpointer selectedlist)
{
+ g_return_if_fail (appdata != NULL);
+
appdata->selectedlist = selectedlist;
}
+
+/**
+ * @brief Set the pixbuf to the pixbuf list in the application manager data
+ * @param appdata The application manager data struct
+ * @param pixbuf A GdkPixbuf
+ * @param id The package status id
+ */
+void
+application_manager_data_set_status_pixbuf (ApplicationManagerData *appdata,
+ GdkPixbuf *pixbuf,
+ guint id)
+{
+ g_return_if_fail (appdata != NULL);
+ g_return_if_fail (id < N_COUNT_PKG_STATUS);
+
+ appdata->statuspix[id] = pixbuf;
+}
+
+/**
+ * @brief Init the pixbuf list.
+ *
+ * Load all pixbuf from the appointed file, and set the pixbuf to the
+ * application manager data struct.
+ * @param appdata The application manager data struct
+ */
+void
+init_pixbuf_list (ApplicationManagerData *appdata)
+{
+ GdkPixbuf *pixbuf;
+
+ g_return_if_fail (appdata != NULL);
+
+ pixbuf = create_pixbuf ("package-available.png");
+ if (pixbuf != NULL)
+ {
+ application_manager_data_set_status_pixbuf (appdata, pixbuf,
+ PKG_STATUS_AVAILABLE);
+ }
+
+ pixbuf = create_pixbuf ("package-installed.png");
+ if (pixbuf != NULL)
+ {
+ application_manager_data_set_status_pixbuf (appdata, pixbuf,
+ PKG_STATUS_INSTALLED);
+ }
+
+ pixbuf = create_pixbuf ("package-installed-outdated.png");
+ if (pixbuf != NULL)
+ {
+ application_manager_data_set_status_pixbuf (appdata, pixbuf,
+ PKG_STATUS_UPGRADEABLE);
+ }
+
+ pixbuf = create_pixbuf ("package-mark-install.png");
+ if (pixbuf != NULL)
+ {
+ application_manager_data_set_status_pixbuf (appdata, pixbuf,
+ PKG_STATUS_AVAILABLE_MARK_FOR_INSTALL);
+ }
+
+ pixbuf = create_pixbuf ("package-remove.png");
+ if (pixbuf != NULL)
+ {
+ application_manager_data_set_status_pixbuf (appdata, pixbuf,
+ PKG_STATUS_INSTALLED_MARK_FOR_REMOVE);
+ application_manager_data_set_status_pixbuf (appdata, pixbuf,
+ PKG_STATUS_UPGRADEABLE_MARK_FOR_REMOVE);
+ }
+
+ pixbuf = create_pixbuf ("package-upgrade.png");
+ if (pixbuf != NULL)
+ {
+ application_manager_data_set_status_pixbuf (appdata, pixbuf,
+ PKG_STATUS_UPGRADEABLE_MARK_FOR_UPGRADE);
+ }
+
+}
+
+/**
+ * @brief Get the main window from the application manager data
+ * @param appdata The application manager data
+ * @return The main window
+ */
+MokoPanedWindow *
+application_manager_get_main_window (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->mwindow;
+}
+
+/**
+ * @brief Get the treeview widget of the package list from
+ * the application manager data
+ *
+ * @param appdata The application manager data
+ * @return The treeview widget
+ */
+GtkWidget *
+application_manager_get_tvpkglist (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->tvpkglist;
+}
+
+/**
+ * @brief Get the textview widget of the details info from
+ * the application manager data
+ *
+ * @param appdata The application manager data
+ * @return The text widget
+ */
+GtkWidget *
+application_manager_get_tvdetail (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->tvdetail;
+}
+
+/**
+ * @brief Get the package list that get from libipkg from the
+ * application manager data
+ *
+ * @param appdata The application manager data
+ * @return The package list that get from libipkg
+ */
+gpointer
+application_manager_data_get_pkglist (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->pkglist;
+}
+
+/**
+ * @brief Get the section list from the application manager data
+ * @param appdata The application manager data
+ * @return The section list
+ */
+gpointer
+application_manager_data_get_sectionlist (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->sectionlist;
+}
+
+/**
+ * @brief Get the installed list from the application manager data
+ * @param appdata The application manager data
+ * @return The installed list
+ */
+gpointer
+application_manager_data_get_installedlist (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->installedlist;
+}
+
+/**
+ * @brief Get the upgrade list from the application manager data
+ * @param appdata The application manager data
+ * @return The upgrade list
+ */
+gpointer
+application_manager_data_get_upgradelist (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->upgradelist;
+}
+
+/**
+ * @brief Get the selected list from the application manager data
+ * @param appdata The application manager data
+ * @return The selected list
+ */
+gpointer
+application_manager_data_get_selectedlist (ApplicationManagerData *appdata)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+
+ return appdata->selectedlist;
+}
+
+/**
+ * @brief Get the appointed pixbuf from the application manager data
+ * @param appdata The application manager data
+ * @param id The status id
+ * @return The pixbuf. If the id is an error id, it returns NULL
+ */
+GdkPixbuf *
+application_manager_data_get_status_pixbuf (ApplicationManagerData *appdata,
+ guint id)
+{
+ g_return_val_if_fail (appdata != NULL, NULL);
+ g_return_val_if_fail (id < N_COUNT_PKG_STATUS, NULL);
+
+ return appdata->selectedlist;
+}
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.h 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-data.h 2006-11-30 09:17:43 UTC (rev 274)
@@ -23,11 +23,15 @@
#include <gtk/gtk.h>
#include <libmokoui/moko-paned-window.h>
+#include "pixbuf-list.h"
/**
* @brief The all data that will be used in the application manager
*
- *
+ * Acturally, it need not load the pixbuf to memory and keep them.
+ * But these pixbuf are used so many times. So it is worthy to load them
+ * and keep them in the memory.
+ * FIXME Maybe use a GObject as the base class is the better.
*/
typedef struct _ApplicationManagerData {
MokoPanedWindow *mwindow; ///<! The main window
@@ -38,7 +42,7 @@
gpointer installedlist; ///<! The list of all installed packages
gpointer upgradelist; ///<! The list of all upgradeable packages
gpointer selectedlist; ///<! The list of packages that user selected
- GdkPixbuf *statusPix[PkgStatusId]; ///<! The all pixbufs that need by the package list store
+ GdkPixbuf *statuspix[N_COUNT_PKG_STATUS]; ///<! The all pixbufs that need by the package list store
} ApplicationManagerData;
ApplicationManagerData *application_manager_data_new (void);
@@ -67,4 +71,34 @@
void application_manager_data_set_selected_list (ApplicationManagerData *appdata,
gpointer selectedlist);
+void init_pixbuf_list (ApplicationManagerData *appdata);
+
+MokoPanedWindow *
+ application_manager_get_main_window (ApplicationManagerData *appdata);
+
+GtkWidget *
+ application_manager_get_tvpkglist (ApplicationManagerData *appdata);
+
+GtkWidget *
+ application_manager_get_tvdetail (ApplicationManagerData *appdata);
+
+gpointer
+ application_manager_data_get_pkglist (ApplicationManagerData *appdata);
+
+gpointer
+ application_manager_data_get_sectionlist (ApplicationManagerData *appdata);
+
+gpointer
+ application_manager_data_get_installedlist (ApplicationManagerData *appdata);
+
+gpointer
+ application_manager_data_get_upgradelist (ApplicationManagerData *appdata);
+
+gpointer
+ application_manager_data_get_selectedlist (ApplicationManagerData *appdata);
+
+GdkPixbuf *
+ application_manager_data_get_status_pixbuf (ApplicationManagerData *appdata,
+ guint id);
+
#endif
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 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/appmanager-window.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -31,6 +31,8 @@
#include "tool-box.h"
#include "detail-area.h"
#include "appmanager-data.h"
+#include "errorcode.h"
+#include "package-list.h"
/**
* @brief The start function.
@@ -47,6 +49,8 @@
MokoToolBox *toolbox;
GtkWidget *detail;
+ gint ret;
+
g_debug ("appplication manager start up");
gtk_init (&argc, &argv);
@@ -63,6 +67,8 @@
return -1;
}
+ init_pixbuf_list (appdata);
+
app = MOKO_APPLICATION (moko_application_get_instance ());
g_set_application_name (_("Application manager"));
@@ -86,6 +92,14 @@
detail = detail_area_new (appdata);
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;
+ }
+
gtk_widget_show_all (GTK_WIDGET (window));
g_debug ("application manager enter main loop");
gtk_main ();
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 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/detail-area.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -21,8 +21,8 @@
#include "detail-area.h"
/**
- * @brief Create a detail area to the main window
- * @param window The main window
+ * @brief Create a detail area to the application manager data
+ * @param appdata The application manager data
* @return The toplevel widget of detail area
*/
GtkWidget *
Added: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/errorcode.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/errorcode.h 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/errorcode.h 2006-11-30 09:17:43 UTC (rev 274)
@@ -0,0 +1,36 @@
+/**
+ * @file errorcode.h
+ * @brief The error code of the all function return
+ *
+ * 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_ERROR_CODE_H
+#define _FIC_ERROR_CODE_H
+
+/**
+ * @brief All available error code
+ */
+typedef enum {
+ OP_SUCCESS = 0, ///<! Operation success
+ OP_MAMORY_MALLOC_ERROR, ///<! Mamory malloc error
+
+ OP_SECTION_NAME_NULL, ///<! The section of a package is NULL
+
+ OP_ERROR ///<! Operation error
+} ErrorCode;
+
+#endif
+
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/filter-menu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/filter-menu.c 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/filter-menu.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -58,10 +58,11 @@
}
/**
- * @brief Create a new filter menu for a window
+ * @brief Create a new filter menu for the application manager
*
- * At this function, it only can
- * @param window The main window that the filter menu will add to.
+ * At this function, it only can create the static menu items.
+ * It must add the dynamic menu items late.
+ * @param appdata The application manager data
* @return The filter menu.
*/
GtkMenu *
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 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/navigation-area.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -36,9 +36,9 @@
/**
- * @brief Create all widgets in the navigation area for the main window.
+ * @brief Create all widgets in the navigation area for the application manager data.
*
- * @param window The main window
+ * @param appdata The application manager data
* @return The toplevel widget in the navigation area
*/
GtkWidget *
@@ -58,7 +58,8 @@
///<! Add the status as the first column.
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_FIXED);
+ 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);
@@ -66,12 +67,13 @@
"pixbuf", COL_STATUS,
NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), col);
+ moko_tree_view_append_column (MOKO_TREE_VIEW (treeview), col);
///<! Add the name as the second column.
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_FIXED);
+ 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);
@@ -79,7 +81,7 @@
"text", COL_NAME,
NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), col);
+ moko_tree_view_append_column (MOKO_TREE_VIEW (treeview), col);
///<! Add the size as the third column.
col = gtk_tree_view_column_new ();
@@ -87,11 +89,12 @@
renderer = gtk_cell_renderer_text_new ();
gtk_tree_view_column_pack_start (col, renderer, FALSE);
+ gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
gtk_tree_view_column_set_attributes (col, renderer,
"text", COL_SIZE,
NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), col);
+ moko_tree_view_append_column (MOKO_TREE_VIEW (treeview), col);
model = GTK_TREE_MODEL (create_package_list_store ());
gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model);
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 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -21,5 +21,296 @@
#include "appmanager-data.h"
#include "package-list.h"
#include "ipkgapi.h"
+#include "errorcode.h"
+/**
+ * @brief The structor of Package list node
+ */
+typedef struct package_list {
+ IPK_PACKAGE *pkg; ///<Package info
+ struct package_list *pre; ///<The previous node of package list
+ struct package_list *next; ///<The next node of package list
+} PackageList;
+/**
+ * @brief Section list structure.
+ */
+typedef struct section_list {
+ char *name; ///<Section name
+ int sequence; ///<The sequence in section list
+ PackageList head; ///<The first node of package list at this section
+ struct section_list *next; ///<The next section list node
+} SectionList;
+
+/**
+ * @brief Get the list of all packages from lib ipkg
+ * @param appdata The application manager data
+ * @return If success, return OP_SUCCESS, else return error code
+ */
+gint
+init_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_initialize (0);
+ if (ret != 0)
+ {
+ //Can't initialize the lib ipkg
+ g_debug ("Can not initialize the libipkg, the result is %d\nthe error message is:%s",
+ ret, get_error_msg());
+ return OP_ERROR;
+ }
+
+ 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;
+ * If it can not malloc memory for the node of section list, it will return NULL.
+ * @param name The section name.
+ * @return The section pointer.
+ */
+static SectionList *
+package_list_create_new_section_node (const char *name)
+{
+ SectionList *sect;
+
+ g_return_val_if_fail (name != NULL, NULL);
+
+ sect = g_malloc (sizeof (SectionList));
+ if (sect == NULL)
+ {
+ g_debug ("ERROR: Malloc memory for section list error.");
+ return NULL;
+ }
+
+ sect->name = g_malloc (strlen (name) +1);
+ if (sect->name == NULL)
+ {
+ g_debug ("ERROR: Malloc memory for section list error.");
+ g_free (sect);
+ return NULL;
+ }
+
+ strcpy (sect->name, name);
+ sect->head.pkg = NULL;
+ sect->head.pre = &(sect->head);
+ sect->head.next = &(sect->head);
+ sect->next = NULL;
+
+ return sect;
+}
+
+/**
+ * @brief Search section node.
+ *
+ * Search the section node for a package. If the section of package isn't
+ * in the section list, add a new section node for it. Only when the
+ * return value is OP_SUCCESS, the value of parameter "section" is valid.
+ *
+ * @param name The name of section
+ * @param section The section pointer
+ * @param sechead The header of section list
+ * @return Error code
+ * @retval OP_SUCCESS Operation success
+ */
+static gint
+package_list_search_section_node (const char *name,
+ SectionList **section,
+ SectionList *sechead)
+{
+ SectionList *tmp;
+ SectionList *pre;
+ gint ret;
+
+ if (name == NULL)
+ {
+ g_debug ("The name of section is NULL");
+ return OP_SECTION_NAME_NULL;
+ }
+ if (name[0] == 0)
+ {
+ g_debug ("The name of section is NULL");
+ return OP_SECTION_NAME_NULL;
+ }
+
+ pre = sechead;
+ tmp = sechead->next;
+ while (tmp != NULL)
+ {
+ ret = strcmp (tmp->name, name);
+
+ if (ret == 0)
+ {
+ //Find it.
+ *section = tmp;
+ return OP_SUCCESS;
+ }
+ if (ret > 0)
+ {
+ break;
+ }
+
+ pre = tmp;
+ tmp = pre->next;
+ }
+
+ tmp = package_list_create_new_section_node (name);
+ if (tmp == NULL)
+ {
+ g_debug ("Can not create section node");
+ return OP_MAMORY_MALLOC_ERROR;
+ }
+ tmp->next = pre->next;
+ pre->next = tmp;
+
+ *section = tmp;
+
+ return OP_SUCCESS;
+}
+
+/**
+ * @brief Free the package list
+ * @param pkglist The package list
+ */
+static void
+package_list_free_package_list (PackageList *pkglist)
+{
+ PackageList *tmp;
+ PackageList *next;
+
+ tmp = pkglist->next;
+ while (tmp != pkglist)
+ {
+ next = tmp->next;
+ g_free (tmp);
+ tmp = next;
+ }
+ pkglist->next = pkglist;
+ pkglist->pre = pkglist;
+}
+
+/**
+ * @brief Free the section list
+ * @param seclist The section list
+ */
+static void
+packaeg_list_free_section_list (SectionList *seclist)
+{
+ SectionList *tmp;
+ SectionList *next;
+
+ tmp = seclist->next;
+ while (tmp != NULL)
+ {
+ next = tmp->next;
+ package_list_free_package_list (&(tmp->head));
+ g_free (tmp->name);
+ g_free (tmp);
+ tmp = next;
+ }
+ 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
+ */
+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;
+ }
+
+ // 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);
+ if (sectionlist != NULL)
+ {
+ packaeg_list_free_section_list (sectionlist);
+ sectionlist = NULL;
+ application_manager_data_set_section_list (appdata, sectionlist);
+ }
+
+ // Get the installed list from the application manager data
+ // If the installed list is not NULL, clear it.
+ installed = (PackageList *)application_manager_data_get_installedlist (appdata);
+ if (installed != NULL)
+ {
+ package_list_free_package_list (installed);
+ g_free (installed);
+ installed = NULL;
+ application_manager_data_set_installed_list (appdata, installed);
+ }
+
+ // Get the upgrade list from the application manager data
+ // If the upgrade list is not NULL, clear it.
+ upgrade = (PackageList *)application_manager_data_get_upgradelist (appdata);
+ if (upgrade != NULL)
+ {
+ package_list_free_package_list (upgrade);
+ g_free (upgrade);
+ upgrade = NULL;
+ application_manager_data_set_upgrade_list (appdata, upgrade);
+ }
+
+ // Get the selected list from the application manager data
+ // If the selected list is not NULL, clear it.
+ selected = (PackageList *)application_manager_data_get_upgradelist (appdata);
+ if (selected != NULL)
+ {
+ package_list_free_package_list (selected);
+ g_free (selected);
+ selected = NULL;
+ application_manager_data_set_upgrade_list (appdata, selected);
+ }
+
+ sectionlist = g_malloc (sizeof (SectionList));
+
+ return OP_SUCCESS;
+}
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.h 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/package-list.h 2006-11-30 09:17:43 UTC (rev 274)
@@ -22,5 +22,6 @@
#include <gtk/gtk.h>
+gint init_package_list (ApplicationManagerData *appdata);
#endif
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.c 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -20,3 +20,35 @@
#include "pixbuf-list.h"
+/**
+ * @brief Create a pixbuf by the filename from the PKGDATADIR
+ * @param filename The filename of the pixbuf file
+ * @return The GdkPixbuf. If can not find the file, it will return NULL.
+ */
+GdkPixbuf *
+create_pixbuf (const gchar *filename)
+{
+ gchar *pathname;
+ GdkPixbuf *pixbuf = NULL;
+ GError *error = NULL;
+
+ pathname = g_strdup_printf ("%s%s%s", PKGDATADIR, G_DIR_SEPARATOR_S,
+ filename);
+ if (g_file_test (pathname, G_FILE_TEST_EXISTS))
+ {
+ pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
+ if (!pixbuf)
+ {
+ fprintf (stderr, "Fail to load pixbuf file %s: %s\n",
+ pathname, error->message);
+ g_error_free (error);
+ }
+ }
+ else
+ {
+ g_debug ("Can not find the file %s", pathname);
+ }
+ g_free (pathname);
+ return pixbuf;
+}
+
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.h 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/pixbuf-list.h 2006-11-30 09:17:43 UTC (rev 274)
@@ -22,6 +22,11 @@
#include <gtk/gtk.h>
+/**
+ * @brief The package status id
+ *
+ * The id is used to find the related pixbuf from pixbuf list.
+ */
typedef enum _pkgstatusid {
PKG_STATUS_AVAILABLE = 0, ///<Package is available and not installed.
PKG_STATUS_INSTALLED, ///<Package is installed and can not be upgrade.
@@ -33,5 +38,8 @@
N_COUNT_PKG_STATUS ///<The number of valid status.
} PkgStatusId;
+GdkPixbuf *create_pixbuf (const gchar *filename);
+
+
#endif
Modified: trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/tool-box.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/tool-box.c 2006-11-30 00:53:21 UTC (rev 273)
+++ trunk/src/target/OM-2007/applications/openmoko-appmanager-demo/src/tool-box.c 2006-11-30 09:17:43 UTC (rev 274)
@@ -21,8 +21,8 @@
#include "tool-box.h"
/**
- * @brief Create a new tool box for the main window
- * @param window The main window
+ * @brief Create a new tool box for the application manager data
+ * @param appdata The application manager data
* @return The toplevel widget of the tool box
*/
MokoToolBox *
More information about the commitlog
mailing list