Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Flow.Launcher/Resources/Pages/WelcomePage1.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
Settings = Ioc.Default.GetRequiredService<Settings>();
_viewModel = Ioc.Default.GetRequiredService<WelcomeViewModel>();

Check warning on line 20 in Flow.Launcher/Resources/Pages/WelcomePage1.xaml.cs

View workflow job for this annotation

GitHub Actions / Check Spelling

`Ioc` is not a recognized word. (unrecognized-spelling)
InitializeComponent();
}
// Sometimes the navigation is not triggered by button click,
Expand All @@ -26,7 +26,7 @@
base.OnNavigatedTo(e);
}

private readonly Internationalization _translater = Ioc.Default.GetRequiredService<Internationalization>();

Check warning on line 29 in Flow.Launcher/Resources/Pages/WelcomePage1.xaml.cs

View workflow job for this annotation

GitHub Actions / Check Spelling

`Ioc` is not a recognized word. (unrecognized-spelling)

public List<Language> Languages => _translater.LoadAvailableLanguages();

Expand Down
2 changes: 1 addition & 1 deletion Flow.Launcher/Resources/Pages/WelcomePage2.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
Settings = Ioc.Default.GetRequiredService<Settings>();

Check warning on line 21 in Flow.Launcher/Resources/Pages/WelcomePage2.xaml.cs

View workflow job for this annotation

GitHub Actions / Check Spelling

`Ioc` is not a recognized word. (unrecognized-spelling)
_viewModel = Ioc.Default.GetRequiredService<WelcomeViewModel>();

Check warning on line 22 in Flow.Launcher/Resources/Pages/WelcomePage2.xaml.cs

View workflow job for this annotation

GitHub Actions / Check Spelling

`Ioc` is not a recognized word. (unrecognized-spelling)
InitializeComponent();
}
// Sometimes the navigation is not triggered by button click,
Expand Down
2 changes: 1 addition & 1 deletion Flow.Launcher/Resources/Pages/WelcomePage3.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public partial class WelcomePage3

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
Settings = Ioc.Default.GetRequiredService<Settings>();
_viewModel = Ioc.Default.GetRequiredService<WelcomeViewModel>();
Expand Down
2 changes: 1 addition & 1 deletion Flow.Launcher/Resources/Pages/WelcomePage4.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public partial class WelcomePage4

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
Settings = Ioc.Default.GetRequiredService<Settings>();
_viewModel = Ioc.Default.GetRequiredService<WelcomeViewModel>();
Expand Down
2 changes: 1 addition & 1 deletion Flow.Launcher/Resources/Pages/WelcomePage5.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public partial class WelcomePage5

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
Settings = Ioc.Default.GetRequiredService<Settings>();
_viewModel = Ioc.Default.GetRequiredService<WelcomeViewModel>();
Expand Down
8 changes: 7 additions & 1 deletion Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
using System.Windows.Navigation;
using CommunityToolkit.Mvvm.DependencyInjection;
using Flow.Launcher.SettingPages.ViewModels;
using Flow.Launcher.ViewModel;

namespace Flow.Launcher.SettingPages.Views;

public partial class SettingsPaneAbout
{
private SettingsPaneAboutViewModel _viewModel = null!;
private SettingWindowViewModel _settingViewModel = null;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
_viewModel = Ioc.Default.GetRequiredService<SettingsPaneAboutViewModel>();
_settingViewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();
}
// Sometimes the navigation is not triggered by button click,
// so we need to reset the page type
_settingViewModel.PageType = typeof(SettingsPaneAbout);
base.OnNavigatedTo(e);
}

Expand Down
8 changes: 7 additions & 1 deletion Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
using System.Windows.Navigation;
using CommunityToolkit.Mvvm.DependencyInjection;
using Flow.Launcher.SettingPages.ViewModels;
using Flow.Launcher.ViewModel;

namespace Flow.Launcher.SettingPages.Views;

public partial class SettingsPaneGeneral
{
private SettingsPaneGeneralViewModel _viewModel = null!;
private SettingWindowViewModel _settingViewModel = null;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
_viewModel = Ioc.Default.GetRequiredService<SettingsPaneGeneralViewModel>();
_settingViewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();
}
// Sometimes the navigation is not triggered by button click,
// so we need to reset the page type
_settingViewModel.PageType = typeof(SettingsPaneGeneral);
base.OnNavigatedTo(e);
}
}
8 changes: 7 additions & 1 deletion Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
using System.Windows.Navigation;
using CommunityToolkit.Mvvm.DependencyInjection;
using Flow.Launcher.SettingPages.ViewModels;
using Flow.Launcher.ViewModel;

namespace Flow.Launcher.SettingPages.Views;

public partial class SettingsPaneHotkey
{
private SettingsPaneHotkeyViewModel _viewModel = null!;
private SettingWindowViewModel _settingViewModel = null;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
_viewModel = Ioc.Default.GetRequiredService<SettingsPaneHotkeyViewModel>();
_settingViewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();
}
// Sometimes the navigation is not triggered by button click,
// so we need to reset the page type
_settingViewModel.PageType = typeof(SettingsPaneHotkey);
base.OnNavigatedTo(e);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,21 @@ namespace Flow.Launcher.SettingPages.Views;
public partial class SettingsPanePluginStore
{
private SettingsPanePluginStoreViewModel _viewModel = null!;
private SettingWindowViewModel _settingViewModel = null;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
_viewModel = Ioc.Default.GetRequiredService<SettingsPanePluginStoreViewModel>();
_settingViewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();
}
_viewModel.PropertyChanged += ViewModel_PropertyChanged;
// Sometimes the navigation is not triggered by button click,
// so we need to reset the page type
_settingViewModel.PageType = typeof(SettingsPanePluginStore);
base.OnNavigatedTo(e);
}

