aboutsummaryrefslogtreecommitdiff
path: root/src/track-specific-items-manager.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/track-specific-items-manager.vala')
-rw-r--r--src/track-specific-items-manager.vala51
1 files changed, 46 insertions, 5 deletions
diff --git a/src/track-specific-items-manager.vala b/src/track-specific-items-manager.vala
index 3949727..67b8bbf 100644
--- a/src/track-specific-items-manager.vala
+++ b/src/track-specific-items-manager.vala
@@ -1,6 +1,5 @@
/*
-This service primarily controls PulseAudio and is driven by the sound indicator menu on the panel.
-Copyright 2010 Canonical Ltd.
+Copyright 2011 Canonical Ltd.
Authors:
Conor Curran <conor.curran@canonical.com>
@@ -21,10 +20,52 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
using Dbusmenu;
using Gee;
-public class TrackSpecificMenuitemsManager : GLib.Object
+public class SpecificItemsManager : GLib.Object
{
- public TrackSpecificMenuitemsManager()
+ private PlayerController owner {get; set;}
+ private string dbus_path;
+ private Dbusmenu.Client client;
+ private Gee.ArrayList<Dbusmenu.MenuitemProxy> proxy_items;
+
+ public SpecificItemsManager (PlayerController controller, string path)
{
+ this.proxy_items = new ArrayList<Dbusmenu.MenuitemProxy>();
+ this.owner = controller;
+ this.dbus_path = path;
+ this.client = new Dbusmenu.Client (this.owner.dbus_name, this.dbus_path);
+ this.client.root_changed.connect (on_root_changed);
}
-}
+
+ private void on_root_changed (GLib.Object newroot)
+ {
+ Dbusmenu.Menuitem root = this.client.get_root();
+ root.child_added.connect (on_child_added);
+ root.child_removed.connect (on_child_removed);
+
+ // Fetch what children are there already.
+ GLib.List<weak void*> children = root.get_children().copy();
+
+ debug ("on_root_changed - size of children list : %i",
+ (int)children.length());
+ foreach (void* child in children) {
+ Dbusmenu.Menuitem* item = (Dbusmenu.Menuitem*)child;
+ Dbusmenu.MenuitemProxy proxy = new Dbusmenu.MenuitemProxy(*item);
+ proxy_items.add (proxy);
+ debug ("Proxy item of label = %s added to collection",
+ item->property_get (MENUITEM_PROP_LABEL));
+ this.owner.root_menu.child_add_position (proxy.menu_item,
+ this.owner.menu_offset + 3);
+ }
+ }
+
+ private void on_child_added (GLib.Object child, uint position)
+ {
+ debug ("On child added Specific root node");
+ }
+ private void on_child_removed (GLib.Object child)
+ {
+ debug ("On child removed Specific root node");
+ }
+
+}