r1157 - in trunk/src/target/OM-2007/applications/openmoko-mainmenu: . src
zhiyong_sun at sita.openmoko.org
zhiyong_sun at sita.openmoko.org
Wed Feb 28 08:26:33 CET 2007
Author: zhiyong_sun
Date: 2007-02-28 08:26:23 +0100 (Wed, 28 Feb 2007)
New Revision: 1157
Added:
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.c
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.h
Modified:
trunk/src/target/OM-2007/applications/openmoko-mainmenu/configure.ac
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/Makefile.am
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.c
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.h
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.c
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.h
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c
Log:
add dbus message send function: when one item was selected, its name will be sent to footer
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/configure.ac
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/configure.ac 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/configure.ac 2007-02-28 07:26:23 UTC (rev 1157)
@@ -13,12 +13,15 @@
# base deps
PKG_CHECK_MODULES(OPENMOKO, openmoko-libs >= 0.0.1,,
AC_MSG_ERROR([*** Required OpenMoko Libraries >= 0.0.1 not installed ***]))
-
PKG_CHECK_MODULES(LIBMB, libmb >= 1.8,,
AC_MSG_ERROR([*** You need to install libmatchbox >= 1.8***]))
+PKG_CHECK_MODULES(DBUSGLIB, dbus-glib-1,,
+ AC_MSG_ERROR([*** Required dbus-glib-1 not installed ***]))
+PKG_CHECK_MODULES(DBUS, dbus-1,,
+ AC_MSG_ERROR([*** Required dbus-1 not installed ***]))
-LIBS="$LIBS $OPENMOKO_LIBS $LIBMB_LIBS"
-CFLAGS="$CFLAGS $OPENMOKO_CFLAGS $LIBMB_CFLAGS"
+LIBS="$LIBS $OPENMOKO_LIBS $LIBMB_LIBS $DBUSGLIB_LIBS $DBUS_LIBS"
+CFLAGS="$CFLAGS $OPENMOKO_CFLAGS $LIBMB_CFLAGS $DBUSGLIB_CFLAGS $DBUS_CFALGS"
# output stuff
AC_OUTPUT([
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/Makefile.am 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/Makefile.am 2007-02-28 07:26:23 UTC (rev 1157)
@@ -7,7 +7,7 @@
openmoko_mainmenu_SOURCES = main.c \
mainmenu.c mokoiconview.c\
mokodesktop.c mokodesktop_item.c\
- callbacks.c app-history.c
+ callbacks.c app-history.c dbus-conn.c
openmoko_mainmenu_LDADD = @OPENMOKO_LIBS@ @LIBMB_LIBS@
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.c 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.c 2007-02-28 07:26:23 UTC (rev 1157)
@@ -35,100 +35,111 @@
void
moko_wheel_bottom_press_cb (GtkWidget *self, MokoMainmenuApp *mma)
{
- if (mma->mm->current->type != ITEM_TYPE_ROOT)
- {
- mma->mm->current = mokodesktop_item_get_parent(mma->mm->current);
- moko_main_menu_update_content (mma->mm, mma->mm->current);
- gtk_window_present (mma->window);
- }
- else
- {
- gtk_widget_hide (GTK_WIDGET (mma->wheel));
- gtk_widget_hide (GTK_WIDGET (mma->toolbox));
- gtk_widget_hide (GTK_WIDGET (mma->window));
- }
+ if (mma->mm->current->type != ITEM_TYPE_ROOT)
+ {
+ mma->mm->current = mokodesktop_item_get_parent(mma->mm->current);
+ moko_main_menu_update_content (mma->mm, mma->mm->current);
+ gtk_window_present (mma->window);
+ }
+ else
+ {
+ gtk_widget_hide (GTK_WIDGET (mma->wheel));
+ gtk_widget_hide (GTK_WIDGET (mma->toolbox));
+ gtk_widget_hide (GTK_WIDGET (mma->window));
+ }
}
void
moko_wheel_left_up_press_cb (GtkWidget *self, MokoMainmenuApp *mma)
{
- g_signal_emit_by_name (G_OBJECT(mma->mm->icon_view), "move-cursor", GTK_MOVEMENT_DISPLAY_LINES, -1);
+ g_signal_emit_by_name (G_OBJECT(mma->mm->icon_view), "move-cursor", GTK_MOVEMENT_DISPLAY_LINES, -1);
//gtk_window_present (mma->window);
//gtk_widget_grab_focus (mma->mm->icon_view);
-
}
void
moko_wheel_right_down_press_cb (GtkWidget *self, MokoMainmenuApp *mma)
{
//gtk_widget_grab_focus (mma->mm->icon_view);
- g_signal_emit_by_name (G_OBJECT(mma->mm->icon_view), "move-cursor", GTK_MOVEMENT_DISPLAY_LINES, 1);
+ g_signal_emit_by_name (G_OBJECT(mma->mm->icon_view), "move-cursor", GTK_MOVEMENT_DISPLAY_LINES, 1);
}
-void
-moko_up_btn_cb (GtkButton *button, MokoMainMenu *mm)
-{
- gtk_widget_grab_focus (mm->icon_view);
- g_signal_emit_by_name (G_OBJECT(mm->icon_view), "move-cursor", GTK_MOVEMENT_DISPLAY_LINES, -1);
-}
-
-void
-moko_down_btn_cb (GtkButton *button, MokoMainMenu *mm)
-{
- gtk_widget_grab_focus (mm->icon_view);
- g_signal_emit_by_name (G_OBJECT(mm->icon_view), "move-cursor", GTK_MOVEMENT_DISPLAY_LINES, 1);
-}
-
void
-moko_icon_view_item_acitvated_cb(GtkIconView *icon_view,
- GtkTreePath *path, MokoMainmenuApp *mma)
+moko_icon_view_item_acitvated_cb(MokoIconView *icon_view,
+ GtkTreePath *path, MokoMainmenuApp *mma)
{
- g_debug ("call moko_item_acitvated_cb");
- MokoDesktopItem *select_item = mokodesktop_item_get_child (mma->mm->current);
- gint index, i;
+ g_debug ("call moko_item_acitvated_cb");
+ MokoDesktopItem *select_item = mokodesktop_item_get_child (mma->mm->current);
+ gint index, i;
- index = moko_icon_view_get_cursor_positon (icon_view);
+ index = moko_icon_view_get_cursor_positon (icon_view);
- for (i = 1; i < index; i++)
- {
- select_item = mokodesktop_item_get_next_sibling (select_item);
- }
+ for (i = 1; i < index; i++)
+ {
+ select_item = mokodesktop_item_get_next_sibling (select_item);
+ }
- g_debug ("select_item name %s TYPE is %d", select_item->name, select_item->type);
+ g_debug ("select_item name %s TYPE is %d", select_item->name, select_item->type);
- if (select_item->type == ITEM_TYPE_FOLDER)
- {
- mma->mm->current = select_item;
- g_debug ("current name %s------------------", mma->mm->current->name);
- moko_main_menu_update_content (mma->mm, select_item);
- }
- else if (select_item->type == ITEM_TYPE_DOTDESKTOP_ITEM ||select_item->type == ITEM_TYPE_APP)
- {
- switch (fork())
+ if (select_item->type == ITEM_TYPE_FOLDER)
{
- case 0:
- mb_exec((char *)select_item->data);
- fprintf(stderr, "exec failed, cleaning up child\n");
- exit(1);
- case -1:
- fprintf(stderr, "can't fork\n");
- break;
+ mma->mm->current = select_item;
+ g_debug ("current name %s------------------", mma->mm->current->name);
+ moko_main_menu_update_content (mma->mm, select_item);
}
- char path[512];
- snprintf (path, 512, "%s/%s", PIXMAP_PATH, select_item->icon_name);
- g_debug ("-------select_item path: %s", path);
- moko_hisory_app_fill(mma->history, path);
- }
+ else if (select_item->type == ITEM_TYPE_DOTDESKTOP_ITEM ||select_item->type == ITEM_TYPE_APP)
+ {
+ switch (fork())
+ {
+ case 0:
+ mb_exec((char *)select_item->data);
+ fprintf(stderr, "exec failed, cleaning up child\n");
+ exit(1);
+ case -1:
+ fprintf(stderr, "can't fork\n");
+ break;
+ }
+
+ char path[512];
+ snprintf (path, 512, "%s/%s", PIXMAP_PATH, select_item->icon_name);
+ g_debug ("-------select_item path: %s", path);
+ moko_hisory_app_fill (mma->history, path);
+ }
-moko_icon_view_selection_changed_cb(mma->mm->icon_view, mma);
-
+ moko_icon_view_selection_changed_cb (mma->mm->icon_view, mma);
}
void
-moko_icon_view_selection_changed_cb(GtkIconView *iconview,
- MokoMainmenuApp *mma)
+moko_icon_view_selection_changed_cb(MokoIconView *iconview,
+ MokoMainmenuApp *mma)
{
+ GList *selected_item;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+ GtkTreeModel *icon_view_model;
+ gchar *text;
+
+ selected_item = moko_icon_view_get_selected_items (iconview);
+ if (!selected_item)
+ g_debug ("Can't get selected item");
+ else
+ {
+ icon_view_model = moko_icon_view_get_model (iconview);
+ gtk_tree_model_get_iter (icon_view_model, &iter, selected_item->data);
+
+ gtk_tree_model_get (icon_view_model, &iter,
+ TEXT_COLUMN , &text,
+ -1);
+
+ moko_dbus_send_message (text);
+
+ g_list_foreach (selected_item, gtk_tree_path_free, NULL);
+ g_list_free (selected_item);
+ if (text)
+ free (text);
+ }
+
moko_main_menu_update_item_total_label (mma->mm);
}
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.h 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.h 2007-02-28 07:26:23 UTC (rev 1157)
@@ -34,13 +34,13 @@
void moko_down_btn_cb (GtkButton *button, MokoMainMenu *mm);
-void moko_item_select_cb(GtkIconView *icon_view,
+void moko_item_select_cb(MokoIconView *icon_view,
GtkTreePath *path, MokoMainmenuApp *mma);
-void moko_icon_view_item_acitvated_cb(GtkIconView *iconview,
+void moko_icon_view_item_acitvated_cb(MokoIconView *iconview,
GtkTreePath *path, MokoMainmenuApp *mma);
-void moko_icon_view_selection_changed_cb(GtkIconView *iconview,
+void moko_icon_view_selection_changed_cb(MokoIconView *iconview,
MokoMainmenuApp *mma);
#endif /*_MAIN_MENU_CALLBACKS_H*/
Added: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.c 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.c 2007-02-28 07:26:23 UTC (rev 1157)
@@ -0,0 +1,73 @@
+/**
+ * @file dbus-conn.c
+ * @brief dbus connection and message send for openmoko mainmenu
+ *
+ * Authored by Sun Zhiyong <sunzhiyong at fic-sh.com.cn>
+ *
+ * Copyright (C) 2006-2007 OpenMoko 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 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$]
+ *
+ */
+#include "dbus-conn.h"
+
+static DBusConnection *bus;
+static DBusError error;
+
+gboolean
+moko_dbus_connect_init (void)
+{
+ /* Get a connection to the session bus */
+ dbus_error_init (&error);
+ bus = dbus_bus_get (DBUS_BUS_SESSION, &error);
+
+ if (!bus)
+ {
+ g_warning ("Failed to connect to the D-BUS daemon: %s", error.message);
+ return FALSE;
+ }
+
+ if (dbus_error_is_set (&error))
+ {
+ fprintf(stdout, "Connection Error (%s)\n", error.message);
+ dbus_error_free (&error);
+ }
+
+ return TRUE;
+}
+
+gboolean
+moko_dbus_send_message (const char *str)
+{
+ DBusMessage *message;
+ //char *str = "openmoko taskmanager";
+
+ /* Create a new signal on the "org.openmoko.dbus.TaskManager" interface,
+ * from the object "/org/openmoko/footer". */
+ message = dbus_message_new_signal ("/org/openmoko/footer",
+ "org.openmoko.dbus.TaskManager", "push_statusbar_message");
+ /* Append the string "openmoko taskmanager" to the signal */
+ dbus_message_append_args (message,
+ DBUS_TYPE_STRING, &str,
+ DBUS_TYPE_INVALID);
+ /* Send the signal */
+ dbus_connection_send (bus, message, NULL);
+
+ /* Free the signal now we have finished with it */
+ dbus_message_unref (message);
+
+ /* Tell the user we send a signal */
+ g_print("send signal\n");
+
+ /* Return TRUE to tell the event loop we want to be called again */
+ return TRUE;
+}
Added: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.h 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/dbus-conn.h 2007-02-28 07:26:23 UTC (rev 1157)
@@ -0,0 +1,35 @@
+/**
+ * @file dbus-conn.h
+ * @brief dbus connection and message send for openmoko mainmenu
+ *
+ * Authored by Sun Zhiyong <sunzhiyong at fic-sh.com.cn>
+ *
+ * Copyright (C) 2006-2007 OpenMoko 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 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$]
+ *
+ */
+#ifndef MOKO_DBUS_MESSAGE_SEND_H
+#define MOKO_DBUS_MESSAGE_SEND_H
+#include <glib.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#define DBUS_API_SUBJECT_TO_CHANGE
+
+gboolean moko_dbus_connect_init (void);
+
+gboolean moko_send_message (const char *str);
+
+#endif /*MOKO_DBUS_MESSAGE_SEND_H*/
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.c 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.c 2007-02-28 07:26:23 UTC (rev 1157)
@@ -125,13 +125,21 @@
g_debug ("test");
mma = g_malloc0 (sizeof (MokoMainmenuApp));
- if (!mma) {
+ if (!mma)
+ {
fprintf (stderr, "openmoko-mainmenu application initialize FAILED");
exit (0);
- }
+ }
memset (mma, 0, sizeof (MokoMainmenuApp));
+
+ if (!moko_dbus_connect_init ())
+ {
+ g_error ("Failed to initial dbus connection.");
+ exit (0);
+ }
gtk_init( &argc, &argv );
+
/* application object */
mma->app = MOKO_APPLICATION(moko_application_get_instance());
g_set_application_name( "OpenMoko Main Menu" );
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.h 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.h 2007-02-28 07:26:23 UTC (rev 1157)
@@ -30,6 +30,7 @@
#include "mainmenu.h"
#include "app-history.h"
+#include "dbus-conn.h"
typedef struct _MokoMainmenuApp MokoMainmenuApp;
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c 2007-02-28 07:04:28 UTC (rev 1156)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c 2007-02-28 07:26:23 UTC (rev 1157)
@@ -192,7 +192,7 @@
*/
static gboolean
moko_fill_model(GtkListStore *store, const char* icon_path,
- const char* icon_name, MokoDesktopItem *item)
+ const char* icon_name, MokoDesktopItem *item)
{
if (!icon_path && !icon_name)
return FALSE;
@@ -234,12 +234,13 @@
moko_main_menu_clear(MokoMainMenu *mm)
{
if (mm->top_item)
- {
- /* Free Lists (free .directory and .desktop files) */
- mokodesktop_item_folder_contents_free(mm->top_item, mm->top_item);
- /* Free Root item */
- mokodesktop_item_free(mm->top_item);
- }
+ {
+ /* Free Lists (free .directory and .desktop files) */
+ mokodesktop_item_folder_contents_free(mm->top_item, mm->top_item);
+ /* Free Root item */
+ mokodesktop_item_free(mm->top_item);
+ }
+
if (mm) g_free (mm);
}
@@ -256,50 +257,50 @@
gboolean
moko_main_menu_update_content (MokoMainMenu *mm, MokoDesktopItem *item)
{
- MokoDesktopItem *item_new;
- gint count = 0;
- char total_item[6];
- //g_debug("mokodesktop: item [%d][%s][%s]\n", item->type, item->name, item->icon_name);
+ MokoDesktopItem *item_new;
+ gint count = 0;
+ char total_item[6];
+ //g_debug("mokodesktop: item [%d][%s][%s]\n", item->type, item->name, item->icon_name);
- item_new = item->item_child;
- //g_debug("mokodesktop: item [%d][%s][%s]\n", item_new->type, item_new->name, item_new->icon_name);
- // g_debug ("test");
+ item_new = item->item_child;
+ //g_debug("mokodesktop: item [%d][%s][%s]\n", item_new->type, item_new->name, item_new->icon_name);
+ // g_debug ("test");
- if (item->type == ITEM_TYPE_ROOT)
- {
+ if (item->type == ITEM_TYPE_ROOT)
+ {
moko_set_label_content (mm->section_name, "Main Menu");
- }
- else if (item->type == ITEM_TYPE_FOLDER)
- {
- moko_set_label_content (mm->section_name, item->name);
- }
- else
+ }
+ else if (item->type == ITEM_TYPE_FOLDER)
+ {
+ moko_set_label_content (mm->section_name, item->name);
+ }
+ else
return FALSE; // neither ROOT nor FOLDER
- if (mm->list_store)
+ if (mm->list_store)
gtk_list_store_clear (mm->list_store);
- mokodesktop_items_enumerate_siblings(item->item_child, item_new)
- {
- count +=1;
+ mokodesktop_items_enumerate_siblings(item->item_child, item_new)
+ {
+ count +=1;
- if (access (item_new->icon_name, 0) == 0)
- {
- moko_fill_model(mm->list_store, item_new->icon_name, item_new->name, item_new);
- }
- else
- {
- char path[512];
- snprintf (path, 512, "%s/%s", PIXMAP_PATH, item_new->icon_name);
+ if (access (item_new->icon_name, 0) == 0)
+ {
+ moko_fill_model(mm->list_store, item_new->icon_name, item_new->name, item_new);
+ }
+ else
+ {
+ char path[512];
+ snprintf (path, 512, "%s/%s", PIXMAP_PATH, item_new->icon_name);
- if (access (path, 0) == 0)
- moko_fill_model(mm->list_store, path, item_new->name, item_new);
- else
- {
- snprintf (path, 512, "%s/%s", PKGDATADIR, "default-app-icon.xpm");
- moko_fill_model(mm->list_store, path, item_new->name, item_new);
- }
- }
+ if (access (path, 0) == 0)
+ moko_fill_model(mm->list_store, path, item_new->name, item_new);
+ else
+ {
+ snprintf (path, 512, "%s/%s", PKGDATADIR, "default-app-icon.xpm");
+ moko_fill_model(mm->list_store, path, item_new->name, item_new);
+ }
+ }
}
snprintf (total_item, 6, "00/%.2d", count);
@@ -318,17 +319,17 @@
void
moko_main_menu_update_item_total_label (MokoMainMenu *mm)
{
- gint total = 0, cursor = 0;
- char item_total[6];
+ gint total = 0, cursor = 0;
+ char item_total[6];
- total = moko_icon_view_get_total_items (mm->icon_view);
- cursor = moko_icon_view_get_cursor_positon (mm->icon_view);
+ total = moko_icon_view_get_total_items (mm->icon_view);
+ cursor = moko_icon_view_get_cursor_positon (mm->icon_view);
- if (cursor <0)
+ if (cursor <0)
return;
- snprintf (item_total, 6, "%.2d/%.2d", cursor, total);
- moko_set_label_content (mm->item_total, item_total);
+ snprintf (item_total, 6, "%.2d/%.2d", cursor, total);
+ moko_set_label_content (mm->item_total, item_total);
}
/**
More information about the commitlog
mailing list