r473 - trunk/src/target/OM-2007/applications/openmoko-mainmenu/src

tongsong_li at gta01.hmw-consulting.de tongsong_li at gta01.hmw-consulting.de
Tue Dec 26 11:16:30 CET 2006


Author: tongsong_li
Date: 2006-12-26 11:16:18 +0100 (Tue, 26 Dec 2006)
New Revision: 473

Modified:
   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/mainmenu.c
   trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h
   trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokodesktop_item.h
   trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c
   trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c
Log:
essage=modify vfolder parse methords. by sunzhiyong <sunzhiyong at fic-sh.com.cn>

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.c	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.c	2006-12-26 10:16:18 UTC (rev 473)
@@ -29,12 +29,20 @@
 #include "callbacks.h"
 #include "mokoiconview.h" 
 
-gboolean test = FALSE;
+gboolean close_page_hide = TRUE;
  
 void
 moko_wheel_bottom_press_cb (GtkWidget *self, MokoMainmenuApp *mma)
 {
-  if (test) {
+  if (mma->mm->current != mma->mm->top_item)
+  {
+   g_debug ("----------current name %s", mma->mm->current->name);
+   g_debug ("----------Top item name %s", mma->mm->top_item->name);
+
+    mma->mm->current = mokodesktop_item_get_parent(mma->mm->current);
+    moko_main_menu_update(mma->mm, mma->mm->current);
+  }
+  else if (close_page_hide) {
     gtk_widget_hide (mma->close);
     gtk_widget_show (mma->mm);
   }
@@ -42,23 +50,23 @@
     gtk_widget_hide (mma->mm);
     gtk_widget_show (mma->close);
   }
-  
-test = !test;
-
+  close_page_hide = !close_page_hide;
 }
 
 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);
+  gtk_window_present (mma->window);
   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);
 
 }
 
 void
 moko_wheel_right_down_press_cb (GtkWidget *self, MokoMainmenuApp *mma)
 {
-  gtk_widget_grab_focus (mma->mm->icon_view);
+  //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);
 }
 
@@ -68,7 +76,7 @@
   if (mma->mm)
     {
   	moko_main_menu_clear (mma->mm);
-       gtk_widget_destroy (mma->mm);
+       //gtk_widget_destroy (mma->mm);
     }
   if (mma->close)
     gtk_widget_destroy (mma->close);
@@ -98,21 +106,64 @@
   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) 
+{
+  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);
+
+  for (i = 1; i < index; i++)
+  {
+    select_item = mokodesktop_item_get_next_sibling (select_item);
+  }
+
+  g_debug ("select_item name %s", select_item->name);
+
+  if (select_item->type == ITEM_TYPE_FOLDER)
+  {
+    g_debug ("current name %s------------------", mma->mm->current->name);
+    mma->mm->current = select_item;
+    g_debug ("current name %s------------------", mma->mm->current->name);
+    moko_main_menu_update(mma->mm, select_item);
+  }
+  //else if (select_item->type == )
+  
+
+}
+
+void
+moko_icon_view_selection_changed_cb(GtkIconView *iconview, 
+								MokoMainmenuApp *mma) 
+{
+  gint total = 0, cursor = 0;
+  char item_total[6];
+
+  total = moko_icon_view_get_total_items (mma->mm->icon_view);
+  cursor = moko_icon_view_get_cursor_positon (mma->mm->icon_view);
+
+  if (cursor <0)
+  	cursor = 0;
+
+  snprintf (item_total, 6, "%d/%d", cursor, total);
+  moko_set_label_content (mma->mm->item_total, item_total);
+}
+
 /*test*/ 
+
 void
