From 8dea058491a3ca351853df4e85f6c69a4d788944 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 15:41:43 -0600 Subject: Remove the properties we just signaled --- src/media-player-user.vala | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/media-player-user.vala b/src/media-player-user.vala index 798c8c8..3a3feaf 100644 --- a/src/media-player-user.vala +++ b/src/media-player-user.vala @@ -63,6 +63,8 @@ public class MediaPlayerUser : MediaPlayer { this.notify_property(key); }); + properties_queued.remove_all(); + /* Remove source */ return false; } -- cgit v1.2.3 From 3847d2c622e3cd838bd485403c1c4378aa57a637 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 15:43:52 -0600 Subject: Debug message on property change --- src/media-player-user.vala | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/media-player-user.vala b/src/media-player-user.vala index 3a3feaf..28ec5ae 100644 --- a/src/media-player-user.vala +++ b/src/media-player-user.vala @@ -60,6 +60,7 @@ public class MediaPlayerUser : MediaPlayer { properties_timeout = 0; properties_queued.@foreach((key, value) => { + debug("Notifying '%s' changed", key); this.notify_property(key); }); -- cgit v1.2.3 From dd42fb51e44d1a1233e6a803a997af7c20b8dc56 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 16:25:09 -0600 Subject: Wait until we have data before saying that we can add the player --- src/media-player-list-greeter.vala | 14 ++++++++++++-- src/media-player-user.vala | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala index 2f1962e..101211d 100644 --- a/src/media-player-list-greeter.vala +++ b/src/media-player-list-greeter.vala @@ -73,7 +73,15 @@ public class MediaPlayerListGreeter : MediaPlayerList { } if (selected_user != null && !players.contains(selected_user)) { - players.insert(selected_user, new MediaPlayerUser(selected_user)); + var newplayer = new MediaPlayerUser(selected_user); + newplayer.notify["is-running"].connect((obj, prop) => { + MediaPlayerUser? player = obj as MediaPlayerUser; + if (player == null) return; + if (player.is_running && player.id == this.selected_user) + this.player_added(player); + }); + + players.insert(selected_user, newplayer); } if (old_user != null) { @@ -83,7 +91,9 @@ public class MediaPlayerListGreeter : MediaPlayerList { if (selected_user != null) { var new_player = players.lookup(selected_user); - player_added(new_player); + + if (new_player.is_running) + player_added(new_player); } } diff --git a/src/media-player-user.vala b/src/media-player-user.vala index 28ec5ae..a4b75c3 100644 --- a/src/media-player-user.vala +++ b/src/media-player-user.vala @@ -120,8 +120,8 @@ public class MediaPlayerUser : MediaPlayer { } }); - /* Update all of them -- we've got a proxy! */ - queue_property_notification("Timestamp"); + debug("Notifying player is ready for user: %s", this.username); + this.notify_property("is-running"); } catch (Error e) { this.proxy = null; warning("Unable to get proxy to user '%s' sound settings: %s", username, e.message); -- cgit v1.2.3 From 386d973866817541a904198865d49ec040d4755d Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 16:42:24 -0600 Subject: Use the standard code for only showing ready players --- src/media-player-list-greeter.vala | 12 ++---------- src/service.vala | 2 +- 2 files changed, 3 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala index 101211d..541fe3e 100644 --- a/src/media-player-list-greeter.vala +++ b/src/media-player-list-greeter.vala @@ -73,15 +73,7 @@ public class MediaPlayerListGreeter : MediaPlayerList { } if (selected_user != null && !players.contains(selected_user)) { - var newplayer = new MediaPlayerUser(selected_user); - newplayer.notify["is-running"].connect((obj, prop) => { - MediaPlayerUser? player = obj as MediaPlayerUser; - if (player == null) return; - if (player.is_running && player.id == this.selected_user) - this.player_added(player); - }); - - players.insert(selected_user, newplayer); + players.insert(selected_user, new MediaPlayerUser(selected_user)); } if (old_user != null) { @@ -92,7 +84,7 @@ public class MediaPlayerListGreeter : MediaPlayerList { if (selected_user != null) { var new_player = players.lookup(selected_user); - if (new_player.is_running) + if (new_player != null) player_added(new_player); } } diff --git a/src/service.vala b/src/service.vala index be0164d..f1a002f 100644 --- a/src/service.vala +++ b/src/service.vala @@ -35,7 +35,7 @@ public class IndicatorSound.Service: Object { this.actions.add_action (this.create_mic_volume_action ()); this.menus = new HashTable (str_hash, str_equal); - this.menus.insert ("desktop_greeter", new SoundMenu (null, SoundMenu.DisplayFlags.SHOW_MUTE)); + this.menus.insert ("desktop_greeter", new SoundMenu (null, SoundMenu.DisplayFlags.SHOW_MUTE | SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS)); this.menus.insert ("desktop", new SoundMenu ("indicator.desktop-settings", SoundMenu.DisplayFlags.SHOW_MUTE)); this.menus.insert ("phone", new SoundMenu ("indicator.phone-settings", SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS)); -- cgit v1.2.3 From 5a9752b71c90d82342dff8138b25f6af2dcb6b28 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 17:01:11 -0600 Subject: Some debugging information --- src/sound-menu.vala | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 480e1cf..62f510d 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -123,16 +123,20 @@ class SoundMenu: Object /* returns the position in this.menu of the section that's associated with @player */ int find_player_section (MediaPlayer player) { + debug("Looking for player: %s", player.id); string action_name = @"indicator.$(player.id)"; int n = this.menu.get_n_items () -1; for (int i = 1; i < n; i++) { var section = this.menu.get_item_link (i, Menu.LINK_SECTION); + if (section == null) continue; + string action; section.get_item_attribute (0, "action", "s", out action); if (action == action_name) return i; } + debug("Unable to find section for player: %s", player.id); return -1; } @@ -140,6 +144,8 @@ class SoundMenu: Object var section = new Menu (); Icon icon; + debug("Adding section for player: %s", player.id); + icon = player.icon; if (icon == null) icon = new ThemedIcon.with_default_fallbacks ("application-default-icon"); -- cgit v1.2.3 From db8f59aa75d57bed2dd74c40507d6db2481b5b0c Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 17:08:50 -0600 Subject: More debugging --- src/media-player-list-greeter.vala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala index 541fe3e..6dd5eb9 100644 --- a/src/media-player-list-greeter.vala +++ b/src/media-player-list-greeter.vala @@ -78,14 +78,17 @@ public class MediaPlayerListGreeter : MediaPlayerList { if (old_user != null) { var old_player = players.lookup(old_user); + debug("Removing player for user: %s", old_user); player_removed(old_player); } if (selected_user != null) { var new_player = players.lookup(selected_user); - if (new_player != null) + if (new_player != null) { + debug("Adding player for user: %s", selected_user); player_added(new_player); + } } } -- cgit v1.2.3 From 4d6c4f5a4c6bcb16843b936175988261f2699688 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 17:08:59 -0600 Subject: Block the guest account --- src/media-player-list-greeter.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala index 6dd5eb9..5acfe16 100644 --- a/src/media-player-list-greeter.vala +++ b/src/media-player-list-greeter.vala @@ -66,7 +66,7 @@ public class MediaPlayerListGreeter : MediaPlayerList { var old_user = selected_user; /* Protect against a null user */ - if (active_user != "") { + if (active_user != "" && active_user != "*guest") { selected_user = active_user; } else { selected_user = null; -- cgit v1.2.3 From 3664e8f90eabc8ca2b1b7752f9faf56a9d6664d6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 21:05:12 -0600 Subject: Restructuring to ensure we're doing what we want on an update --- src/sound-menu.vala | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 62f510d..edb72d1 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -95,12 +95,11 @@ class SoundMenu: Object this.update_playlists (player); var handler_id = player.notify["is-running"].connect ( () => { - if (this.hide_inactive) { - if (player.is_running) + if (player.is_running || !this.hide_inactive) + if (this.find_player_section(player) == -1) this.insert_player_section (player); - else - this.remove_player_section (player); - } + else + this.remove_player_section (player); this.update_playlists (player); }); this.notify_handlers.insert (player, handler_id); -- cgit v1.2.3 From d67a230f9271bdc43441868cfa0012309a7c8967 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 21:06:18 -0600 Subject: The running state could also be effect the is-running variable --- src/media-player-user.vala | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/media-player-user.vala b/src/media-player-user.vala index a4b75c3..37f54a9 100644 --- a/src/media-player-user.vala +++ b/src/media-player-user.vala @@ -82,6 +82,7 @@ public class MediaPlayerUser : MediaPlayer { properties_queued.insert("icon", true); properties_queued.insert("state", true); properties_queued.insert("current-track", true); + properties_queued.insert("is-running", true); break; case "PlayerName": properties_queued.insert("name", true); -- cgit v1.2.3 From 37b28dc5427415f3fc69b1c6a2229301314e59ed Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 21:27:08 -0600 Subject: Reshuffle the status of the players --- src/sound-menu.vala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index edb72d1..6d36731 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -95,11 +95,13 @@ class SoundMenu: Object this.update_playlists (player); var handler_id = player.notify["is-running"].connect ( () => { - if (player.is_running || !this.hide_inactive) + if (player.is_running) if (this.find_player_section(player) == -1) this.insert_player_section (player); else - this.remove_player_section (player); + if (this.hide_inactive) + this.remove_player_section (player); + this.update_playlists (player); }); this.notify_handlers.insert (player, handler_id); -- cgit v1.2.3 From 8b43adebc047ac432f38296eec2e9b2dd7a5f051 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 21:47:44 -0600 Subject: When removing disconnect as well --- src/sound-menu.vala | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 6d36731..701930e 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -111,7 +111,12 @@ class SoundMenu: Object public void remove_player (MediaPlayer player) { this.remove_player_section (player); - this.notify_handlers.remove (player); + + var id = this.notify_handlers.lookup(player); + if (id != 0) { + player.disconnect(id); + this.notify_handlers.remove (player); + } } Menu root; -- cgit v1.2.3 From 76d1861936ae2a7acb8291321bb1c86bb96f064e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 28 Feb 2014 21:49:20 -0600 Subject: Drop a connection to playlist event as well --- src/sound-menu.vala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 701930e..2df1a52 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -115,8 +115,12 @@ class SoundMenu: Object var id = this.notify_handlers.lookup(player); if (id != 0) { player.disconnect(id); - this.notify_handlers.remove (player); } + + player.playlists_changed.disconnect (this.update_playlists); + + /* this'll drop our ref to it */ + this.notify_handlers.remove (player); } Menu root; -- cgit v1.2.3 From 3c07d07d3ce971d9abcc19ab58429353384cbeb4 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sun, 2 Mar 2014 20:05:00 -0600 Subject: Disconnect notify when removing the player --- src/service.vala | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/service.vala b/src/service.vala index f1a002f..490e242 100644 --- a/src/service.vala +++ b/src/service.vala @@ -401,6 +401,8 @@ public class IndicatorSound.Service: Object { this.actions.remove_action ("previous." + player.id); this.actions.remove_action ("play-playlist." + player.id); + player.notify.disconnect (this.eventually_update_player_actions); + this.menus.@foreach ( (profile, menu) => menu.remove_player (player)); this.update_preferred_players (); -- cgit v1.2.3 From bb6dabf8052f9f9f5ed57a0a73ab4be29d9da020 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sun, 2 Mar 2014 20:23:30 -0600 Subject: Making it so that we can raise the player, which should make it enabled --- src/media-player-user.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/media-player-user.vala b/src/media-player-user.vala index 37f54a9..dfe6229 100644 --- a/src/media-player-user.vala +++ b/src/media-player-user.vala @@ -188,7 +188,7 @@ public class MediaPlayerUser : MediaPlayer { /* If it's shown externally it's running */ public override bool is_running { get { return proxy_is_valid(); } } /* A bit weird. Not sure how we should handle this. */ - public override bool can_raise { get { return false; } } + public override bool can_raise { get { return true; } } /* Fill out the track based on the values in the proxy */ MediaPlayer.Track track_cache; -- cgit v1.2.3 From 0d6e0d7dc3c4213cb6fc265b427b8d871fc45bf4 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sun, 2 Mar 2014 20:36:40 -0600 Subject: Make enabled work the same was when the properties get updated --- src/service.vala | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/service.vala b/src/service.vala index 490e242..a35d465 100644 --- a/src/service.vala +++ b/src/service.vala @@ -366,6 +366,7 @@ public class IndicatorSound.Service: Object { this.menus.@foreach ( (profile, menu) => menu.add_player (player)); SimpleAction action = new SimpleAction.stateful (player.id, null, this.action_state_for_player (player)); + action.set_enabled (player.can_raise); action.activate.connect ( () => { player.activate (); }); this.actions.add_action (action); -- cgit v1.2.3 From c046c8f4bf047668341745a0d573a2b9ce4f1964 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sun, 2 Mar 2014 20:39:27 -0600 Subject: Use the detail to make this a little cleaner --- src/service.vala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/service.vala b/src/service.vala index a35d465..075c6df 100644 --- a/src/service.vala +++ b/src/service.vala @@ -373,9 +373,8 @@ public class IndicatorSound.Service: Object { var play_action = new SimpleAction.stateful ("play." + player.id, null, player.state); play_action.activate.connect ( () => player.play_pause () ); this.actions.add_action (play_action); - player.notify.connect ( (object, pspec) => { - if (pspec.name == "state") - play_action.set_state (player.state); + player.notify["state"].connect ( (object, pspec) => { + play_action.set_state (player.state); }); var next_action = new SimpleAction ("next." + player.id, null); -- cgit v1.2.3 From a78e8bd5d95b4da3d6ae70d4fd280f61adee6fef Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sun, 2 Mar 2014 21:38:36 -0600 Subject: More debug information --- src/sound-menu.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 2df1a52..4b33543 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -154,7 +154,7 @@ class SoundMenu: Object var section = new Menu (); Icon icon; - debug("Adding section for player: %s", player.id); + debug("Adding section for player: %s (%s)", player.id, player.is_running ? "running" : "not running"); icon = player.icon; if (icon == null) -- cgit v1.2.3 From 778db7d1a428bbdbaa17ca271da76ddeb3ee978a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Mar 2014 09:02:59 -0600 Subject: Sound menu doesn't need MPRIS, that's all in the player --- src/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 436a154..f2c6cec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -95,7 +95,6 @@ vala_add(indicator-sound-service sound-menu.vala DEPENDS media-player - mpris2-interfaces ) vala_add(indicator-sound-service accounts-service-user.vala -- cgit v1.2.3 From e2e27b5e147d08e150eefd9d64dcb504594f86b8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Mar 2014 10:43:31 -0600 Subject: Setting up a basic sound menu test --- src/sound-menu.vala | 2 +- tests/CMakeLists.txt | 17 +++++++++++++++++ tests/sound-menu-test.cc | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 tests/sound-menu-test.cc (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 4b33543..74da887 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -17,7 +17,7 @@ * Lars Uebernickel */ -class SoundMenu: Object +public class SoundMenu: Object { public enum DisplayFlags { NONE = 0, diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1556fc7..0247998 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -114,3 +114,20 @@ add_test(accounts-service-user-test-basic add_test(accounts-service-user-test-player accounts-service-user-test --gtest_filter=AccountsServiceUserTest.SetMediaPlayer ) + +########################### +# Accounts Service User +########################### + +include_directories(${CMAKE_SOURCE_DIR}/src) +add_executable (sound-menu-test sound-menu-test.cc) +target_link_libraries ( + sound-menu-test + indicator-sound-service-lib + vala-mocks-lib + gtest + ${SOUNDSERVICE_LIBRARIES} + ${TEST_LIBRARIES} +) + +add_test(sound-menu-test sound-menu-test) diff --git a/tests/sound-menu-test.cc b/tests/sound-menu-test.cc new file mode 100644 index 0000000..199391c --- /dev/null +++ b/tests/sound-menu-test.cc @@ -0,0 +1,49 @@ +/* + * Copyright © 2014 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Authors: + * Ted Gould + */ + +#include +#include + +extern "C" { +#include "indicator-sound-service.h" +#include "vala-mocks.h" +} + +class SoundMenuTest : public ::testing::Test +{ + protected: + GTestDBus * bus = nullptr; + + virtual void SetUp() { + bus = g_test_dbus_new(G_TEST_DBUS_NONE); + g_test_dbus_up(bus); + } + + virtual void TearDown() { + g_test_dbus_down(bus); + g_clear_object(&bus); + } +}; + +TEST_F(SoundMenuTest, BasicObject) { + SoundMenu * menu = sound_menu_new (nullptr, SOUND_MENU_DISPLAY_FLAGS_NONE); + + g_clear_object(&menu); + return; +} -- cgit v1.2.3 From cc8600927594dcdfcba74813788d90c999156468 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Mar 2014 11:11:32 -0600 Subject: Test the number of entries in the menu --- src/sound-menu.vala | 4 ++-- tests/sound-menu-test.cc | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 74da887..8c087bc 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -123,8 +123,8 @@ public class SoundMenu: Object this.notify_handlers.remove (player); } - Menu root; - Menu menu; + public Menu root; + public Menu menu; Menu volume_section; bool mic_volume_shown; bool settings_shown = false; diff --git a/tests/sound-menu-test.cc b/tests/sound-menu-test.cc index 4d28c4a..5d18d08 100644 --- a/tests/sound-menu-test.cc +++ b/tests/sound-menu-test.cc @@ -44,6 +44,8 @@ class SoundMenuTest : public ::testing::Test TEST_F(SoundMenuTest, BasicObject) { SoundMenu * menu = sound_menu_new (nullptr, SOUND_MENU_DISPLAY_FLAGS_NONE); + ASSERT_NE(nullptr, menu); + g_clear_object(&menu); return; } @@ -67,11 +69,12 @@ TEST_F(SoundMenuTest, AddRemovePlayer) { sound_menu_add_player(menu, MEDIA_PLAYER(media)); - /* TODO: Verify */ + ASSERT_NE(nullptr, menu->menu); + EXPECT_EQ(2, g_menu_model_get_n_items(G_MENU_MODEL(menu->menu))); sound_menu_remove_player(menu, MEDIA_PLAYER(media)); - /* TODO: Verify */ + EXPECT_EQ(1, g_menu_model_get_n_items(G_MENU_MODEL(menu->menu))); g_clear_object(&media); g_clear_object(&menu); -- cgit v1.2.3 From 621efbb8d9728da645aa1c9aeac6068f395c8dc2 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Mar 2014 11:34:58 -0600 Subject: Check all the menu items, that way we don't have to handle all the exceptions --- src/sound-menu.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/sound-menu.vala b/src/sound-menu.vala index 8c087bc..e4b8ad1 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -135,8 +135,8 @@ public class SoundMenu: Object int find_player_section (MediaPlayer player) { debug("Looking for player: %s", player.id); string action_name = @"indicator.$(player.id)"; - int n = this.menu.get_n_items () -1; - for (int i = 1; i < n; i++) { + int n = this.menu.get_n_items (); + for (int i = 0; i < n; i++) { var section = this.menu.get_item_link (i, Menu.LINK_SECTION); if (section == null) continue; -- cgit v1.2.3 From b26ca3dc5f4aa49584b402d98cfea976f0966eb9 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Mar 2014 12:46:48 -0600 Subject: Blocking all '*' users --- src/media-player-list-greeter.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala index 5acfe16..33bf1d6 100644 --- a/src/media-player-list-greeter.vala +++ b/src/media-player-list-greeter.vala @@ -66,7 +66,7 @@ public class MediaPlayerListGreeter : MediaPlayerList { var old_user = selected_user; /* Protect against a null user */ - if (active_user != "" && active_user != "*guest") { + if (active_user != "" && active_user[0] != '*') { selected_user = active_user; } else { selected_user = null; -- cgit v1.2.3 From 72e697f81e37c2fb5a08cf037ca550d7650bf827 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Mar 2014 12:48:00 -0600 Subject: Print a debug message when the active user changes --- src/media-player-list-greeter.vala | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala index 33bf1d6..fce3266 100644 --- a/src/media-player-list-greeter.vala +++ b/src/media-player-list-greeter.vala @@ -63,6 +63,8 @@ public class MediaPlayerListGreeter : MediaPlayerList { return; } + debug(@"Active user changed to: $active_user"); + var old_user = selected_user; /* Protect against a null user */ -- cgit v1.2.3 From aaabe3c2c523f07e2d9e7ac1b549a53bbfdd0ef1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Mar 2014 13:28:24 -0600 Subject: Debug message for the blocked user --- src/media-player-list-greeter.vala | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala index fce3266..15e4c55 100644 --- a/src/media-player-list-greeter.vala +++ b/src/media-player-list-greeter.vala @@ -71,6 +71,7 @@ public class MediaPlayerListGreeter : MediaPlayerList { if (active_user != "" && active_user[0] != '*') { selected_user = active_user; } else { + debug(@"Blocking active user change for '$active_user'"); selected_user = null; } -- cgit v1.2.3 From 8c23ea52648f4555403acf42a096e83853ff7e08 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 4 Mar 2014 15:29:57 -0600 Subject: Make it so the desktop greeter doesn't have any players on it --- src/service.vala | 2 +- src/sound-menu.vala | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/service.vala b/src/service.vala index 075c6df..b4dae65 100644 --- a/src/service.vala +++ b/src/service.vala @@ -35,7 +35,7 @@ public class IndicatorSound.Service: Object { this.actions.add_action (this.create_mic_volume_action ()); this.menus = new HashTable (str_hash, str_equal); - this.menus.insert ("desktop_greeter", new SoundMenu (null, SoundMenu.DisplayFlags.SHOW_MUTE | SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS)); + this.menus.insert ("desktop_greeter", new SoundMenu (null, SoundMenu.DisplayFlags.SHOW_MUTE | SoundMenu.DisplayFlags.DONT_SHOW_PLAYERS)); this.menus.insert ("desktop", new SoundMenu ("indicator.desktop-settings", SoundMenu.DisplayFlags.SHOW_MUTE)); this.menus.insert ("phone", new SoundMenu ("indicator.phone-settings", SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS)); diff --git a/src/sound-menu.vala b/src/sound-menu.vala index e4b8ad1..ebb7632 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -22,7 +22,8 @@ public class SoundMenu: Object public enum DisplayFlags { NONE = 0, SHOW_MUTE = 1, - HIDE_INACTIVE_PLAYERS = 2 + HIDE_INACTIVE_PLAYERS = 2, + DONT_SHOW_PLAYERS = 4 } public SoundMenu (string? settings_action, DisplayFlags flags) { @@ -31,6 +32,8 @@ public class SoundMenu: Object * it has a dynamic amount of player sections, one for each registered player. */ + this.no_players = ((flags & DisplayFlags.DONT_SHOW_PLAYERS) != 0); + this.volume_section = new Menu (); if ((flags & DisplayFlags.SHOW_MUTE) != 0) volume_section.append (_("Mute"), "indicator.mute"); @@ -87,6 +90,8 @@ public class SoundMenu: Object } public void add_player (MediaPlayer player) { + if (this.no_players) + return; if (this.notify_handlers.contains (player)) return; @@ -129,6 +134,7 @@ public class SoundMenu: Object bool mic_volume_shown; bool settings_shown = false; bool hide_inactive; + bool no_players; HashTable notify_handlers; /* returns the position in this.menu of the section that's associated with @player */ -- cgit v1.2.3 From e9f0b68ab8b9afec9466011b8a8bae3b202b4bf9 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 4 Mar 2014 15:38:07 -0600 Subject: Adding a specific phone_greeter profile --- data/com.canonical.indicator.sound | 2 +- src/service.vala | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/data/com.canonical.indicator.sound b/data/com.canonical.indicator.sound index ae5fd5d..7d9ab41 100644 --- a/data/com.canonical.indicator.sound +++ b/data/com.canonical.indicator.sound @@ -16,5 +16,5 @@ ObjectPath=/com/canonical/indicator/sound/desktop_greeter ObjectPath=/com/canonical/indicator/sound/desktop_greeter [phone_greeter] -ObjectPath=/com/canonical/indicator/sound/desktop_greeter +ObjectPath=/com/canonical/indicator/sound/phone_greeter diff --git a/src/service.vala b/src/service.vala index b4dae65..ca00caa 100644 --- a/src/service.vala +++ b/src/service.vala @@ -36,6 +36,7 @@ public class IndicatorSound.Service: Object { this.menus = new HashTable (str_hash, str_equal); this.menus.insert ("desktop_greeter", new SoundMenu (null, SoundMenu.DisplayFlags.SHOW_MUTE | SoundMenu.DisplayFlags.DONT_SHOW_PLAYERS)); + this.menus.insert ("phone_greeter", new SoundMenu (null, SoundMenu.DisplayFlags.SHOW_MUTE | SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS)); this.menus.insert ("desktop", new SoundMenu ("indicator.desktop-settings", SoundMenu.DisplayFlags.SHOW_MUTE)); this.menus.insert ("phone", new SoundMenu ("indicator.phone-settings", SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS)); -- cgit v1.2.3