Merge lp:~charlesk/indicator-sound/remove-interested-client into lp:indicator-sound/fifth

Proposed by Charles Kerr
Status: Merged
Approved by: Charles Kerr
Approved revision: 318
Merge reported by: Charles Kerr
Merged at revision: not available
Proposed branch: lp:~charlesk/indicator-sound/remove-interested-client
Merge into: lp:indicator-sound/fifth
Diff against target: 98 lines (+33/-25)
2 files modified
src/music-player-bridge.vala (+15/-11)
src/settings-manager.vala (+18/-14)
To merge this branch: bzr merge lp:~charlesk/indicator-sound/remove-interested-client
Reviewer Review Type Date Requested Status
Conor Curran (community) Approve
Review via email: mp+99458@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Conor Curran (cjcurran) :
review: Approve
Revision history for this message
Conor Curran (cjcurran) wrote :

Nice catch Charles.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/music-player-bridge.vala'
--- src/music-player-bridge.vala 2012-02-27 19:08:57 +0000
+++ src/music-player-bridge.vala 2012-03-27 01:38:19 +0000
@@ -85,19 +85,20 @@
85 DesktopAppInfo desktop_info = info as DesktopAppInfo;85 DesktopAppInfo desktop_info = info as DesktopAppInfo;
86 var file_path = desktop_info.get_filename ();86 var file_path = desktop_info.get_filename ();
87 File f = File.new_for_path (file_path);87 File f = File.new_for_path (file_path);
88 FileMonitor monitor;
89 try {88 try {
90 monitor = f.monitor (FileMonitorFlags.SEND_MOVED, null);89 FileMonitor monitor = f.monitor (FileMonitorFlags.SEND_MOVED, null);
90 unowned FileMonitor weak_monitor = monitor;
91 monitor.changed.connect ((desktop_file, other_file, event_type) => {
92 this.relevant_desktop_file_changed (desktop_file, other_file, event_type, weak_monitor);
93 });
94 monitor.ref(); // will be unref()ed by relevant_desktop_file_changed()
95 GLib.debug ("monitoring file '%s'", file_path);
96 this.file_monitors.set (file_path, mpris_key);
91 }97 }
92 catch (Error e){98 catch (Error e){
93 warning ("Unable to create a file monitor for %s", info.get_name());99 warning ("Unable to create a file monitor for %s", info.get_name());
94 return;100 return;
95 }101 }
96 this.file_monitors.set (file_path, mpris_key);
97 // Finally watch for a change.
98 monitor.changed.connect ((desktop_file, other_file, event_type) => {
99 this.relevant_desktop_file_changed (desktop_file, other_file, event_type, monitor);
100 });
101 }102 }
102 103
103 private void relevant_desktop_file_changed (File desktop_file,104 private void relevant_desktop_file_changed (File desktop_file,
@@ -117,10 +118,13 @@
117 warning ("relevant_desktop_file_changed is returning a file which we know nothing about - %s",118 warning ("relevant_desktop_file_changed is returning a file which we know nothing about - %s",
118 path);119 path);
119 return;120 return;
120 } 121 }
121 this.registered_clients[this.file_monitors[path]].remove_from_menu();122
122 this.settings_manager.remove_interested (this.file_monitors[path]);123 var mpris_key = this.file_monitors[path];
123 this.registered_clients.unset (this.file_monitors[path]); 124 GLib.debug ("file \"%s\" was removed; stopping monitoring \"%s\"", path, mpris_key);
125 this.registered_clients[mpris_key].remove_from_menu();
126 this.settings_manager.remove_interested (mpris_key);
127 this.registered_clients.unset (mpris_key);
124 monitor.cancel ();128 monitor.cancel ();
125 monitor.unref();129 monitor.unref();
126 } 130 }
127131
=== modified file 'src/settings-manager.vala'
--- src/settings-manager.vala 2012-02-27 19:08:57 +0000
+++ src/settings-manager.vala 2012-03-27 01:38:19 +0000
@@ -58,27 +58,31 @@
58 58
59 public void remove_interested (string app_desktop_name)59 public void remove_interested (string app_desktop_name)
60 {60 {
61 var already_interested = this.settings.get_strv ("interested-media-players");61 const string key = "interested-media-players";
62 var list = new ArrayList<string>();62 var players = new GLib.VariantBuilder (new VariantType ("as")); // array of strings
6363
64 foreach (var s in already_interested){64 foreach (var player in this.settings.get_strv (key)) {
65 if (s == app_desktop_name) continue;65 if (player != app_desktop_name)
66 list.add (s);66 players.add ("s", player);
67 }67 }
68 this.settings.set_strv("interested-media-players",68
69 list.to_array());69 this.settings.set_value(key, players.end());
70 this.settings.apply(); 70 this.settings.apply();
71 }71 }
72 72
73 public void add_interested (string app_desktop_name)73 public void add_interested (string app_desktop_name)
74 {74 {
75 var already_interested = this.settings.get_strv ("interested-media-players");75 const string key = "interested-media-players";
76 foreach (var s in already_interested){76 var players = new GLib.VariantBuilder (new VariantType ("as")); // array of strings
77 if ( s == app_desktop_name ) return;77
78 foreach (var player in this.settings.get_strv (key)) {
79 if (player == app_desktop_name)
80 return;
81 players.add ("s", player);
78 }82 }
79 already_interested += (app_desktop_name);83
80 this.settings.set_strv( "interested-media-players",84 players.add ("s", app_desktop_name);
81 already_interested );85 this.settings.set_value(key, players.end());
82 this.settings.apply();86 this.settings.apply();
83 }87 }
8488

Subscribers

People subscribed via source and target branches