-moko_item_select_cb(GtkIconView *icon_view, GtkTreePath *path, gpointer data) {
+moko_item_select_cb(GtkIconView *icon_view, GtkTreePath *path, MokoMainmenuApp *mma) {
     g_debug ("call moko_item_select_cb");
     }
 
 gboolean 
-moko_activate_cursor_item_cb(GtkIconView *iconview, gpointer user_data) {
-    g_debug ("call moko_active_cursor_item_cb");
+moko_icon_view_activate_cursor_item_cb(GtkIconView *iconview, MokoMainmenuApp *mma) {
+    g_debug ("call moko_active_cursor_item_cb--------------");
     }
 
-void
-moko_item_acitvated_cb(GtkIconView *iconview, GtkTreePath *arg1, gpointer user_data) {
-    g_debug ("call moko_item_acitvated_cb");
-    }
                                             
 //"move-cursor"
 gboolean
@@ -122,43 +173,29 @@
 }
 //"select-all"
 void
-moko_select_all_cb(GtkIconView *iconview, gpointer user_data) {
+moko_select_all_cb(GtkIconView *iconview, MokoMainmenuApp *mma) {
     g_debug ("call moko_select_all_cb");
     }
 //"select-cursor-item"
 void
-moko_select_cursor_item_cb(GtkIconView *iconview, gpointer user_data) {
-    g_debug ("call moko_select_cursor_item_cb");
+moko_select_cursor_item_cb(GtkIconView *iconview, MokoMainmenuApp *mma) {
+    g_debug ("call moko_select_cursor_item_cb---------------------");
     }
-//"selection-changed"
-void
-moko_icon_view_selection_changed_cb(GtkIconView *iconview, MokoMainmenuApp *mma) {
-  g_debug ("call moko_selection_changed_cb");
-  gint total = 0, cursor = 0;
-  char item_total[6];
 
-  total = moko_icon_view_get_total_items (mma->mm->icon_view);
-  cursor = moko_icon_view_get_cursor_positon (mma->mm->icon_view);
-
-  snprintf (item_total, 6, "%d/%d", cursor, total);
-  moko_set_label_content (mma->mm->item_total, item_total);
-
-    }
-
 //"set-scroll-adjustments"
 void
 moko_set_scroll_adjustments_cb(GtkIconView *iconview, 
-					GtkAdjustment *arg1, GtkAdjustment *arg2, gpointer user_data) {
+					GtkAdjustment *arg1, GtkAdjustment *arg2, MokoMainmenuApp *mma) {
     g_debug ("call moko_set_scroll_adjustments_cb");
     }
 
 //"toggle-cursor-item"
 void
-moko_toggle_cursor_item_cb(GtkIconView *iconview, gpointer user_data) {
+moko_toggle_cursor_item_cb(GtkIconView *iconview, MokoMainmenuApp *mma) {
     g_debug ("call moko_toggle_cursor_cb");
     }
 //"unselect-all"
 void
-moko_unselect_all_cb(GtkIconView *iconview, gpointer user_data) {
+moko_unselect_all_cb(GtkIconView *iconview, MokoMainmenuApp *mma) {
     g_debug ("moko_unselect_all_cb");
     }

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.h	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/callbacks.h	2006-12-26 10:16:18 UTC (rev 473)
@@ -42,25 +42,28 @@
 
 
 void
-moko_item_select_cb(GtkIconView *icon_view, GtkTreePath *path, gpointer data);
+moko_item_select_cb(GtkIconView *icon_view, GtkTreePath *path, MokoMainmenuApp *mma);
 
+
+void
+moko_icon_view_item_acitvated_cb(GtkIconView *iconview, 
+						GtkTreePath *path, MokoMainmenuApp *mma);
+
+/*test*/
 gboolean /*will be call when Enter key pressed*/
-moko_activate_cursor_item_cb(GtkIconView *iconview, gpointer user_data);
+moko_activate_cursor_item_cb(GtkIconView *iconview, MokoMainmenuApp *mma);
 
-void /*double click callback*/
-moko_item_acitvated_cb(GtkIconView *iconview, GtkTreePath *arg1, gpointer user_data);
-                                            
 //"move-cursor"
 gboolean
 moko_move_cursor_cb(GtkIconView *iconview, GtkMovementStep arg1, gint arg2, MokoMainmenuApp *mma);
 
 //"select-all"
 void
-moko_select_all_cb(GtkIconView *iconview, gpointer user_data);
+moko_select_all_cb(GtkIconView *iconview, MokoMainmenuApp *mma);
 
 //"select-cursor-item"
 void
-moko_select_cursor_item_cb(GtkIconView *iconview, gpointer user_data);
+moko_select_cursor_item_cb(GtkIconView *iconview, MokoMainmenuApp *mma);
 
 //"selection-changed"
 void
@@ -68,15 +71,15 @@
 
 //"set-scroll-adjustments"
 void
-moko_set_scroll_adjustments_cb(GtkIconView *iconview, GtkAdjustment *arg1, GtkAdjustment *arg2, gpointer user_data);
+moko_set_scroll_adjustments_cb(GtkIconView *iconview, GtkAdjustment *arg1, GtkAdjustment *arg2, MokoMainmenuApp *mma);
 
 //"toggle-cursor-item"
 void
-moko_toggle_cursor_item_cb(GtkIconView *iconview, gpointer user_data);
+moko_toggle_cursor_item_cb(GtkIconView *iconview, MokoMainmenuApp *mma);
 
 //"unselect-all"
 void
-moko_unselect_all_cb(GtkIconView *iconview, gpointer user_data);
+moko_unselect_all_cb(GtkIconView *iconview, MokoMainmenuApp *mma);
 
  
  #endif /*callbacks.h*/

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.c	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/main.c	2006-12-26 10:16:18 UTC (rev 473)
@@ -45,6 +45,7 @@
     mma->window = MOKO_FINGER_WINDOW(moko_finger_window_new());
     gtk_widget_show (GTK_WIDGET (mma->window));
     mma->wheel = moko_finger_window_get_wheel (mma->window);
+    //GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET (mma->wheel), GTK_CAN_FOCUS);
     mma->toolbox = moko_finger_window_get_toolbox(mma->window);
 
     for (i=0; i<4; i++)
@@ -73,7 +74,10 @@
     //			G_CALLBACK (moko_move_cursor_cb), mma);
     g_signal_connect (mma->mm->icon_view, "selection-changed",
     			G_CALLBACK (moko_icon_view_selection_changed_cb), mma);
-
+    //g_signal_connect (mma->mm->icon_view, "select-cursor-item",
+    //			G_CALLBACK (moko_select_cursor_item_cb), mma);
+    g_signal_connect (mma->mm->icon_view, "item_activated",
+    			G_CALLBACK (moko_icon_view_item_acitvated_cb), mma);
     			
     moko_finger_window_set_contents( mma->window, GTK_WIDGET(mma->mm));
     moko_finger_window_set_contents( mma->window, GTK_WIDGET(mma->close));

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c	2006-12-26 10:16:18 UTC (rev 473)
@@ -92,7 +92,8 @@
  *@return none
  */
 void
-moko_main_menu_init(MokoMainMenu *mm) {
+moko_main_menu_init(MokoMainMenu *mm) 
+{
     PangoFontDescription* PangoFont = pango_font_description_new(); //get system default PangoFontDesc
     GtkEventBox *eventbox;
     GtkButton *btn[2];// Use to test, delete later.
@@ -109,6 +110,8 @@
 
     /* Build Lists (parse .directory and .desktop files) */	
     ret = mokodesktop_init(mm->top_item, ITEM_TYPE_CNT);
+
+    mm->current = mm->top_item;
     
     mm->section_name =  gtk_label_new ("Main Menu");
     gtk_widget_show (mm->section_name);
@@ -135,7 +138,7 @@
     mm->item_total = gtk_label_new ("0/0");
     //gtk_widget_show (mm->item_total);
     gtk_label_set_justify (mm->item_total, GTK_JUSTIFY_RIGHT);
-    //gtk_label_set_width_chars (mm->item_total, ITME_TOTAL_WIDTH);
+    gtk_label_set_width_chars (mm->item_total, ITME_TOTAL_WIDTH);
     gtk_misc_set_alignment (GTK_MISC (mm->item_total), ITEM_TOTAL_ALG_X, ITEM_TOTAL_ALG_Y);
     if (PangoFont) {
     	  pango_font_description_set_size (PangoFont, FONT_SIZE_ITEM);
@@ -160,9 +163,9 @@
 
     mm->list_store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
 
-    moko_icon_view_set_pixbuf_column (GTK_ICON_VIEW (mm->icon_view), PIXBUF_COLUMN);
-    moko_icon_view_set_text_column (GTK_ICON_VIEW (mm->icon_view), TEXT_COLUMN);
-    moko_icon_view_set_model (GTK_ICON_VIEW (mm->icon_view), GTK_TREE_MODEL (mm->list_store));
+    moko_icon_view_set_pixbuf_column (mm->icon_view, PIXBUF_COLUMN);
+    moko_icon_view_set_text_column (mm->icon_view, TEXT_COLUMN);
+    moko_icon_view_set_model (mm->icon_view, GTK_TREE_MODEL (mm->list_store));
 
     mm->scrolled = gtk_scrolled_window_new (NULL, NULL);
     gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (mm->scrolled),
@@ -175,19 +178,19 @@
     
     gtk_box_pack_start (mm, eventbox, FALSE, FALSE, 0);
     gtk_container_add (eventbox, mm->hbox); 
-    gtk_box_pack_start (mm->hbox, btn[0], FALSE, FALSE, 0);
-    gtk_box_pack_start (mm->hbox, btn[1], FALSE, FALSE, 0);
+    //gtk_box_pack_start (mm->hbox, btn[0], FALSE, FALSE, 0);
+    //gtk_box_pack_start (mm->hbox, btn[1], FALSE, FALSE, 0);
     gtk_box_pack_start (mm->hbox, mm->section_name, TRUE, TRUE, 0);
     gtk_box_pack_end (mm->hbox, mm->item_total, FALSE, FALSE, 0);
     gtk_box_pack_end (mm, mm->scrolled, TRUE, TRUE, 0);
 
-    g_signal_connect (btn[0], "pressed", G_CALLBACK(moko_up_btn_cb), mm);
-    g_signal_connect (btn[1], "pressed", G_CALLBACK(moko_down_btn_cb), mm);
+   // g_signal_connect (btn[0], "pressed", G_CALLBACK(moko_up_btn_cb), mm);
+   // g_signal_connect (btn[1], "pressed", G_CALLBACK(moko_down_btn_cb), mm);
 
     //moko_sample_model_fill(mm->list_store);
     gtk_widget_show (mm);
     
-    moko_main_menu_update (mm, mm->top_item);
+    moko_main_menu_update (mm, mm->current);
 
     if (PangoFont)
     	  pango_font_description_free (PangoFont);
@@ -196,7 +199,8 @@
 
 /* Construction */
 GtkWidget* 
-moko_main_menu_new() {
+moko_main_menu_new() 
+{
     return GTK_WIDGET(g_object_new(moko_main_menu_get_type(), NULL));
 }
 
@@ -219,31 +223,49 @@
 *
 */
 gboolean
-moko_main_menu_update(MokoMainMenu *mm, MokoDesktopItem *item) {
+moko_main_menu_update(MokoMainMenu *mm, MokoDesktopItem *item)
+{
   MokoDesktopItem *item_new;
-  
   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");
+
   if (item->type == ITEM_TYPE_ROOT)
+  	{
+  	  g_debug ("23test");
+
   	moko_set_label_content (mm->section_name, "Main Menu");
+  	}
   else if (item->type == ITEM_TYPE_FOLDER)
+  	{
+  	g_debug ("123test");
+
   	moko_set_label_content (mm->section_name, item->name);
+  	}
   else 
   	return FALSE; // neither ROOT nor FOLDER
-  	
-  mokodesktop_items_enumerate_siblings(item->item_child, item_new){
-  	char path[512];
-	g_debug("mokodesktop: item [%d][%s][%s][%s]\n", 
-				item_new->type, item_new->name,
-				item_new->icon_name, item_new->item_parent->name);
-	snprintf (path, 512, "%s/%s", PIXMAP_PATH, item_new->icon_name);
-	moko_fill_model(mm->list_store, path, item_new->name);
+g_debug ("test");
+  if (mm->list_store)
+  	gtk_list_store_clear (mm->list_store);
+  g_debug ("test");
+
+  mokodesktop_items_enumerate_siblings(item->item_child, item_new)
+  { 
+  g_debug ("11test");
+
+      char path[512];
+      //g_debug("mokodesktop: item [%d][%s][%s][%s]\n", 
+      //			item_new->type, item_new->name,
+      //			item_new->icon_name, item_new->item_parent->name);
+      snprintf (path, 512, "%s/%s", PIXMAP_PATH, item_new->icon_name);
+      moko_fill_model(mm->list_store, path, item_new->name, item_new);
 	
-	g_debug("item [%s][%s]\n", item_new->name, path);
+	//g_debug("item [%s][%s]\n", item_new->name, path);
   }
-  
+  g_debug ("test");
+
   return TRUE;
 }
 

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h	2006-12-26 10:16:18 UTC (rev 473)
@@ -33,7 +33,7 @@
 enum { 
     PIXBUF_COLUMN,
     TEXT_COLUMN,
-    PATH_COLUMN,
+    OBJECT_COLUMN,
     NUM_COLs
     };
 
@@ -74,6 +74,7 @@
     GtkVBox vbox;
 
     MokoDesktopItem *top_item;
+    MokoDesktopItem *current;
     MokoIconView *icon_view;
     GtkListStore *list_store;
     GtkWidget *scrolled;
@@ -84,7 +85,7 @@
 
 struct _MokoMainMenuClass {
     GtkVBoxClass parent_class;
-    //GtkWidgetClass parent_class;
+
     void(*moko_main_menu_function)(MokoMainMenu *mm);
     };
 
@@ -94,6 +95,9 @@
 GtkWidget*
 moko_main_menu_new ();
 
+gboolean
+moko_main_menu_update(MokoMainMenu *mm, MokoDesktopItem *item);
+
 G_END_DECLS
 
 #endif /*main_menu.h*/

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokodesktop_item.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokodesktop_item.h	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokodesktop_item.h	2006-12-26 10:16:18 UTC (rev 473)
@@ -25,11 +25,9 @@
 void
 mokodesktop_item_free(MokoDesktopItem *item);
 
-
 Bool
 mokodesktop_item_folder_has_contents(MokoDesktopItem *folder);
 
-
 void
 mokodesktop_item_folder_contents_free( MokoDesktopItem *top_head_item,
                                        MokoDesktopItem *item);
@@ -41,8 +39,6 @@
 			                              void          *data,
 			                              int            type);
 
-
-
 void
 mokodesktop_items_append ( MokoDesktopItem *item_head,
 			                     MokoDesktopItem *item );
@@ -51,7 +47,6 @@
 mokodesktop_items_insert_after ( MokoDesktopItem *suffix_item,
 		  	                         MokoDesktopItem *item );
 
-
 void
 mokodesktop_items_append_to_folder ( MokoDesktopItem  *item_folder,
 				                             MokoDesktopItem  *item );
@@ -73,7 +68,6 @@
 MokoDesktopItem *
 mokodesktop_item_get_parent(MokoDesktopItem *item);
 
-
 MokoDesktopItem *
 mokodesktop_item_get_child(MokoDesktopItem *item);
 
@@ -111,7 +105,6 @@
 void *
 mokodesktop_item_get_user_data (MokoDesktopItem *item);
 
-
 void
 mokodesktop_item_set_type (MokoDesktopItem *item,
 			                     int            type);
@@ -119,8 +112,6 @@
 int
 mokodesktop_item_get_type (MokoDesktopItem *item);
 
-
-
 void
 mokodesktop_item_set_activate_callback (MokoDesktopItem *item, 
 				                                MokoDesktopCB    activate_cb);
@@ -130,6 +121,4 @@
 
 void
 mbdesktop_item_folder_prev_activate_cb(void *data1, void *data2);
-
-
 #endif

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c	2006-12-26 10:16:18 UTC (rev 473)
@@ -437,6 +437,43 @@
   g_value_set_boolean (return_value, v_return);
 }
 
+void
+moko_marshal_BOOLEAN__VOID (GClosure     *closure,
+                            GValue       *return_value,
+                            guint         n_param_values,
+                            const GValue *param_values,
+                            gpointer      invocation_hint,
+                            gpointer      marshal_data)
+{
+  typedef gboolean (*GMarshalFunc_BOOLEAN__VOID) (gpointer     data1,
+                                                  gpointer     data2);
+  register GMarshalFunc_BOOLEAN__VOID callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+  gboolean v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 1);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_BOOLEAN__VOID) (marshal_data ? marshal_data : cc->callback);
+
+  v_return = callback (data1,
+                       data2);
+
+  g_value_set_boolean (return_value, v_return);
+}
+
+
 static GtkContainerClass *parent_class = NULL;
 
 static guint moko_icon_view_signals[LAST_SIGNAL] = { 0 };
@@ -565,23 +602,23 @@
 						     G_PARAM_READWRITE)); 
 
 /**
-   * MokoIconView::max-text-len:
+   * MokoIconViewItem::index:
    *
-   * Maximum text column width.
+   * index of item.
    *
    */
     g_object_class_install_property (gobject_class,
 				    PPOP_CURSOR_POSITION,
-				   g_param_spec_int ("index",
+				    g_param_spec_int ("index",
 						     P_("index of cursor item"),
 						     P_(""),
 						     -1, G_MAXINT, -1,
 						     G_PARAM_READABLE)); 
 
 /**
-   * MokoIconView::max-text-len:
+   * MokoIconView::total-items:
    *
-   * Maximum text column width.
+   * total items of MokoIconView.
    *
    */
     g_object_class_install_property (gobject_class,
@@ -819,6 +856,16 @@
 		  G_TYPE_NONE, 2,
 		  GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
 
+  moko_icon_view_signals[ITEM_ACTIVATED] =
+    g_signal_new ("item_activated",
+		  G_TYPE_FROM_CLASS (gobject_class),
+		  G_SIGNAL_RUN_LAST,
+		  G_STRUCT_OFFSET (MokoIconViewClass, item_activated),
+		  NULL, NULL,
+		  g_cclosure_marshal_VOID__BOXED,
+		  G_TYPE_NONE, 1,
+		  GTK_TYPE_TREE_PATH);
+
     moko_icon_view_signals[MOVE_CURSOR] =
     g_signal_new ("move_cursor",
 		  G_TYPE_FROM_CLASS (gobject_class),
@@ -838,8 +885,46 @@
 		  NULL, NULL,
 		  g_cclosure_marshal_VOID__VOID,
 		  G_TYPE_NONE, 0);
+
+     moko_icon_view_signals[SELECT_CURSOR_ITEM] =
+    g_signal_new ("select_cursor_item",
+		  G_TYPE_FROM_CLASS (gobject_class),
+		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+		  G_STRUCT_OFFSET (MokoIconViewClass, select_cursor_item),
+		  NULL, NULL,
+		  g_cclosure_marshal_VOID__VOID,
+		  G_TYPE_NONE, 0);
+
+    moko_icon_view_signals[TOGGLE_CURSOR_ITEM] =
+    g_signal_new ("toggle_cursor_item",
+		  G_TYPE_FROM_CLASS (gobject_class),
+		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+		  G_STRUCT_OFFSET (MokoIconViewClass, toggle_cursor_item),
+		  NULL, NULL,
+		  g_cclosure_marshal_VOID__VOID,
+		  G_TYPE_NONE, 0);
+
+    moko_icon_view_signals[ACTIVATE_CURSOR_ITEM] =
+    g_signal_new ("activate_cursor_item",
+		  G_TYPE_FROM_CLASS (gobject_class),
+		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+		  G_STRUCT_OFFSET (MokoIconViewClass, activate_cursor_item),
+		  NULL, NULL,
+		  moko_marshal_BOOLEAN__VOID,
+		  G_TYPE_BOOLEAN, 0);
     
 /*Only for test delete later*/
+  gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK, "select_all", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "unselect_all", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_space, 0, "select_cursor_item", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_space, GDK_CONTROL_MASK, "toggle_cursor_item", 0);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_Return, 0, "activate_cursor_item", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_ISO_Enter, 0, "activate_cursor_item", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0, "activate_cursor_item", 0);
+
+    
+/*Only for test delete later*/
   moko_icon_view_add_move_binding (binding_set, GDK_Up, 0,
 				  GTK_MOVEMENT_DISPLAY_LINES, -1);
   moko_icon_view_add_move_binding (binding_set, GDK_KP_Up, 0,
@@ -912,17 +997,6 @@
   if (!self) g_free (self);
 }
 
-/*
-*
-*
-*/
-void
-moko_icon_view_update(GtkListStore *store) 
-{
-    
-}
-
-
 /* GtkWidget signals */
 static void
 moko_icon_view_realize (GtkWidget *widget)
@@ -1004,8 +1078,8 @@
   icon_view->priv->bin_window = NULL;
 
   /* GtkWidget::unrealize destroys children and widget->window */
-//  if (GTK_WIDGET_CLASS (parent_class)->unrealize)
-    //(* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
+  if (GTK_WIDGET_CLASS (parent_class)->unrealize)
+    (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
 }
 
 static void
@@ -1088,7 +1162,7 @@
   else
     state = GTK_STATE_ACTIVE;
 
-  if (icon_view->priv->pixbuf_column != -1)
+  if (icon_view->priv->pixbuf_column != -1) //FIXME: rewrite this function
     {
       pixbuf = moko_icon_view_get_item_icon (icon_view, item);
 
@@ -1103,10 +1177,8 @@
       scaled = gdk_pixbuf_scale_simple (pixbuf, 
       				scaled_w, scaled_h, GDK_INTERP_NEAREST);
       
-      if (item->selected && icon_view->priv->decorated)
+      if (item->selected && icon_view->priv->decorated) 
       	 {
-
-
 	    tmp = gdk_pixbuf_scale_simple (icon_view->priv->bg_icon, 
 	  					item->pixbuf_width, item->pixbuf_height,
 	  					GDK_INTERP_NEAREST);
@@ -1497,8 +1569,9 @@
 
     }
 
-  if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
-    {
+  //if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) //GTK: double ckicked launch "item-activated" event
+  if (event->button == 1 && event->type == GDK_BUTTON_PRESS)  //SUNZY : tabbing will launch "item-activated" event
+   {
       item = moko_icon_view_get_item_at_pos (icon_view,
 					    event->x, event->y);
 
@@ -1530,7 +1603,9 @@
   
 #ifdef DND_WORKS
   if (icon_view->priv->pressed_button == event->button)
-    icon_view->priv->pressed_button = -1;
+  {
+      icon_view->priv->pressed_button = -1;
+  }
 #endif
   moko_icon_view_stop_rubberbanding (icon_view);
 
@@ -2197,7 +2272,7 @@
       row++;
     }
   while (icons != NULL);
-g_debug ("total_item = %d", icon_view->priv->total_items);
+  
   if (maximum_width != icon_view->priv->width)
     {
       icon_view->priv->width = maximum_width;
@@ -2923,7 +2998,6 @@
 				gint             count)
 {
   GdkModifierType state;
-
   g_return_val_if_fail (MOKO_ICON_VIEW (icon_view), FALSE);
   g_return_val_if_fail (step == GTK_MOVEMENT_LOGICAL_POSITIONS ||
 			step == GTK_MOVEMENT_VISUAL_POSITIONS ||
@@ -2931,8 +3005,8 @@
 			step == GTK_MOVEMENT_PAGES ||
 			step == GTK_MOVEMENT_BUFFER_ENDS, FALSE);
 
-  if (!GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (icon_view)))
-    return FALSE;
+ //if (!GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (icon_view)))
+   //return FALSE;
 
   gtk_widget_grab_focus (GTK_WIDGET (icon_view));
 
@@ -2944,7 +3018,6 @@
         icon_view->priv->shift_pressed = TRUE;
     }
   /* else we assume not pressed */
-
   switch (step)
     {
     case GTK_MOVEMENT_LOGICAL_POSITIONS:
@@ -2963,7 +3036,6 @@
     default:
       g_assert_not_reached ();
     }
-
   icon_view->priv->ctrl_pressed = FALSE;
   icon_view->priv->shift_pressed = FALSE;
 
@@ -3103,8 +3175,8 @@
   MokoIconViewItem *item;
   gboolean dirty = FALSE;
   
-  if (!GTK_WIDGET_HAS_FOCUS (icon_view))
-    return;
+ // if (!GTK_WIDGET_HAS_FOCUS (icon_view)) 
+    //return;
   
   if (!icon_view->priv->cursor_item)
     {

Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c	2006-12-26 09:16:41 UTC (rev 472)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c	2006-12-26 10:16:18 UTC (rev 473)
@@ -30,8 +30,10 @@
 *@return Bool
 */
 gboolean
-moko_fill_model(GtkListStore *store, const char* icon_path, const char* icon_name) {
-    if (!icon_path || !icon_name)
+moko_fill_model(GtkListStore *store, const char* icon_path, 
+						const char* icon_name, MokoDesktopItem *item)
+{
+    if (!icon_path && !icon_name)
         return FALSE;
 
     GtkTreeIter iter;
@@ -39,43 +41,11 @@
 
     gtk_list_store_append (store, &iter);
     pixbuf = gdk_pixbuf_new_from_file_at_size (icon_path, PIXBUF_WIDTH, PIXBUF_HEIGHT, NULL);// ADD Gerro handle later
-    //pixbuf = gdk_pixbuf_new_from_file (icon_path, NULL);// ADD Gerro handle later
-    gtk_list_store_set (store, &iter, PIXBUF_COLUMN, pixbuf, TEXT_COLUMN, icon_name, -1);
+    gtk_list_store_set (store, &iter, PIXBUF_COLUMN, pixbuf, TEXT_COLUMN, icon_name, OBJECT_COLUMN, item, -1);
     g_object_unref (pixbuf);
-
     return TRUE;
 }
-/*test code, delete later*/
-void 
-moko_sample_model_fill(GtkListStore *store) {
-    moko_fill_model(store, "/usr/share/pixmaps/abiword.png", "1234567890123456789");
-    moko_fill_model(store, "/usr/share/pixmaps/anjuta.xpm", "anjuta");
-    moko_fill_model(store, "/usr/share/pixmaps/anjuta.xpm", "anjuta");
-    moko_fill_model(store, "/usr/share/pixmaps/battstat.png", "battstat");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm.png", "gdm");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm-setup.png", "gdm-setup");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-eyes.png", "gnome-eyes");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-geg12.png", "gnome-geg12");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm.xpm", "gdm");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-eyes.png", "gnome-eyes");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-geg12.png", "gnome-geg12");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm.xpm", "gdm");
-    moko_fill_model(store, "/usr/share/pixmaps/abiword.png", "1234567890123456789");
-    moko_fill_model(store, "/usr/share/pixmaps/anjuta.xpm", "anjuta");
-    moko_fill_model(store, "/usr/share/pixmaps/anjuta.xpm", "anjuta");
-    moko_fill_model(store, "/usr/share/pixmaps/battstat.png", "battstat");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm.png", "gdm");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm-setup.png", "gdm-setup");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-eyes.png", "gnome-eyes");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-geg12.png", "gnome-geg12");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm.xpm", "gdm");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-eyes.png", "gnome-eyes");
-    moko_fill_model(store, "/usr/share/pixmaps/gnome-geg12.png", "gnome-geg12");
-    moko_fill_model(store, "/usr/share/pixmaps/gdm.xpm", "gdm");
 
-}
-
-/*test code, delete later*/
 void
 moko_sample_hisory_app_fill(MokoPixmapButton *btn)
 {





More information about the commitlog mailing list