Merge lp:~3v1n0/unity/app-title-icon-properties into lp:unity

Proposed by Marco Trevisan (Treviño)
Status: Merged
Approved by: Andrea Azzarone
Approved revision: no longer in the source branch.
Merged at revision: 3387
Proposed branch: lp:~3v1n0/unity/app-title-icon-properties
Merge into: lp:unity
Diff against target: 531 lines (+94/-92)
14 files modified
debian/control (+1/-1)
launcher/ApplicationLauncherIcon.cpp (+13/-14)
launcher/ApplicationLauncherIcon.h (+2/-0)
launcher/MockLauncherIcon.h (+5/-3)
launcher/StandaloneLauncher.cpp (+2/-0)
panel/PanelMenuView.cpp (+4/-1)
panel/PanelMenuView.h (+1/-0)
tests/mock-application.h (+15/-22)
tests/test_application_launcher_icon.cpp (+8/-10)
tests/test_switcher_controller.h (+0/-2)
tests/test_switcher_controller_class.cpp (+3/-2)
unity-shared/ApplicationManager.h (+6/-4)
unity-shared/BamfApplicationManager.cpp (+32/-27)
unity-shared/BamfApplicationManager.h (+2/-6)
To merge this branch: bzr merge lp:~3v1n0/unity/app-title-icon-properties
Reviewer Review Type Date Requested Status
Andrea Azzarone (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+171770@code.launchpad.net

Commit message

ApplicationManager: Use nux::ROProperty for Window and Application title and icon

So BamfApplicationManager connect to {name,icon}-changed signals, set getters for properties
and ApplicationLauncherIcon update icon tooltip_text and icon when App title/icon changes

Description of the change

Use nux::ROProperty's to handle an application title and icon, update the code to work with it and connect to related BamfApplication signals so that we can update these values if they change (unlikely, but it can happen on some desktop-less applications, especially after that lp:~3v1n0/bamf/app-main-view will land).

Removed one workaround that is not needed anymore since we moved to libgdbus properties on libbamf.

Tests updated.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Andrea Azzarone (azzar1) wrote :

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/control'
--- debian/control 2013-06-26 14:29:55 +0000
+++ debian/control 2013-06-27 10:54:34 +0000
@@ -15,7 +15,7 @@
15 libsigc++-2.0-dev,15 libsigc++-2.0-dev,
16 libgee-dev (>= 0.5.0),16 libgee-dev (>= 0.5.0),
17 libunique-dev,17 libunique-dev,
18 libbamf3-dev (>= 0.4),18 libbamf3-dev (>= 0.5.0+13.10.20130626),
19 gsettings-desktop-schemas-dev,19 gsettings-desktop-schemas-dev,
20 libglib2.0-dev (>= 2.30),20 libglib2.0-dev (>= 2.30),
21 libdbusmenu-glib-dev (>= 0.3.91),21 libdbusmenu-glib-dev (>= 0.3.91),
2222
=== modified file 'launcher/ApplicationLauncherIcon.cpp'
--- launcher/ApplicationLauncherIcon.cpp 2013-05-17 22:53:57 +0000
+++ launcher/ApplicationLauncherIcon.cpp 2013-06-27 10:54:34 +0000
@@ -69,7 +69,7 @@
69 app->seen = true;69 app->seen = true;
7070
71 tooltip_text = app->title();71 tooltip_text = app->title();
72 std::string icon = app->icon();72 std::string const& icon = app->icon();
73 icon_name = (icon.empty() ? DEFAULT_ICON : icon);73 icon_name = (icon.empty() ? DEFAULT_ICON : icon);
7474
75 SetQuirk(Quirk::VISIBLE, app->visible());75 SetQuirk(Quirk::VISIBLE, app->visible());
@@ -148,6 +148,16 @@
148 SetQuirk(Quirk::ACTIVE, active);148 SetQuirk(Quirk::ACTIVE, active);
149 });149 });
150150
151 title_changed_connection_ = app_->title.changed.connect([this](std::string const& name) {
152 LOG_DEBUG(logger) << tooltip_text() << " name now " << name;
153 tooltip_text = name;
154 });
155
156 icon_changed_connection_ = app_->icon.changed.connect([this](std::string const& icon) {
157 LOG_DEBUG(logger) << tooltip_text() << " icon now " << icon;
158 icon_name = (icon.empty() ? DEFAULT_ICON : icon);
159 });
160
151 running_changed_connection_ = app_->running.changed.connect([this](bool const& running) {161 running_changed_connection_ = app_->running.changed.connect([this](bool const& running) {
152 LOG_DEBUG(logger) << tooltip_text() << " running now " << (running ? "true" : "false");162 LOG_DEBUG(logger) << tooltip_text() << " running now " << (running ? "true" : "false");
153 SetQuirk(Quirk::RUNNING, running);163 SetQuirk(Quirk::RUNNING, running);
@@ -156,19 +166,6 @@
156 {166 {
157 _source_manager.Remove(ICON_REMOVE_TIMEOUT);167 _source_manager.Remove(ICON_REMOVE_TIMEOUT);
158168
159 /* It can happen that these values are not set
160 * during initialization if the view is closed
161 * very early, so we need to make sure that they
162 * are updated as soon as the view is re-opened. */
163 if (tooltip_text().empty())
164 tooltip_text = app_->title();
165
166 if (icon_name == DEFAULT_ICON)
167 {
168 std::string icon = app_->icon();
169 icon_name = (icon.empty() ? DEFAULT_ICON : icon);
170 }
171
172 EnsureWindowState();169 EnsureWindowState();
173 UpdateIconGeometries(GetCenters());170 UpdateIconGeometries(GetCenters());
174 }171 }
@@ -207,6 +204,8 @@
207 active_changed_connection_.disconnect();204 active_changed_connection_.disconnect();
208 running_changed_connection_.disconnect();205 running_changed_connection_.disconnect();
209 visible_changed_connection_.disconnect();206 visible_changed_connection_.disconnect();
207 title_changed_connection_.disconnect();
208 icon_changed_connection_.disconnect();
210 closed_changed_connection_.disconnect();209 closed_changed_connection_.disconnect();
211}210}
212211
213212
=== modified file 'launcher/ApplicationLauncherIcon.h'
--- launcher/ApplicationLauncherIcon.h 2013-05-17 22:53:57 +0000
+++ launcher/ApplicationLauncherIcon.h 2013-06-27 10:54:34 +0000
@@ -153,6 +153,8 @@
153 sigc::connection window_opened_connection_;153 sigc::connection window_opened_connection_;
154 sigc::connection window_closed_connection_;154 sigc::connection window_closed_connection_;
155 sigc::connection window_moved_connection_;155 sigc::connection window_moved_connection_;
156 sigc::connection icon_changed_connection_;
157 sigc::connection title_changed_connection_;
156 sigc::connection urgent_changed_connection_;158 sigc::connection urgent_changed_connection_;
157 sigc::connection active_changed_connection_;159 sigc::connection active_changed_connection_;
158 sigc::connection running_changed_connection_;160 sigc::connection running_changed_connection_;
159161
=== modified file 'launcher/MockLauncherIcon.h'
--- launcher/MockLauncherIcon.h 2013-05-17 22:53:57 +0000
+++ launcher/MockLauncherIcon.h 2013-06-27 10:54:34 +0000
@@ -43,10 +43,12 @@
43class MockApplicationWindow : public ApplicationWindow43class MockApplicationWindow : public ApplicationWindow
44{44{
45public:45public:
46 MockApplicationWindow(Window xid) : xid_(xid) {}46 MockApplicationWindow(Window xid) : xid_(xid)
47 {
48 title.SetGetterFunction([this] { return "MockApplicationWindow"; });
49 icon.SetGetterFunction([this] { return ""; });
50 }
4751
48 std::string title() const { return "MockApplicationWindow"; }
49 virtual std::string icon() const { return ""; }
50 virtual std::string type() const { return "mock"; }52 virtual std::string type() const { return "mock"; }
5153
52 virtual Window window_id() const { return xid_; }54 virtual Window window_id() const { return xid_; }
5355
=== modified file 'launcher/StandaloneLauncher.cpp'
--- launcher/StandaloneLauncher.cpp 2013-03-19 12:41:22 +0000
+++ launcher/StandaloneLauncher.cpp 2013-06-27 10:54:34 +0000
@@ -21,6 +21,7 @@
21#include <Nux/Nux.h>21#include <Nux/Nux.h>
22#include <Nux/NuxTimerTickSource.h>22#include <Nux/NuxTimerTickSource.h>
23#include <NuxCore/AnimationController.h>23#include <NuxCore/AnimationController.h>
24#include <NuxCore/Logger.h>
24#include <gtk/gtk.h>25#include <gtk/gtk.h>
2526
26#include "unity-shared/BackgroundEffectHelper.h"27#include "unity-shared/BackgroundEffectHelper.h"
@@ -96,6 +97,7 @@
96int main(int argc, char** argv)97int main(int argc, char** argv)
97{98{
98 gtk_init(&argc, &argv);99 gtk_init(&argc, &argv);
100 nux::logging::configure_logging(::getenv("UNITY_LOG_SEVERITY"));
99 nux::NuxInitialize(0);101 nux::NuxInitialize(0);
100102
101 LauncherWindow lc;103 LauncherWindow lc;
102104
=== modified file 'panel/PanelMenuView.cpp'
--- panel/PanelMenuView.cpp 2013-02-21 13:43:48 +0000
+++ panel/PanelMenuView.cpp 2013-06-27 10:54:34 +0000
@@ -1019,6 +1019,10 @@
1019{1019{
1020 if (BAMF_IS_APPLICATION(new_app))1020 if (BAMF_IS_APPLICATION(new_app))
1021 {1021 {
1022 app_name_changed_signal_.Disconnect();
1023 app_name_changed_signal_.Connect(BAMF_VIEW(new_app), "name-changed",
1024 sigc::mem_fun(this, &PanelMenuView::OnNameChanged));
1025
1022 if (std::find(new_apps_.begin(), new_apps_.end(), new_app) != new_apps_.end())1026 if (std::find(new_apps_.begin(), new_apps_.end(), new_app) != new_apps_.end())
1023 {1027 {
1024 if (new_application_ != new_app)1028 if (new_application_ != new_app)
@@ -1087,7 +1091,6 @@
10871091
1088 // first see if we need to remove and old callback1092 // first see if we need to remove and old callback
1089 view_name_changed_signal_.Disconnect();1093 view_name_changed_signal_.Disconnect();
1090
1091 // register callback for new view1094 // register callback for new view
1092 view_name_changed_signal_.Connect(new_view, "name-changed",1095 view_name_changed_signal_.Connect(new_view, "name-changed",
1093 sigc::mem_fun(this, &PanelMenuView::OnNameChanged));1096 sigc::mem_fun(this, &PanelMenuView::OnNameChanged));
10941097
=== modified file 'panel/PanelMenuView.h'
--- panel/PanelMenuView.h 2013-02-01 18:13:40 +0000
+++ panel/PanelMenuView.h 2013-06-27 10:54:34 +0000
@@ -194,6 +194,7 @@
194 glib::Signal<void, BamfMatcher*, BamfView*, BamfView*> active_win_changed_signal_;194 glib::Signal<void, BamfMatcher*, BamfView*, BamfView*> active_win_changed_signal_;
195 glib::Signal<void, BamfMatcher*, BamfApplication*, BamfApplication*> active_app_changed_signal_;195 glib::Signal<void, BamfMatcher*, BamfApplication*, BamfApplication*> active_app_changed_signal_;
196 glib::Signal<void, BamfView*, gchar*, gchar*> view_name_changed_signal_;196 glib::Signal<void, BamfView*, gchar*, gchar*> view_name_changed_signal_;
197 glib::Signal<void, BamfView*, gchar*, gchar*> app_name_changed_signal_;
197 sigc::connection style_changed_connection_;198 sigc::connection style_changed_connection_;
198199
199 UBusManager ubus_manager_;200 UBusManager ubus_manager_;
200201
=== modified file 'tests/mock-application.h'
--- tests/mock-application.h 2013-04-17 19:16:54 +0000
+++ tests/mock-application.h 2013-06-27 10:54:34 +0000
@@ -40,6 +40,8 @@
40 visible.SetGetterFunction([this] { return visible_; });40 visible.SetGetterFunction([this] { return visible_; });
41 active.SetGetterFunction([this] { return active_; });41 active.SetGetterFunction([this] { return active_; });
42 urgent.SetGetterFunction([this] { return urgent_; });42 urgent.SetGetterFunction([this] { return urgent_; });
43 title.SetGetterFunction([this] { return title_; });
44 icon.SetGetterFunction([this] { return icon_; });
43 }45 }
4446
45 Window xid_;47 Window xid_;
@@ -52,8 +54,6 @@
52 bool active_;54 bool active_;
53 bool urgent_;55 bool urgent_;
5456
55 virtual std::string title() const { return title_; }
56 virtual std::string icon() const { return icon_; }
57 virtual std::string type() const { return type_; }57 virtual std::string type() const { return type_; }
5858
59 virtual Window window_id() const { return xid_; }59 virtual Window window_id() const { return xid_; }
@@ -73,11 +73,11 @@
73struct MockApplication : unity::Application73struct MockApplication : unity::Application
74{74{
75 MockApplication(std::string const& desktop_file,75 MockApplication(std::string const& desktop_file,
76 std::string const& icon = "",76 std::string const& icon_name = "",
77 std::string const& title = "")77 std::string const& title_str = "")
78 : desktop_file_(desktop_file)78 : desktop_file_(desktop_file)
79 , icon_(icon)79 , icon_(icon_name)
80 , title_(title)80 , title_(title_str)
81 , seen_(false)81 , seen_(false)
82 , sticky_(false)82 , sticky_(false)
83 , visible_(false)83 , visible_(false)
@@ -86,14 +86,17 @@
86 , urgent_(false)86 , urgent_(false)
87 , type_("mock")87 , type_("mock")
88 {88 {
89 seen.SetGetterFunction(sigc::mem_fun(this, &MockApplication::GetSeen));
90 seen.SetSetterFunction(sigc::mem_fun(this, &MockApplication::SetSeen));89 seen.SetSetterFunction(sigc::mem_fun(this, &MockApplication::SetSeen));
91 sticky.SetGetterFunction(sigc::mem_fun(this, &MockApplication::GetSticky));
92 sticky.SetSetterFunction(sigc::mem_fun(this, &MockApplication::SetSticky));90 sticky.SetSetterFunction(sigc::mem_fun(this, &MockApplication::SetSticky));
93 visible.SetGetterFunction(sigc::mem_fun(this, &MockApplication::GetVisible));91
94 active.SetGetterFunction(sigc::mem_fun(this, &MockApplication::GetActive));92 seen.SetGetterFunction([this] { return seen_; });
95 running.SetGetterFunction(sigc::mem_fun(this, &MockApplication::GetRunning));93 sticky.SetGetterFunction([this] { return sticky_; });
96 urgent.SetGetterFunction(sigc::mem_fun(this, &MockApplication::GetUrgent));94 visible.SetGetterFunction([this] { return visible_; });
95 active.SetGetterFunction([this] { return active_; });
96 running.SetGetterFunction([this] { return running_; });
97 urgent.SetGetterFunction([this] { return urgent_; });
98 title.SetGetterFunction([this] { return title_; });
99 icon.SetGetterFunction([this] { return icon_; });
97 }100 }
98101
99 std::string desktop_file_;102 std::string desktop_file_;
@@ -108,9 +111,6 @@
108 unity::WindowList windows_;111 unity::WindowList windows_;
109 std::string type_;112 std::string type_;
110113
111
112 virtual std::string icon() const { return icon_; }
113 virtual std::string title() const { return title_; }
114 virtual std::string desktop_file() const { return desktop_file_; }114 virtual std::string desktop_file() const { return desktop_file_; }
115 virtual std::string type() const { return type_; }115 virtual std::string type() const { return type_; }
116 virtual std::string repr() const { return "MockApplication"; }116 virtual std::string repr() const { return "MockApplication"; }
@@ -133,7 +133,6 @@
133 running.changed.emit(state);133 running.changed.emit(state);
134 }134 }
135135
136 bool GetSeen() const { return seen_; }
137 bool SetSeen(bool const& param) {136 bool SetSeen(bool const& param) {
138 if (param != seen_) {137 if (param != seen_) {
139 seen_ = param;138 seen_ = param;
@@ -142,7 +141,6 @@
142 return false;141 return false;
143 }142 }
144143
145 bool GetSticky() const { return sticky_; }
146 bool SetSticky(bool const& param) {144 bool SetSticky(bool const& param) {
147 if (param != sticky_) {145 if (param != sticky_) {
148 sticky_ = param;146 sticky_ = param;
@@ -158,11 +156,6 @@
158 active_ = state;156 active_ = state;
159 active.changed.emit(state);157 active.changed.emit(state);
160 }158 }
161
162 bool GetVisible() const { return visible_; }
163 bool GetActive() const { return active_; }
164 bool GetRunning() const { return running_; }
165 bool GetUrgent() const { return urgent_; }
166};159};
167160
168class MockApplicationManager : public unity::ApplicationManager161class MockApplicationManager : public unity::ApplicationManager
169162
=== modified file 'tests/test_application_launcher_icon.cpp'
--- tests/test_application_launcher_icon.cpp 2013-05-17 22:02:43 +0000
+++ tests/test_application_launcher_icon.cpp 2013-06-27 10:54:34 +0000
@@ -195,35 +195,33 @@
195 EXPECT_TRUE(mock_icon->RemoteUri().empty());195 EXPECT_TRUE(mock_icon->RemoteUri().empty());
196}196}
197197
198TEST_F(TestApplicationLauncherIcon, EmptyTooltipUpdatesOnRunning)198TEST_F(TestApplicationLauncherIcon, TooltipUpdates)
199{199{
200 ASSERT_TRUE(mock_icon->tooltip_text().empty());200 ASSERT_TRUE(mock_icon->tooltip_text().empty());
201 mock_app->title_ = "Got Name";201 mock_app->title_ = "Got Name";
202 ASSERT_TRUE(mock_icon->tooltip_text().empty());202 ASSERT_TRUE(mock_icon->tooltip_text().empty());
203203
204 mock_app->SetRunState(true);204 mock_app->title.changed.emit(mock_app->title_);
205 EXPECT_EQ(mock_icon->tooltip_text(), "Got Name");205 EXPECT_EQ(mock_icon->tooltip_text(), "Got Name");
206206
207 mock_app->SetRunState(false);
208 mock_app->title_ = "New Name";207 mock_app->title_ = "New Name";
209 mock_app->SetRunState(true);208 mock_app->title.changed.emit(mock_app->title_);
210 EXPECT_EQ(mock_icon->tooltip_text(), "Got Name");209 EXPECT_EQ(mock_icon->tooltip_text(), "New Name");
211}210}
212211
213TEST_F(TestApplicationLauncherIcon, InvalidIconUpdatesOnRunning)212TEST_F(TestApplicationLauncherIcon, IconUpdates)
214{213{
215 ASSERT_EQ(mock_icon->icon_name(), DEFAULT_EMPTY_ICON);214 ASSERT_EQ(mock_icon->icon_name(), DEFAULT_EMPTY_ICON);
216 mock_app->icon_ = "icon-name";215 mock_app->icon_ = "icon-name";
217216
218 ASSERT_EQ(mock_icon->icon_name(), DEFAULT_EMPTY_ICON);217 ASSERT_EQ(mock_icon->icon_name(), DEFAULT_EMPTY_ICON);
219218
220 mock_app->SetRunState(true);219 mock_app->icon.changed.emit(mock_app->icon_);
221 EXPECT_EQ(mock_icon->icon_name(), "icon-name");220 EXPECT_EQ(mock_icon->icon_name(), "icon-name");
222221
223 mock_app->SetRunState(false);
224 mock_app->icon_ = "new-icon-name";222 mock_app->icon_ = "new-icon-name";
225 mock_app->SetRunState(true);223 mock_app->icon.changed.emit(mock_app->icon_);
226 EXPECT_EQ(mock_icon->icon_name(), "icon-name");224 EXPECT_EQ(mock_icon->icon_name(), "new-icon-name");
227}225}
228226
229TEST_F(TestApplicationLauncherIcon, PerformScrollTowardsTheUser)227TEST_F(TestApplicationLauncherIcon, PerformScrollTowardsTheUser)
230228
=== modified file 'tests/test_switcher_controller.h'
--- tests/test_switcher_controller.h 2013-05-17 22:53:57 +0000
+++ tests/test_switcher_controller.h 2013-06-27 10:54:34 +0000
@@ -54,8 +54,6 @@
54public:54public:
55 FakeApplicationWindow(Window xid, uint64_t active_number = 0);55 FakeApplicationWindow(Window xid, uint64_t active_number = 0);
5656
57 std::string title() const;
58 virtual std::string icon() const;
59 virtual std::string type() const;57 virtual std::string type() const;
6058
61 virtual Window window_id() const;59 virtual Window window_id() const;
6260
=== modified file 'tests/test_switcher_controller_class.cpp'
--- tests/test_switcher_controller_class.cpp 2013-05-17 22:53:57 +0000
+++ tests/test_switcher_controller_class.cpp 2013-06-27 10:54:34 +0000
@@ -32,10 +32,11 @@
32 auto standalone_window = std::make_shared<StandaloneWindow>(xid_);32 auto standalone_window = std::make_shared<StandaloneWindow>(xid_);
33 standalone_window->active_number = active_number;33 standalone_window->active_number = active_number;
34 WM->AddStandaloneWindow(standalone_window);34 WM->AddStandaloneWindow(standalone_window);
35
36 title.SetGetterFunction([this] { return "FakeApplicationWindow"; });
37 icon.SetGetterFunction([this] { return ""; });
35}38}
3639
37std::string FakeApplicationWindow::title() const { return "FakeApplicationWindow"; }
38std::string FakeApplicationWindow::icon() const { return ""; }
39std::string FakeApplicationWindow::type() const { return "mock"; }40std::string FakeApplicationWindow::type() const { return "mock"; }
4041
41Window FakeApplicationWindow::window_id() const { return xid_; }42Window FakeApplicationWindow::window_id() const { return xid_; }
4243
=== modified file 'unity-shared/ApplicationManager.h'
--- unity-shared/ApplicationManager.h 2012-12-19 22:34:22 +0000
+++ unity-shared/ApplicationManager.h 2013-06-27 10:54:34 +0000
@@ -46,8 +46,6 @@
46public:46public:
47 virtual ~ApplicationWindow() {}47 virtual ~ApplicationWindow() {}
4848
49 virtual std::string title() const = 0;
50 virtual std::string icon() const = 0;
51 virtual std::string type() const = 0; // 'window' or 'tab'49 virtual std::string type() const = 0; // 'window' or 'tab'
5250
53 virtual Window window_id() const = 0;51 virtual Window window_id() const = 0;
@@ -62,6 +60,9 @@
62 // Closes the window, or the browser tab if a webapp.60 // Closes the window, or the browser tab if a webapp.
63 virtual void Quit() const = 0;61 virtual void Quit() const = 0;
6462
63 nux::ROProperty<std::string> title;
64 nux::ROProperty<std::string> icon;
65
65 nux::ROProperty<bool> visible;66 nux::ROProperty<bool> visible;
66 nux::ROProperty<bool> active;67 nux::ROProperty<bool> active;
67 nux::ROProperty<bool> urgent;68 nux::ROProperty<bool> urgent;
@@ -73,8 +74,6 @@
73public:74public:
74 virtual ~Application() {}75 virtual ~Application() {}
7576
76 virtual std::string icon() const = 0;
77 virtual std::string title() const = 0;
78 virtual std::string desktop_file() const = 0;77 virtual std::string desktop_file() const = 0;
79 virtual std::string type() const = 0;78 virtual std::string type() const = 0;
8079
@@ -91,6 +90,9 @@
91 // Calls quit on all the Windows for this application.90 // Calls quit on all the Windows for this application.
92 virtual void Quit() const = 0;91 virtual void Quit() const = 0;
9392
93 nux::ROProperty<std::string> title;
94 nux::ROProperty<std::string> icon;
95
94 // Considering using a property for the "unity-seen" quark96 // Considering using a property for the "unity-seen" quark
95 nux::RWProperty<bool> seen;97 nux::RWProperty<bool> seen;
96 nux::RWProperty<bool> sticky;98 nux::RWProperty<bool> sticky;
9799
=== modified file 'unity-shared/BamfApplicationManager.cpp'
--- unity-shared/BamfApplicationManager.cpp 2013-06-01 02:10:49 +0000
+++ unity-shared/BamfApplicationManager.cpp 2013-06-27 10:54:34 +0000
@@ -44,12 +44,12 @@
44{44{
45}45}
4646
47std::string View::title() const47std::string View::GetTitle() const
48{48{
49 return glib::String(bamf_view_get_name(bamf_view_)).Str();49 return glib::String(bamf_view_get_name(bamf_view_)).Str();
50}50}
5151
52std::string View::icon() const52std::string View::GetIcon() const
53{53{
54 return glib::String(bamf_view_get_icon(bamf_view_)).Str();54 return glib::String(bamf_view_get_icon(bamf_view_)).Str();
55}55}
@@ -81,15 +81,32 @@
81}81}
8282
8383
84std::string WindowBase::type() const
85{
86 return View::type();
87}
88
84WindowBase::WindowBase(ApplicationManager const& manager,89WindowBase::WindowBase(ApplicationManager const& manager,
85 glib::Object<BamfView> const& window)90 glib::Object<BamfView> const& window)
86 : View(manager, window)91 : View(manager, window)
87{92{
93 title.SetGetterFunction(sigc::mem_fun(this, &View::GetTitle));
94 icon.SetGetterFunction(sigc::mem_fun(this, &View::GetIcon));
88 visible.SetGetterFunction(sigc::mem_fun(this, &View::GetVisible));95 visible.SetGetterFunction(sigc::mem_fun(this, &View::GetVisible));
89 active.SetGetterFunction(sigc::mem_fun(this, &View::GetActive));96 active.SetGetterFunction(sigc::mem_fun(this, &View::GetActive));
90 urgent.SetGetterFunction(sigc::mem_fun(this, &View::GetUrgent));97 urgent.SetGetterFunction(sigc::mem_fun(this, &View::GetUrgent));
9198
92 glib::SignalBase* sig;99 glib::SignalBase* sig;
100 sig = new glib::Signal<void, BamfView*, const char*, const char*>(bamf_view_, "name-changed",
101 [this] (BamfView*, const char*, const char* new_name) {
102 this->title.changed.emit(glib::gchar_to_string(new_name));
103 });
104 signals_.Add(sig);
105 sig = new glib::Signal<void, BamfView*, const char*>(bamf_view_, "icon-changed",
106 [this] (BamfView*, const char* icon) {
107 this->icon.changed.emit(glib::gchar_to_string(icon));
108 });
109 signals_.Add(sig);
93 sig = new glib::Signal<void, BamfView*, gboolean>(bamf_view_, "user-visible-changed",110 sig = new glib::Signal<void, BamfView*, gboolean>(bamf_view_, "user-visible-changed",
94 [this] (BamfView*, gboolean visible) {111 [this] (BamfView*, gboolean visible) {
95 this->visible.changed.emit(visible);112 this->visible.changed.emit(visible);
@@ -107,21 +124,6 @@
107 signals_.Add(sig);124 signals_.Add(sig);
108}125}
109126
110std::string WindowBase::title() const
111{
112 return View::title();
113}
114
115std::string WindowBase::icon() const
116{
117 return View::icon();
118}
119
120std::string WindowBase::type() const
121{
122 return View::type();
123}
124
125bool WindowBase::Focus() const127bool WindowBase::Focus() const
126{128{
127 Window xid = window_id();129 Window xid = window_id();
@@ -238,6 +240,8 @@
238void Application::HookUpEvents()240void Application::HookUpEvents()
239{241{
240 // Hook up the property set/get functions242 // Hook up the property set/get functions
243 title.SetGetterFunction(sigc::mem_fun(this, &View::GetTitle));
244 icon.SetGetterFunction(sigc::mem_fun(this, &View::GetIcon));
241 seen.SetGetterFunction(sigc::mem_fun(this, &Application::GetSeen));245 seen.SetGetterFunction(sigc::mem_fun(this, &Application::GetSeen));
242 seen.SetSetterFunction(sigc::mem_fun(this, &Application::SetSeen));246 seen.SetSetterFunction(sigc::mem_fun(this, &Application::SetSeen));
243 sticky.SetGetterFunction(sigc::mem_fun(this, &Application::GetSticky));247 sticky.SetGetterFunction(sigc::mem_fun(this, &Application::GetSticky));
@@ -247,7 +251,18 @@
247 running.SetGetterFunction(sigc::mem_fun(this, &View::GetRunning));251 running.SetGetterFunction(sigc::mem_fun(this, &View::GetRunning));
248 urgent.SetGetterFunction(sigc::mem_fun(this, &View::GetUrgent));252 urgent.SetGetterFunction(sigc::mem_fun(this, &View::GetUrgent));
249253
254 // Use signals_.Add....
250 glib::SignalBase* sig;255 glib::SignalBase* sig;
256 sig = new glib::Signal<void, BamfView*, const char*, const char*>(bamf_view_, "name-changed",
257 [this] (BamfView*, const char*, const char* new_name) {
258 this->title.changed.emit(glib::gchar_to_string(new_name));
259 });
260 signals_.Add(sig);
261 sig = new glib::Signal<void, BamfView*, const char*>(bamf_view_, "icon-changed",
262 [this] (BamfView*, const char* icon) {
263 this->icon.changed.emit(glib::gchar_to_string(icon));
264 });
265 signals_.Add(sig);
251 sig = new glib::Signal<void, BamfView*, gboolean>(bamf_view_, "user-visible-changed",266 sig = new glib::Signal<void, BamfView*, gboolean>(bamf_view_, "user-visible-changed",
252 [this] (BamfView*, gboolean visible) {267 [this] (BamfView*, gboolean visible) {
253 LOG_TRACE(logger) << "user-visible-changed " << visible;268 LOG_TRACE(logger) << "user-visible-changed " << visible;
@@ -305,16 +320,6 @@
305 signals_.Add(sig);320 signals_.Add(sig);
306}321}
307322
308std::string Application::title() const
309{
310 return View::title();
311}
312
313std::string Application::icon() const
314{
315 return View::icon();
316}
317
318std::string Application::desktop_file() const323std::string Application::desktop_file() const
319{324{
320 const gchar* file = bamf_application_get_desktop_file(bamf_app_);325 const gchar* file = bamf_application_get_desktop_file(bamf_app_);
321326
=== modified file 'unity-shared/BamfApplicationManager.h'
--- unity-shared/BamfApplicationManager.h 2012-12-19 22:34:22 +0000
+++ unity-shared/BamfApplicationManager.h 2013-06-27 10:54:34 +0000
@@ -37,8 +37,8 @@
37 View(ApplicationManager const& manager,37 View(ApplicationManager const& manager,
38 glib::Object<BamfView> const& view);38 glib::Object<BamfView> const& view);
3939
40 std::string title() const;40 std::string GetTitle() const;
41 std::string icon() const;41 std::string GetIcon() const;
42 std::string type() const;42 std::string type() const;
4343
44 bool GetVisible() const;44 bool GetVisible() const;
@@ -59,8 +59,6 @@
59 glib::Object<BamfView> const& window);59 glib::Object<BamfView> const& window);
6060
61public:61public:
62 virtual std::string title() const;
63 virtual std::string icon() const;
64 virtual std::string type() const; // 'window' or 'tab'62 virtual std::string type() const; // 'window' or 'tab'
6563
66 virtual bool Focus() const;64 virtual bool Focus() const;
@@ -110,8 +108,6 @@
110 Application(ApplicationManager const& manager,108 Application(ApplicationManager const& manager,
111 glib::Object<BamfApplication> const& app);109 glib::Object<BamfApplication> const& app);
112110
113 virtual std::string title() const;
114 virtual std::string icon() const;
115 virtual std::string desktop_file() const;111 virtual std::string desktop_file() const;
116 virtual std::string type() const;112 virtual std::string type() const;
117113