Merge lp:~canonical-dx-team/unity/unity.spec-conformance into lp:unity

Proposed by Jason Smith on 2010-12-20
Status: Merged
Merged at revision: 730
Proposed branch: lp:~canonical-dx-team/unity/unity.spec-conformance
Merge into: lp:unity
Diff against target: 1252 lines (+409/-216)
13 files modified
po/unity.pot (+1/-1)
src/BamfLauncherIcon.cpp (+13/-13)
src/Launcher.cpp (+154/-66)
src/Launcher.h (+37/-8)
src/LauncherController.cpp (+5/-5)
src/LauncherIcon.cpp (+28/-25)
src/LauncherIcon.h (+44/-42)
src/LauncherModel.cpp (+1/-1)
src/QuicklistMenuItemRadio.cpp (+1/-1)
src/TrashLauncherIcon.cpp (+15/-3)
src/TrashLauncherIcon.h (+3/-0)
src/unityshell.cpp (+16/-4)
unityshell.xml.in (+91/-47)
To merge this branch: bzr merge lp:~canonical-dx-team/unity/unity.spec-conformance
Reviewer Review Type Date Requested Status
Alex Launi (community) 2010-12-20 Approve on 2010-12-20
Review via email: mp+44259@code.launchpad.net

Description of the Change

Adds options to implement all different features I could find proposed.

To post a comment you must log in.
Alex Launi (alexlauni) wrote :

Can you add what launch animation is currently selected to introspection data, and then it looks ok to me.

review: Approve
732. By Jason Smith on 2010-12-22

Change defaults

733. By Jason Smith on 2010-12-22

implement urgent wiggle animation

734. By Jason Smith on 2010-12-22

Use C++ style scoping for enums rather than C style enums

735. By Jason Smith on 2010-12-22

black trash

736. By Jason Smith on 2010-12-22

