also pause animation when exit visible

This commit is contained in:
Hongtao Zhang 2022-11-24 14:01:32 -06:00
parent 71938cdbf8
commit 6f0c2549ce
No known key found for this signature in database
GPG key ID: 75F655B91C7AC9BB

View file

@ -36,6 +36,7 @@ namespace Flow.Launcher
public partial class MainWindow
{
#region Private Fields
private Settings _settings;
private NotifyIcon _notifyIcon;
private ContextMenu contextMenu;
@ -50,7 +51,7 @@ namespace Flow.Launcher
DataContext = mainVM;
_viewModel = mainVM;
_settings = settings;
InitializeComponent();
InitializePosition();
animationSound.Open(new Uri(AppDomain.CurrentDomain.BaseDirectory + "Resources\\open.wav"));
@ -60,7 +61,7 @@ namespace Flow.Launcher
{
InitializeComponent();
}
private void OnCopy(object sender, ExecutedRoutedEventArgs e)
{
if (QueryTextBox.SelectionLength == 0)
@ -108,29 +109,29 @@ namespace Flow.Launcher
switch (e.PropertyName)
{
case nameof(MainViewModel.MainWindowVisibilityStatus):
{
if (_viewModel.MainWindowVisibilityStatus)
{
if (_viewModel.MainWindowVisibilityStatus)
if (_settings.UseSound)
{
if (_settings.UseSound)
{
animationSound.Position = TimeSpan.Zero;
animationSound.Play();
}
UpdatePosition();
Activate();
QueryTextBox.Focus();
_settings.ActivateTimes++;
if (!_viewModel.LastQuerySelected)
{
QueryTextBox.SelectAll();
_viewModel.LastQuerySelected = true;
}
if(_settings.UseAnimation)
WindowAnimator();
animationSound.Position = TimeSpan.Zero;
animationSound.Play();
}
break;
UpdatePosition();
Activate();
QueryTextBox.Focus();
_settings.ActivateTimes++;
if (!_viewModel.LastQuerySelected)
{
QueryTextBox.SelectAll();
_viewModel.LastQuerySelected = true;
}
if (_settings.UseAnimation)
WindowAnimator();
}
break;
}
case nameof(MainViewModel.QueryTextCursorMovedToEnd):
if (_viewModel.QueryTextCursorMovedToEnd)
{
@ -211,35 +212,45 @@ namespace Flow.Launcher
Visible = !_settings.HideNotifyIcon
};
contextMenu = new ContextMenu();
var openIcon = new FontIcon { Glyph = "\ue71e" };
var openIcon = new FontIcon
{
Glyph = "\ue71e"
};
var open = new MenuItem
{
Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") + " (" + _settings.Hotkey + ")",
Icon = openIcon
Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") + " (" + _settings.Hotkey + ")", Icon = openIcon
};
var gamemodeIcon = new FontIcon
{
Glyph = "\ue7fc"
};
var gamemodeIcon = new FontIcon { Glyph = "\ue7fc" };
var gamemode = new MenuItem
{
Header = InternationalizationManager.Instance.GetTranslation("GameMode"),
Icon = gamemodeIcon
Header = InternationalizationManager.Instance.GetTranslation("GameMode"), Icon = gamemodeIcon
};
var positionresetIcon = new FontIcon
{
Glyph = "\ue73f"
};
var positionresetIcon = new FontIcon { Glyph = "\ue73f" };
var positionreset = new MenuItem
{
Header = InternationalizationManager.Instance.GetTranslation("PositionReset"),
Icon = positionresetIcon
Header = InternationalizationManager.Instance.GetTranslation("PositionReset"), Icon = positionresetIcon
};
var settingsIcon = new FontIcon
{
Glyph = "\ue713"
};
var settingsIcon = new FontIcon { Glyph = "\ue713" };
var settings = new MenuItem
{
Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings"),
Icon = settingsIcon
Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings"), Icon = settingsIcon
};
var exitIcon = new FontIcon
{
Glyph = "\ue7e8"
};
var exitIcon = new FontIcon { Glyph = "\ue7e8" };
var exit = new MenuItem
{
Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit"),
Icon = exitIcon
Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit"), Icon = exitIcon
};
open.Click += (o, e) => _viewModel.ToggleFlowLauncher();
@ -300,10 +311,10 @@ namespace Flow.Launcher
}
private async void PositionReset()
{
_viewModel.Show();
await Task.Delay(300); // If don't give a time, Positioning will be weird.
Left = HorizonCenter();
Top = VerticalCenter();
_viewModel.Show();
await Task.Delay(300); // If don't give a time, Positioning will be weird.
Left = HorizonCenter();
Top = VerticalCenter();
}
private void InitProgressbarAnimation()
{
@ -320,14 +331,30 @@ namespace Flow.Launcher
da.Freeze();
da1.Freeze();
var beginStoryboard = new BeginStoryboard();
beginStoryboard.Storyboard = progressBarStoryBoard;
const string progressBarAnimationName = "ProgressBarAnimation";
var beginStoryboard = new BeginStoryboard
{
Name = progressBarAnimationName, Storyboard = progressBarStoryBoard
};
var stopStoryboard = new StopStoryboard()
{
BeginStoryboardName = progressBarAnimationName
};
var trigger = new Trigger { Property = System.Windows.Shapes.Line.VisibilityProperty, Value = Visibility.Visible };
var trigger = new Trigger
{
Property = VisibilityProperty, Value = Visibility.Visible
};
trigger.EnterActions.Add(beginStoryboard);
trigger.ExitActions.Add(stopStoryboard);
var progressStyle = new Style(typeof(System.Windows.Shapes.Line));
progressStyle.BasedOn = FindResource("PendingLineStyle") as Style;
var progressStyle = new Style(typeof(System.Windows.Shapes.Line))
{
BasedOn = FindResource("PendingLineStyle") as Style
};
progressStyle.RegisterName(progressBarAnimationName, beginStoryboard);
progressStyle.Triggers.Add(trigger);
ProgressBar.Style = progressStyle;
@ -343,7 +370,7 @@ namespace Flow.Launcher
UpdatePosition();
Storyboard sb = new Storyboard();
Storyboard iconsb = new Storyboard();
CircleEase easing = new CircleEase(); // or whatever easing class you want
CircleEase easing = new CircleEase(); // or whatever easing class you want
easing.EasingMode = EasingMode.EaseInOut;
var da = new DoubleAnimation
{
@ -360,14 +387,14 @@ namespace Flow.Launcher
Duration = TimeSpan.FromSeconds(0.25),
FillBehavior = FillBehavior.Stop
};
var da3 = new DoubleAnimation
{
From = 12,
To = 0,
EasingFunction = easing,
Duration = TimeSpan.FromSeconds(0.36),
FillBehavior = FillBehavior.Stop
};
var da3 = new DoubleAnimation
{
From = 12,
To = 0,
EasingFunction = easing,
Duration = TimeSpan.FromSeconds(0.36),
FillBehavior = FillBehavior.Stop
};
Storyboard.SetTarget(da, this);
Storyboard.SetTargetProperty(da, new PropertyPath(Window.OpacityProperty));
Storyboard.SetTargetProperty(da2, new PropertyPath(Window.TopProperty));
@ -395,10 +422,10 @@ namespace Flow.Launcher
private async void OnContextMenusForSettingsClick(object sender, RoutedEventArgs e)
{
_viewModel.Hide();
if(_settings.UseAnimation)
if (_settings.UseAnimation)
await Task.Delay(100);
App.API.OpenSettingDialog();
}
@ -416,7 +443,7 @@ namespace Flow.Launcher
// and always after Settings window is closed.
if (_settings.UseAnimation)
await Task.Delay(100);
if (_settings.HideWhenDeactive)
{
_viewModel.Hide();
@ -454,7 +481,7 @@ namespace Flow.Launcher
_viewModel.Show();
}
}
public double HorizonCenter()
{
var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position);
@ -536,9 +563,9 @@ namespace Flow.Launcher
&& QueryTextBox.Text.Length > 0
&& QueryTextBox.CaretIndex == QueryTextBox.Text.Length)
{
var queryWithoutActionKeyword =
var queryWithoutActionKeyword =
QueryBuilder.Build(QueryTextBox.Text.Trim(), PluginManager.NonGlobalPlugins).Search;
if (FilesFolders.IsLocationPathString(queryWithoutActionKeyword))
{
_viewModel.BackspaceCommand.Execute(null);
@ -574,7 +601,7 @@ namespace Flow.Launcher
private void QueryTextBox_KeyUp(object sender, KeyEventArgs e)
{
if(_viewModel.QueryText != QueryTextBox.Text)
if (_viewModel.QueryText != QueryTextBox.Text)
{
BindingExpression be = QueryTextBox.GetBindingExpression(System.Windows.Controls.TextBox.TextProperty);
be.UpdateSource();