From 448e45e3fa53620804ab8ec9c5940946f45a8b62 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Fri, 11 Jun 2010 15:09:07 +0100 Subject: new widget for the metadata --- src/metadata-menu-item.vala | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/metadata-menu-item.vala (limited to 'src/metadata-menu-item.vala') diff --git a/src/metadata-menu-item.vala b/src/metadata-menu-item.vala new file mode 100644 index 0000000..0f6d7d5 --- /dev/null +++ b/src/metadata-menu-item.vala @@ -0,0 +1,26 @@ +using Dbusmenu; +using Gee; + +public class MetadataMenuitem : Dbusmenu.Menuitem +{ + /* Not ideal duplicate definition of const - see common-defs/h */ + const string DBUSMENU_METADATA_MENUITEM_TYPE = "x-canonical-metadata-menu-item"; + const string DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST = "x-canonical-metadata-text-artist"; + const string DBUSMENU_METADATA_MENUITEM_TEXT_PIECE = "x-canonical-metadata-text-piece"; + const string DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER = "x-canonical-metadata-text-container"; + const string DBUSMENU_METADATA_MENUITEM_IMAGE = "x-canonical-metadata-image"; + + public MetadataMenuitem() + { + this.property_set(MENUITEM_PROP_TYPE, DBUSMENU_METADATA_MENUITEM_TYPE); + this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST, "Sonnamble"); + this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_PIECE, "Nocturne"); + this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER, "Seven Months in E minor"); + this.property_set(DBUSMENU_METADATA_MENUITEM_IMAGE, ""); + } + + public override void handle_event(string name, GLib.Value input_value, uint timestamp) + { + debug("MetadataItem -> handle event caught!"); + } +} \ No newline at end of file -- cgit v1.2.3 From 3337497532d6d726d9eaa42b5b1b3ed8e4dbedc7 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Sun, 13 Jun 2010 22:27:50 +0100 Subject: album art underway --- src/common-defs.h | 18 ++++++++--------- src/metadata-menu-item.vala | 4 ++-- src/metadata-widget.c | 45 ++++++++++++------------------------------- src/metadata-widget.c~ | 47 +++++++++++++-------------------------------- src/player-controller.vala | 2 +- 5 files changed, 37 insertions(+), 79 deletions(-) (limited to 'src/metadata-menu-item.vala') diff --git a/src/common-defs.h b/src/common-defs.h index e38b15f..014d864 100644 --- a/src/common-defs.h +++ b/src/common-defs.h @@ -25,12 +25,12 @@ with this program. If not, see . #define SIGNAL_SINK_AVAILABLE_UPDATE "SinkAvailableUpdate" /* DBUS Custom Items */ -#define DBUSMENU_SLIDER_MENUITEM_TYPE "x-canonical-ido-slider-item" -#define DBUSMENU_TRANSPORT_MENUITEM_TYPE "x-canonical-transport-bar" -#define DBUSMENU_TRANSPORT_MENUITEM_STATE "x-canonical-transport-state" - -#define DBUSMENU_METADATA_MENUITEM_TYPE = "x-canonical-metadata-menu-item"; -#define DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST = "x-canonical-metadata-text-artist"; -#define DBUSMENU_METADATA_MENUITEM_TEXT_PIECE = "x-canonical-metadata-text-piece"; -#define DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER = "x-canonical-metadata-text-container"; -#define DBUSMENU_METADATA_MENUITEM_IMAGE = "x-canonical-metadata-image"; +#define DBUSMENU_SLIDER_MENUITEM_TYPE "x-canonical-ido-slider-item" +#define DBUSMENU_TRANSPORT_MENUITEM_TYPE "x-canonical-transport-bar" +#define DBUSMENU_TRANSPORT_MENUITEM_STATE "x-canonical-transport-state" + +#define DBUSMENU_METADATA_MENUITEM_TYPE "x-canonical-metadata-menu-item" +#define DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST "x-canonical-metadata-text-artist" +#define DBUSMENU_METADATA_MENUITEM_TEXT_PIECE "x-canonical-metadata-text-piece" +#define DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER "x-canonical-metadata-text-container" +#define DBUSMENU_METADATA_MENUITEM_IMAGE_PATH "x-canonical-metadata-image" diff --git a/src/metadata-menu-item.vala b/src/metadata-menu-item.vala index 0f6d7d5..c9daee6 100644 --- a/src/metadata-menu-item.vala +++ b/src/metadata-menu-item.vala @@ -8,7 +8,7 @@ public class MetadataMenuitem : Dbusmenu.Menuitem const string DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST = "x-canonical-metadata-text-artist"; const string DBUSMENU_METADATA_MENUITEM_TEXT_PIECE = "x-canonical-metadata-text-piece"; const string DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER = "x-canonical-metadata-text-container"; - const string DBUSMENU_METADATA_MENUITEM_IMAGE = "x-canonical-metadata-image"; + const string DBUSMENU_METADATA_MENUITEM_IMAGE_PATH = "x-canonical-metadata-image"; public MetadataMenuitem() { @@ -16,7 +16,7 @@ public class MetadataMenuitem : Dbusmenu.Menuitem this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST, "Sonnamble"); this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_PIECE, "Nocturne"); this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER, "Seven Months in E minor"); - this.property_set(DBUSMENU_METADATA_MENUITEM_IMAGE, ""); + this.property_set(DBUSMENU_METADATA_MENUITEM_IMAGE_PATH, "/home/ronoc/Desktop/Sonnamble/Sonnamble_CD.jpg"); } public override void handle_event(string name, GLib.Value input_value, uint timestamp) diff --git a/src/metadata-widget.c b/src/metadata-widget.c index 5e20f15..b414969 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -26,10 +26,6 @@ with this program. If not, see . #include "common-defs.h" #include -// TODO: think about leakage: ted ! - - - static DbusmenuMenuitem* twin_item; typedef struct _MetadataWidgetPrivate MetadataWidgetPrivate; @@ -37,6 +33,8 @@ typedef struct _MetadataWidgetPrivate MetadataWidgetPrivate; struct _MetadataWidgetPrivate { GtkWidget* hbox; + GtkWidget* album_art; + gchar* our_path; }; #define METADATA_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), METADATA_WIDGET_TYPE, MetadataWidgetPrivate)) @@ -90,7 +88,16 @@ metadata_widget_init (MetadataWidget *self) hbox = gtk_hbox_new(TRUE, 2); - g_signal_connect(G_OBJECT(twin_item), "property-changed", G_CALLBACK(metadata_widget_update_state), self); + const gchar* path = dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_IMAGE_PATH); + + g_debug("MetadataWidget:init - path = %s", path); + + priv->our_path = g_strdup(path); + + priv->album_art = gtk_image_new_from_file(priv->our_path); + + g_signal_connect(G_OBJECT(twin_item), "property-changed", + G_CALLBACK(metadata_widget_update_state), self); gtk_widget_show_all (priv->hbox); gtk_container_add (GTK_CONTAINER (self), hbox); @@ -100,10 +107,6 @@ metadata_widget_init (MetadataWidget *self) static void metadata_widget_dispose (GObject *object) { - //if(IS_METADATA_WIDGET(object) == TRUE){ - // MetadataWidget * priv = METADATA_WIDGET_GET_PRIVATE(METADATA_WIDGET(object)); - // g_object_unref(priv->previous_button); - //} G_OBJECT_CLASS (metadata_widget_parent_class)->dispose (object); } @@ -134,36 +137,12 @@ metadata_widget_button_release_event (GtkWidget *menuitem, //TODO figure out why the userdata is not what I expect it to be. static void metadata_widget_update_state(gchar *property, GValue *value, gpointer userdata) { - //MetadataWidget* bar = (MetadataWidget*)userdata; - // TODO problem line - //if(IS_METADATA_WIDGET(bar)){ - //g_debug("after line 1!!"); - - //MetadataWidget *priv = METADATA_WIDGET_GET_PRIVATE(bar); - //g_debug("after line 2!!"); - //gchar* label = "changed"; - //g_debug("after line 3!!"); - //gtk_button_set_label(GTK_BUTTON(priv->play_button), g_strdup(label)); - //} - //if(GTK_IS_BUTTON(GTK_BUTTON(priv->play_button))){ - - // gtk_button_set_label(GTK_BUTTON(priv->play_button), g_strdup(label)); - // g_debug("its a button"); - //} - //else{ - //g_debug("No Goddamn button!!"); - //} - //} g_debug("metadata_widget_update_state - with property %s", property); if (value == NULL){ g_debug("value is null"); return; } - // TODO problem line - //gchar* input = g_strdup(g_value_get_string(value)); - //g_debug("metadata_widget_update_state - with value %s", input); - } /** diff --git a/src/metadata-widget.c~ b/src/metadata-widget.c~ index 39a42db..81c6f75 100644 --- a/src/metadata-widget.c~ +++ b/src/metadata-widget.c~ @@ -26,10 +26,6 @@ with this program. If not, see . #include "common-defs.h" #include -// TODO: think about leakage: ted ! - - - static DbusmenuMenuitem* twin_item; typedef struct _MetadataWidgetPrivate MetadataWidgetPrivate; @@ -37,6 +33,8 @@ typedef struct _MetadataWidgetPrivate MetadataWidgetPrivate; struct _MetadataWidgetPrivate { GtkWidget* hbox; + GtkWidget* album_art; + gchar* our_path; }; #define METADATA_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), METADATA_WIDGET_TYPE, MetadataWidgetPrivate)) @@ -70,7 +68,7 @@ metadata_widget_class_init (MetadataWidgetClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - widget_class->button_press_event = metadata_widget_press_event; + widget_class->button_press_event = metadata_widget_button_press_event; widget_class->button_release_event = metadata_widget_button_release_event; g_type_class_add_private (klass, sizeof (MetadataWidgetPrivate)); @@ -90,7 +88,16 @@ metadata_widget_init (MetadataWidget *self) hbox = gtk_hbox_new(TRUE, 2); - g_signal_connect(G_OBJECT(twin_item), "property-changed", G_CALLBACK(metadata_widget_update_state), self); + const gchar* path = dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_IMAGE); + + g_debug("MetadataWidget:init - path = %s", path); + + priv->our_path = g_strdup(path); + + priv->album_art = gtk_image_new_from_file(priv->our_path); + + g_signal_connect(G_OBJECT(twin_item), "property-changed", + G_CALLBACK(metadata_widget_update_state), self); gtk_widget_show_all (priv->hbox); gtk_container_add (GTK_CONTAINER (self), hbox); @@ -100,10 +107,6 @@ metadata_widget_init (MetadataWidget *self) static void metadata_widget_dispose (GObject *object) { - //if(IS_METADATA_WIDGET(object) == TRUE){ - // MetadataWidget * priv = METADATA_WIDGET_GET_PRIVATE(METADATA_WIDGET(object)); - // g_object_unref(priv->previous_button); - //} G_OBJECT_CLASS (metadata_widget_parent_class)->dispose (object); } @@ -134,36 +137,12 @@ metadata_widget_button_release_event (GtkWidget *menuitem, //TODO figure out why the userdata is not what I expect it to be. static void metadata_widget_update_state(gchar *property, GValue *value, gpointer userdata) { - //MetadataWidget* bar = (MetadataWidget*)userdata; - // TODO problem line - //if(IS_METADATA_WIDGET(bar)){ - //g_debug("after line 1!!"); - - //MetadataWidget *priv = METADATA_WIDGET_GET_PRIVATE(bar); - //g_debug("after line 2!!"); - //gchar* label = "changed"; - //g_debug("after line 3!!"); - //gtk_button_set_label(GTK_BUTTON(priv->play_button), g_strdup(label)); - //} - //if(GTK_IS_BUTTON(GTK_BUTTON(priv->play_button))){ - - // gtk_button_set_label(GTK_BUTTON(priv->play_button), g_strdup(label)); - // g_debug("its a button"); - //} - //else{ - //g_debug("No Goddamn button!!"); - //} - //} g_debug("metadata_widget_update_state - with property %s", property); if (value == NULL){ g_debug("value is null"); return; } - // TODO problem line - //gchar* input = g_strdup(g_value_get_string(value)); - //g_debug("metadata_widget_update_state - with value %s", input); - } /** diff --git a/src/player-controller.vala b/src/player-controller.vala index 26ad1ff..dcb428b 100644 --- a/src/player-controller.vala +++ b/src/player-controller.vala @@ -34,7 +34,7 @@ public class PlayerController : GLib.Object // Title item Dbusmenu.Menuitem title_item = new Dbusmenu.Menuitem(); - title_item.property_set(MENUITEM_PROP_LABEL, this.name.concat("")); + title_item.property_set(MENUITEM_PROP_LABEL, this.name); title_item.property_set(MENUITEM_PROP_ICON_NAME, "applications-multimedia"); this.custom_items.add(title_item); -- cgit v1.2.3 From 11741257873bf35670e2503184821e2bd075c9f6 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 14 Jun 2010 11:07:28 +0100 Subject: properties working now both ways --- src/indicator-sound.c | 32 ++++++++++++++++++++++++++++++-- src/metadata-menu-item.vala | 3 +++ src/metadata-widget.c | 5 ----- src/metadata-widget.c~ | 9 ++------- 4 files changed, 35 insertions(+), 14 deletions(-) (limited to 'src/metadata-menu-item.vala') diff --git a/src/indicator-sound.c b/src/indicator-sound.c index a3856c4..af2a6f9 100755 --- a/src/indicator-sound.c +++ b/src/indicator-sound.c @@ -39,6 +39,7 @@ with this program. If not, see . #include "indicator-sound.h" #include "transport-bar.h" +#include "metadata-widget.h" #include "dbus-shared-names.h" #include "sound-service-client.h" #include "common-defs.h" @@ -92,8 +93,9 @@ static void slider_grabbed(GtkWidget *widget, gpointer user_data); static void slider_released(GtkWidget *widget, gpointer user_data); static void style_changed_cb(GtkWidget *widget, gpointer user_data); -//transport bar related +//player widgets related static gboolean new_transport_bar(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); +static gboolean new_metadata_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); // DBUS communication static DBusGProxy *sound_dbus_proxy = NULL; @@ -240,6 +242,7 @@ get_menu (IndicatorObject * io) g_object_set_data (G_OBJECT (client), "indicator", io); dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_SLIDER_MENUITEM_TYPE, new_slider_item); dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TRANSPORT_MENUITEM_TYPE, new_transport_bar); + dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_METADATA_MENUITEM_TYPE, new_metadata_widget); // register Key-press listening on the menu widget as the slider does not allow this. g_signal_connect(menu, "key-press-event", G_CALLBACK(key_press_cb), NULL); @@ -310,7 +313,8 @@ new_slider_item(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuC return TRUE; } -static gboolean new_transport_bar(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) +static gboolean +new_transport_bar(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) { g_debug("indicator-sound: new_transport_bar() called "); @@ -329,6 +333,30 @@ static gboolean new_transport_bar(DbusmenuMenuitem * newitem, DbusmenuMenuitem * return TRUE; } +static gboolean +new_metadata_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) +{ + g_debug("indicator-sound: new_metadata_widget"); + + GtkWidget* metadata = NULL; + + g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); + g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); + + metadata = metadata_widget_new (newitem); + GtkMenuItem *menu_metadata_widget = GTK_MENU_ITEM(metadata); + + dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, menu_metadata_widget, parent); + + gtk_widget_show_all(metadata); + + return TRUE; +} + +//const gchar* path = dbusmenu_menuitem_property_get(new_item, DBUSMENU_METADATA_MENUITEM_IMAGE_PATH); + +//g_debug("New transport bar path = %s", path); + static void connection_changed (IndicatorServiceManager * sm, gboolean connected, gpointer userdata) diff --git a/src/metadata-menu-item.vala b/src/metadata-menu-item.vala index c9daee6..ef72143 100644 --- a/src/metadata-menu-item.vala +++ b/src/metadata-menu-item.vala @@ -17,6 +17,9 @@ public class MetadataMenuitem : Dbusmenu.Menuitem this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_PIECE, "Nocturne"); this.property_set(DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER, "Seven Months in E minor"); this.property_set(DBUSMENU_METADATA_MENUITEM_IMAGE_PATH, "/home/ronoc/Desktop/Sonnamble/Sonnamble_CD.jpg"); + + debug("image_path property set %s:", this.property_get(DBUSMENU_METADATA_MENUITEM_IMAGE_PATH)); + } public override void handle_event(string name, GLib.Value input_value, uint timestamp) diff --git a/src/metadata-widget.c b/src/metadata-widget.c index b414969..70542e9 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -138,11 +138,6 @@ metadata_widget_button_release_event (GtkWidget *menuitem, static void metadata_widget_update_state(gchar *property, GValue *value, gpointer userdata) { g_debug("metadata_widget_update_state - with property %s", property); - - if (value == NULL){ - g_debug("value is null"); - return; - } } /** diff --git a/src/metadata-widget.c~ b/src/metadata-widget.c~ index 81c6f75..df58de5 100644 --- a/src/metadata-widget.c~ +++ b/src/metadata-widget.c~ @@ -88,9 +88,9 @@ metadata_widget_init (MetadataWidget *self) hbox = gtk_hbox_new(TRUE, 2); - const gchar* path = dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_IMAGE); + //const gchar* path = dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_IMAGE_PATH); - g_debug("MetadataWidget:init - path = %s", path); + //g_debug("MetadataWidget:init - path = %s", path); priv->our_path = g_strdup(path); @@ -138,11 +138,6 @@ metadata_widget_button_release_event (GtkWidget *menuitem, static void metadata_widget_update_state(gchar *property, GValue *value, gpointer userdata) { g_debug("metadata_widget_update_state - with property %s", property); - - if (value == NULL){ - g_debug("value is null"); - return; - } } /** -- cgit v1.2.3