Merge lp:~bratsche/indicator-sound/icon-placement into lp:indicator-sound/sound-menu-v2
- icon-placement
- Merge into trunk.0.1
Proposed by
Conor Curran
Status: | Merged |
---|---|
Merge reported by: | Conor Curran |
Merged at revision: | not available |
Proposed branch: | lp:~bratsche/indicator-sound/icon-placement |
Merge into: | lp:indicator-sound/sound-menu-v2 |
Diff against target: |
703 lines (+210/-100) (has conflicts) 10 files modified
src/common-defs.h (+1/-0) src/indicator-sound.c (+32/-27) src/mpris2-controller.vala (+11/-11) src/player-controller.vala (+6/-0) src/sound-service.c (+6/-0) src/title-menu-item.vala (+6/-1) src/title-widget.c (+131/-54) src/title-widget.h (+7/-5) src/transport-menu-item.vala (+9/-2) vapi/common-defs.vapi (+1/-0) Text conflict in src/sound-service.c |
To merge this branch: | bzr merge lp:~bratsche/indicator-sound/icon-placement |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Conor Curran (community) | Approve | ||
Review via email: mp+34798@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Conor Curran (cjcurran) wrote : | # |
Manually merged.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/common-defs.h' | |||
2 | --- src/common-defs.h 2010-09-03 13:06:00 +0000 | |||
3 | +++ src/common-defs.h 2010-09-07 20:31:00 +0000 | |||
4 | @@ -41,6 +41,7 @@ | |||
5 | 41 | 41 | ||
6 | 42 | #define DBUSMENU_TITLE_MENUITEM_TYPE "x-canonical-sound-menu-player-title-type" | 42 | #define DBUSMENU_TITLE_MENUITEM_TYPE "x-canonical-sound-menu-player-title-type" |
7 | 43 | #define DBUSMENU_TITLE_MENUITEM_NAME "x-canonical-sound-menu-player-title-name" | 43 | #define DBUSMENU_TITLE_MENUITEM_NAME "x-canonical-sound-menu-player-title-name" |
8 | 44 | #define DBUSMENU_TITLE_MENUITEM_RUNNING "x-canonical-sound-menu-player-title-running" | ||
9 | 44 | 45 | ||
10 | 45 | #define DBUSMENU_SCRUB_MENUITEM_TYPE "x-canonical-sound-menu-player-scrub-type" | 46 | #define DBUSMENU_SCRUB_MENUITEM_TYPE "x-canonical-sound-menu-player-scrub-type" |
11 | 46 | #define DBUSMENU_SCRUB_MENUITEM_DURATION "x-canonical-sound-menu-player-scrub-mpris:length" | 47 | #define DBUSMENU_SCRUB_MENUITEM_DURATION "x-canonical-sound-menu-player-scrub-mpris:length" |
12 | 47 | 48 | ||
13 | === modified file 'src/indicator-sound.c' | |||
14 | --- src/indicator-sound.c 2010-09-06 17:07:15 +0000 | |||
15 | +++ src/indicator-sound.c 2010-09-07 20:31:00 +0000 | |||
16 | @@ -133,7 +133,7 @@ | |||
17 | 133 | IndicatorObjectClass *io_class = INDICATOR_OBJECT_CLASS(klass); | 133 | IndicatorObjectClass *io_class = INDICATOR_OBJECT_CLASS(klass); |
18 | 134 | 134 | ||
19 | 135 | g_type_class_add_private (klass, sizeof (IndicatorSoundPrivate)); | 135 | g_type_class_add_private (klass, sizeof (IndicatorSoundPrivate)); |
21 | 136 | 136 | ||
22 | 137 | io_class->get_label = get_label; | 137 | io_class->get_label = get_label; |
23 | 138 | io_class->get_image = get_icon; | 138 | io_class->get_image = get_icon; |
24 | 139 | io_class->get_menu = get_menu; | 139 | io_class->get_menu = get_menu; |
25 | @@ -154,7 +154,7 @@ | |||
26 | 154 | blocked_id = 0; | 154 | blocked_id = 0; |
27 | 155 | initial_mute = FALSE; | 155 | initial_mute = FALSE; |
28 | 156 | device_available = TRUE; | 156 | device_available = TRUE; |
30 | 157 | 157 | ||
31 | 158 | IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self); | 158 | IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self); |
32 | 159 | priv->volume_widget = NULL; | 159 | priv->volume_widget = NULL; |
33 | 160 | 160 | ||
34 | @@ -196,8 +196,10 @@ | |||
35 | 196 | static GtkImage * | 196 | static GtkImage * |
36 | 197 | get_icon (IndicatorObject * io) | 197 | get_icon (IndicatorObject * io) |
37 | 198 | { | 198 | { |
40 | 199 | gchar* current_name = g_hash_table_lookup(volume_states, GINT_TO_POINTER(current_state)); | 199 | gchar* current_name = g_hash_table_lookup(volume_states, |
41 | 200 | g_debug("At start-up attempting to set the image to %s", current_name); | 200 | GINT_TO_POINTER(current_state)); |
42 | 201 | g_debug("At start-up attempting to set the image to %s", | ||
43 | 202 | current_name); | ||
44 | 201 | speaker_image = indicator_image_helper(current_name); | 203 | speaker_image = indicator_image_helper(current_name); |
45 | 202 | gtk_widget_show(GTK_WIDGET(speaker_image)); | 204 | gtk_widget_show(GTK_WIDGET(speaker_image)); |
46 | 203 | return speaker_image; | 205 | return speaker_image; |
47 | @@ -209,18 +211,19 @@ | |||
48 | 209 | static GtkMenu * | 211 | static GtkMenu * |
49 | 210 | get_menu (IndicatorObject * io) | 212 | get_menu (IndicatorObject * io) |
50 | 211 | { | 213 | { |
52 | 212 | DbusmenuGtkMenu *menu = dbusmenu_gtkmenu_new(INDICATOR_SOUND_DBUS_NAME, INDICATOR_SOUND_DBUS_OBJECT); | 214 | DbusmenuGtkMenu* menu = dbusmenu_gtkmenu_new(INDICATOR_SOUND_DBUS_NAME, INDICATOR_SOUND_DBUS_OBJECT); |
53 | 215 | |||
54 | 213 | DbusmenuGtkClient *client = dbusmenu_gtkmenu_get_client(menu); | 216 | DbusmenuGtkClient *client = dbusmenu_gtkmenu_get_client(menu); |
55 | 214 | g_object_set_data (G_OBJECT (client), "indicator", io); | 217 | g_object_set_data (G_OBJECT (client), "indicator", io); |
56 | 215 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_VOLUME_MENUITEM_TYPE, new_volume_slider_widget); | 218 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_VOLUME_MENUITEM_TYPE, new_volume_slider_widget); |
57 | 216 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TRANSPORT_MENUITEM_TYPE, new_transport_widget); | 219 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TRANSPORT_MENUITEM_TYPE, new_transport_widget); |
58 | 217 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_METADATA_MENUITEM_TYPE, new_metadata_widget); | 220 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_METADATA_MENUITEM_TYPE, new_metadata_widget); |
59 | 218 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TITLE_MENUITEM_TYPE, new_title_widget); | 221 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TITLE_MENUITEM_TYPE, new_title_widget); |
62 | 219 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_SCRUB_MENUITEM_TYPE, new_scrub_bar_widget); | 222 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_SCRUB_MENUITEM_TYPE, new_scrub_bar_widget); |
61 | 220 | |||
63 | 221 | // register Key-press listening on the menu widget as the slider does not allow this. | 223 | // register Key-press listening on the menu widget as the slider does not allow this. |
64 | 222 | g_signal_connect(menu, "key-press-event", G_CALLBACK(key_press_cb), io); | 224 | g_signal_connect(menu, "key-press-event", G_CALLBACK(key_press_cb), io); |
66 | 223 | return GTK_MENU(menu); | 225 | |
67 | 226 | return GTK_MENU(menu); | ||
68 | 224 | } | 227 | } |
69 | 225 | 228 | ||
70 | 226 | static void | 229 | static void |
71 | @@ -275,19 +278,21 @@ | |||
72 | 275 | new_title_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) | 278 | new_title_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) |
73 | 276 | { | 279 | { |
74 | 277 | g_debug("indicator-sound: new_title_widget"); | 280 | g_debug("indicator-sound: new_title_widget"); |
75 | 281 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); | ||
76 | 282 | g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); | ||
77 | 283 | |||
78 | 284 | g_debug ("%s (\"%s\")", __func__, dbusmenu_menuitem_property_get(newitem, DBUSMENU_TITLE_MENUITEM_NAME)); | ||
79 | 278 | 285 | ||
80 | 279 | GtkWidget* title = NULL; | 286 | GtkWidget* title = NULL; |
81 | 280 | 287 | ||
82 | 281 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); | ||
83 | 282 | g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); | ||
84 | 283 | |||
85 | 284 | title = title_widget_new (newitem); | 288 | title = title_widget_new (newitem); |
86 | 285 | GtkMenuItem *menu_title_widget = GTK_MENU_ITEM(title); | 289 | GtkMenuItem *menu_title_widget = GTK_MENU_ITEM(title); |
87 | 286 | 290 | ||
88 | 287 | gtk_widget_show_all(title); | 291 | gtk_widget_show_all(title); |
89 | 288 | 292 | ||
92 | 289 | dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, menu_title_widget, parent); | 293 | dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), |
93 | 290 | 294 | newitem, | |
94 | 295 | menu_title_widget, parent); | ||
95 | 291 | return TRUE; | 296 | return TRUE; |
96 | 292 | } | 297 | } |
97 | 293 | 298 | ||
98 | @@ -322,29 +327,29 @@ | |||
99 | 322 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); | 327 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); |
100 | 323 | g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); | 328 | g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); |
101 | 324 | 329 | ||
103 | 325 | volume_widget = volume_widget_new (newitem); | 330 | volume_widget = volume_widget_new (newitem); |
104 | 326 | io = g_object_get_data (G_OBJECT (client), "indicator"); | 331 | io = g_object_get_data (G_OBJECT (client), "indicator"); |
105 | 327 | IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io)); | 332 | IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io)); |
106 | 328 | priv->volume_widget = volume_widget; | 333 | priv->volume_widget = volume_widget; |
107 | 329 | 334 | ||
108 | 330 | GtkWidget* ido_slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); | 335 | GtkWidget* ido_slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); |
109 | 331 | 336 | ||
111 | 332 | g_signal_connect(ido_slider_widget, "style-set", G_CALLBACK(style_changed_cb), NULL); | 337 | g_signal_connect(ido_slider_widget, "style-set", G_CALLBACK(style_changed_cb), NULL); |
112 | 333 | gtk_widget_set_sensitive(ido_slider_widget, | 338 | gtk_widget_set_sensitive(ido_slider_widget, |
113 | 334 | !initial_mute); | 339 | !initial_mute); |
114 | 335 | gtk_widget_show_all(ido_slider_widget); | 340 | gtk_widget_show_all(ido_slider_widget); |
115 | 336 | 341 | ||
117 | 337 | 342 | ||
118 | 338 | GtkMenuItem *menu_volume_item = GTK_MENU_ITEM(ido_slider_widget); | 343 | GtkMenuItem *menu_volume_item = GTK_MENU_ITEM(ido_slider_widget); |
119 | 339 | dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), | 344 | dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), |
120 | 340 | newitem, | 345 | newitem, |
121 | 341 | menu_volume_item, | 346 | menu_volume_item, |
122 | 342 | parent); | 347 | parent); |
124 | 343 | 348 | ||
125 | 344 | fetch_mute_value_from_dbus(); | 349 | fetch_mute_value_from_dbus(); |
126 | 345 | fetch_sink_availability_from_dbus(INDICATOR_SOUND (io)); | 350 | fetch_sink_availability_from_dbus(INDICATOR_SOUND (io)); |
129 | 346 | 351 | ||
130 | 347 | return TRUE; | 352 | return TRUE; |
131 | 348 | } | 353 | } |
132 | 349 | 354 | ||
133 | 350 | 355 | ||
134 | @@ -376,7 +381,7 @@ | |||
135 | 376 | dbus_g_proxy_connect_signal(sound_dbus_proxy, SIGNAL_SINK_AVAILABLE_UPDATE, G_CALLBACK(catch_signal_sink_availability_update), NULL, NULL); | 381 | dbus_g_proxy_connect_signal(sound_dbus_proxy, SIGNAL_SINK_AVAILABLE_UPDATE, G_CALLBACK(catch_signal_sink_availability_update), NULL, NULL); |
136 | 377 | 382 | ||
137 | 378 | g_return_if_fail(IS_INDICATOR_SOUND(userdata)); | 383 | g_return_if_fail(IS_INDICATOR_SOUND(userdata)); |
139 | 379 | 384 | ||
140 | 380 | } | 385 | } |
141 | 381 | } | 386 | } |
142 | 382 | return; | 387 | return; |
143 | @@ -536,7 +541,7 @@ | |||
144 | 536 | fetch_sink_availability_from_dbus(IndicatorSound* self) | 541 | fetch_sink_availability_from_dbus(IndicatorSound* self) |
145 | 537 | { | 542 | { |
146 | 538 | g_return_if_fail(IS_INDICATOR_SOUND(self)); | 543 | g_return_if_fail(IS_INDICATOR_SOUND(self)); |
148 | 539 | 544 | ||
149 | 540 | GError * error = NULL; | 545 | GError * error = NULL; |
150 | 541 | gboolean * available_input; | 546 | gboolean * available_input; |
151 | 542 | available_input = g_new0(gboolean, 1); | 547 | available_input = g_new0(gboolean, 1); |
152 | @@ -547,7 +552,7 @@ | |||
153 | 547 | g_free(available_input); | 552 | g_free(available_input); |
154 | 548 | return; | 553 | return; |
155 | 549 | } | 554 | } |
157 | 550 | 555 | ||
158 | 551 | device_available = *available_input; | 556 | device_available = *available_input; |
159 | 552 | if (device_available == FALSE) { | 557 | if (device_available == FALSE) { |
160 | 553 | update_state(STATE_SINKS_NONE); | 558 | update_state(STATE_SINKS_NONE); |
161 | @@ -555,7 +560,7 @@ | |||
162 | 555 | } | 560 | } |
163 | 556 | 561 | ||
164 | 557 | IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self); | 562 | IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self); |
166 | 558 | GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); | 563 | GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); |
167 | 559 | gtk_widget_set_sensitive(slider_widget, device_available); | 564 | gtk_widget_set_sensitive(slider_widget, device_available); |
168 | 560 | 565 | ||
169 | 561 | g_free(available_input); | 566 | g_free(available_input); |
170 | @@ -600,7 +605,7 @@ | |||
171 | 600 | /* | 605 | /* |
172 | 601 | We can be sure the service won't send a mute signal unless it has changed ! | 606 | We can be sure the service won't send a mute signal unless it has changed ! |
173 | 602 | UNMUTE's force a volume update therefore icon is updated appropriately => no need for unmute handling here. | 607 | UNMUTE's force a volume update therefore icon is updated appropriately => no need for unmute handling here. |
175 | 603 | */ | 608 | */ |
176 | 604 | static void | 609 | static void |
177 | 605 | catch_signal_sink_mute_update(DBusGProxy *proxy, gboolean mute_value, gpointer userdata) | 610 | catch_signal_sink_mute_update(DBusGProxy *proxy, gboolean mute_value, gpointer userdata) |
178 | 606 | { | 611 | { |
179 | @@ -617,7 +622,7 @@ | |||
180 | 617 | if(priv->volume_widget == NULL){ | 622 | if(priv->volume_widget == NULL){ |
181 | 618 | return; | 623 | return; |
182 | 619 | } | 624 | } |
184 | 620 | GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); | 625 | GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); |
185 | 621 | gtk_widget_set_sensitive(slider_widget, !mute_value); | 626 | gtk_widget_set_sensitive(slider_widget, !mute_value); |
186 | 622 | } | 627 | } |
187 | 623 | 628 | ||
188 | @@ -652,8 +657,8 @@ | |||
189 | 652 | if(priv->volume_widget == NULL){ | 657 | if(priv->volume_widget == NULL){ |
190 | 653 | return FALSE; | 658 | return FALSE; |
191 | 654 | } | 659 | } |
194 | 655 | 660 | ||
195 | 656 | GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); | 661 | GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); |
196 | 657 | GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget); | 662 | GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget); |
197 | 658 | GtkRange* range = (GtkRange*)slider; | 663 | GtkRange* range = (GtkRange*)slider; |
198 | 659 | gdouble current_value = gtk_range_get_value(range); | 664 | gdouble current_value = gtk_range_get_value(range); |
199 | 660 | 665 | ||
200 | === modified file 'src/mpris2-controller.vala' | |||
201 | --- src/mpris2-controller.vala 2010-09-06 20:14:15 +0000 | |||
202 | +++ src/mpris2-controller.vala 2010-09-07 20:31:00 +0000 | |||
203 | @@ -105,7 +105,7 @@ | |||
204 | 105 | if(play_v != null){ | 105 | if(play_v != null){ |
205 | 106 | string state = play_v.get_string(); | 106 | string state = play_v.get_string(); |
206 | 107 | debug("new playback state = %s", state); | 107 | debug("new playback state = %s", state); |
208 | 108 | int p = this.determine_play_state(state); | 108 | TransportMenuitem.state p = (TransportMenuitem.state)this.determine_play_state(state); |
209 | 109 | (this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(p); | 109 | (this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(p); |
210 | 110 | } | 110 | } |
211 | 111 | 111 | ||
212 | @@ -143,29 +143,29 @@ | |||
213 | 143 | } | 143 | } |
214 | 144 | 144 | ||
215 | 145 | 145 | ||
217 | 146 | private int determine_play_state(string status){ | 146 | private TransportMenuitem.state determine_play_state(string status){ |
218 | 147 | if(status == null) | 147 | if(status == null) |
220 | 148 | return 1; | 148 | return TransportMenuitem.state.PAUSED; |
221 | 149 | 149 | ||
222 | 150 | if(status != null && status == "Playing"){ | 150 | if(status != null && status == "Playing"){ |
223 | 151 | debug("determine play state - state = %s", status); | 151 | debug("determine play state - state = %s", status); |
225 | 152 | return 0; | 152 | return TransportMenuitem.state.PLAYING; |
226 | 153 | } | 153 | } |
228 | 154 | return 1; | 154 | return TransportMenuitem.state.PAUSED; |
229 | 155 | } | 155 | } |
230 | 156 | 156 | ||
231 | 157 | public void initial_update() | 157 | public void initial_update() |
232 | 158 | { | 158 | { |
234 | 159 | int32 status; | 159 | TransportMenuitem.state update; |
235 | 160 | if(this.player.PlaybackStatus == null){ | 160 | if(this.player.PlaybackStatus == null){ |
237 | 161 | status = 1; | 161 | update = TransportMenuitem.state.PAUSED; |
238 | 162 | } | 162 | } |
239 | 163 | else{ | 163 | else{ |
241 | 164 | status = determine_play_state(this.player.PlaybackStatus); | 164 | update = determine_play_state(this.player.PlaybackStatus); |
242 | 165 | } | 165 | } |
244 | 166 | debug("initial update - play state %i", status); | 166 | debug("initial update - play state %i", (int)update); |
245 | 167 | 167 | ||
247 | 168 | (this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(status); | 168 | (this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(update); |
248 | 169 | GLib.HashTable<string, Value?> cleaned_metadata = this.clean_metadata(); | 169 | GLib.HashTable<string, Value?> cleaned_metadata = this.clean_metadata(); |
249 | 170 | this.owner.custom_items[PlayerController.widget_order.METADATA].update(cleaned_metadata, | 170 | this.owner.custom_items[PlayerController.widget_order.METADATA].update(cleaned_metadata, |
250 | 171 | MetadataMenuitem.attributes_format()); | 171 | MetadataMenuitem.attributes_format()); |
251 | @@ -260,7 +260,7 @@ | |||
252 | 260 | this.mpris2_root.Raise(); | 260 | this.mpris2_root.Raise(); |
253 | 261 | } | 261 | } |
254 | 262 | catch(DBus.Error e){ | 262 | catch(DBus.Error e){ |
256 | 263 | error("Exception thrown while calling root function Raise - %s", e.message); | 263 | error("Exception thrown while calling function Raise - %s", e.message); |
257 | 264 | } | 264 | } |
258 | 265 | } | 265 | } |
259 | 266 | } | 266 | } |
260 | 267 | 267 | ||
261 | === modified file 'src/player-controller.vala' | |||
262 | --- src/player-controller.vala 2010-08-27 11:25:47 +0000 | |||
263 | +++ src/player-controller.vala 2010-09-07 20:31:00 +0000 | |||
264 | @@ -116,6 +116,8 @@ | |||
265 | 116 | update_state(PlayerController.state.OFFLINE); | 116 | update_state(PlayerController.state.OFFLINE); |
266 | 117 | this.custom_items[widget_order.TRANSPORT].reset(TransportMenuitem.attributes_format()); | 117 | this.custom_items[widget_order.TRANSPORT].reset(TransportMenuitem.attributes_format()); |
267 | 118 | this.custom_items[widget_order.METADATA].reset(MetadataMenuitem.attributes_format()); | 118 | this.custom_items[widget_order.METADATA].reset(MetadataMenuitem.attributes_format()); |
268 | 119 | TitleMenuitem title = this.custom_items[widget_order.TITLE] as TitleMenuitem; | ||
269 | 120 | title.toggle_active_triangle(false); | ||
270 | 119 | } | 121 | } |
271 | 120 | 122 | ||
272 | 121 | public void update_layout() | 123 | public void update_layout() |
273 | @@ -172,6 +174,10 @@ | |||
274 | 172 | { | 174 | { |
275 | 173 | if(this.mpris_bridge.connected() == true){ | 175 | if(this.mpris_bridge.connected() == true){ |
276 | 174 | this.update_state(state.CONNECTED); | 176 | this.update_state(state.CONNECTED); |
277 | 177 | TitleMenuitem title = this.custom_items[widget_order.TITLE] as TitleMenuitem; | ||
278 | 178 | title.toggle_active_triangle(true); | ||
279 | 179 | TransportMenuitem transport = this.custom_items[widget_order.TRANSPORT] as TransportMenuitem; | ||
280 | 180 | transport.change_play_state(TransportMenuitem.state.PAUSED); | ||
281 | 175 | } | 181 | } |
282 | 176 | else{ | 182 | else{ |
283 | 177 | this.update_state(state.DISCONNECTED); | 183 | this.update_state(state.DISCONNECTED); |
284 | 178 | 184 | ||
285 | === modified file 'src/sound-service.c' | |||
286 | --- src/sound-service.c 2010-09-07 16:57:49 +0000 | |||
287 | +++ src/sound-service.c 2010-09-07 20:31:00 +0000 | |||
288 | @@ -40,9 +40,15 @@ | |||
289 | 40 | { | 40 | { |
290 | 41 | if (mainloop != NULL) { | 41 | if (mainloop != NULL) { |
291 | 42 | g_debug("Service shutdown !"); | 42 | g_debug("Service shutdown !"); |
292 | 43 | <<<<<<< TREE | ||
293 | 43 | //TODO: uncomment for release !! | 44 | //TODO: uncomment for release !! |
294 | 44 | //close_pulse_activites(); | 45 | //close_pulse_activites(); |
295 | 45 | //g_main_loop_quit(mainloop); | 46 | //g_main_loop_quit(mainloop); |
296 | 47 | ======= | ||
297 | 48 | // TODO: uncomment for release !! | ||
298 | 49 | //close_pulse_activites(); | ||
299 | 50 | //g_main_loop_quit(mainloop); | ||
300 | 51 | >>>>>>> MERGE-SOURCE | ||
301 | 46 | } | 52 | } |
302 | 47 | return; | 53 | return; |
303 | 48 | } | 54 | } |
304 | 49 | 55 | ||
305 | === modified file 'src/title-menu-item.vala' | |||
306 | --- src/title-menu-item.vala 2010-08-17 16:26:47 +0000 | |||
307 | +++ src/title-menu-item.vala 2010-09-07 20:31:00 +0000 | |||
308 | @@ -27,6 +27,7 @@ | |||
309 | 27 | { | 27 | { |
310 | 28 | Object(item_type: MENUITEM_TYPE, owner: parent); | 28 | Object(item_type: MENUITEM_TYPE, owner: parent); |
311 | 29 | this.property_set(MENUITEM_NAME, parent.name); | 29 | this.property_set(MENUITEM_NAME, parent.name); |
312 | 30 | this.property_set_bool(MENUITEM_RUNNING, false); | ||
313 | 30 | } | 31 | } |
314 | 31 | 32 | ||
315 | 32 | public override void handle_event(string name, GLib.Value input_value, uint timestamp) | 33 | public override void handle_event(string name, GLib.Value input_value, uint timestamp) |
316 | @@ -39,7 +40,11 @@ | |||
317 | 39 | this.owner.mpris_bridge.expose(); | 40 | this.owner.mpris_bridge.expose(); |
318 | 40 | } | 41 | } |
319 | 41 | } | 42 | } |
321 | 42 | 43 | ||
322 | 44 | public void toggle_active_triangle(bool update) | ||
323 | 45 | { | ||
324 | 46 | this.property_set_bool(MENUITEM_RUNNING, update); | ||
325 | 47 | } | ||
326 | 43 | 48 | ||
327 | 44 | public static HashSet<string> attributes_format() | 49 | public static HashSet<string> attributes_format() |
328 | 45 | { | 50 | { |
329 | 46 | 51 | ||
330 | === modified file 'src/title-widget.c' | |||
331 | --- src/title-widget.c 2010-08-25 17:15:56 +0000 | |||
332 | +++ src/title-widget.c 2010-09-07 20:31:00 +0000 | |||
333 | @@ -4,16 +4,16 @@ | |||
334 | 4 | Authors: | 4 | Authors: |
335 | 5 | Conor Curran <conor.curran@canonical.com> | 5 | Conor Curran <conor.curran@canonical.com> |
336 | 6 | 6 | ||
339 | 7 | This program is free software: you can redistribute it and/or modify it | 7 | This program is free software: you can redistribute it and/or modify it |
340 | 8 | under the terms of the GNU General Public License version 3, as published | 8 | under the terms of the GNU General Public License version 3, as published |
341 | 9 | by the Free Software Foundation. | 9 | by the Free Software Foundation. |
342 | 10 | 10 | ||
346 | 11 | This program is distributed in the hope that it will be useful, but | 11 | This program is distributed in the hope that it will be useful, but |
347 | 12 | WITHOUT ANY WARRANTY; without even the implied warranties of | 12 | WITHOUT ANY WARRANTY; without even the implied warranties of |
348 | 13 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | 13 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
349 | 14 | PURPOSE. See the GNU General Public License for more details. | 14 | PURPOSE. See the GNU General Public License for more details. |
350 | 15 | 15 | ||
352 | 16 | You should have received a copy of the GNU General Public License along | 16 | You should have received a copy of the GNU General Public License along |
353 | 17 | with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | with this program. If not, see <http://www.gnu.org/licenses/>. |
354 | 18 | */ | 18 | */ |
355 | 19 | 19 | ||
356 | @@ -27,15 +27,12 @@ | |||
357 | 27 | #include <gtk/gtk.h> | 27 | #include <gtk/gtk.h> |
358 | 28 | #include <libindicator/indicator-image-helper.h> | 28 | #include <libindicator/indicator-image-helper.h> |
359 | 29 | 29 | ||
360 | 30 | |||
361 | 31 | typedef struct _TitleWidgetPrivate TitleWidgetPrivate; | ||
362 | 32 | |||
363 | 33 | struct _TitleWidgetPrivate | 30 | struct _TitleWidgetPrivate |
364 | 34 | { | 31 | { |
365 | 35 | GtkWidget* hbox; | 32 | GtkWidget* hbox; |
366 | 36 | GtkWidget* name; | 33 | GtkWidget* name; |
369 | 37 | GtkWidget* player_icon; | 34 | GtkWidget* icon; |
370 | 38 | DbusmenuMenuitem* twin_item; | 35 | DbusmenuMenuitem* twin_item; |
371 | 39 | }; | 36 | }; |
372 | 40 | 37 | ||
373 | 41 | #define TITLE_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TITLE_WIDGET_TYPE, TitleWidgetPrivate)) | 38 | #define TITLE_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TITLE_WIDGET_TYPE, TitleWidgetPrivate)) |
374 | @@ -47,17 +44,21 @@ | |||
375 | 47 | static void title_widget_finalize (GObject *object); | 44 | static void title_widget_finalize (GObject *object); |
376 | 48 | 45 | ||
377 | 49 | // keyevent consumers | 46 | // keyevent consumers |
379 | 50 | static gboolean title_widget_button_press_event (GtkWidget *menuitem, | 47 | static gboolean title_widget_button_press_event (GtkWidget *menuitem, |
380 | 51 | GdkEventButton *event); | 48 | GdkEventButton *event); |
381 | 52 | 49 | ||
382 | 53 | // Dbusmenuitem properties update callback | 50 | // Dbusmenuitem properties update callback |
384 | 54 | static void title_widget_property_update(DbusmenuMenuitem* item, gchar* property, | 51 | static void title_widget_property_update(DbusmenuMenuitem* item, gchar* property, |
385 | 55 | GValue* value, gpointer userdata); | 52 | GValue* value, gpointer userdata); |
386 | 56 | static void title_widget_set_twin_item( TitleWidget* self, | 53 | static void title_widget_set_twin_item( TitleWidget* self, |
388 | 57 | DbusmenuMenuitem* twin_item); | 54 | DbusmenuMenuitem* twin_item); |
389 | 58 | static void title_widget_style_name_text(TitleWidget* self); | 55 | static void title_widget_style_name_text(TitleWidget* self); |
390 | 59 | 56 | ||
392 | 60 | G_DEFINE_TYPE (TitleWidget, title_widget, GTK_TYPE_MENU_ITEM); | 57 | static gboolean title_widget_triangle_draw_cb (GtkWidget *widget, |
393 | 58 | GdkEventExpose *event, | ||
394 | 59 | gpointer data); | ||
395 | 60 | |||
396 | 61 | G_DEFINE_TYPE (TitleWidget, title_widget, GTK_TYPE_IMAGE_MENU_ITEM); | ||
397 | 61 | 62 | ||
398 | 62 | 63 | ||
399 | 63 | 64 | ||
400 | @@ -65,15 +66,14 @@ | |||
401 | 65 | title_widget_class_init (TitleWidgetClass *klass) | 66 | title_widget_class_init (TitleWidgetClass *klass) |
402 | 66 | { | 67 | { |
403 | 67 | GObjectClass *gobject_class = G_OBJECT_CLASS (klass); | 68 | GObjectClass *gobject_class = G_OBJECT_CLASS (klass); |
405 | 68 | GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); | 69 | GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); |
406 | 69 | 70 | ||
407 | 70 | widget_class->button_press_event = title_widget_button_press_event; | 71 | widget_class->button_press_event = title_widget_button_press_event; |
409 | 71 | 72 | ||
410 | 72 | g_type_class_add_private (klass, sizeof (TitleWidgetPrivate)); | 73 | g_type_class_add_private (klass, sizeof (TitleWidgetPrivate)); |
411 | 73 | 74 | ||
412 | 74 | gobject_class->dispose = title_widget_dispose; | 75 | gobject_class->dispose = title_widget_dispose; |
413 | 75 | gobject_class->finalize = title_widget_finalize; | 76 | gobject_class->finalize = title_widget_finalize; |
414 | 76 | |||
415 | 77 | } | 77 | } |
416 | 78 | 78 | ||
417 | 79 | static void | 79 | static void |
418 | @@ -81,15 +81,25 @@ | |||
419 | 81 | { | 81 | { |
420 | 82 | g_debug("TitleWidget::title_widget_init"); | 82 | g_debug("TitleWidget::title_widget_init"); |
421 | 83 | 83 | ||
431 | 84 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(self); | 84 | TitleWidgetPrivate *priv = self->priv = TITLE_WIDGET_GET_PRIVATE (self); |
432 | 85 | 85 | ||
433 | 86 | GtkWidget *hbox; | 86 | gint padding = 4; |
434 | 87 | 87 | gtk_widget_style_get(GTK_WIDGET(self), "horizontal-padding", &padding, NULL); | |
435 | 88 | hbox = gtk_hbox_new(FALSE, 0); | 88 | |
436 | 89 | priv->hbox = hbox; | 89 | gint width, height; |
437 | 90 | 90 | gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height); | |
438 | 91 | priv->player_icon = indicator_image_helper("sound_icon"); | 91 | |
439 | 92 | gtk_box_pack_start(GTK_BOX (priv->hbox), priv->player_icon, FALSE, FALSE, 0); | 92 | GtkWidget * icon = gtk_image_new_from_icon_name("sound_icon", GTK_ICON_SIZE_MENU); |
440 | 93 | |||
441 | 94 | gtk_widget_set_size_request(icon, width | ||
442 | 95 | + 5 /* ref triangle is 5x9 pixels */ | ||
443 | 96 | + 2 /* padding */, | ||
444 | 97 | height); | ||
445 | 98 | gtk_misc_set_alignment(GTK_MISC(icon), 1.0 /* right aligned */, 0.5); | ||
446 | 99 | gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(self), GTK_WIDGET(icon)); | ||
447 | 100 | gtk_widget_show(icon); | ||
448 | 101 | |||
449 | 102 | priv->icon = icon; | ||
450 | 93 | } | 103 | } |
451 | 94 | 104 | ||
452 | 95 | static void | 105 | static void |
453 | @@ -106,30 +116,30 @@ | |||
454 | 106 | 116 | ||
455 | 107 | /* Suppress/consume keyevents */ | 117 | /* Suppress/consume keyevents */ |
456 | 108 | static gboolean | 118 | static gboolean |
458 | 109 | title_widget_button_press_event (GtkWidget *menuitem, | 119 | title_widget_button_press_event (GtkWidget *menuitem, |
459 | 110 | GdkEventButton *event) | 120 | GdkEventButton *event) |
460 | 111 | { | 121 | { |
461 | 112 | g_debug("TitleWidget::menu_press_event"); | 122 | g_debug("TitleWidget::menu_press_event"); |
462 | 113 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(menuitem); | 123 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(menuitem); |
464 | 114 | 124 | ||
465 | 115 | GValue value = {0}; | 125 | GValue value = {0}; |
467 | 116 | g_value_init(&value, G_TYPE_BOOLEAN); | 126 | g_value_init(&value, G_TYPE_BOOLEAN); |
468 | 117 | 127 | ||
470 | 118 | g_value_set_boolean(&value, TRUE); | 128 | g_value_set_boolean(&value, TRUE); |
471 | 119 | dbusmenu_menuitem_handle_event (priv->twin_item, "Title menu event", &value, 0); | 129 | dbusmenu_menuitem_handle_event (priv->twin_item, "Title menu event", &value, 0); |
473 | 120 | 130 | ||
474 | 121 | return FALSE; | 131 | return FALSE; |
475 | 122 | } | 132 | } |
476 | 123 | 133 | ||
479 | 124 | static void | 134 | static void |
480 | 125 | title_widget_property_update(DbusmenuMenuitem* item, gchar* property, | 135 | title_widget_property_update(DbusmenuMenuitem* item, gchar* property, |
481 | 126 | GValue* value, gpointer userdata) | 136 | GValue* value, gpointer userdata) |
482 | 127 | { | 137 | { |
484 | 128 | g_return_if_fail (IS_TITLE_WIDGET (userdata)); | 138 | g_return_if_fail (IS_TITLE_WIDGET (userdata)); |
485 | 129 | TitleWidget* mitem = TITLE_WIDGET(userdata); | 139 | TitleWidget* mitem = TITLE_WIDGET(userdata); |
486 | 130 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(mitem); | 140 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(mitem); |
489 | 131 | 141 | ||
490 | 132 | if(g_ascii_strcasecmp(DBUSMENU_TITLE_MENUITEM_NAME, property) == 0){ | 142 | if(g_ascii_strcasecmp(DBUSMENU_TITLE_MENUITEM_NAME, property) == 0){ |
491 | 133 | gtk_label_set_text(GTK_LABEL(priv->name), g_value_get_string(value)); | 143 | gtk_label_set_text(GTK_LABEL(priv->name), g_value_get_string(value)); |
492 | 134 | title_widget_style_name_text(mitem); | 144 | title_widget_style_name_text(mitem); |
493 | 135 | } | 145 | } |
494 | @@ -139,42 +149,109 @@ | |||
495 | 139 | title_widget_set_twin_item(TitleWidget* self, | 149 | title_widget_set_twin_item(TitleWidget* self, |
496 | 140 | DbusmenuMenuitem* twin_item) | 150 | DbusmenuMenuitem* twin_item) |
497 | 141 | { | 151 | { |
511 | 142 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(self); | 152 | TitleWidgetPrivate *priv = self->priv; |
512 | 143 | priv->twin_item = twin_item; | 153 | |
513 | 144 | g_signal_connect(G_OBJECT(twin_item), "property-changed", | 154 | priv->twin_item = twin_item; |
514 | 145 | G_CALLBACK(title_widget_property_update), self); | 155 | |
515 | 146 | priv->name = gtk_label_new(dbusmenu_menuitem_property_get(priv->twin_item, | 156 | g_signal_connect (G_OBJECT (twin_item), |
516 | 147 | DBUSMENU_TITLE_MENUITEM_NAME)); | 157 | "property-changed", |
517 | 148 | gtk_misc_set_padding(GTK_MISC(priv->name), 10, 0); | 158 | G_CALLBACK (title_widget_property_update), |
518 | 149 | gtk_box_pack_start (GTK_BOX (priv->hbox), priv->name, FALSE, FALSE, 0); | 159 | self); |
519 | 150 | 160 | g_signal_connect_after (G_OBJECT (self), | |
520 | 151 | title_widget_style_name_text(self); | 161 | "expose_event", |
521 | 152 | 162 | G_CALLBACK (title_widget_triangle_draw_cb), | |
522 | 153 | gtk_widget_show_all (priv->hbox); | 163 | twin_item); |
523 | 154 | gtk_container_add (GTK_CONTAINER (self), priv->hbox); | 164 | |
524 | 165 | gint padding = 4; | ||
525 | 166 | gtk_widget_style_get(GTK_WIDGET(self), "horizontal-padding", &padding, NULL); | ||
526 | 167 | |||
527 | 168 | // Add the application name | ||
528 | 169 | priv->hbox = gtk_hbox_new (FALSE, 0); | ||
529 | 170 | |||
530 | 171 | priv->name = gtk_label_new(dbusmenu_menuitem_property_get(priv->twin_item, | ||
531 | 172 | DBUSMENU_TITLE_MENUITEM_NAME)); | ||
532 | 173 | gtk_misc_set_alignment (GTK_MISC (priv->name), 0.0, 0.5); | ||
533 | 174 | gtk_box_pack_start (GTK_BOX (priv->hbox), priv->name, FALSE, FALSE, padding); | ||
534 | 175 | gtk_widget_show (priv->name); | ||
535 | 176 | |||
536 | 177 | title_widget_style_name_text(self); | ||
537 | 178 | |||
538 | 179 | gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (priv->hbox)); | ||
539 | 180 | gtk_widget_show (priv->hbox); | ||
540 | 155 | } | 181 | } |
542 | 156 | 182 | ||
543 | 157 | static void | 183 | static void |
544 | 158 | title_widget_style_name_text(TitleWidget* self) | 184 | title_widget_style_name_text(TitleWidget* self) |
545 | 159 | { | 185 | { |
546 | 160 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(self); | 186 | TitleWidgetPrivate * priv = TITLE_WIDGET_GET_PRIVATE(self); |
547 | 161 | 187 | ||
548 | 162 | char* markup; | 188 | char* markup; |
549 | 189 | |||
550 | 163 | markup = g_markup_printf_escaped ("<span size=\"medium\">%s</span>", | 190 | markup = g_markup_printf_escaped ("<span size=\"medium\">%s</span>", |
551 | 164 | gtk_label_get_text(GTK_LABEL(priv->name))); | 191 | gtk_label_get_text(GTK_LABEL(priv->name))); |
552 | 165 | gtk_label_set_markup (GTK_LABEL (priv->name), markup); | 192 | gtk_label_set_markup (GTK_LABEL (priv->name), markup); |
553 | 166 | g_free(markup); | 193 | g_free(markup); |
554 | 167 | } | 194 | } |
556 | 168 | 195 | ||
557 | 196 | static gboolean | ||
558 | 197 | title_widget_triangle_draw_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data) | ||
559 | 198 | { | ||
560 | 199 | GtkStyle *style; | ||
561 | 200 | cairo_t *cr; | ||
562 | 201 | int x, y, arrow_width, arrow_height; | ||
563 | 202 | |||
564 | 203 | if (!GTK_IS_WIDGET (widget)) return FALSE; | ||
565 | 204 | if (!DBUSMENU_IS_MENUITEM (data)) return FALSE; | ||
566 | 205 | |||
567 | 206 | /* render the triangle indicator only if the application is running */ | ||
568 | 207 | if (! dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM(data), | ||
569 | 208 | DBUSMENU_TITLE_MENUITEM_RUNNING)){ | ||
570 | 209 | return FALSE; | ||
571 | 210 | } | ||
572 | 211 | |||
573 | 212 | /* get style */ | ||
574 | 213 | style = gtk_widget_get_style (widget); | ||
575 | 214 | |||
576 | 215 | /* set arrow position / dimensions */ | ||
577 | 216 | arrow_width = 5; /* the pixel-based reference triangle is 5x9 */ | ||
578 | 217 | arrow_height = 9; | ||
579 | 218 | x = widget->allocation.x; | ||
580 | 219 | y = widget->allocation.y + widget->allocation.height/2.0 - (double)arrow_height/2.0; | ||
581 | 220 | |||
582 | 221 | /* initialize cairo drawing area */ | ||
583 | 222 | cr = (cairo_t*) gdk_cairo_create (widget->window); | ||
584 | 223 | |||
585 | 224 | /* set line width */ | ||
586 | 225 | cairo_set_line_width (cr, 1.0); | ||
587 | 226 | |||
588 | 227 | /* cairo drawing code */ | ||
589 | 228 | cairo_move_to (cr, x, y); | ||
590 | 229 | cairo_line_to (cr, x, y + arrow_height); | ||
591 | 230 | cairo_line_to (cr, x + arrow_width, y + (double)arrow_height/2.0); | ||
592 | 231 | cairo_close_path (cr); | ||
593 | 232 | cairo_set_source_rgb (cr, style->fg[gtk_widget_get_state(widget)].red/65535.0, | ||
594 | 233 | style->fg[gtk_widget_get_state(widget)].green/65535.0, | ||
595 | 234 | style->fg[gtk_widget_get_state(widget)].blue/65535.0); | ||
596 | 235 | cairo_fill (cr); | ||
597 | 236 | |||
598 | 237 | /* remember to destroy cairo context to avoid leaks */ | ||
599 | 238 | cairo_destroy (cr); | ||
600 | 239 | |||
601 | 240 | return FALSE; | ||
602 | 241 | } | ||
603 | 242 | |||
604 | 169 | /** | 243 | /** |
605 | 170 | * transport_new: | 244 | * transport_new: |
606 | 171 | * @returns: a new #TitleWidget. | 245 | * @returns: a new #TitleWidget. |
607 | 172 | **/ | 246 | **/ |
609 | 173 | GtkWidget* | 247 | GtkWidget* |
610 | 174 | title_widget_new(DbusmenuMenuitem *item) | 248 | title_widget_new(DbusmenuMenuitem *item) |
611 | 175 | { | 249 | { |
613 | 176 | GtkWidget* widget = g_object_new(TITLE_WIDGET_TYPE, NULL); | 250 | GtkWidget* widget = g_object_new (TITLE_WIDGET_TYPE, |
614 | 251 | NULL); | ||
615 | 252 | gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (widget), TRUE); | ||
616 | 177 | title_widget_set_twin_item((TitleWidget*)widget, item); | 253 | title_widget_set_twin_item((TitleWidget*)widget, item); |
617 | 254 | |||
618 | 178 | return widget; | 255 | return widget; |
619 | 179 | } | 256 | } |
620 | 180 | 257 | ||
621 | 181 | 258 | ||
622 | === modified file 'src/title-widget.h' | |||
623 | --- src/title-widget.h 2010-08-06 12:20:03 +0000 | |||
624 | +++ src/title-widget.h 2010-09-07 20:31:00 +0000 | |||
625 | @@ -19,7 +19,7 @@ | |||
626 | 19 | #ifndef __TITLE_WIDGET_H__ | 19 | #ifndef __TITLE_WIDGET_H__ |
627 | 20 | #define __TITLE_WIDGET_H__ | 20 | #define __TITLE_WIDGET_H__ |
628 | 21 | 21 | ||
630 | 22 | #include <gtk/gtkmenuitem.h> | 22 | #include <gtk/gtkimagemenuitem.h> |
631 | 23 | #include <libdbusmenu-gtk/menuitem.h> | 23 | #include <libdbusmenu-gtk/menuitem.h> |
632 | 24 | 24 | ||
633 | 25 | G_BEGIN_DECLS | 25 | G_BEGIN_DECLS |
634 | @@ -31,15 +31,17 @@ | |||
635 | 31 | #define IS_TITLE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TITLE_WIDGET_TYPE)) | 31 | #define IS_TITLE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TITLE_WIDGET_TYPE)) |
636 | 32 | #define TITLE_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TITLE_WIDGET_TYPE, TitleWidgetClass)) | 32 | #define TITLE_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TITLE_WIDGET_TYPE, TitleWidgetClass)) |
637 | 33 | 33 | ||
640 | 34 | typedef struct _TitleWidget TitleWidget; | 34 | typedef struct _TitleWidget TitleWidget; |
641 | 35 | typedef struct _TitleWidgetClass TitleWidgetClass; | 35 | typedef struct _TitleWidgetClass TitleWidgetClass; |
642 | 36 | typedef struct _TitleWidgetPrivate TitleWidgetPrivate; | ||
643 | 36 | 37 | ||
644 | 37 | struct _TitleWidgetClass { | 38 | struct _TitleWidgetClass { |
646 | 38 | GtkMenuItemClass parent_class; | 39 | GtkImageMenuItemClass parent_class; |
647 | 39 | }; | 40 | }; |
648 | 40 | 41 | ||
649 | 41 | struct _TitleWidget { | 42 | struct _TitleWidget { |
651 | 42 | GtkMenuItem parent; | 43 | GtkImageMenuItem parent; |
652 | 44 | TitleWidgetPrivate *priv; | ||
653 | 43 | }; | 45 | }; |
654 | 44 | 46 | ||
655 | 45 | GType title_widget_get_type (void); | 47 | GType title_widget_get_type (void); |
656 | 46 | 48 | ||
657 | === modified file 'src/transport-menu-item.vala' | |||
658 | --- src/transport-menu-item.vala 2010-08-12 12:21:57 +0000 | |||
659 | +++ src/transport-menu-item.vala 2010-09-07 20:31:00 +0000 | |||
660 | @@ -28,6 +28,11 @@ | |||
661 | 28 | PLAY_PAUSE, | 28 | PLAY_PAUSE, |
662 | 29 | NEXT | 29 | NEXT |
663 | 30 | } | 30 | } |
664 | 31 | |||
665 | 32 | public enum state{ | ||
666 | 33 | PLAYING, | ||
667 | 34 | PAUSED | ||
668 | 35 | } | ||
669 | 31 | 36 | ||
670 | 32 | public TransportMenuitem(PlayerController parent) | 37 | public TransportMenuitem(PlayerController parent) |
671 | 33 | { | 38 | { |
672 | @@ -35,9 +40,9 @@ | |||
673 | 35 | this.property_set_int(MENUITEM_PLAY_STATE, 1); | 40 | this.property_set_int(MENUITEM_PLAY_STATE, 1); |
674 | 36 | } | 41 | } |
675 | 37 | 42 | ||
677 | 38 | public void change_play_state(int state) | 43 | public void change_play_state(state update) |
678 | 39 | { | 44 | { |
680 | 40 | this.property_set_int(MENUITEM_PLAY_STATE, state); | 45 | this.property_set_int(MENUITEM_PLAY_STATE, update); |
681 | 41 | } | 46 | } |
682 | 42 | 47 | ||
683 | 43 | public override void handle_event(string name, GLib.Value input_value, uint timestamp) | 48 | public override void handle_event(string name, GLib.Value input_value, uint timestamp) |
684 | @@ -54,4 +59,6 @@ | |||
685 | 54 | attrs.add(MENUITEM_PLAY_STATE); | 59 | attrs.add(MENUITEM_PLAY_STATE); |
686 | 55 | return attrs; | 60 | return attrs; |
687 | 56 | } | 61 | } |
688 | 62 | |||
689 | 63 | |||
690 | 57 | } | 64 | } |
691 | 58 | \ No newline at end of file | 65 | \ No newline at end of file |
692 | 59 | 66 | ||
693 | === modified file 'vapi/common-defs.vapi' | |||
694 | --- vapi/common-defs.vapi 2010-09-03 13:06:00 +0000 | |||
695 | +++ vapi/common-defs.vapi 2010-09-07 20:31:00 +0000 | |||
696 | @@ -36,6 +36,7 @@ | |||
697 | 36 | namespace DbusmenuTitle{ | 36 | namespace DbusmenuTitle{ |
698 | 37 | public const string MENUITEM_TYPE; | 37 | public const string MENUITEM_TYPE; |
699 | 38 | public const string MENUITEM_NAME; | 38 | public const string MENUITEM_NAME; |
700 | 39 | public const string MENUITEM_RUNNING; | ||
701 | 39 | } | 40 | } |
702 | 40 | 41 | ||
703 | 41 | [CCode (cheader_filename = "common-defs.h")] | 42 | [CCode (cheader_filename = "common-defs.h")] |
+1