[maemo-commits] [maemo-commits] r11447 - in projects/haf/trunk/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri May 4 15:44:53 EEST 2007
- Previous message: [maemo-commits] r11446 - in projects/haf/trunk/hildon-desktop: . libhildondesktop src
- Next message: [maemo-commits] r11448 - in projects/haf/trunk/libmatchbox1: debian snapshot
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart
Date: 2007-05-04 15:44:52 +0300 (Fri, 04 May 2007)
New Revision: 11447
Modified:
projects/haf/trunk/hildon-desktop/ChangeLog
projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.c
projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.h
projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
Log:
* src/hd-switcher-menu-item.[ch]:
- Several minor bugfixes.
* src/hd-switcher-menu.c:
- Added basic support for notifications.
* ChangeLog updated.
Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-04 12:24:30 UTC (rev 11446)
+++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-04 12:44:52 UTC (rev 11447)
@@ -1,3 +1,10 @@
+2007-05-04 Moises Martinez <moises.martinez at nokia.com>
+
+ * src/hd-switcher-menu-item.[ch]:
+ - Several minor bugfixes.
+ * src/hd-switcher-menu.c:
+ - Added basic support for notifications.
+
2007-05-04 Lucas Rocha <lucas.rocha at nokia.com>
* libhildondesktop/hildon-desktop-notification-manager.[ch]: several
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-04 12:24:30 UTC (rev 11446)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.c 2007-05-04 12:44:52 UTC (rev 11447)
@@ -139,6 +139,15 @@
if (priv->pixbuf_anim)
g_object_unref (priv->pixbuf_anim);
+ if (priv->notification_icon)
+ g_object_unref (priv->notification_icon);
+
+ if (priv->notification_summary)
+ g_free (priv->notification_summary);
+
+ if (priv->notification_body)
+ g_free (priv->notification_body);
+
G_OBJECT_CLASS (hd_switcher_menu_item_parent_class)->finalize (gobject);
}
@@ -414,6 +423,8 @@
gtk_image_set_from_pixbuf
(GTK_IMAGE (priv->icon), priv->notification_icon);
+ g_debug ("Id: %d Summary of notification: %s", priv->notification_id, priv->notification_summary);
+
gtk_label_set_text (GTK_LABEL (priv->label),
priv->notification_summary); /* TODO: Insert timestamp */
gtk_label_set_text (GTK_LABEL (priv->label2),
@@ -494,27 +505,34 @@
hd_switcher_menu_item_activate (GtkMenuItem *menu_item)
{
HDEntryInfo *info;
+
+ info = hd_switcher_menu_item_get_entry_info (HD_SWITCHER_MENU_ITEM (menu_item));
- info = hd_switcher_menu_item_get_entry_info (HD_SWITCHER_MENU_ITEM (menu_item));
- g_assert (info != NULL);
+ if (info != NULL)
+ {
+ HN_DBG ("Raising application '%s'", hd_entry_info_peek_title (info));
- HN_DBG ("Raising application '%s'", hd_entry_info_peek_title (info));
-
- hd_wm_top_item (info);
+ hd_wm_top_item (info);
+ }
+ else
+ if (HD_SWITCHER_MENU_ITEM (menu_item)->priv->notification_id != -1)
+ {
+ hildon_desktop_notification_manager_call_action
+ (HD_SWITCHER_MENU_ITEM (menu_item)->priv->nm,
+ HD_SWITCHER_MENU_ITEM (menu_item)->priv->notification_id,
+ "default");
+ }
}
static gboolean
hd_switcher_menu_item_button_release_event (GtkWidget *widget,
- GdkEventButton *event)
+ GdkEventButton *event)
{
HDSwitcherMenuItem *menuitem = HD_SWITCHER_MENU_ITEM(widget);
gint x, y;
HN_DBG ("menu item clicked ended");
- g_return_val_if_fail (menuitem && menuitem->priv && menuitem->priv->info,
- FALSE);
-
if(!menuitem->priv->show_close ||
!menuitem->priv->close)
return FALSE;
@@ -546,11 +564,6 @@
{
GError *error = NULL;
- hildon_desktop_notification_manager_call_action
- (menuitem->priv->nm,
- menuitem->priv->notification_id,
- "default");
-
hildon_desktop_notification_manager_close_notification
(menuitem->priv->nm,
menuitem->priv->notification_id,
@@ -578,9 +591,6 @@
HN_DBG ("menu item clicked");
- g_return_val_if_fail (menuitem && menuitem->priv && menuitem->priv->info,
- FALSE);
-
if(!menuitem->priv->show_close ||
!menuitem->priv->close)
return FALSE;
@@ -663,25 +673,25 @@
g_param_spec_int ("notification-id",
"Id of notification",
"The id of the notification",
- 0,
+ -1,
G_MAXINT,
-1,
- (G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)));
+ (G_PARAM_CONSTRUCT | G_PARAM_READWRITE)));
g_object_class_install_property (gobject_class,
MENU_PROP_NOT_SUMMARY,
g_param_spec_string ("notification-summary",
"Summary of notification",
"The summary of the notification",
- NULL,
- (G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)));
+ "",
+ (G_PARAM_CONSTRUCT | G_PARAM_READWRITE)));
g_object_class_install_property (gobject_class,
MENU_PROP_NOT_BODY,
g_param_spec_string ("notification-body",
"Body of notification",
"The body of the notification",
- NULL,
- (G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)));
+ "",
+ (G_PARAM_CONSTRUCT | G_PARAM_READWRITE)));
g_object_class_install_property (gobject_class,
MENU_PROP_NOT_BODY,
@@ -689,7 +699,7 @@
"Icon notification",
"The icon of the notification",
GDK_TYPE_PIXBUF,
- (G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)));
+ (G_PARAM_CONSTRUCT | G_PARAM_READWRITE)));
g_type_class_add_private (klass, sizeof (HDSwitcherMenuItemPrivate));
}
@@ -757,7 +767,7 @@
HDSwitcherMenuItemPrivate *priv;
GdkPixbuf *pixbuf;
- g_return_if_fail (HN_IS_APP_MENU_ITEM (menuitem));
+ g_return_if_fail (HD_IS_SWITCHER_MENU_ITEM (menuitem));
g_return_if_fail (info != NULL);
priv = menuitem->priv;
@@ -814,7 +824,7 @@
HDEntryInfo *
hd_switcher_menu_item_get_entry_info (HDSwitcherMenuItem *menuitem)
{
- g_return_val_if_fail (HN_IS_APP_MENU_ITEM (menuitem), NULL);
+ g_return_val_if_fail (HD_IS_SWITCHER_MENU_ITEM (menuitem), NULL);
return menuitem->priv->info;
}
@@ -823,7 +833,7 @@
hd_switcher_menu_item_set_is_blinking (HDSwitcherMenuItem *menuitem,
gboolean is_blinking)
{
- g_return_if_fail (HN_IS_APP_MENU_ITEM (menuitem));
+ g_return_if_fail (HD_IS_SWITCHER_MENU_ITEM (menuitem));
hd_switcher_menu_item_icon_animation (menuitem->priv->icon, is_blinking);
}
@@ -831,7 +841,15 @@
gboolean
hd_switcher_menu_item_get_is_blinking (HDSwitcherMenuItem *menuitem)
{
- g_return_val_if_fail (HN_IS_APP_MENU_ITEM (menuitem), FALSE);
+ g_return_val_if_fail (HD_IS_SWITCHER_MENU_ITEM (menuitem), FALSE);
return menuitem->priv->is_blinking;
}
+
+gint
+hd_switcher_menu_item_get_notification_id (HDSwitcherMenuItem *menuitem)
+{
+ g_return_val_if_fail (HD_IS_SWITCHER_MENU_ITEM (menuitem), -1);
+
+ return menuitem->priv->notification_id;
+}
Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.h
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.h 2007-05-04 12:24:30 UTC (rev 11446)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu-item.h 2007-05-04 12:44:52 UTC (rev 11447)
@@ -39,9 +39,9 @@
#define HD_TYPE_SWITCHER_MENU_ITEM (hd_switcher_menu_item_get_type ())
#define HD_SWITCHER_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), HD_TYPE_SWITCHER_MENU_ITEM, HDSwitcherMenuItem))
-#define HN_IS_APP_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), HD_TYPE_SWITCHER_MENU_ITEM))
+#define HD_IS_SWITCHER_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), HD_TYPE_SWITCHER_MENU_ITEM))
#define HD_SWITCHER_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HD_TYPE_SWITCHER_MENU_ITEM, HDSwitcherMenuItemClass))
-#define HN_IS_APP_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HD_TYPE_SWITCHER_MENU_ITEM))
+#define HD_IS_SWITCHER_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HD_TYPE_SWITCHER_MENU_ITEM))
#define HD_SWITCHER_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HD_TYPE_SWITCHER_MENU_ITEM, HDSwitcherMenuItemClass))
typedef struct _HDSwitcherMenuItem HDSwitcherMenuItem;
@@ -81,6 +81,8 @@
gboolean is_blinking);
gboolean hd_switcher_menu_item_get_is_blinking (HDSwitcherMenuItem *menuitem);
+gint hd_switcher_menu_item_get_notification_id (HDSwitcherMenuItem *menuitem);
+
G_END_DECLS
#endif /* HD_SWITCHER_MENU_ITEM_H */
Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-05-04 12:24:30 UTC (rev 11446)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-05-04 12:44:52 UTC (rev 11447)
@@ -113,8 +113,8 @@
GtkTreeIter *iter,
HDSwitcherMenu *switcher);
-static void hd_switcher_menu_notification_deleted_cb (GtkTreeModel *tree_model,
- GtkTreePath *path,
+static void hd_switcher_menu_notification_deleted_cb (HildonDesktopNotificationManager *nm,
+ gint id,
HDSwitcherMenu *switcher);
static void hd_switcher_menu_notification_changed_cb (GtkTreeModel *tree_model,
@@ -264,13 +264,13 @@
G_CALLBACK (hd_switcher_menu_long_press_cb),
(gpointer)switcher);
- g_signal_connect (switcher->nm,
- "row-inserted",
- G_CALLBACK (hd_switcher_menu_notification_added_cb),
- (gpointer)switcher);
+ g_signal_connect_after (switcher->nm,
+ "row-inserted",
+ G_CALLBACK (hd_switcher_menu_notification_added_cb),
+ (gpointer)switcher);
g_signal_connect (switcher->nm,
- "row-deleted",
+ "notification-closed",
G_CALLBACK (hd_switcher_menu_notification_deleted_cb),
(gpointer)switcher);
@@ -492,6 +492,8 @@
gtk_widget_destroy (GTK_WIDGET (l->data));
}
+ g_list_free (children);
+
for (l = hd_wm_get_applications (hdwm); l != NULL; l = l->next)
{
GtkWidget *menu_item;
@@ -568,7 +570,7 @@
for (l = children; l != NULL; l = g_list_next (l))
{
- if (GTK_IS_SEPARATOR_MENU_ITEM (l->data))
+ if (!GTK_IS_SEPARATOR_MENU_ITEM (l->data))
{
_info = hd_switcher_menu_item_get_entry_info (HD_SWITCHER_MENU_ITEM (l->data));
@@ -616,6 +618,8 @@
}
}
+ g_list_free (children);
+
if (menu_item)
{
hd_switcher_menu_item_set_entry_info (HD_SWITCHER_MENU_ITEM (menu_item), info);
@@ -661,24 +665,61 @@
}
static void
-hd_switcher_menu_notification_added_cb (GtkTreeModel *tree_model,
+hd_switcher_menu_notification_changed_cb (GtkTreeModel *tree_model,
GtkTreePath *path,
GtkTreeIter *iter,
HDSwitcherMenu *switcher)
{
+ GdkPixbuf *icon = NULL;
+ gchar *summary = NULL, *body = NULL;
+ guint id;
+ GtkWidget *menu_item;
+
+ gtk_tree_model_get (tree_model,
+ iter,
+ HD_NM_COL_ID, &id,
+ HD_NM_COL_ICON, &icon,
+ HD_NM_COL_SUMMARY, &summary,
+ HD_NM_COL_BODY, &body,
+ -1);
+ g_debug ("Summary %s %s --------->",summary,body);
+ menu_item =
+ hd_switcher_menu_item_new_from_notification
+ (id, icon, summary, body, TRUE);
+
+ hildon_desktop_popup_menu_add_item
+ (switcher->priv->menu_notifications, GTK_MENU_ITEM (menu_item));
}
static void
-hd_switcher_menu_notification_deleted_cb (GtkTreeModel *tree_model,
- GtkTreePath *path,
+hd_switcher_menu_notification_deleted_cb (HildonDesktopNotificationManager *nm,
+ gint id,
HDSwitcherMenu *switcher)
{
+ GList *children = NULL, *l;
+
+ children =
+ hildon_desktop_popup_menu_get_children (switcher->priv->menu_notifications);
+
+ for (l = children; l != NULL; l = g_list_next (l))
+ {
+ gint _id =
+ hd_switcher_menu_item_get_notification_id (HD_SWITCHER_MENU_ITEM (l->data));
+
+ if (_id == id)
+ {
+ hildon_desktop_popup_menu_remove_item (switcher->priv->menu_notifications,
+ GTK_MENU_ITEM (l->data));
+ break;
+ }
+ }
+ g_list_free (children);
}
static void
-hd_switcher_menu_notification_changed_cb (GtkTreeModel *tree_model,
+hd_switcher_menu_notification_added_cb (GtkTreeModel *tree_model,
GtkTreePath *path,
GtkTreeIter *iter,
HDSwitcherMenu *switcher)
- Previous message: [maemo-commits] r11446 - in projects/haf/trunk/hildon-desktop: . libhildondesktop src
- Next message: [maemo-commits] r11448 - in projects/haf/trunk/libmatchbox1: debian snapshot
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
