4
// Copyright (C) 2008 Lukas Lipka <lukaslipka@gmail.com>
8
using System.Collections;
9
using System.Diagnostics;
15
using Beagle.Search.Tray;
17
namespace Beagle.Search {
19
public class Search : ISearch {
21
// The reference count is only valid when
22
// we don't run in icon mode.
24
private uint ref_count = 0;
26
private bool icon_enabled = false;
27
private bool docs_enabled = false;
29
private SearchWindow icon_window = null;
30
private TrayIcon tray = null;
31
private XKeybinder keybinder = null;
33
public Search (bool icon_enabled, bool docs_enabled)
35
this.icon_enabled = icon_enabled;
36
this.docs_enabled = docs_enabled;
39
icon_window = new SearchWindow (this);
40
icon_window.QueryEvent += OnQueryEvent;
42
tray = new TrayIcon ();
43
tray.Clicked += OnTrayActivated;
44
tray.Search += OnTraySearch;
46
Config config = Conf.Get (Conf.Names.BeagleSearchConfig);
48
bool binding_ctrl = config.GetOption (Conf.Names.KeyBinding_Ctrl, false);
49
bool binding_alt = config.GetOption (Conf.Names.KeyBinding_Alt, false);
50
string binding_key = config.GetOption (Conf.Names.KeyBinding_Key, "F12");
52
string tip_text = Catalog.GetString ("Desktop Search");
53
string binding = new KeyBinding (binding_key, binding_ctrl, binding_alt).ToString ();
55
if (!String.IsNullOrEmpty (binding)) {
56
tip_text += String.Format (" ({0})", binding);
57
keybinder = new XKeybinder ();
58
keybinder.Bind (binding, OnTrayActivated);
61
tray.TooltipText = tip_text;
65
public void Query (string query_text)
68
if (!String.IsNullOrEmpty (query_text))
69
icon_window.Search (query_text);
71
icon_window.ShowAll ();
73
SearchWindow window = new SearchWindow (this);
74
window.DeleteEvent += OnWindowDeleteEvent;
76
if (!String.IsNullOrEmpty (query_text))
77
window.Search (query_text);
84
private void OnWindowDeleteEvent (object o, Gtk.DeleteEventArgs args)
87
Gtk.Application.Quit ();
90
private void OnTrayActivated (object o, EventArgs args)
92
if (! icon_window.Visible) {
93
icon_window.ShowAll ();
94
icon_window.Present ();
95
icon_window.GrabEntryFocus ();
101
private void OnTraySearch (string query)
103
if (!icon_window.Visible)
104
icon_window.ShowAll ();
106
icon_window.Search (query);
109
private void OnQueryEvent (string query)
111
// Update the list of searches in the tray
114
tray.AddSearch (query);
117
public bool IconEnabled {
118
get { return icon_enabled; }
121
public bool DocsEnabled {
122
get { return docs_enabled; }