beagle r4862 - in trunk/beagle/search: Beagle.Search Beagle.Search.Tray



Author: dbera
Date: Sat Sep 27 20:34:38 2008
New Revision: 4862
URL: http://svn.gnome.org/viewvc/beagle?rev=4862&view=rev

Log:
Fixes #551898. Make sure hotkey changes via beagle-settings is immediately picked up by beagle-search.


Modified:
   trunk/beagle/search/Beagle.Search.Tray/TrayIcon.cs
   trunk/beagle/search/Beagle.Search/Search.cs

Modified: trunk/beagle/search/Beagle.Search.Tray/TrayIcon.cs
==============================================================================
--- trunk/beagle/search/Beagle.Search.Tray/TrayIcon.cs	(original)
+++ trunk/beagle/search/Beagle.Search.Tray/TrayIcon.cs	Sat Sep 27 20:34:38 2008
@@ -27,6 +27,7 @@
 				
 		public event EventHandler Clicked;
 		public SearchDelegate Search;
+		public event EventHandler Quit;
 
 		public TrayIcon ()
 		{
@@ -124,7 +125,8 @@
 
 		private void OnQuit (object sender, EventArgs args)
 		{
-			Application.Quit ();
+			if (Quit != null)
+				Quit (sender, args);
 		}
 
 		private void OnClear (object sender, EventArgs args) 

Modified: trunk/beagle/search/Beagle.Search/Search.cs
==============================================================================
--- trunk/beagle/search/Beagle.Search/Search.cs	(original)
+++ trunk/beagle/search/Beagle.Search/Search.cs	Sat Sep 27 20:34:38 2008
@@ -21,7 +21,7 @@
 		// The reference count is only valid when
 		// we don't run in icon mode.
 
-		private uint ref_count = 0;
+		private int ref_count = 0;
 
 		private bool icon_enabled = false;
 		private bool docs_enabled = false;
@@ -42,29 +42,15 @@
 				tray = new TrayIcon ();
 				tray.Clicked += OnTrayActivated;
 				tray.Search += OnTraySearch;
+				tray.Quit += OnTrayQuit;
 
 				Config config = Conf.Get (Conf.Names.BeagleSearchConfig);
+				keybinder = new XKeybinder ();
+				SetKeyBindings (config);
 
-				string tip_text = Catalog.GetString ("Desktop Search");
-				string binding = config.GetOption ("KeyBinding", null);
-
-				if (String.IsNullOrEmpty (binding)) {
-					// Move old preference value to new
-					bool binding_ctrl = config.GetOption (Conf.Names.KeyBinding_Ctrl, false);
-					bool binding_alt = config.GetOption (Conf.Names.KeyBinding_Alt, false);
-					string binding_key = config.GetOption (Conf.Names.KeyBinding_Key, "F12");
-					KeyBinding show_binding = new KeyBinding (binding_key, binding_ctrl, binding_alt);
-
-					binding = show_binding.ToString ();
-				}
-
-				if (!String.IsNullOrEmpty (binding)) {
-					tip_text += String.Format (" ({0})", binding);
-					keybinder = new XKeybinder ();
-					keybinder.Bind (binding, OnTrayActivated);
-				}
-
-				tray.TooltipText = tip_text;
+				Inotify.Start ();
+				Conf.WatchForUpdates();
+				Conf.Subscribe (Conf.Names.BeagleSearchConfig, OnConfigurationChanged);
 			}
 		}
 
@@ -87,10 +73,49 @@
 			}
 		}
 
+		private void SetKeyBindings (Config config)
+		{
+			string tip_text = Catalog.GetString ("Desktop Search");
+			string binding = config.GetOption ("KeyBinding", null);
+			Console.WriteLine ("new binding {0}", binding);
+
+			if (String.IsNullOrEmpty (binding)) {
+				// Move old preference value to new
+				bool binding_ctrl = config.GetOption (Conf.Names.KeyBinding_Ctrl, false);
+				bool binding_alt = config.GetOption (Conf.Names.KeyBinding_Alt, false);
+				string binding_key = config.GetOption (Conf.Names.KeyBinding_Key, "F12");
+				KeyBinding show_binding = new KeyBinding (binding_key, binding_ctrl, binding_alt);
+
+				binding = show_binding.ToString ();
+			}
+
+			if (!String.IsNullOrEmpty (binding)) {
+				tip_text += String.Format (" ({0})", binding);
+				keybinder.UnbindAll ();
+				keybinder.Bind (binding, OnTrayActivated);
+			}
+
+			tray.TooltipText = tip_text;
+		}
+
 		private void OnWindowDeleteEvent (object o, Gtk.DeleteEventArgs args)
 		{
-			if (--ref_count < 1)
-				Gtk.Application.Quit ();
+			Quit ();
+		}
+
+		private void OnTrayQuit (object o, EventArgs args)
+		{
+			Quit ();
+		}
+
+		private void Quit ()
+		{
+			Console.WriteLine (ref_count);
+			if (--ref_count >= 1)
+				return;
+
+			Inotify.Stop ();
+			Gtk.Application.Quit ();
 		}
 
 		private void OnTrayActivated (object o, EventArgs args)
@@ -120,6 +145,11 @@
 			tray.AddSearch (query);
 		}
 
+		private void OnConfigurationChanged (Config config)
+		{
+			SetKeyBindings (config);
+		}
+
 		public bool IconEnabled {
 			get { return icon_enabled; }
 		}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]