From 9d49288df789fb210217c9715634cdbe78a64337 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 6 Oct 2010 18:39:39 +0100 Subject: reorchestrating registration to handle translations --- src/music-player-bridge.vala | 89 +++++++++++++++++++++----------------------- src/sound-service.c | 4 +- 2 files changed, 45 insertions(+), 48 deletions(-) diff --git a/src/music-player-bridge.vala b/src/music-player-bridge.vala index 61dfa2e..2cdb39b 100644 --- a/src/music-player-bridge.vala +++ b/src/music-player-bridge.vala @@ -99,42 +99,58 @@ public class MusicPlayerBridge : GLib.Object { debug("MusicPlayerBridge -> on_server_added with value %s", type); if(server_is_not_of_interest(type)) return; - string client_name = type.split(".")[1]; - if (root_menu != null && client_name != null){ - // If we have an instance already for this player, ensure it is switched to active - if(this.registered_clients.keys.contains(client_name)){ - debug("It figured out that it already has an instance for this player already"); - this.registered_clients[client_name].update_state(PlayerController.state.READY); - this.registered_clients[client_name].activate(); - } - else{ - //else init a new one - PlayerController ctrl = new PlayerController(root_menu, - client_name, - calculate_menu_position(), - PlayerController.state.READY); - registered_clients.set(client_name, ctrl); - debug("New Client of name %s has successfully registered with us", client_name); - } - // irregardless check that it has a desktop file if not kick off a request for it - if(this.registered_clients[client_name].app_info == null){ - listener_get_server_property_cb cb = (listener_get_server_property_cb)desktop_info_callback; - this.listener.server_get_desktop(object, cb, this); - } + if ( this.root_menu != null ){ + listener_get_server_property_cb cb = (listener_get_server_property_cb)desktop_info_callback_on_addition; + this.listener.server_get_desktop(object, cb, this); } } + private void desktop_info_callback_on_addition ( Indicate.ListenerServer server, + owned string path, + void* data ) + { + MusicPlayerBridge bridge = data as MusicPlayerBridge; + AppInfo? app_info = create_app_info(path); + var name = truncate_player_name(app_info.get_name()); + if(path.contains("/") && bridge.playersDB.already_familiar(path) == false){ + debug("About to store desktop file path: %s", path); + bridge.playersDB.insert(path); + PlayerController ctrl = new PlayerController(bridge.root_menu, + name, + bridge.calculate_menu_position(), + PlayerController.state.READY); + ctrl.set("app_info", app_info); + bridge.registered_clients.set(name, ctrl); + debug("successfully created appinfo and instance from path and set it on the respective instance"); + } + else{ + bridge.registered_clients[name].update_state(PlayerController.state.READY); + bridge.registered_clients[name].activate(); + debug("Ignoring desktop file path callback because the db cache file has it already: %s", path); + } + } + public void on_server_removed(Indicate.ListenerServer object, string type) { debug("MusicPlayerBridge -> on_server_removed with value %s", type); if(server_is_not_of_interest(type)) return; - string client_name = type.split(".")[1]; - if (root_menu != null && client_name != null){ - registered_clients[client_name].hibernate(); - debug("Successively offlined client %s", client_name); + if (root_menu != null){ + listener_get_server_property_cb cb = (listener_get_server_property_cb)desktop_info_callback_on_removal; + this.listener.server_get_desktop(object, cb, this); } } - + + private void desktop_info_callback_on_removal ( Indicate.ListenerServer server, + owned string path, + void* data ) + { + MusicPlayerBridge bridge = data as MusicPlayerBridge; + AppInfo? app_info = create_app_info(path); + var name = truncate_player_name(app_info.get_name()); + registered_clients[name].hibernate(); + debug("Successively offlined client %s", name); + } + private bool server_is_not_of_interest(string type){ if (type == null) return true; if (type.contains("music") == false) { @@ -144,25 +160,6 @@ public class MusicPlayerBridge : GLib.Object return false; } - private void desktop_info_callback(Indicate.ListenerServer server, - owned string path, void* data) - { - MusicPlayerBridge bridge = data as MusicPlayerBridge; - if(path.contains("/") && bridge.playersDB.already_familiar(path) == false){ - debug("About to store desktop file path: %s", path); - bridge.playersDB.insert(path); - AppInfo? app_info = create_app_info(path); - if(app_info != null){ - PlayerController ctrl = bridge.registered_clients[app_info.get_name().down().strip()]; - ctrl.set("app_info", app_info); - debug("successfully created appinfo from path and set it on the respective instance"); - } - } - else{ - debug("Ignoring desktop file path because its either invalid of the db cache file has it already: %s", path); - } - } - public void set_root_menu_item(Dbusmenu.Menuitem menu) { this.root_menu = menu; diff --git a/src/sound-service.c b/src/sound-service.c index f19379d..51f5f37 100644 --- a/src/sound-service.c +++ b/src/sound-service.c @@ -41,8 +41,8 @@ service_shutdown (IndicatorService *service, gpointer user_data) if (mainloop != NULL) { g_debug("Service shutdown !"); //TODO: uncomment for release !! - close_pulse_activites(); - g_main_loop_quit(mainloop); + //close_pulse_activites(); + //g_main_loop_quit(mainloop); } return; } -- cgit v1.2.3 From cd0e255c3205477cbf002c5a060ee37e67236fd8 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 7 Oct 2010 11:59:41 +0100 Subject: bug fixed --- src/music-player-bridge.vala | 77 +++++++++++++++++--------------------------- src/player-controller.vala | 4 +-- 2 files changed, 32 insertions(+), 49 deletions(-) diff --git a/src/music-player-bridge.vala b/src/music-player-bridge.vala index 2cdb39b..aad6e47 100644 --- a/src/music-player-bridge.vala +++ b/src/music-player-bridge.vala @@ -35,12 +35,8 @@ public class MusicPlayerBridge : GLib.Object playersDB = new FamiliarPlayersDB(); registered_clients = new HashMap (); listener = Listener.ref_default(); - listener.indicator_added += on_indicator_added; - listener.indicator_removed.connect(on_indicator_removed); - listener.indicator_modified.connect(on_indicator_modified); listener.server_added.connect(on_server_added); listener.server_removed.connect(on_server_removed); - listener.server_count_changed.connect(on_server_count_changed); } private void try_to_add_inactive_familiar_clients(){ @@ -53,13 +49,13 @@ public class MusicPlayerBridge : GLib.Object debug("attempting to make an app info from %s", app); DesktopAppInfo info = new DesktopAppInfo.from_filename(app); - if(info == null){ + + if(info == null){ warning("Could not create a desktopappinfo instance from app: %s", app); continue; } + GLib.AppInfo app_info = info as GLib.AppInfo; - // TODO refactor to remove need for further name refactoring in the player controller - // truncate should not do a down() on the name PlayerController ctrl = new PlayerController(this.root_menu, truncate_player_name(app_info.get_name()), calculate_menu_position(), @@ -67,8 +63,7 @@ public class MusicPlayerBridge : GLib.Object ctrl.app_info = app_info; if(ctrl.app_info == null) warning("for some reason the app info is null"); - - this.registered_clients.set(truncate_player_name(app_info.get_name()), ctrl); + this.registered_clients.set(determine_key(app), ctrl); } } @@ -85,6 +80,20 @@ public class MusicPlayerBridge : GLib.Object return result; } + private static string? determine_key(string path) + { + var tokens = path.split("/"); + if ( tokens.length < 2) return null; + var filename = tokens[tokens.length - 1]; + var result = filename.split(".")[0]; + var temp = result.split("-"); + if (temp.length > 1){ + result = temp[0]; + } + debug("determine key result = %s", result); + return result; + } + private int calculate_menu_position() { if(this.registered_clients.size == 0){ @@ -100,12 +109,12 @@ public class MusicPlayerBridge : GLib.Object debug("MusicPlayerBridge -> on_server_added with value %s", type); if(server_is_not_of_interest(type)) return; if ( this.root_menu != null ){ - listener_get_server_property_cb cb = (listener_get_server_property_cb)desktop_info_callback_on_addition; + listener_get_server_property_cb cb = (listener_get_server_property_cb)desktop_info_callback; this.listener.server_get_desktop(object, cb, this); } } - private void desktop_info_callback_on_addition ( Indicate.ListenerServer server, + private void desktop_info_callback ( Indicate.ListenerServer server, owned string path, void* data ) { @@ -120,12 +129,13 @@ public class MusicPlayerBridge : GLib.Object bridge.calculate_menu_position(), PlayerController.state.READY); ctrl.set("app_info", app_info); - bridge.registered_clients.set(name, ctrl); + bridge.registered_clients.set(determine_key(path), ctrl); debug("successfully created appinfo and instance from path and set it on the respective instance"); } else{ - bridge.registered_clients[name].update_state(PlayerController.state.READY); - bridge.registered_clients[name].activate(); + var key = determine_key(path); + bridge.registered_clients[key].update_state(PlayerController.state.READY); + bridge.registered_clients[key].activate(); debug("Ignoring desktop file path callback because the db cache file has it already: %s", path); } } @@ -135,21 +145,14 @@ public class MusicPlayerBridge : GLib.Object debug("MusicPlayerBridge -> on_server_removed with value %s", type); if(server_is_not_of_interest(type)) return; if (root_menu != null){ - listener_get_server_property_cb cb = (listener_get_server_property_cb)desktop_info_callback_on_removal; - this.listener.server_get_desktop(object, cb, this); + var tmp = type.split("."); + debug("attempt to remove %s", tmp[tmp.length-1]); + if(tmp.length > 0){ + registered_clients[tmp[tmp.length - 1]].hibernate(); + debug("Successively offlined client %s", tmp[tmp.length - 1]); + } } } - - private void desktop_info_callback_on_removal ( Indicate.ListenerServer server, - owned string path, - void* data ) - { - MusicPlayerBridge bridge = data as MusicPlayerBridge; - AppInfo? app_info = create_app_info(path); - var name = truncate_player_name(app_info.get_name()); - registered_clients[name].hibernate(); - debug("Successively offlined client %s", name); - } private bool server_is_not_of_interest(string type){ if (type == null) return true; @@ -166,25 +169,6 @@ public class MusicPlayerBridge : GLib.Object try_to_add_inactive_familiar_clients(); } - public void on_server_count_changed(Indicate.ListenerServer object, uint i) - { - debug("MusicPlayerBridge-> on_server_count_changed with value %u", i); - } - public void on_indicator_added(ListenerServer object, ListenerIndicator p0) - { - debug("MusicPlayerBridge-> on_indicator_added"); - } - - public void on_indicator_removed(Indicate.ListenerServer object, Indicate.ListenerIndicator p0) - { - debug("MusicPlayerBridge -> on_indicator_removed"); - } - - public void on_indicator_modified(Indicate.ListenerServer object, Indicate.ListenerIndicator p0, string s) - { - debug("MusicPlayerBridge -> indicator_modified with vale %s", s ); - } - public static AppInfo? create_app_info(string path) { DesktopAppInfo info = new DesktopAppInfo.from_filename(path); @@ -195,7 +179,6 @@ public class MusicPlayerBridge : GLib.Object GLib.AppInfo app_info = info as GLib.AppInfo; return app_info; } - } diff --git a/src/player-controller.vala b/src/player-controller.vala index f5ec205..d5b79e7 100644 --- a/src/player-controller.vala +++ b/src/player-controller.vala @@ -160,8 +160,8 @@ public class PlayerController : GLib.Object private static string format_client_name(string client_name) { string formatted = client_name; - if(formatted.len() > 1){ - formatted = client_name.up(1).concat(client_name.slice(1, client_name.len())); + if(formatted.length > 1){ + formatted = client_name.up(1).concat(client_name.slice(1, client_name.length)); debug("PlayerController->format_client_name - : %s", formatted); } return formatted; -- cgit v1.2.3 From 17adc8728d70bf02fd455f5cb37e49ae9244942b Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 7 Oct 2010 12:00:00 +0100 Subject: tidy up --- src/sound-service.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sound-service.c b/src/sound-service.c index 51f5f37..f19379d 100644 --- a/src/sound-service.c +++ b/src/sound-service.c @@ -41,8 +41,8 @@ service_shutdown (IndicatorService *service, gpointer user_data) if (mainloop != NULL) { g_debug("Service shutdown !"); //TODO: uncomment for release !! - //close_pulse_activites(); - //g_main_loop_quit(mainloop); + close_pulse_activites(); + g_main_loop_quit(mainloop); } return; } -- cgit v1.2.3 From 351ec423689a0841a3ab9cc6fe03f3dcef5028bc Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 7 Oct 2010 12:08:22 +0100 Subject: tidy up in the music controller vala --- src/music-player-bridge.vala | 55 ++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/music-player-bridge.vala b/src/music-player-bridge.vala index aad6e47..9ba4ef6 100644 --- a/src/music-player-bridge.vala +++ b/src/music-player-bridge.vala @@ -66,33 +66,6 @@ public class MusicPlayerBridge : GLib.Object this.registered_clients.set(determine_key(app), ctrl); } } - - private static string truncate_player_name(string app_info_name) - { - string result = app_info_name.down().strip(); - - var tokens = result.split(" "); - - if(tokens.length > 1){ - result = tokens[0]; - } - debug("truncate player name %s", result); - return result; - } - - private static string? determine_key(string path) - { - var tokens = path.split("/"); - if ( tokens.length < 2) return null; - var filename = tokens[tokens.length - 1]; - var result = filename.split(".")[0]; - var temp = result.split("-"); - if (temp.length > 1){ - result = temp[0]; - } - debug("determine key result = %s", result); - return result; - } private int calculate_menu_position() { @@ -179,6 +152,34 @@ public class MusicPlayerBridge : GLib.Object GLib.AppInfo app_info = info as GLib.AppInfo; return app_info; } + + private static string truncate_player_name(owned string app_info_name) + { + string result = app_info_name.down().strip(); + + var tokens = result.split(" "); + + if(tokens.length > 1){ + result = tokens[0]; + } + debug("truncate player name %s", result); + return result; + } + + private static string? determine_key(owned string path) + { + var tokens = path.split("/"); + if ( tokens.length < 2) return null; + var filename = tokens[tokens.length - 1]; + var result = filename.split(".")[0]; + var temp = result.split("-"); + if (temp.length > 1){ + result = temp[0]; + } + debug("determine key result = %s", result); + return result; + } + } -- cgit v1.2.3 From d966a9ff70a81fae4508fed79ce207424df652f1 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 7 Oct 2010 14:22:09 +0100 Subject: tidied silly logic --- src/mpris2-controller.vala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mpris2-controller.vala b/src/mpris2-controller.vala index 54e1868..29dd4cf 100644 --- a/src/mpris2-controller.vala +++ b/src/mpris2-controller.vala @@ -135,10 +135,7 @@ public class Mpris2Controller : GLib.Object return changed_updates; } - private TransportMenuitem.state determine_play_state(string status){ - if(status == null) - return TransportMenuitem.state.PAUSED; - + private TransportMenuitem.state determine_play_state(string status){ if(status != null && status == "Playing"){ return TransportMenuitem.state.PLAYING; } -- cgit v1.2.3