[maemo-commits] [maemo-commits] r11580 - in projects/haf/trunk/hildon-desktop: . libhildondesktop libhildonwm src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu May 10 17:02:19 EEST 2007
Author: moimart
Date: 2007-05-10 17:02:18 +0300 (Thu, 10 May 2007)
New Revision: 11580

Modified:
   projects/haf/trunk/hildon-desktop/ChangeLog
   projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c
   projects/haf/trunk/hildon-desktop/libhildonwm/hd-keys.c
   projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.c
   projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
Log:

	* src/hd-switcher-menu-item.c:
        - Close notification when activated.
        * src/hd-switcher-menu.c:
        - Close menu when application topped.
        - Don't show the button if there are no application and no
        notifications.
        - Connected to show-controls signals from the menu.
        * libhildondesktop/hildon-desktop-popup-menu.c:
        - Added show-controls signals when scroll bottons are shown or not.
        * libhildonwm/hd-keys.c:
        - Added shortcut for osso-global-search, harcoded, though :(
	* ChangeLog updated.



Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-05-10 13:41:23 UTC (rev 11579)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-05-10 14:02:18 UTC (rev 11580)
@@ -1,6 +1,20 @@
 2007-05-10  Moises Martinez  <moises.martinez at nokia.com>
 
+	* src/hd-switcher-menu-item.c:
+	- Close notification when activated.
+	* src/hd-switcher-menu.c:
+	- Close menu when application topped.
+	- Don't show the button if there are no application and no
+	notifications.
+	- Connected to show-controls signals from the menu.
 	* libhildondesktop/hildon-desktop-popup-menu.c:
+	- Added show-controls signals when scroll bottons are shown or not.
+	* libhildonwm/hd-keys.c:
+	- Added shortcut for osso-global-search, harcoded, though :(
+
+2007-05-10  Moises Martinez  <moises.martinez at nokia.com>
+
+	* libhildondesktop/hildon-desktop-popup-menu.c:
 	- Added "resize-parent" property if you don't want the menu to resize
 	the parent.
 

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c	2007-05-10 13:41:23 UTC (rev 11579)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c	2007-05-10 14:02:18 UTC (rev 11580)
@@ -48,6 +48,7 @@
 enum
 {
   SIGNAL_POPUP_RESIZE,
+  SIGNAL_POPUP_SHOW_CONTROLS,
   N_SIGNALS
 };
 
@@ -136,6 +137,15 @@
                       NULL, NULL,
                       g_cclosure_marshal_VOID__VOID,
                       G_TYPE_NONE, 0);
+ 
+  signals[SIGNAL_POPUP_SHOW_CONTROLS] =
+        g_signal_new ("show-controls",
+                      G_OBJECT_CLASS_TYPE (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      0,
+                      NULL, NULL,
+                      g_cclosure_marshal_VOID__BOOLEAN,
+                      G_TYPE_NONE, 1, G_TYPE_BOOLEAN); 
   
   g_object_class_install_property (object_class,
                                    PROP_POPUP_ITEM_HEIGHT,
@@ -456,6 +466,8 @@
     gtk_widget_show (menu->priv->box_buttons);
     
     menu->priv->controls_on = TRUE;
+
+    g_signal_emit_by_name (menu, "show-controls", TRUE);
   }
 }
 
@@ -467,6 +479,8 @@
     gtk_container_remove (GTK_CONTAINER (menu),
                           menu->priv->box_buttons);	    
     menu->priv->controls_on = FALSE;
+
+    g_signal_emit_by_name (menu, "show-controls", FALSE);
   }
 }
 

Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-keys.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildonwm/hd-keys.c	2007-05-10 13:41:23 UTC (rev 11579)
+++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-keys.c	2007-05-10 14:02:18 UTC (rev 11580)
@@ -166,7 +166,7 @@
 hd_keys_launch_application (HDKeysConfig *keys,
 			    gpointer     *user_data)
 {
-
+  hd_wm_activate_service ("osso-global-search.desktop", NULL);
 }
 
 static void 

Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.c	2007-05-10 13:41:23 UTC (rev 11579)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.c	2007-05-10 14:02:18 UTC (rev 11580)
@@ -124,6 +124,8 @@
   gchar     *notification_body;
   GdkPixbuf *notification_icon;
 