Expand Down
7 changes: 6 additions & 1 deletion Flow.Launcher/SettingPages/Views/SettingsPanePlugins.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,21 @@ namespace Flow.Launcher.SettingPages.Views;
public partial class SettingsPanePlugins
{
private SettingsPanePluginsViewModel _viewModel = null!;
private SettingWindowViewModel _settingViewModel = null;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
_viewModel = Ioc.Default.GetRequiredService<SettingsPanePluginsViewModel>();
_settingViewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();
}
_viewModel.PropertyChanged += ViewModel_PropertyChanged;
// Sometimes the navigation is not triggered by button click,
// so we need to reset the page type
_settingViewModel.PageType = typeof(SettingsPanePlugins);
base.OnNavigatedTo(e);
}

Expand Down
8 changes: 7 additions & 1 deletion Flow.Launcher/SettingPages/Views/SettingsPaneProxy.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
using System.Windows.Navigation;
using CommunityToolkit.Mvvm.DependencyInjection;
using Flow.Launcher.SettingPages.ViewModels;
using Flow.Launcher.ViewModel;

namespace Flow.Launcher.SettingPages.Views;

public partial class SettingsPaneProxy
{
private SettingsPaneProxyViewModel _viewModel = null!;
private SettingWindowViewModel _settingViewModel = null;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
_viewModel = Ioc.Default.GetRequiredService<SettingsPaneProxyViewModel>();
_settingViewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();
}
// Sometimes the navigation is not triggered by button click,
// so we need to reset the page type
_settingViewModel.PageType = typeof(SettingsPaneProxy);
base.OnNavigatedTo(e);
}
}
8 changes: 7 additions & 1 deletion Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
using System.Windows.Navigation;
using CommunityToolkit.Mvvm.DependencyInjection;
using Flow.Launcher.SettingPages.ViewModels;
using Flow.Launcher.ViewModel;

namespace Flow.Launcher.SettingPages.Views;

public partial class SettingsPaneTheme
{
private SettingsPaneThemeViewModel _viewModel = null!;
private SettingWindowViewModel _settingViewModel = null;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!IsInitialized)
if (_viewModel == null)
{
_viewModel = Ioc.Default.GetRequiredService<SettingsPaneThemeViewModel>();
_settingViewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();
}
// Sometimes the navigation is not triggered by button click,
// so we need to reset the page type
_settingViewModel.PageType = typeof(SettingsPaneTheme);
base.OnNavigatedTo(e);
}
}
33 changes: 31 additions & 2 deletions Flow.Launcher/SettingWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
Expand All @@ -18,6 +19,7 @@ public partial class SettingWindow
#region Private Fields

private readonly Settings _settings;
private readonly SettingWindowViewModel _viewModel;

#endregion

Expand All @@ -26,8 +28,8 @@ public partial class SettingWindow
public SettingWindow()
{
_settings = Ioc.Default.GetRequiredService<Settings>();
var viewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = viewModel;
_viewModel = Ioc.Default.GetRequiredService<SettingWindowViewModel>();
DataContext = _viewModel;
InitializeComponent();

UpdatePositionAndState();
Expand All @@ -48,10 +50,37 @@ private void OnLoaded(object sender, RoutedEventArgs e)
hwndTarget.RenderMode = RenderMode.SoftwareOnly; // Must use software only render mode here

UpdatePositionAndState();

_viewModel.PropertyChanged += ViewModel_PropertyChanged;
}

// Sometimes the navigation is not triggered by button click,
// so we need to update the selected item here
private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case nameof(SettingWindowViewModel.PageType):
var selectedIndex = _viewModel.PageType.Name switch
{
nameof(SettingsPaneGeneral) => 0,
nameof(SettingsPanePlugins) => 1,
nameof(SettingsPanePluginStore) => 2,
nameof(SettingsPaneTheme) => 3,
nameof(SettingsPaneHotkey) => 4,
nameof(SettingsPaneProxy) => 5,
nameof(SettingsPaneAbout) => 6,
_ => 0
};
NavView.SelectedItem = NavView.MenuItems[selectedIndex];
break;
}
}

private void OnClosed(object sender, EventArgs e)
{
_viewModel.PropertyChanged -= ViewModel_PropertyChanged;

// If app is exiting, settings save is not needed because main window closing event will handle this
if (App.Exiting) return;
// Save settings when window is closed
Expand Down
18 changes: 17 additions & 1 deletion Flow.Launcher/ViewModel/SettingWindowViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using Flow.Launcher.Infrastructure.UserSettings;
using System;
using Flow.Launcher.Infrastructure.UserSettings;
using Flow.Launcher.Plugin;
using Flow.Launcher.SettingPages.Views;

namespace Flow.Launcher.ViewModel;

Expand All @@ -12,6 +14,20 @@ public SettingWindowViewModel(Settings settings)
_settings = settings;
}

private Type _pageType = typeof(SettingsPaneGeneral);
public Type PageType
{
get => _pageType;
set
{
if (_pageType != value)
{
_pageType = value;
OnPropertyChanged();
}
}
}

public double SettingWindowWidth
{
get => _settings.SettingWindowWidth;
Expand Down
Loading