2
#include "FavoriteStore.h"
3
#include "LauncherController.h"
4
#include "LauncherIcon.h"
6
#include "PluginAdapter.h"
10
#include <Nux/BaseWindow.h>
12
LauncherController::LauncherController(Launcher* launcher, CompScreen *screen, nux::BaseWindow* window, NUX_FILE_LINE_DECL)
14
m_Launcher = launcher;
17
_model = new LauncherModel ();
19
m_Launcher->SetModel (_model);
20
m_FavoriteStore = FavoriteStore::GetDefault ();
22
g_timeout_add (5000, (GSourceFunc) &LauncherController::BamfTimerCallback, this);
26
LauncherController::~LauncherController()
28
m_FavoriteStore->UnReference ();
32
LauncherController::OnExpoClicked ()
34
PluginAdapter::Default ()->InitiateExpo ();
38
LauncherController::InsertExpoAction ()
40
SimpleLauncherIcon *expoIcon;
41
expoIcon = new SimpleLauncherIcon (m_Launcher);
43
expoIcon->SetTooltipText ("Workspace Switcher");
44
expoIcon->SetIconName ("workspace-switcher");
45
expoIcon->SetVisible (true);
47
expoIcon->MouseClick.connect (sigc::mem_fun (this, &LauncherController::OnExpoClicked));
49
RegisterIcon (expoIcon);
53
LauncherController::OnIconShow (void *sender)
55
LauncherIcon *icon = (LauncherIcon *) sender;
56
_model->AddIcon (icon);
60
LauncherController::OnIconHide (void *sender)
62
LauncherIcon *icon = (LauncherIcon *) sender;
63
_model->RemoveIcon (icon);
67
LauncherController::OnIconRemove (void *sender)
69
LauncherIcon *icon = (LauncherIcon *) sender;
70
_model->RemoveIcon (icon);
72
m_Icons.remove (icon);
77
LauncherController::RegisterIcon (LauncherIcon *icon)
79
icon->show.connect (sigc::mem_fun (this, &LauncherController::OnIconShow));
80
icon->hide.connect (sigc::mem_fun (this, &LauncherController::OnIconHide));
81
icon->remove.connect (sigc::mem_fun (this, &LauncherController::OnIconRemove));
83
m_Icons.push_back (icon);
86
_model->AddIcon (icon);
91
LauncherController::BamfTimerCallback (void *data)
93
LauncherController *self = (LauncherController*) data;
102
LauncherController::OnViewOpened (BamfMatcher *matcher, BamfView *view, gpointer data)
104
LauncherController *self = (LauncherController *) data;
105
BamfApplication *app;
107
if (!BAMF_IS_APPLICATION (view))
110
app = BAMF_APPLICATION (view);
112
BamfLauncherIcon *icon = new BamfLauncherIcon (self->m_Launcher, app, self->m_Screen);
113
self->RegisterIcon (icon);
117
LauncherController::CreateFavorite (const char *file_path)
119
BamfApplication *app;
120
BamfLauncherIcon *icon;
122
app = bamf_matcher_get_application_for_desktop_file (m_Matcher, file_path, true);
124
if (g_object_get_qdata (G_OBJECT (app), g_quark_from_static_string ("unity-seen")))
126
bamf_view_set_sticky (BAMF_VIEW (app), true);
130
g_object_set_qdata (G_OBJECT (app), g_quark_from_static_string ("unity-seen"), GINT_TO_POINTER (1));
132
bamf_view_set_sticky (BAMF_VIEW (app), true);
133
icon = new BamfLauncherIcon (m_Launcher, app, m_Screen);
139
LauncherController::SetupBamf ()
143
BamfApplication *app;
144
BamfLauncherIcon *icon;
146
m_Matcher = bamf_matcher_get_default ();
148
favs = FavoriteStore::GetDefault ()->GetFavorites ();
150
for (f = favs; f; f = f->next)
151
CreateFavorite ((const char *) f->data);
153
apps = bamf_matcher_get_applications (m_Matcher);
154
g_signal_connect (m_Matcher, "view-opened", (GCallback) &LauncherController::OnViewOpened, this);
156
for (l = apps; l; l = l->next)
158
app = BAMF_APPLICATION (l->data);
160
if (g_object_get_qdata (G_OBJECT (app), g_quark_from_static_string ("unity-seen")))
162
g_object_set_qdata (G_OBJECT (app), g_quark_from_static_string ("unity-seen"), GINT_TO_POINTER (1));
164
icon = new BamfLauncherIcon (m_Launcher, app, m_Screen);