+  gboolean   was_topped;
+
   HildonDesktopNotificationManager *nm;
 };
 
@@ -519,6 +521,19 @@
       (HD_SWITCHER_MENU_ITEM (menu_item)->priv->nm, 
        HD_SWITCHER_MENU_ITEM (menu_item)->priv->notification_id,
        "default");
+
+    GError *error = NULL;
+
+    hildon_desktop_notification_manager_close_notification
+      (HD_SWITCHER_MENU_ITEM (menu_item)->priv->nm,
+       HD_SWITCHER_MENU_ITEM (menu_item)->priv->notification_id,
+       &error);
+
+    if (error)
+    {
+      g_warning ("We cannot close the notification!?!?!");
+      g_error_free (error);
+    } 
   }	  
 }
 
@@ -542,18 +557,10 @@
   
   gtk_widget_get_pointer(widget, &x, &y);
 
-  HN_DBG ("pointer [%d,%d],\n"
-          "close allocation [%d, %d, %d, %d]",
-          x, y,
-          menuitem->priv->close->allocation.x,
-          menuitem->priv->close->allocation.y,
-          menuitem->priv->close->allocation.width,
-          menuitem->priv->close->allocation.height);
-
   /* only test x here; y is always withing the button range */
-  if(x >  menuitem->priv->close->allocation.x &&
-     x <= menuitem->priv->close->allocation.x +
-          menuitem->priv->close->allocation.width)
+  if (x >  menuitem->priv->close->allocation.x &&
+      x <= menuitem->priv->close->allocation.x +
+           menuitem->priv->close->allocation.width)
   {
     if (menuitem->priv->info != NULL)
       hd_entry_info_close (menuitem->priv->info);

Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c	2007-05-10 13:41:23 UTC (rev 11579)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c	2007-05-10 14:02:18 UTC (rev 11580)
@@ -94,6 +94,7 @@
   GtkImage		   *image_button;
 
   GtkWidget 		   *active_menu_item;
+  GtkWidget		   *clear_events_menu_item;
 
   gboolean 		    is_open;
   gboolean 		    fullscreen;
@@ -119,6 +120,10 @@
 static void hd_switcher_menu_scroll_to (HildonDesktopPopupWindow *window,
 					HDSwitcherMenu *switcher);
 
+static void hd_switcher_menu_add_clear_notifications_button_cb (HildonDesktopPopupMenu *menu,
+								gboolean show_controls,
+								HDSwitcherMenu *switcher);
+
 static void hd_switcher_menu_add_info_cb (HDWM *hdwm, HDEntryInfo *info, HDSwitcherMenu *switcher);
 static void hd_switcher_menu_remove_info_cb (HDWM *hdwm, gboolean removed_app, HDEntryInfo *info, HDSwitcherMenu *switcher);
 static void hd_switcher_menu_changed_info_cb (HDWM *hdwm, HDEntryInfo *info, HDSwitcherMenu *switcher);
@@ -145,6 +150,10 @@
 
 static void hd_switcher_menu_reset_main_icon (HDSwitcherMenu *switcher);
 
+static void hd_switcher_menu_check_content (HDSwitcherMenu *switcher);
+
+static void hd_switcher_menu_item_activated (GtkMenuItem *menuitem, HDSwitcherMenu *switcher);
+
 static void 
 hd_switcher_menu_init (HDSwitcherMenu *switcher)
 {
@@ -155,7 +164,8 @@
 
   switcher->priv->popup_window = NULL;
 
-  switcher->priv->active_menu_item = NULL;
+  switcher->priv->active_menu_item       =
+  switcher->priv->clear_events_menu_item = NULL;
 
   switcher->priv->is_open    = 
   switcher->priv->fullscreen = FALSE;
@@ -395,6 +405,11 @@
 		    "popup-menu-resize",
 		    G_CALLBACK (hd_switcher_menu_resize_menu),
 		    (gpointer)switcher);
+ 
+  g_signal_connect (switcher->priv->menu_notifications,
+		    "show-controls",
+		    G_CALLBACK (hd_switcher_menu_add_clear_notifications_button_cb),
+		    (gpointer)switcher); 
   
   g_signal_connect (button,
 		    "toggled",
@@ -470,6 +485,8 @@
     GTK_MENU_ITEM (gtk_separator_menu_item_new ()));
 
   hd_switcher_menu_populate_notifications (switcher);
+
+  hd_switcher_menu_check_content (switcher);
   
   return object;
 }
