mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 18:57:19 +02:00
* Add Settings.WinUI3 project * New namespace * Activation and Services * Assets and Behaviors * Converters and Helpers * Controls * View and ViewModels * Styles and Themes * OOBE * Strings * Small App moves * [check] Project files - publish profiles and launchSettings.json * [using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name workaround * [WIP] Workarounds to make it work * Fix suppressed warnings - naming * Add code analysis * Fix KBMPage and App dispatcher Fix MessageBox - replace with MessageDialog * Fix ImageResizerPage & mark ColorPickerButton with TODO * Add icon to windows Cleanup MainWindow.xaml.cs and OobeWindow.xaml.cs MainWindows and OobeWindow management * App Icon No framework and runtime subdirs * Remove PowerToys.Settings and Settings.UI from solution Update output paths * Installer work & publish.cmd * Fix dispatcher crashes * Fix crashes * Add all dlls to installer Cleanup installer Add OpenOOBE and OpenScoobe logic Fix minor issues Fix update scenario - REINSTALLMODE * Rename back namespaces, project name and project dir * [wip] move to winappsdk 1.1 * Fix propagating isElevated & installer runtimes dlls * Remove obsolete dir/file * PowerToys.Interop to netstandard2.0 * Move everything to .Net6 * [Settings] Always launch settings process non-elevated (#17791) * Move back to WinAppSdk 1.0.1 * Add Settings.WinUI3 project * New namespace * Activation and Services * Assets and Behaviors * Converters and Helpers * Controls * View and ViewModels * Styles and Themes * OOBE * Strings * Small App moves * [check] Project files - publish profiles and launchSettings.json * [using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name workaround * [WIP] Workarounds to make it work * Fix suppressed warnings - naming * Add code analysis * Fix KBMPage and App dispatcher Fix MessageBox - replace with MessageDialog * Fix ImageResizerPage & mark ColorPickerButton with TODO * Add icon to windows Cleanup MainWindow.xaml.cs and OobeWindow.xaml.cs MainWindows and OobeWindow management * App Icon No framework and runtime subdirs * Remove PowerToys.Settings and Settings.UI from solution Update output paths * Installer work & publish.cmd * Fix dispatcher crashes * Fix crashes * Add all dlls to installer Cleanup installer Add OpenOOBE and OpenScoobe logic Fix minor issues Fix update scenario - REINSTALLMODE * Rename back namespaces, project name and project dir * [wip] move to winappsdk 1.1 * Fix propagating isElevated & installer runtimes dlls * Remove obsolete dir/file * PowerToys.Interop to netstandard2.0 * Move everything to .Net6 * [Settings] Always launch settings process non-elevated (#17791) * Move back to WinAppSdk 1.0.1 * Revert merge conflict ARM64 removal * Fix KBM Browse overlay image button * Bring back settings publish profile * Update release.yml * Change target frameworkd windows version * [Setup] Add Windows Application Runtime SDK (#17809) * Update requirements doc * Update compiling docs * Fix signing * Fix Settings exe and dll versions * Add exception for dlls that have version 1.0.0.0 * Fix powershell condition Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
106 lines
3.1 KiB
C#
106 lines
3.1 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using Microsoft.UI.Xaml;
|
|
using Microsoft.UI.Xaml.Controls;
|
|
using Microsoft.UI.Xaml.Media.Animation;
|
|
using Microsoft.UI.Xaml.Navigation;
|
|
|
|
namespace Microsoft.PowerToys.Settings.UI.Services
|
|
{
|
|
public static class NavigationService
|
|
{
|
|
public static event NavigatedEventHandler Navigated;
|
|
|
|
public static event NavigationFailedEventHandler NavigationFailed;
|
|
|
|
private static Frame frame;
|
|
private static object lastParamUsed;
|
|
|
|
public static Frame Frame
|
|
{
|
|
get
|
|
{
|
|
if (frame == null)
|
|
{
|
|
frame = Window.Current.Content as Frame;
|
|
RegisterFrameEvents();
|
|
}
|
|
|
|
return frame;
|
|
}
|
|
|
|
set
|
|
{
|
|
UnregisterFrameEvents();
|
|
frame = value;
|
|
RegisterFrameEvents();
|
|
}
|
|
}
|
|
|
|
public static bool CanGoBack => Frame.CanGoBack;
|
|
|
|
public static bool CanGoForward => Frame.CanGoForward;
|
|
|
|
public static bool GoBack()
|
|
{
|
|
if (CanGoBack)
|
|
{
|
|
Frame.GoBack();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static void GoForward() => Frame.GoForward();
|
|
|
|
public static bool Navigate(Type pageType, object parameter = null, NavigationTransitionInfo infoOverride = null)
|
|
{
|
|
// Don't open the same page multiple times
|
|
if (Frame.Content?.GetType() != pageType || (parameter != null && !parameter.Equals(lastParamUsed)))
|
|
{
|
|
var navigationResult = Frame.Navigate(pageType, parameter, infoOverride);
|
|
if (navigationResult)
|
|
{
|
|
lastParamUsed = parameter;
|
|
}
|
|
|
|
return navigationResult;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static bool Navigate<T>(object parameter = null, NavigationTransitionInfo infoOverride = null)
|
|
where T : Page
|
|
=> Navigate(typeof(T), parameter, infoOverride);
|
|
|
|
private static void RegisterFrameEvents()
|
|
{
|
|
if (frame != null)
|
|
{
|
|
frame.Navigated += Frame_Navigated;
|
|
frame.NavigationFailed += Frame_NavigationFailed;
|
|
}
|
|
}
|
|
|
|
private static void UnregisterFrameEvents()
|
|
{
|
|
if (frame != null)
|
|
{
|
|
frame.Navigated -= Frame_Navigated;
|
|
frame.NavigationFailed -= Frame_NavigationFailed;
|
|
}
|
|
}
|
|
|
|
private static void Frame_NavigationFailed(object sender, NavigationFailedEventArgs e) => NavigationFailed?.Invoke(sender, e);
|
|
|
|
private static void Frame_Navigated(object sender, NavigationEventArgs e) => Navigated?.Invoke(sender, e);
|
|
}
|
|
}
|