Skip to content

Commit 2daf1ff

Browse files
committed
- Adjust Animation / Formatting
1 parent 6a22358 commit 2daf1ff

File tree

3 files changed

+85
-37
lines changed

3 files changed

+85
-37
lines changed

Flow.Launcher/MainWindow.xaml.cs

Lines changed: 71 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030
using ModernWpf.Controls;
3131
using System.Drawing;
3232
using System.Windows.Forms.Design.Behavior;
33+
using System.Security.Cryptography;
34+
using System.Runtime.CompilerServices;
35+
using Microsoft.VisualBasic.Devices;
36+
using Microsoft.FSharp.Data.UnitSystems.SI.UnitNames;
3337

3438
namespace Flow.Launcher
3539
{
@@ -105,7 +109,6 @@ private void OnLoaded(object sender, RoutedEventArgs _)
105109
// since the default main window visibility is visible
106110
// so we need set focus during startup
107111
QueryTextBox.Focus();
108-
109112
_viewModel.PropertyChanged += (o, e) =>
110113
{
111114
switch (e.PropertyName)
@@ -243,7 +246,9 @@ private void InitializeNotifyIcon()
243246
Icon = Properties.Resources.app,
244247
Visible = !_settings.HideNotifyIcon
245248
};
249+
246250
contextMenu = new ContextMenu();
251+
247252
var openIcon = new FontIcon { Glyph = "\ue71e" };
248253
var open = new MenuItem
249254
{
@@ -280,9 +285,11 @@ private void InitializeNotifyIcon()
280285
positionreset.Click += (o, e) => PositionReset();
281286
settings.Click += (o, e) => App.API.OpenSettingDialog();
282287
exit.Click += (o, e) => Close();
283-
contextMenu.Items.Add(open);
288+
284289
gamemode.ToolTip = InternationalizationManager.Instance.GetTranslation("GameModeToolTip");
285290
positionreset.ToolTip = InternationalizationManager.Instance.GetTranslation("PositionResetToolTip");
291+
292+
contextMenu.Items.Add(open);
286293
contextMenu.Items.Add(gamemode);
287294
contextMenu.Items.Add(positionreset);
288295
contextMenu.Items.Add(settings);
@@ -359,45 +366,91 @@ public void WindowAnimator()
359366

360367
_animating = true;
361368
UpdatePosition();
362-
Storyboard sb = new Storyboard();
369+
370+
Storyboard windowsb = new Storyboard();
371+
Storyboard clocksb = new Storyboard();
363372
Storyboard iconsb = new Storyboard();
364-
CircleEase easing = new CircleEase(); // or whatever easing class you want
373+
CircleEase easing = new CircleEase();
365374
easing.EasingMode = EasingMode.EaseInOut;
366-
var da = new DoubleAnimation
375+
376+
var WindowOpacity = new DoubleAnimation
367377
{
368378
From = 0,
369379
To = 1,
370380
Duration = TimeSpan.FromSeconds(0.25),
371381
FillBehavior = FillBehavior.Stop
372382
};
373383

374-
var da2 = new DoubleAnimation
384+
var WindowMotion = new DoubleAnimation
375385
{
376386
From = Top + 10,
377387
To = Top,
378388
Duration = TimeSpan.FromSeconds(0.25),
379389
FillBehavior = FillBehavior.Stop
380390
};
381-
var da3 = new DoubleAnimation
382-
{
391+
var IconMotion = new DoubleAnimation
392+
{
383393
From = 12,
384394
To = 0,
385395
EasingFunction = easing,
386396
Duration = TimeSpan.FromSeconds(0.36),
387397
FillBehavior = FillBehavior.Stop
388-
};
389-
Storyboard.SetTarget(da, this);
390-
Storyboard.SetTargetProperty(da, new PropertyPath(Window.OpacityProperty));
391-
Storyboard.SetTargetProperty(da2, new PropertyPath(Window.TopProperty));
392-
Storyboard.SetTargetProperty(da3, new PropertyPath(TopProperty));
393-
sb.Children.Add(da);
394-
sb.Children.Add(da2);
395-
iconsb.Children.Add(da3);
396-
sb.Completed += (_, _) => _animating = false;
398+
};
399+
400+
var ClockOpacity = new DoubleAnimation
401+
{
402+
From = 0,
403+
To = 1,
404+
EasingFunction = easing,
405+
Duration = TimeSpan.FromSeconds(0.36),
406+
FillBehavior = FillBehavior.Stop
407+
};
408+
double TargetIconOpacity = SearchIcon.Opacity; // Animation Target Opacity from Style
409+
var IconOpacity = new DoubleAnimation
410+
{
411+
From = 0,
412+
To = TargetIconOpacity,
413+
EasingFunction = easing,
414+
Duration = TimeSpan.FromSeconds(0.36),
415+
FillBehavior = FillBehavior.Stop
416+
};
417+
418+
double right = ClockPanel.Margin.Right;
419+
var thicknessAnimation = new ThicknessAnimation
420+
{
421+
From = new Thickness(0, 12, right, 0),
422+
To = new Thickness(0, 0, right, 0),
423+
EasingFunction = easing,
424+
Duration = TimeSpan.FromSeconds(0.36),
425+
FillBehavior = FillBehavior.Stop
426+
};
427+
428+
Storyboard.SetTargetProperty(ClockOpacity, new PropertyPath(OpacityProperty));
429+
Storyboard.SetTargetName(thicknessAnimation, "ClockPanel");
430+
Storyboard.SetTargetProperty(thicknessAnimation, new PropertyPath(MarginProperty));
431+
Storyboard.SetTarget(WindowOpacity, this);
432+
Storyboard.SetTargetProperty(WindowOpacity, new PropertyPath(Window.OpacityProperty));
433+
Storyboard.SetTargetProperty(WindowMotion, new PropertyPath(Window.TopProperty));
434+
Storyboard.SetTargetProperty(IconMotion, new PropertyPath(TopProperty));
435+
Storyboard.SetTargetProperty(IconOpacity, new PropertyPath(OpacityProperty));
436+
437+
clocksb.Children.Add(thicknessAnimation);
438+
clocksb.Children.Add(ClockOpacity);
439+
windowsb.Children.Add(WindowOpacity);
440+
windowsb.Children.Add(WindowMotion);
441+
iconsb.Children.Add(IconMotion);
442+
iconsb.Children.Add(IconOpacity);
443+
444+
windowsb.Completed += (_, _) => _animating = false;
397445
_settings.WindowLeft = Left;
398446
_settings.WindowTop = Top;
447+
448+
if (QueryTextBox.Text.Length == 0)
449+
{
450+
clocksb.Begin(ClockPanel);
451+
}
399452
iconsb.Begin(SearchIcon);
400-
sb.Begin(FlowMainWindow);
453+
windowsb.Begin(FlowMainWindow);
401454
}
402455

403456
private void OnMouseDown(object sender, MouseButtonEventArgs e)

Flow.Launcher/Themes/Base.xaml

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -79,18 +79,18 @@
7979
<Setter Property="Stroke" Value="Blue" />
8080
</Style>
8181

82-
<Style x:Key="BaseClockPosition" TargetType="{x:Type Canvas}" />
82+
<Style x:Key="BaseClockPanelPosition" TargetType="{x:Type Canvas}" />
8383

8484
<Style x:Key="BaseClockPanel" TargetType="{x:Type StackPanel}">
8585
<Setter Property="Orientation" Value="Horizontal" />
8686
<Setter Property="HorizontalAlignment" Value="Right" />
8787
<Setter Property="VerticalAlignment" Value="Center" />
8888
<Setter Property="Height" Value="Auto" />
89-
<Setter Property="Margin" Value="0,0,14,0" />
89+
<Setter Property="Margin" Value="0,0,66,0" />
9090
<Setter Property="Visibility" Value="Collapsed" />
9191
</Style>
9292
<Style x:Key="BaseClockBox" TargetType="{x:Type TextBlock}">
93-
<Setter Property="FontSize" Value="18" />
93+
<Setter Property="FontSize" Value="20" />
9494
<Setter Property="Foreground" Value="#8f8f8f" />
9595
<Setter Property="HorizontalAlignment" Value="Right" />
9696
<Setter Property="VerticalAlignment" Value="Center" />
@@ -131,39 +131,27 @@
131131
BasedOn="{StaticResource BaseClockPanel}"
132132
TargetType="{x:Type StackPanel}">
133133
<Setter Property="Orientation" Value="Vertical" />
134-
<Setter Property="Margin" Value="0,0,66,0" />
135-
<Setter Property="Visibility" Value="Visible" />
134+
<Setter Property="Visibility" Value="Collapsed" />
136135
<Style.Triggers>
137136
<MultiDataTrigger>
138137
<MultiDataTrigger.Conditions>
139138
<Condition Binding="{Binding ElementName=QueryTextBox, UpdateSourceTrigger=PropertyChanged, Path=Text.Length}" Value="0" />
140139
<Condition Binding="{Binding ElementName=ContextMenu, Path=Visibility}" Value="Collapsed" />
141140
<Condition Binding="{Binding ElementName=History, Path=Visibility}" Value="Collapsed" />
142141
</MultiDataTrigger.Conditions>
142+
<Setter Property="Visibility" Value="Visible" />
143143
<MultiDataTrigger.EnterActions>
144144
<BeginStoryboard>
145145
<Storyboard>
146146
<DoubleAnimation
147147
Storyboard.TargetProperty="Opacity"
148148
From="0.0"
149-
To="1.0"
150-
Duration="0:0:0.2" />
149+
To="1"
150+
Duration="0:0:0.25" />
151151
</Storyboard>
152152
</BeginStoryboard>
153153
</MultiDataTrigger.EnterActions>
154-
<MultiDataTrigger.ExitActions>
155-
<BeginStoryboard>
156-
<Storyboard>
157-
<DoubleAnimation
158-
Storyboard.TargetProperty="Opacity"
159-
To="0.0"
160-
Duration="0:0:0.2" />
161-
</Storyboard>
162-
</BeginStoryboard>
163-
</MultiDataTrigger.ExitActions>
164-
165154
</MultiDataTrigger>
166-
167155
</Style.Triggers>
168156

169157
</Style>
@@ -379,6 +367,12 @@
379367
<Setter Property="Background" Value="Transparent" />
380368
<Setter Property="HorizontalAlignment" Value="Right" />
381369
</Style>
370+
<Style
371+
x:Key="ClockPanelPosition"
372+
BasedOn="{StaticResource BaseClockPanelPosition}"
373+
TargetType="{x:Type Canvas}">
374+
<Setter Property="Margin" Value="0,2,66,0" />
375+
</Style>
382376
<Style
383377
x:Key="ItemHotkeyStyle"
384378
BasedOn="{StaticResource BaseItemHotkeyStyle}"

Flow.Launcher/Themes/Win11Light.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@
169169
BasedOn="{StaticResource BaseClockBox}"
170170
TargetType="{x:Type TextBlock}">
171171
<Setter Property="Foreground" Value="#acacac" />
172+
<Setter Property="FontSize" Value="22" />
172173
</Style>
173174
<Style
174175
x:Key="DateBox"

0 commit comments

Comments
 (0)