@@ -484,8 +501,16 @@
   gtk_widget_destroy (GTK_WIDGET (switcher->priv->popup_window));
 	
   G_OBJECT_CLASS (hd_switcher_menu_parent_class)->finalize (object);
-}	
+}
 
+static void 
+hd_switcher_menu_add_clear_notifications_button_cb (HildonDesktopPopupMenu *menu,
+						    gboolean show_controls,
+						    HDSwitcherMenu *switcher)
+{
+  /*TODO: Waiting for Roope to implement this wonderful feature */	
+}
+
 static void
 hd_switcher_menu_replace_blinking_icon (HDSwitcherMenu *switcher, GdkPixbuf *icon)
 {
@@ -517,11 +542,48 @@
 }
 
 static void 
+hd_switcher_menu_item_activated (GtkMenuItem *menuitem, HDSwitcherMenu *switcher)
+{
+  if (switcher->priv->is_open)
+    hildon_desktop_popup_window_popdown
+      (switcher->priv->popup_window);
+
+  gtk_toggle_button_set_active
+    (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON), FALSE);
+}	
+
+static void 
 hd_switcher_menu_style_set (GtkWidget *widget, GtkStyle *style, gpointer data)
 {
 	
   gtk_widget_set_name (widget, AS_MENU_BUTTON_NAME);	
   gtk_widget_set_name (GTK_BIN (widget)->child, AS_MENU_BUTTON_NAME);
+}
+
+static void 
+hd_switcher_menu_check_content (HDSwitcherMenu *switcher)
+{
+  GList *children = NULL;
+	
+  if ((hd_wm_get_applications (switcher->hdwm) != NULL) ||
+      (children = hildon_desktop_popup_menu_get_children 
+        (switcher->priv->menu_notifications)) != NULL)
+  {
+     gtk_widget_show (GTK_BIN (SWITCHER_TOGGLE_BUTTON)->child);
+  }
+  else
+  {	  
+     gtk_widget_hide (GTK_BIN (SWITCHER_TOGGLE_BUTTON)->child);	  
+
+     if (switcher->priv->is_open)
+       hildon_desktop_popup_window_popdown 
+         (switcher->priv->popup_window);	       
+
+     gtk_toggle_button_set_active 
+       (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON), FALSE);
+  }
+
+  g_list_free (children);
 }	
 
 static void
@@ -666,6 +728,9 @@
 static void 
 hd_switcher_menu_toggled_cb (GtkWidget *button, HDSwitcherMenu *switcher)
 {
+  if (!GTK_WIDGET_VISIBLE (GTK_BIN (SWITCHER_TOGGLE_BUTTON)->child))
+    return;
+	
   if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON)))
   {
     hildon_desktop_popup_window_popdown (switcher->priv->popup_window);
@@ -766,6 +831,11 @@
 
       menu_item = hd_switcher_menu_item_new_from_entry_info (entry, TRUE);
 
+      g_signal_connect_after (menu_item,
+		              "activate",
+			      G_CALLBACK (hd_switcher_menu_item_activated),
+			      (gpointer)switcher);
+
       hildon_desktop_popup_menu_add_item
        (switcher->priv->menu_applications, GTK_MENU_ITEM (menu_item));
 
@@ -782,6 +852,8 @@
     hildon_desktop_popup_menu_add_item
       (switcher->priv->menu_applications, GTK_MENU_ITEM (separator));
   }
+
+  hd_switcher_menu_check_content (switcher); 
 }	
 
 static void 
@@ -834,6 +906,8 @@
   }
 
   g_list_free (children);  
+
+  hd_switcher_menu_check_content (switcher);
 }
 
 static GdkPixbuf *
@@ -1109,9 +1183,10 @@
   hildon_desktop_popup_menu_add_item
     (switcher->priv->menu_notifications, 
      GTK_MENU_ITEM (gtk_separator_menu_item_new ()));	 
-
     	    
   switcher->priv->last_iter_added = NULL;
+
+  hd_switcher_menu_check_content (switcher);
 }
 
 static void 
@@ -1145,6 +1220,8 @@
   }	  
 
   g_list_free (children);
+
+  hd_switcher_menu_check_content (switcher);
 }
 
 static void 


More information about the maemo-commits mailing list