ensure super short lived windows do not result in a jumpy animation

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'po/unity.pot'
2--- po/unity.pot 2010-12-15 16:16:09 +0000
3+++ po/unity.pot 2010-12-22 01:51:30 +0000
4@@ -8,7 +8,7 @@
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: ayatana-dev@lists.launchpad.net\n"
8-"POT-Creation-Date: 2010-12-15 16:03+0000\n"
9+"POT-Creation-Date: 2010-12-17 19:24-0500\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13
14=== modified file 'src/BamfLauncherIcon.cpp'
15--- src/BamfLauncherIcon.cpp 2010-12-17 10:03:18 +0000
16+++ src/BamfLauncherIcon.cpp 2010-12-22 01:51:30 +0000
17@@ -59,15 +59,15 @@
18
19 SetTooltipText (bamf_view_get_name (BAMF_VIEW (app)));
20 SetIconName (icon_name);
21- SetIconType (LAUNCHER_ICON_TYPE_APPLICATION);
22+ SetIconType (TYPE_APPLICATION);
23
24 if (bamf_view_is_sticky (BAMF_VIEW (m_App)))
25- SetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE, true);
26+ SetQuirk (QUIRK_VISIBLE, true);
27 else
28- SetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE, bamf_view_user_visible (BAMF_VIEW (m_App)));
29+ SetQuirk (QUIRK_VISIBLE, bamf_view_user_visible (BAMF_VIEW (m_App)));
30
31- SetQuirk (LAUNCHER_ICON_QUIRK_ACTIVE, bamf_view_is_active (BAMF_VIEW (m_App)));
32- SetQuirk (LAUNCHER_ICON_QUIRK_RUNNING, bamf_view_is_running (BAMF_VIEW (m_App)));
33+ SetQuirk (QUIRK_ACTIVE, bamf_view_is_active (BAMF_VIEW (m_App)));
34+ SetQuirk (QUIRK_RUNNING, bamf_view_is_running (BAMF_VIEW (m_App)));
35
36 g_free (icon_name);
37
38@@ -110,7 +110,7 @@
39 return;
40
41 Present (0.5f, 600);
42- UpdateQuirkTimeDelayed (300, LAUNCHER_ICON_QUIRK_SHIMMER);
43+ UpdateQuirkTimeDelayed (300, QUIRK_SHIMMER);
44 }
45
46 bool
47@@ -197,7 +197,7 @@
48 g_error_free (error);
49 }
50
51- UpdateQuirkTime (LAUNCHER_ICON_QUIRK_STARTING);
52+ UpdateQuirkTime (QUIRK_STARTING);
53 }
54
55 void
56@@ -353,9 +353,9 @@
57
58 if (!running)
59 {
60- if (GetQuirk (LAUNCHER_ICON_QUIRK_STARTING))
61+ if (GetQuirk (QUIRK_STARTING))
62 return;
63- SetQuirk (LAUNCHER_ICON_QUIRK_STARTING, true);
64+ SetQuirk (QUIRK_STARTING, true);
65 OpenInstance ();
66 return;
67 }
68@@ -380,14 +380,14 @@
69 BamfLauncherIcon *self = (BamfLauncherIcon *) data;
70
71 if (!bamf_view_is_sticky (BAMF_VIEW (self->m_App)))
72- self->SetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE, visible);
73+ self->SetQuirk (QUIRK_VISIBLE, visible);
74 }
75
76 void
77 BamfLauncherIcon::OnRunningChanged (BamfView *view, gboolean running, gpointer data)
78 {
79 BamfLauncherIcon *self = (BamfLauncherIcon *) data;
80- self->SetQuirk (LAUNCHER_ICON_QUIRK_RUNNING, running);
81+ self->SetQuirk (QUIRK_RUNNING, running);
82
83 if (running)
84 {
85@@ -400,14 +400,14 @@
86 BamfLauncherIcon::OnActiveChanged (BamfView *view, gboolean active, gpointer data)
87 {
88 BamfLauncherIcon *self = (BamfLauncherIcon *) data;
89- self->SetQuirk (LAUNCHER_ICON_QUIRK_ACTIVE, active);
90+ self->SetQuirk (QUIRK_ACTIVE, active);
91 }
92
93 void
94 BamfLauncherIcon::OnUrgentChanged (BamfView *view, gboolean urgent, gpointer data)
95 {
96 BamfLauncherIcon *self = (BamfLauncherIcon *) data;
97- self->SetQuirk (LAUNCHER_ICON_QUIRK_URGENT, urgent);
98+ self->SetQuirk (QUIRK_URGENT, urgent);
99 }
100
101 void
102
103=== modified file 'src/Launcher.cpp'
104--- src/Launcher.cpp 2010-12-17 11:49:38 +0000
105+++ src/Launcher.cpp 2010-12-22 01:51:30 +0000
106@@ -38,11 +38,8 @@
107 #include "QuicklistManager.h"
108 #include "QuicklistView.h"
109
110-#define ANIM_DURATION_SHORT 125
111-#define ANIM_DURATION 200
112-#define ANIM_DURATION_LONG 350
113-
114 #define URGENT_BLINKS 3
115+#define WIGGLE_CYCLES 6
116
117 #define MAX_STARTING_BLINKS 5
118 #define STARTING_BLINK_LAMBDA 3
119@@ -240,8 +237,9 @@
120 _launcher_top_y = 0;
121 _launcher_bottom_y = 0;
122 _folded_z_distance = 10.0f;
123- _launcher_state = LAUNCHER_FOLDED;
124 _launcher_action_state = ACTION_NONE;
125+ _launch_animation = LAUNCH_ANIMATION_NONE;
126+ _urgent_animation = URGENT_ANIMATION_NONE;
127 _icon_under_mouse = NULL;
128 _icon_mouse_down = NULL;
129 _drag_icon = NULL;
130@@ -271,6 +269,8 @@
131 _mouse_inside_trigger = false;
132 _window_over_launcher = false;
133 _render_drag_window = false;
134+ _backlight_always_on = false;
135+
136
137 // 0 out timers to avoid wonky startups
138 _enter_time.tv_sec = 0;
139@@ -390,35 +390,35 @@
140
141 bool Launcher::IconNeedsAnimation (LauncherIcon *icon, struct timespec const &current)
142 {
143- struct timespec time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_VISIBLE);
144- if (TimeDelta (&current, &time) < ANIM_DURATION_SHORT)
145- return true;
146-
147- time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_RUNNING);
148- if (TimeDelta (&current, &time) < ANIM_DURATION_SHORT)
149- return true;
150-
151- time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_STARTING);
152+ struct timespec time = icon->GetQuirkTime (LauncherIcon::QUIRK_VISIBLE);
153+ if (TimeDelta (&current, &time) < ANIM_DURATION_SHORT)
154+ return true;
155+
156+ time = icon->GetQuirkTime (LauncherIcon::QUIRK_RUNNING);
157+ if (TimeDelta (&current, &time) < ANIM_DURATION_SHORT)
158+ return true;
159+
160+ time = icon->GetQuirkTime (LauncherIcon::QUIRK_STARTING);
161 if (TimeDelta (&current, &time) < (ANIM_DURATION_LONG * MAX_STARTING_BLINKS * STARTING_BLINK_LAMBDA * 2))
162 return true;
163
164- time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_URGENT);
165+ time = icon->GetQuirkTime (LauncherIcon::QUIRK_URGENT);
166 if (TimeDelta (&current, &time) < (ANIM_DURATION_LONG * URGENT_BLINKS * 2))
167 return true;
168
169- time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_PRESENTED);
170+ time = icon->GetQuirkTime (LauncherIcon::QUIRK_PRESENTED);
171 if (TimeDelta (&current, &time) < ANIM_DURATION)
172 return true;
173
174- time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_SHIMMER);
175+ time = icon->GetQuirkTime (LauncherIcon::QUIRK_SHIMMER);
176 if (TimeDelta (&current, &time) < ANIM_DURATION_LONG)
177 return true;
178
179- time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_CENTER_SAVED);
180+ time = icon->GetQuirkTime (LauncherIcon::QUIRK_CENTER_SAVED);
181 if (TimeDelta (&current, &time) < ANIM_DURATION)
182 return true;
183
184- time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_PROGRESS);
185+ time = icon->GetQuirkTime (LauncherIcon::QUIRK_PROGRESS);
186 if (TimeDelta (&current, &time) < ANIM_DURATION)
187 return true;
188
189@@ -495,15 +495,15 @@
190
191 float IconVisibleProgress (LauncherIcon *icon, struct timespec const &current)
192 {
193- if (icon->GetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE))
194+ if (icon->GetQuirk (LauncherIcon::QUIRK_VISIBLE))
195 {
196- struct timespec icon_visible_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_VISIBLE);
197+ struct timespec icon_visible_time = icon->GetQuirkTime (LauncherIcon::QUIRK_VISIBLE);
198 int enter_ms = TimeDelta (&current, &icon_visible_time);
199 return CLAMP ((float) enter_ms / (float) ANIM_DURATION_SHORT, 0.0f, 1.0f);
200 }
201 else
202 {
203- struct timespec icon_hide_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_VISIBLE);
204+ struct timespec icon_hide_time = icon->GetQuirkTime (LauncherIcon::QUIRK_VISIBLE);
205 int hide_ms = TimeDelta (&current, &icon_hide_time);
206 return 1.0f - CLAMP ((float) hide_ms / (float) ANIM_DURATION_SHORT, 0.0f, 1.0f);
207 }
208@@ -537,11 +537,11 @@
209
210 float Launcher::IconPresentProgress (LauncherIcon *icon, struct timespec const &current)
211 {
212- struct timespec icon_present_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_PRESENTED);
213+ struct timespec icon_present_time = icon->GetQuirkTime (LauncherIcon::QUIRK_PRESENTED);
214 int ms = TimeDelta (&current, &icon_present_time);
215 float result = CLAMP ((float) ms / (float) ANIM_DURATION, 0.0f, 1.0f);
216
217- if (icon->GetQuirk (LAUNCHER_ICON_QUIRK_PRESENTED))
218+ if (icon->GetQuirk (LauncherIcon::QUIRK_PRESENTED))
219 return result;
220 else
221 return 1.0f - result;
222@@ -549,11 +549,16 @@
223
224 float Launcher::IconUrgentProgress (LauncherIcon *icon, struct timespec const &current)
225 {
226- struct timespec urgent_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_URGENT);
227+ struct timespec urgent_time = icon->GetQuirkTime (LauncherIcon::QUIRK_URGENT);
228 int urgent_ms = TimeDelta (&current, &urgent_time);
229- float result = CLAMP ((float) urgent_ms / (float) (ANIM_DURATION_LONG * URGENT_BLINKS * 2), 0.0f, 1.0f);
230+ float result;
231+
232+ if (_urgent_animation == URGENT_ANIMATION_WIGGLE)
233+ result = CLAMP ((float) urgent_ms / (float) (ANIM_DURATION_SHORT * WIGGLE_CYCLES), 0.0f, 1.0f);
234+ else
235+ result = CLAMP ((float) urgent_ms / (float) (ANIM_DURATION_LONG * URGENT_BLINKS * 2), 0.0f, 1.0f);
236
237- if (icon->GetQuirk (LAUNCHER_ICON_QUIRK_URGENT))
238+ if (icon->GetQuirk (LauncherIcon::QUIRK_URGENT))
239 return result;
240 else
241 return 1.0f - result;
242@@ -561,83 +566,117 @@
243
244 float Launcher::IconShimmerProgress (LauncherIcon *icon, struct timespec const &current)
245 {
246- struct timespec shimmer_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_SHIMMER);
247+ struct timespec shimmer_time = icon->GetQuirkTime (LauncherIcon::QUIRK_SHIMMER);
248 int shimmer_ms = TimeDelta (&current, &shimmer_time);
249 return CLAMP ((float) shimmer_ms / (float) ANIM_DURATION_LONG, 0.0f, 1.0f);
250 }
251
252 float Launcher::IconCenterTransitionProgress (LauncherIcon *icon, struct timespec const &current)
253 {
254- struct timespec save_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_CENTER_SAVED);
255+ struct timespec save_time = icon->GetQuirkTime (LauncherIcon::QUIRK_CENTER_SAVED);
256 int save_ms = TimeDelta (&current, &save_time);
257 return CLAMP ((float) save_ms / (float) ANIM_DURATION, 0.0f, 1.0f);
258 }
259
260 float Launcher::IconUrgentPulseValue (LauncherIcon *icon, struct timespec const &current)
261 {
262- if (!icon->GetQuirk (LAUNCHER_ICON_QUIRK_URGENT))
263+ if (!icon->GetQuirk (LauncherIcon::QUIRK_URGENT))
264 return 1.0f; // we are full on in a normal condition
265
266 double urgent_progress = (double) IconUrgentProgress (icon, current);
267 return 0.5f + (float) (std::cos (M_PI * (float) (URGENT_BLINKS * 2) * urgent_progress)) * 0.5f;
268 }
269
270+float Launcher::IconUrgentWiggleValue (LauncherIcon *icon, struct timespec const &current)
271+{
272+ if (!icon->GetQuirk (LauncherIcon::QUIRK_URGENT))
273+ return 0.0f; // we are full on in a normal condition
274+
275+ double urgent_progress = (double) IconUrgentProgress (icon, current);
276+ return 0.3f * (float) (std::sin (M_PI * (float) (WIGGLE_CYCLES * 2) * urgent_progress)) * 0.5f;
277+}
278+
279+float Launcher::IconStartingBlinkValue (LauncherIcon *icon, struct timespec const &current)
280+{
281+ struct timespec starting_time = icon->GetQuirkTime (LauncherIcon::QUIRK_STARTING);
282+ int starting_ms = TimeDelta (&current, &starting_time);
283+ double starting_progress = (double) CLAMP ((float) starting_ms / (float) (ANIM_DURATION_LONG * STARTING_BLINK_LAMBDA), 0.0f, 1.0f);
284+ return 0.5f + (float) (std::cos (M_PI * (_backlight_always_on ? 4.0f : 3.0f) * starting_progress)) * 0.5f;
285+}
286+
287 float Launcher::IconStartingPulseValue (LauncherIcon *icon, struct timespec const &current)
288 {
289- struct timespec starting_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_STARTING);
290+ struct timespec starting_time = icon->GetQuirkTime (LauncherIcon::QUIRK_STARTING);
291 int starting_ms = TimeDelta (&current, &starting_time);
292 double starting_progress = (double) CLAMP ((float) starting_ms / (float) (ANIM_DURATION_LONG * MAX_STARTING_BLINKS * STARTING_BLINK_LAMBDA * 2), 0.0f, 1.0f);
293
294- if (starting_progress == 1.0f && !icon->GetQuirk (LAUNCHER_ICON_QUIRK_RUNNING))
295+ if (starting_progress == 1.0f && !icon->GetQuirk (LauncherIcon::QUIRK_RUNNING))
296 {
297- icon->SetQuirk (LAUNCHER_ICON_QUIRK_STARTING, false);
298- icon->ResetQuirkTime (LAUNCHER_ICON_QUIRK_STARTING);
299+ icon->SetQuirk (LauncherIcon::QUIRK_STARTING, false);
300+ icon->ResetQuirkTime (LauncherIcon::QUIRK_STARTING);
301 }
302
303- return 1.0f - (0.5f + (float) (std::cos (M_PI * (float) (MAX_STARTING_BLINKS * 2) * starting_progress)) * 0.5f);
304+ return 0.5f + (float) (std::cos (M_PI * (float) (MAX_STARTING_BLINKS * 2) * starting_progress)) * 0.5f;
305 }
306
307 float Launcher::IconBackgroundIntensity (LauncherIcon *icon, struct timespec const &current)
308 {
309 float result = 0.0f;
310- struct timespec running_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_RUNNING);
311+
312+ struct timespec running_time = icon->GetQuirkTime (LauncherIcon::QUIRK_RUNNING);
313 int running_ms = TimeDelta (&current, &running_time);
314 float running_progress = CLAMP ((float) running_ms / (float) ANIM_DURATION_SHORT, 0.0f, 1.0f);
315+
316+ if (!icon->GetQuirk (LauncherIcon::QUIRK_RUNNING))
317+ running_progress = 1.0f - running_progress;
318
319 // After we finish a fade in from running, we can reset the quirk
320- if (running_progress == 1.0f && icon->GetQuirk (LAUNCHER_ICON_QUIRK_RUNNING))
321- {
322- icon->SetQuirk (LAUNCHER_ICON_QUIRK_STARTING, false);
323- icon->ResetQuirkTime (LAUNCHER_ICON_QUIRK_STARTING);
324- }
325-
326- result = IconStartingPulseValue (icon, current) * BACKLIGHT_STRENGTH;
327-
328- if (icon->GetQuirk (LAUNCHER_ICON_QUIRK_RUNNING))
329- {
330- // running progress fades in whatever the pulsing did not fill in already
331- result += running_progress * (BACKLIGHT_STRENGTH - result);
332-
333- // urgent serves to bring the total down only
334- if (icon->GetQuirk (LAUNCHER_ICON_QUIRK_URGENT))
335- result *= 0.2f + 0.8f * IconUrgentPulseValue (icon, current);
336- }
337+ if (running_progress == 1.0f && icon->GetQuirk (LauncherIcon::QUIRK_RUNNING))
338+ icon->SetQuirk (LauncherIcon::QUIRK_STARTING, false);
339+
340+ float backlight_strength;
341+ if (_backlight_always_on)
342+ backlight_strength = BACKLIGHT_STRENGTH;
343 else
344+ backlight_strength = BACKLIGHT_STRENGTH * running_progress;
345+
346+ switch (_launch_animation)
347 {
348- // modestly evil
349- result += BACKLIGHT_STRENGTH - running_progress * BACKLIGHT_STRENGTH;
350+ case LAUNCH_ANIMATION_NONE:
351+ result = backlight_strength;
352+ break;
353+ case LAUNCH_ANIMATION_BLINK:
354+ if (_backlight_always_on)
355+ result = IconStartingBlinkValue (icon, current);
356+ else
357+ result = backlight_strength; // The blink concept is a failure in this case (it just doesn't work right)
358+ break;
359+ case LAUNCH_ANIMATION_PULSE:
360+ if (running_progress == 1.0f && icon->GetQuirk (LauncherIcon::QUIRK_RUNNING))
361+ icon->ResetQuirkTime (LauncherIcon::QUIRK_STARTING);
362+
363+ result = backlight_strength;
364+ if (_backlight_always_on)
365+ result *= CLAMP (running_progress + IconStartingPulseValue (icon, current), 0.0f, 1.0f);
366+ else
367+ result += (BACKLIGHT_STRENGTH - result) * (1.0f - IconStartingPulseValue (icon, current));
368+ break;
369 }
370-
371+
372+ // urgent serves to bring the total down only
373+ if (icon->GetQuirk (LauncherIcon::QUIRK_URGENT) && _urgent_animation == URGENT_ANIMATION_PULSE)
374+ result *= 0.2f + 0.8f * IconUrgentPulseValue (icon, current);
375+
376 return result;
377 }
378
379 float Launcher::IconProgressBias (LauncherIcon *icon, struct timespec const &current)
380 {
381- struct timespec icon_progress_time = icon->GetQuirkTime (LAUNCHER_ICON_QUIRK_PROGRESS);
382+ struct timespec icon_progress_time = icon->GetQuirkTime (LauncherIcon::QUIRK_PROGRESS);
383 int ms = TimeDelta (&current, &icon_progress_time);
384 float result = CLAMP ((float) ms / (float) ANIM_DURATION, 0.0f, 1.0f);
385
386- if (icon->GetQuirk (LAUNCHER_ICON_QUIRK_PROGRESS))
387+ if (icon->GetQuirk (LauncherIcon::QUIRK_PROGRESS))
388 return -1.0f + result;
389 else
390 return result;
391@@ -647,9 +686,9 @@
392 {
393 arg.icon = icon;
394 arg.alpha = 1.0f;
395- arg.running_arrow = icon->GetQuirk (LAUNCHER_ICON_QUIRK_RUNNING);
396- arg.active_arrow = icon->GetQuirk (LAUNCHER_ICON_QUIRK_ACTIVE);
397- arg.running_colored = icon->GetQuirk (LAUNCHER_ICON_QUIRK_URGENT);
398+ arg.running_arrow = icon->GetQuirk (LauncherIcon::QUIRK_RUNNING);
399+ arg.active_arrow = icon->GetQuirk (LauncherIcon::QUIRK_ACTIVE);
400+ arg.running_colored = icon->GetQuirk (LauncherIcon::QUIRK_URGENT);
401 arg.active_colored = false;
402 arg.x_rotation = 0.0f;
403 arg.y_rotation = 0.0f;
404@@ -660,7 +699,7 @@
405 arg.progress = CLAMP (icon->GetProgress (), 0.0f, 1.0f);
406
407 // we dont need to show strays
408- if (!icon->GetQuirk (LAUNCHER_ICON_QUIRK_RUNNING))
409+ if (!icon->GetQuirk (LauncherIcon::QUIRK_RUNNING))
410 arg.window_indicators = 0;
411 else
412 arg.window_indicators = MIN (4, icon->RelatedWindows ());
413@@ -670,11 +709,16 @@
414
415 float urgent_progress = IconUrgentProgress (icon, current);
416
417- if (icon->GetQuirk (LAUNCHER_ICON_QUIRK_URGENT))
418+ if (icon->GetQuirk (LauncherIcon::QUIRK_URGENT))
419 urgent_progress = CLAMP (urgent_progress * 3.0f, 0.0f, 1.0f); // we want to go 3x faster than the urgent normal cycle
420 else
421 urgent_progress = CLAMP (urgent_progress * 3.0f - 2.0f, 0.0f, 1.0f); // we want to go 3x faster than the urgent normal cycle
422 arg.glow_intensity = urgent_progress;
423+
424+ if (icon->GetQuirk (LauncherIcon::QUIRK_URGENT) && _urgent_animation == URGENT_ANIMATION_WIGGLE)
425+ {
426+ arg.z_rotation = IconUrgentWiggleValue (icon, current);
427+ }
428 }
429
430 void Launcher::FillRenderArg (LauncherIcon *icon,
431@@ -1037,6 +1081,50 @@
432 EnsureAnimation ();
433 }
434
435+void Launcher::SetBacklightAlwaysOn (bool always_on)
436+{
437+ if (_backlight_always_on == always_on)
438+ return;
439+
440+ _backlight_always_on = always_on;
441+ EnsureAnimation ();
442+}
443+
444+bool Launcher::GetBacklightAlwaysOn ()
445+{
446+ return _backlight_always_on;
447+}
448+
449+void
450+Launcher::SetLaunchAnimation (LaunchAnimation animation)
451+{
452+ if (_launch_animation == animation)
453+ return;
454+
455+ _launch_animation = animation;
456+}
457+
458+Launcher::LaunchAnimation
459+Launcher::GetLaunchAnimation ()
460+{
461+ return _launch_animation;
462+}
463+
464+void
465+Launcher::SetUrgentAnimation (UrgentAnimation animation)
466+{
467+ if (_urgent_animation == animation)
468+ return;
469+
470+ _urgent_animation = animation;
471+}
472+
473+Launcher::UrgentAnimation
474+Launcher::GetUrgentAnimation ()
475+{
476+ return _urgent_animation;
477+}
478+
479 void
480 Launcher::EnsureHoverState ()
481 {
482@@ -1228,7 +1316,7 @@
483 nux::Matrix4 ProjectionMatrix;
484 nux::Matrix4 ViewProjectionMatrix;
485
486- if(nux::Abs (arg.x_rotation) < 0.01f)
487+ if(nux::Abs (arg.x_rotation) < 0.01f && nux::Abs (arg.y_rotation) < 0.01f && nux::Abs (arg.z_rotation) < 0.01f)
488 icon->SetFiltering(GL_NEAREST, GL_NEAREST);
489 else
490 icon->SetFiltering(GL_LINEAR, GL_LINEAR);
491@@ -1890,7 +1978,7 @@
492 // Because of the way icons fold and stack on one another, we must proceed in 2 steps.
493 for (rev_it = _model->rbegin (); rev_it != _model->rend (); rev_it++)
494 {
495- if ((*rev_it)->_folding_angle < 0.0f || !(*rev_it)->GetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE))
496+ if ((*rev_it)->_folding_angle < 0.0f || !(*rev_it)->GetQuirk (LauncherIcon::QUIRK_VISIBLE))
497 continue;
498
499 nux::Point2 screen_coord [4];
500@@ -1906,7 +1994,7 @@
501
502 for (it = _model->begin(); it != _model->end (); it++)
503 {
504- if ((*it)->_folding_angle >= 0.0f || !(*it)->GetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE))
505+ if ((*it)->_folding_angle >= 0.0f || !(*it)->GetQuirk (LauncherIcon::QUIRK_VISIBLE))
506 continue;
507
508 nux::Point2 screen_coord [4];
509
510=== modified file 'src/Launcher.h'
511--- src/Launcher.h 2010-12-16 07:02:03 +0000
512+++ src/Launcher.h 2010-12-22 01:51:30 +0000
513@@ -25,6 +25,7 @@
514
515 #include <Nux/View.h>
516 #include <Nux/BaseWindow.h>
517+
518 #include "Introspectable.h"
519 #include "LauncherIcon.h"
520 #include "LauncherDragWindow.h"
521@@ -32,12 +33,32 @@
522 #include "Nux/TimerProc.h"
523 #include "PluginAdapter.h"
524
525+#define ANIM_DURATION_SHORT 125
526+#define ANIM_DURATION 200
527+#define ANIM_DURATION_LONG 350
528+
529 class LauncherModel;
530 class QuicklistView;
531+class LauncherIcon;
532+class LauncherDragWindow;
533
534 class Launcher : public Introspectable, public nux::View
535 {
536 public:
537+ typedef enum
538+ {
539+ LAUNCH_ANIMATION_NONE,
540+ LAUNCH_ANIMATION_PULSE,
541+ LAUNCH_ANIMATION_BLINK,
542+ } LaunchAnimation;
543+
544+ typedef enum
545+ {
546+ URGENT_ANIMATION_NONE,
547+ URGENT_ANIMATION_PULSE,
548+ URGENT_ANIMATION_WIGGLE,
549+ } UrgentAnimation;
550+
551 Launcher(nux::BaseWindow *parent, CompScreen *screen, NUX_FILE_LINE_PROTO);
552 ~Launcher();
553
554@@ -57,9 +78,20 @@
555
556 void SetAutohide (bool autohide, nux::View *show_trigger);
557 bool AutohideEnabled ();
558+
559+ void SetBacklightAlwaysOn (bool always_on);
560+ bool GetBacklightAlwaysOn ();
561+
562+ void SetLaunchAnimation (LaunchAnimation animation);
563+ LaunchAnimation GetLaunchAnimation ();
564+
565+ void SetUrgentAnimation (UrgentAnimation animation);
566+ UrgentAnimation GetUrgentAnimation ();
567
568 nux::BaseWindow* GetParent () { return _parent; };
569
570+ static void SetTimeStruct (struct timespec *timer, struct timespec *sister = 0, int sister_relation = 0);
571+
572 virtual void RecvMouseUp(int x, int y, unsigned long button_flags, unsigned long key_flags);
573 virtual void RecvMouseDown(int x, int y, unsigned long button_flags, unsigned long key_flags);
574 virtual void RecvMouseDrag(int x, int y, int dx, int dy, unsigned long button_flags, unsigned long key_flags);
575@@ -81,12 +113,6 @@
576 private:
577 typedef enum
578 {
579- LAUNCHER_FOLDED,
580- LAUNCHER_UNFOLDED
581- } LauncherState;
582-
583- typedef enum
584- {
585 ACTION_NONE,
586 ACTION_DRAG_LAUNCHER,
587 ACTION_DRAG_ICON,
588@@ -131,7 +157,6 @@
589
590 bool IconNeedsAnimation (LauncherIcon *icon, struct timespec const &current);
591 bool AnimationInProgress ();
592- void SetTimeStruct (struct timespec *timer, struct timespec *sister = 0, int sister_relation = 0);
593
594 void EnsureHoverState ();
595 void EnsureHiddenState ();
596@@ -149,6 +174,8 @@
597 float IconUrgentProgress (LauncherIcon *icon, struct timespec const &current);
598 float IconShimmerProgress (LauncherIcon *icon, struct timespec const &current);
599 float IconUrgentPulseValue (LauncherIcon *icon, struct timespec const &current);
600+ float IconUrgentWiggleValue (LauncherIcon *icon, struct timespec const &current);
601+ float IconStartingBlinkValue (LauncherIcon *icon, struct timespec const &current);
602 float IconStartingPulseValue (LauncherIcon *icon, struct timespec const &current);
603 float IconBackgroundIntensity (LauncherIcon *icon, struct timespec const &current);
604 float IconProgressBias (LauncherIcon *icon, struct timespec const &current);
605@@ -237,6 +264,7 @@
606 bool _mouse_inside_trigger;
607 bool _window_over_launcher;
608 bool _render_drag_window;
609+ bool _backlight_always_on;
610
611 float _folded_angle;
612 float _neg_folded_angle;
613@@ -244,8 +272,9 @@
614 float _launcher_top_y;
615 float _launcher_bottom_y;
616
617- LauncherState _launcher_state;
618 LauncherActionState _launcher_action_state;
619+ LaunchAnimation _launch_animation;
620+ UrgentAnimation _urgent_animation;
621
622 LauncherIcon* _icon_under_mouse;
623 LauncherIcon* _icon_mouse_down;
624
625=== modified file 'src/LauncherController.cpp'
626--- src/LauncherController.cpp 2010-12-15 23:50:38 +0000
627+++ src/LauncherController.cpp 2010-12-22 01:51:30 +0000
628@@ -193,9 +193,9 @@
629
630 expoIcon->SetTooltipText ("Workspace Switcher");
631 expoIcon->SetIconName ("workspace-switcher");
632- expoIcon->SetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE, true);
633- expoIcon->SetQuirk (LAUNCHER_ICON_QUIRK_RUNNING, false);
634- expoIcon->SetIconType (LAUNCHER_ICON_TYPE_END);
635+ expoIcon->SetQuirk (LauncherIcon::QUIRK_VISIBLE, true);
636+ expoIcon->SetQuirk (LauncherIcon::QUIRK_RUNNING, false);
637+ expoIcon->SetIconType (LauncherIcon::TYPE_END);
638
639 expoIcon->MouseClick.connect (sigc::mem_fun (this, &LauncherController::OnExpoClicked));
640
641@@ -253,7 +253,7 @@
642 app = BAMF_APPLICATION (view);
643
644 BamfLauncherIcon *icon = new BamfLauncherIcon (self->_launcher, app, self->_screen);
645- icon->SetIconType (LAUNCHER_ICON_TYPE_APPLICATION);
646+ icon->SetIconType (LauncherIcon::TYPE_APPLICATION);
647 icon->SetSortPriority (self->_sort_priority++);
648
649 self->RegisterIcon (icon);
650@@ -279,7 +279,7 @@
651
652 bamf_view_set_sticky (BAMF_VIEW (app), true);
653 icon = new BamfLauncherIcon (_launcher, app, _screen);
654- icon->SetIconType (LAUNCHER_ICON_TYPE_APPLICATION);
655+ icon->SetIconType (LauncherIcon::TYPE_APPLICATION);
656 icon->SetSortPriority (_sort_priority++);
657
658 return icon;
659
660=== modified file 'src/LauncherIcon.cpp'
661--- src/LauncherIcon.cpp 2010-12-15 19:21:14 +0000
662+++ src/LauncherIcon.cpp 2010-12-22 01:51:30 +0000
663@@ -49,7 +49,7 @@
664 _launcher = launcher;
665 m_TooltipText = "blank";
666
667- for (int i = 0; i < LAUNCHER_ICON_QUIRK_LAST; i++)
668+ for (int i = 0; i < QUIRK_LAST; i++)
669 {
670 _quirks[i] = 0;
671 _quirk_times[i].tv_sec = 0;
672@@ -63,7 +63,7 @@
673
674 _mouse_inside = false;
675 _tooltip = new nux::Tooltip ();
676- _icon_type = LAUNCHER_ICON_TYPE_NONE;
677+ _icon_type = TYPE_NONE;
678 _sort_priority = 0;
679
680 _quicklist = new QuicklistView ();
681@@ -114,11 +114,11 @@
682 g_variant_builder_add (builder, "{sv}", "tooltip-text", g_variant_new_string (m_TooltipText.GetTCharPtr ()));
683
684 g_variant_builder_add (builder, "{sv}", "sort-priority", g_variant_new_int32 (_sort_priority));
685- g_variant_builder_add (builder, "{sv}", "quirk-active", g_variant_new_boolean (GetQuirk (LAUNCHER_ICON_QUIRK_ACTIVE)));
686- g_variant_builder_add (builder, "{sv}", "quirk-visible", g_variant_new_boolean (GetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE)));
687- g_variant_builder_add (builder, "{sv}", "quirk-urgent", g_variant_new_boolean (GetQuirk (LAUNCHER_ICON_QUIRK_URGENT)));
688- g_variant_builder_add (builder, "{sv}", "quirk-running", g_variant_new_boolean (GetQuirk (LAUNCHER_ICON_QUIRK_RUNNING)));
689- g_variant_builder_add (builder, "{sv}", "quirk-presented", g_variant_new_boolean (GetQuirk (LAUNCHER_ICON_QUIRK_PRESENTED)));
690+ g_variant_builder_add (builder, "{sv}", "quirk-active", g_variant_new_boolean (GetQuirk (QUIRK_ACTIVE)));
691+ g_variant_builder_add (builder, "{sv}", "quirk-visible", g_variant_new_boolean (GetQuirk (QUIRK_VISIBLE)));
692+ g_variant_builder_add (builder, "{sv}", "quirk-urgent", g_variant_new_boolean (GetQuirk (QUIRK_URGENT)));
693+ g_variant_builder_add (builder, "{sv}", "quirk-running", g_variant_new_boolean (GetQuirk (QUIRK_RUNNING)));
694+ g_variant_builder_add (builder, "{sv}", "quirk-presented", g_variant_new_boolean (GetQuirk (QUIRK_PRESENTED)));
695 }
696
697 nux::Color LauncherIcon::BackgroundColor ()
698@@ -422,14 +422,14 @@
699 LauncherIcon::SaveCenter ()
700 {
701 _saved_center = _center;
702- UpdateQuirkTime (LAUNCHER_ICON_QUIRK_CENTER_SAVED);
703+ UpdateQuirkTime (QUIRK_CENTER_SAVED);
704 }
705
706 gboolean
707 LauncherIcon::OnPresentTimeout (gpointer data)
708 {
709 LauncherIcon *self = (LauncherIcon*) data;
710- if (!self->GetQuirk (LAUNCHER_ICON_QUIRK_PRESENTED))
711+ if (!self->GetQuirk (QUIRK_PRESENTED))
712 return false;
713
714 self->_present_time_handle = 0;
715@@ -446,26 +446,26 @@
716 void
717 LauncherIcon::Present (float present_urgency, int length)
718 {
719- if (GetQuirk (LAUNCHER_ICON_QUIRK_PRESENTED))
720+ if (GetQuirk (QUIRK_PRESENTED))
721 return;
722
723 if (length >= 0)
724 _present_time_handle = g_timeout_add (length, &LauncherIcon::OnPresentTimeout, this);
725
726 _present_urgency = CLAMP (present_urgency, 0.0f, 1.0f);
727- SetQuirk (LAUNCHER_ICON_QUIRK_PRESENTED, true);
728+ SetQuirk (QUIRK_PRESENTED, true);
729 }
730
731 void
732 LauncherIcon::Unpresent ()
733 {
734- if (!GetQuirk (LAUNCHER_ICON_QUIRK_PRESENTED))
735+ if (!GetQuirk (QUIRK_PRESENTED))
736 return;
737
738 if (_present_time_handle > 0)
739 g_source_remove (_present_time_handle);
740
741- SetQuirk (LAUNCHER_ICON_QUIRK_PRESENTED, false);
742+ SetQuirk (QUIRK_PRESENTED, false);
743 }
744
745 void
746@@ -481,12 +481,12 @@
747 void
748 LauncherIcon::Remove ()
749 {
750- SetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE, false);
751+ SetQuirk (QUIRK_VISIBLE, false);
752 remove.emit (this);
753 }
754
755 void
756-LauncherIcon::SetIconType (LauncherIconType type)
757+LauncherIcon::SetIconType (IconType type)
758 {
759 _icon_type = type;
760 }
761@@ -503,32 +503,35 @@
762 return _sort_priority;
763 }
764
765-LauncherIconType
766+LauncherIcon::IconType
767 LauncherIcon::Type ()
768 {
769 return _icon_type;
770 }
771
772 bool
773-LauncherIcon::GetQuirk (LauncherIconQuirk quirk)
774+LauncherIcon::GetQuirk (LauncherIcon::Quirk quirk)
775 {
776 return _quirks[quirk];
777 }
778
779 void
780-LauncherIcon::SetQuirk (LauncherIconQuirk quirk, bool value)
781+LauncherIcon::SetQuirk (LauncherIcon::Quirk quirk, bool value)
782 {
783 if (_quirks[quirk] == value)
784 return;
785
786 _quirks[quirk] = value;
787- clock_gettime (CLOCK_MONOTONIC, &(_quirk_times[quirk]));
788+ if (quirk == QUIRK_VISIBLE)
789+ Launcher::SetTimeStruct (&(_quirk_times[quirk]), &(_quirk_times[quirk]), ANIM_DURATION_SHORT);
790+ else
791+ clock_gettime (CLOCK_MONOTONIC, &(_quirk_times[quirk]));
792 needs_redraw.emit (this);
793
794 // Present on urgent as a general policy
795- if (quirk == LAUNCHER_ICON_QUIRK_VISIBLE && value)
796+ if (quirk == QUIRK_VISIBLE && value)
797 Present (0.5f, 1500);
798- if (quirk == LAUNCHER_ICON_QUIRK_URGENT && value)
799+ if (quirk == QUIRK_URGENT && value)
800 Present (0.5f, 1500);
801 }
802
803@@ -545,7 +548,7 @@
804 }
805
806 void
807-LauncherIcon::UpdateQuirkTimeDelayed (guint ms, LauncherIconQuirk quirk)
808+LauncherIcon::UpdateQuirkTimeDelayed (guint ms, LauncherIcon::Quirk quirk)
809 {
810 DelayedUpdateArg *arg = new DelayedUpdateArg ();
811 arg->self = this;
812@@ -555,21 +558,21 @@
813 }
814
815 void
816-LauncherIcon::UpdateQuirkTime (LauncherIconQuirk quirk)
817+LauncherIcon::UpdateQuirkTime (LauncherIcon::Quirk quirk)
818 {
819 clock_gettime (CLOCK_MONOTONIC, &(_quirk_times[quirk]));
820 needs_redraw.emit (this);
821 }
822
823 void
824-LauncherIcon::ResetQuirkTime (LauncherIconQuirk quirk)
825+LauncherIcon::ResetQuirkTime (LauncherIcon::Quirk quirk)
826 {
827 _quirk_times[quirk].tv_sec = 0;
828 _quirk_times[quirk].tv_nsec = 0;
829 }
830
831 struct timespec
832-LauncherIcon::GetQuirkTime (LauncherIconQuirk quirk)
833+LauncherIcon::GetQuirkTime (LauncherIcon::Quirk quirk)
834 {
835 return _quirk_times[quirk];
836 }
837
838=== modified file 'src/LauncherIcon.h'
839--- src/LauncherIcon.h 2010-12-15 19:21:14 +0000
840+++ src/LauncherIcon.h 2010-12-22 01:51:30 +0000
841@@ -36,40 +36,42 @@
842 #include "Tooltip.h"
843 #include "QuicklistView.h"
844 #include "Introspectable.h"
845+#include "Launcher.h"
846
847 class Launcher;
848 class QuicklistView;
849
850-typedef enum
851-{
852- LAUNCHER_ICON_TYPE_NONE,
853- LAUNCHER_ICON_TYPE_BEGIN,
854- LAUNCHER_ICON_TYPE_FAVORITE,
855- LAUNCHER_ICON_TYPE_APPLICATION,
856- LAUNCHER_ICON_TYPE_PLACE,
857- LAUNCHER_ICON_TYPE_DEVICE,
858- LAUNCHER_ICON_TYPE_TRASH,
859- LAUNCHER_ICON_TYPE_END,
860-} LauncherIconType;
861-
862-typedef enum
863-{
864- LAUNCHER_ICON_QUIRK_VISIBLE,
865- LAUNCHER_ICON_QUIRK_ACTIVE,
866- LAUNCHER_ICON_QUIRK_RUNNING,
867- LAUNCHER_ICON_QUIRK_URGENT,
868- LAUNCHER_ICON_QUIRK_PRESENTED,
869- LAUNCHER_ICON_QUIRK_STARTING,
870- LAUNCHER_ICON_QUIRK_SHIMMER,
871- LAUNCHER_ICON_QUIRK_CENTER_SAVED,
872- LAUNCHER_ICON_QUIRK_PROGRESS,
873-
874- LAUNCHER_ICON_QUIRK_LAST,
875-} LauncherIconQuirk;
876
877 class LauncherIcon : public Introspectable, public nux::InitiallyUnownedObject, public sigc::trackable
878 {
879 public:
880+ typedef enum
881+ {
882+ TYPE_NONE,
883+ TYPE_BEGIN,
884+ TYPE_FAVORITE,
885+ TYPE_APPLICATION,
886+ TYPE_PLACE,
887+ TYPE_DEVICE,
888+ TYPE_TRASH,
889+ TYPE_END,
890+ } IconType;
891+
892+ typedef enum
893+ {
894+ QUIRK_VISIBLE,
895+ QUIRK_ACTIVE,
896+ QUIRK_RUNNING,
897+ QUIRK_URGENT,
898+ QUIRK_PRESENTED,
899+ QUIRK_STARTING,
900+ QUIRK_SHIMMER,
901+ QUIRK_CENTER_SAVED,
902+ QUIRK_PROGRESS,
903+
904+ QUIRK_LAST,
905+ } Quirk;
906+
907 LauncherIcon(Launcher* launcher);
908 virtual ~LauncherIcon();
909
910@@ -97,13 +99,13 @@
911
912 float GetProgress ();
913
914- bool GetQuirk (LauncherIconQuirk quirk);
915- struct timespec GetQuirkTime (LauncherIconQuirk quirk);
916-
917- LauncherIconType Type ();
918-
919- nux::Color BackgroundColor ();
920- nux::Color GlowColor ();
921+ bool GetQuirk (Quirk quirk);
922+ struct timespec GetQuirkTime (Quirk quirk);
923+
924+ IconType Type ();
925+
926+ virtual nux::Color BackgroundColor ();
927+ virtual nux::Color GlowColor ();
928
929 nux::BaseTexture * TextureForSize (int size);
930
931@@ -123,11 +125,11 @@
932 const gchar * GetName ();
933 void AddProperties (GVariantBuilder *builder);
934
935- void SetQuirk (LauncherIconQuirk quirk, bool value);
936+ void SetQuirk (Quirk quirk, bool value);
937
938- void UpdateQuirkTimeDelayed (guint ms, LauncherIconQuirk quirk);
939- void UpdateQuirkTime (LauncherIconQuirk quirk);
940- void ResetQuirkTime (LauncherIconQuirk quirk);
941+ void UpdateQuirkTimeDelayed (guint ms, Quirk quirk);
942+ void UpdateQuirkTime (Quirk quirk);
943+ void ResetQuirkTime (Quirk quirk);
944
945 void SetRelatedWindows (int windows);
946 void Remove ();
947@@ -137,7 +139,7 @@
948 void Present (float urgency, int length);
949 void Unpresent ();
950
951- void SetIconType (LauncherIconType type);
952+ void SetIconType (IconType type);
953 void SetSortPriority (int priority);
954
955 virtual std::list<DbusmenuMenuitem *> GetMenus ();
956@@ -171,7 +173,7 @@
957 typedef struct
958 {
959 LauncherIcon *self;
960- LauncherIconQuirk quirk;
961+ Quirk quirk;
962 } DelayedUpdateArg;
963
964 static void ChildRealized (DbusmenuMenuitem *newitem, QuicklistView *quicklist);
965@@ -195,10 +197,10 @@
966 nux::Point3 _center;
967 nux::Point3 _last_stable;
968 nux::Point3 _saved_center;
969- LauncherIconType _icon_type;
970+ IconType _icon_type;
971
972- bool _quirks[LAUNCHER_ICON_QUIRK_LAST];
973- struct timespec _quirk_times[LAUNCHER_ICON_QUIRK_LAST];
974+ bool _quirks[QUIRK_LAST];
975+ struct timespec _quirk_times[QUIRK_LAST];
976
977 };
978
979
980=== modified file 'src/LauncherModel.cpp'
981--- src/LauncherModel.cpp 2010-12-11 05:56:12 +0000
982+++ src/LauncherModel.cpp 2010-12-22 01:51:30 +0000
983@@ -36,7 +36,7 @@
984
985 bool LauncherModel::IconShouldShelf (LauncherIcon *icon)
986 {
987- return icon->Type () == LAUNCHER_ICON_TYPE_TRASH;
988+ return icon->Type () == LauncherIcon::TYPE_TRASH;
989 }
990
991 void
992
993=== modified file 'src/QuicklistMenuItemRadio.cpp'
994--- src/QuicklistMenuItemRadio.cpp 2010-12-07 16:20:08 +0000
995+++ src/QuicklistMenuItemRadio.cpp 2010-12-22 01:51:30 +0000
996@@ -349,4 +349,4 @@
997 return _normalTexture[0]->GetWidth ();
998
999 return 0;
1000-}
1001\ No newline at end of file
1002+}
1003
1004=== modified file 'src/TrashLauncherIcon.cpp'
1005--- src/TrashLauncherIcon.cpp 2010-12-13 23:30:10 +0000
1006+++ src/TrashLauncherIcon.cpp 2010-12-22 01:51:30 +0000
1007@@ -25,9 +25,9 @@
1008 {
1009 SetTooltipText ("Trash");
1010 SetIconName ("user-trash");
1011- SetQuirk (LAUNCHER_ICON_QUIRK_VISIBLE, true);
1012- SetQuirk (LAUNCHER_ICON_QUIRK_RUNNING, false);
1013- SetIconType (LAUNCHER_ICON_TYPE_TRASH);
1014+ SetQuirk (QUIRK_VISIBLE, true);
1015+ SetQuirk (QUIRK_RUNNING, false);
1016+ SetIconType (TYPE_TRASH);
1017
1018 m_TrashMonitor = g_file_monitor_directory (g_file_new_for_uri("trash:///"),
1019 G_FILE_MONITOR_NONE,
1020@@ -47,6 +47,18 @@
1021 g_object_unref (m_TrashMonitor);
1022 }
1023
1024+nux::Color
1025+TrashLauncherIcon::BackgroundColor ()
1026+{
1027+ return nux::Color (0xFF333333);
1028+}
1029+
1030+nux::Color
1031+TrashLauncherIcon::GlowColor ()
1032+{
1033+ return nux::Color (0xFF333333);
1034+}
1035+
1036 void
1037 TrashLauncherIcon::OnMouseClick (int button)
1038 {
1039
1040=== modified file 'src/TrashLauncherIcon.h'
1041--- src/TrashLauncherIcon.h 2010-12-07 18:14:21 +0000
1042+++ src/TrashLauncherIcon.h 2010-12-22 01:51:30 +0000
1043@@ -27,6 +27,9 @@
1044 public:
1045 TrashLauncherIcon (Launcher *launcher);
1046 ~TrashLauncherIcon ();
1047+
1048+ virtual nux::Color BackgroundColor ();
1049+ virtual nux::Color GlowColor ();
1050
1051 protected:
1052 void OnMouseClick (int button);
1053
1054=== modified file 'src/unityshell.cpp'
1055--- src/unityshell.cpp 2010-12-17 14:11:55 +0000
1056+++ src/unityshell.cpp 2010-12-22 01:51:30 +0000
1057@@ -357,8 +357,14 @@
1058 launcher->SetAutohide (optionGetLauncherAutohide (),
1059 (nux::View *) panelView->HomeButton ());
1060 break;
1061- case UnityshellOptions::LauncherFloat:
1062- launcher->SetFloating (optionGetLauncherFloat ());
1063+ case UnityshellOptions::BacklightAlwaysOn:
1064+ launcher->SetBacklightAlwaysOn (optionGetBacklightAlwaysOn ());
1065+ break;
1066+ case UnityshellOptions::LaunchAnimation:
1067+ launcher->SetLaunchAnimation ((Launcher::LaunchAnimation) optionGetLaunchAnimation ());
1068+ break;
1069+ case UnityshellOptions::UrgentAnimation:
1070+ launcher->SetUrgentAnimation ((Launcher::UrgentAnimation) optionGetUrgentAnimation ());
1071 break;
1072 default:
1073 break;
1074@@ -412,8 +418,10 @@
1075
1076 debugger = new IntrospectionDBusInterface (this);
1077
1078- optionSetLauncherAutohideNotify (boost::bind (&UnityScreen::optionChanged, this, _1, _2));
1079- optionSetLauncherFloatNotify (boost::bind (&UnityScreen::optionChanged, this, _1, _2));
1080+ optionSetLauncherAutohideNotify (boost::bind (&UnityScreen::optionChanged, this, _1, _2));
1081+ optionSetBacklightAlwaysOnNotify (boost::bind (&UnityScreen::optionChanged, this, _1, _2));
1082+ optionSetLaunchAnimationNotify (boost::bind (&UnityScreen::optionChanged, this, _1, _2));
1083+ optionSetUrgentAnimationNotify (boost::bind (&UnityScreen::optionChanged, this, _1, _2));
1084
1085 g_timeout_add (0, &UnityScreen::initPluginActions, this);
1086 g_timeout_add (5000, (GSourceFunc) write_logger_data_to_disk, NULL);
1087@@ -471,6 +479,7 @@
1088 self->launcherWindow->InputWindowEnableStruts(true);
1089
1090 self->launcher->SetIconSize (54, 48);
1091+ self->launcher->SetBacklightAlwaysOn (true);
1092 LOGGER_END_PROCESS ("initLauncher-Launcher");
1093
1094 /* Setup panel */
1095@@ -500,6 +509,9 @@
1096 /* Setup Places */
1097 self->placesController = new PlacesController ();
1098
1099+ self->launcher->SetAutohide (true, (nux::View *) self->panelView->HomeButton ());
1100+ self->launcher->SetLaunchAnimation (Launcher::LAUNCH_ANIMATION_PULSE);
1101+ self->launcher->SetUrgentAnimation (Launcher::URGENT_ANIMATION_WIGGLE);
1102 g_timeout_add (2000, &UnityScreen::strutHackTimeout, self);
1103
1104 END_FUNCTION ();
1105
1106=== modified file 'unityshell.xml.in'
1107--- unityshell.xml.in 2010-12-13 20:43:37 +0000
1108+++ unityshell.xml.in 2010-12-22 01:51:30 +0000
1109@@ -1,52 +1,96 @@
1110 <?xml version="1.0" encoding="UTF-8"?>
1111 <compiz>
1112 <plugin name="unityshell" useBcop="true">
1113- <_short>Ubuntu Unity Plugin</_short>
1114- <_long>Plugin to draw the Unity Shell</_long>
1115- <category>Desktop</category>
1116- <deps>
1117- <relation type="after">
1118- <plugin>bailer</plugin>
1119- <plugin>detection</plugin>
1120- <plugin>composite</plugin>
1121- <plugin>opengl</plugin>
1122- <plugin>mousepoll</plugin>
1123- <plugin>move</plugin>
1124- <plugin>resize</plugin>
1125- <plugin>decor</plugin>
1126- <plugin>compiztoolbox</plugin>
1127- <plugin>place</plugin>
1128- <plugin>session</plugin>
1129- <plugin>animation</plugin>
1130- <plugin>regex</plugin>
1131- <plugin>cube</plugin>
1132- <plugin>rotate</plugin>
1133- <plugin>cubeaddon</plugin>
1134- <plugin>gnomecompat</plugin>
1135- <plugin>vpswitch</plugin>
1136- <plugin>fade</plugin>
1137- <plugin>staticswitcher</plugin>
1138- <plugin>scale</plugin>
1139- <plugin>expo</plugin>
1140- <plugin>ezoom</plugin>
1141- <plugin>wall</plugin>
1142- </relation>
1143- <requirement>
1144- <plugin>opengl</plugin>
1145- <plugin>wall</plugin>
1146- </requirement>
1147- </deps>
1148- <options>
1149- <option name="launcher_autohide" type="bool">
1150- <_short>Autohide Launcher</_short>
1151- <_long>Make the launcher hide automatically after some time inactive</_long>
1152- <default>false</default>
1153- </option>
1154- <option name="launcher_float" type="bool">
1155- <_short>Float Launcher</_short>
1156- <_long>Make the launcher appear above other windows</_long>
1157- <default>false</default>
1158- </option>
1159- </options>
1160+ <_short>Ubuntu Unity Plugin</_short>
1161+ <_long>Plugin to draw the Unity Shell</_long>
1162+ <category>Desktop</category>
1163+ <deps>
1164+ <relation type="after">
1165+ <plugin>bailer</plugin>
1166+ <plugin>detection</plugin>
1167+ <plugin>composite</plugin>
1168+ <plugin>opengl</plugin>
1169+ <plugin>mousepoll</plugin>
1170+ <plugin>move</plugin>
1171+ <plugin>resize</plugin>
1172+ <plugin>decor</plugin>
1173+ <plugin>compiztoolbox</plugin>
1174+ <plugin>place</plugin>
1175+ <plugin>session</plugin>
1176+ <plugin>animation</plugin>
1177+ <plugin>regex</plugin>
1178+ <plugin>cube</plugin>
1179+ <plugin>rotate</plugin>
1180+ <plugin>cubeaddon</plugin>
1181+ <plugin>gnomecompat</plugin>
1182+ <plugin>vpswitch</plugin>
1183+ <plugin>fade</plugin>
1184+ <plugin>staticswitcher</plugin>
1185+ <plugin>scale</plugin>
1186+ <plugin>expo</plugin>
1187+ <plugin>ezoom</plugin>
1188+ <plugin>wall</plugin>
1189+ </relation>
1190+ <requirement>
1191+ <plugin>opengl</plugin>
1192+ <plugin>wall</plugin>
1193+ </requirement>
1194+ </deps>
1195+ <options>
1196+ <group>
1197+ <_short>Behaviour</_short>
1198+ <option name="launcher_autohide" type="bool">
1199+ <_short>Autohide Launcher</_short>
1200+ <_long>Make the launcher hide automatically after some time inactive</_long>
1201+ <default>true</default>
1202+ </option>
1203+ </group>
1204+ <group>
1205+ <_short>Experimental</_short>
1206+ <option name="backlight_always_on" type="bool">
1207+ <_short>Backlight Always On</_short>
1208+ <_long>Make the launcher icons always have a backlight</_long>
1209+ <default>true</default>
1210+ </option>
1211+ <option name="launch_animation" type="int">
1212+ <_short>Launch Animation</_short>
1213+ <_long>Animation played when a launcher icon is in the process of spawning a process</_long>
1214+ <min>0</min>
1215+ <max>2</max>
1216+ <default>1</default>
1217+ <desc>
1218+ <value>0</value>
1219+ <_name>None</_name>
1220+ </desc>
1221+ <desc>
1222+ <value>1</value>
1223+ <_name>Pulse Until Running</_name>
1224+ </desc>
1225+ <desc>
1226+ <value>2</value>
1227+ <_name>Blink</_name>
1228+ </desc>
1229+ </option>
1230+ <option name="urgent_animation" type="int">
1231+ <_short>Uregnt Animation</_short>
1232+ <_long>Animation played when a launcher icon is in the urgent state</_long>
1233+ <min>0</min>
1234+ <max>2</max>
1235+ <default>2</default>
1236+ <desc>
1237+ <value>0</value>
1238+ <_name>None</_name>
1239+ </desc>
1240+ <desc>
1241+ <value>1</value>
1242+ <_name>Pulse</_name>
1243+ </desc>
1244+ <desc>
1245+ <value>2</value>
1246+ <_name>Wiggle</_name>
1247+ </desc>
1248+ </option>
1249+ </group>
1250+ </options>
1251 </plugin>
1252 </compiz>