Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
23 changes: 23 additions & 0 deletions Files/Extensions/KeyboardAcceleratorExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.System;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;

namespace Files.Extensions
{
public static class KeyboardAcceleratorExtensions
{
public static bool CheckIsPressed(this KeyboardAccelerator keyboardAccelerator)
{
return Window.Current.CoreWindow.GetKeyState(keyboardAccelerator.Key).HasFlag(CoreVirtualKeyStates.Down) && // check if the main key is pressed
(!keyboardAccelerator.Modifiers.HasFlag(VirtualKeyModifiers.Menu) || Window.Current.CoreWindow.GetKeyState(VirtualKey.Menu).HasFlag(CoreVirtualKeyStates.Down)) && // check if menu (alt) key is a modifier, and if so check if it's pressed
(!keyboardAccelerator.Modifiers.HasFlag(VirtualKeyModifiers.Shift) || Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down)) && // check if shift key is a modifier, and if so check if it's pressed
(!keyboardAccelerator.Modifiers.HasFlag(VirtualKeyModifiers.Control) || Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down)); // check if ctrl key is a modifier, and if so check if it's pressed
}
}
}
1 change: 1 addition & 0 deletions Files/Files.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@
<Compile Include="Extensions\EnumExtensions.cs" />
<Compile Include="Extensions\FileIconInfoExtensions.cs" />
<Compile Include="Extensions\ImageSourceExtensions.cs" />
<Compile Include="Extensions\KeyboardAcceleratorExtensions.cs" />
<Compile Include="Extensions\TaskExtensions.cs" />
<Compile Include="Filesystem\Permissions\FilePermissionsManager.cs" />
<Compile Include="Filesystem\Permissions\FileSystemAccessRule.cs" />
Expand Down
6 changes: 6 additions & 0 deletions Files/Strings/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -2568,6 +2568,12 @@
<data name="NavigationToolbarClosePane.Label" xml:space="preserve">
<value>Close pane</value>
</data>
<data name="NavigationToolbarEnterCompactOverlay.Label" xml:space="preserve">
<value>Enter compact overlay</value>
</data>
<data name="NavigationToolbarExitCompactOverlay.Label" xml:space="preserve">
<value>Exit compact overlay</value>
</data>
<data name="PropertyFileDescription" xml:space="preserve">
<value>File description</value>
</data>
Expand Down
40 changes: 40 additions & 0 deletions Files/UserControls/NavigationToolbar.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,15 @@
<converters:LayoutModeToBoolConverter x:Key="LayoutModeConverter" />
<converters:VisiblityInvertConverter x:Key="VisiblityInvertConverter" />
<converters1:BoolNegationConverter x:Key="BoolNegationConverter" />
<converters1:BoolToVisibilityConverter
x:Key="NegatedBoolToVisibilityConverter"
FalseValue="Visible"
TrueValue="Collapsed" />
<converters:IntToGroupOption x:Key="IntToGroupOption" />
<converters:IntToSortOption x:Key="IntToSortOption" />
<converters:IntToSortDirection x:Key="IntToSortDirection" />
<x:Boolean x:Key="True">True</x:Boolean>
<x:Boolean x:Key="False">False</x:Boolean>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourceDictionaries/ToolbarButtonStyle.xaml" />

Expand Down Expand Up @@ -875,6 +881,40 @@
Modifiers="Control" />
</AppBarButton.KeyboardAccelerators>
</AppBarButton>
<AppBarButton
x:Name="NavToolbarEnterCompactOverlay"
x:Uid="NavigationToolbarEnterCompactOverlay"
Command="{x:Bind SetCompactOverlayCommand}"
CommandParameter="{StaticResource True}"
Label="Enter compact overlay"
Visibility="{x:Bind IsCompactOverlay, Mode=OneWay, Converter={StaticResource NegatedBoolToVisibilityConverter}}">
<AppBarButton.KeyboardAccelerators>
<KeyboardAccelerator
Key="Up"
IsEnabled="False"
Modifiers="Menu,Control" />
</AppBarButton.KeyboardAccelerators>
<AppBarButton.Icon>
<FontIcon Glyph="&#xEE49;" />
</AppBarButton.Icon>
</AppBarButton>
<AppBarButton
x:Name="NavToolbarExitCompactOverlay"
x:Uid="NavigationToolbarExitCompactOverlay"
Command="{x:Bind SetCompactOverlayCommand}"
CommandParameter="{StaticResource False}"
Label="Exit compact overlay"
Visibility="{x:Bind IsCompactOverlay, Mode=OneWay}">
<AppBarButton.Icon>
<FontIcon Glyph="&#xEE47;" />
</AppBarButton.Icon>
<AppBarButton.KeyboardAccelerators>
<KeyboardAccelerator
Key="Down"
IsEnabled="False"
Modifiers="Menu,Control" />
</AppBarButton.KeyboardAccelerators>
</AppBarButton>
<AppBarButton
x:Name="CopyPathButton"
x:Uid="NavigationToolbarCopyPath"
Expand Down
46 changes: 46 additions & 0 deletions Files/UserControls/NavigationToolbar.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
using Files.Helpers.XamlHelpers;
using Files.ViewModels;
using Files.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Input;
using Windows.System;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
Expand Down Expand Up @@ -204,5 +207,48 @@ private void NavMoreButtonFlyout_Opening(object sender, object e)
}

private void VisiblePath_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args) => ViewModel.VisiblePath_QuerySubmitted(sender, args);



public bool IsCompactOverlay
{
get { return (bool)GetValue(IsCompactOverlayProperty); }
set { SetValue(IsCompactOverlayProperty, value); }
}

// Using a DependencyProperty as the backing store for IsCompactOverlay. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsCompactOverlayProperty =
DependencyProperty.Register("IsCompactOverlay", typeof(bool), typeof(NavigationToolbar), new PropertyMetadata(null));



public ICommand SetCompactOverlayCommand
{
get { return (ICommand)GetValue(SetCompactOverlayCommandProperty); }
set { SetValue(SetCompactOverlayCommandProperty, value); }
}

// Using a DependencyProperty as the backing store for ToggleCompactOverlayCommand. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SetCompactOverlayCommandProperty =
DependencyProperty.Register("ToggleCompactOverlayCommand", typeof(ICommand), typeof(NavigationToolbar), new PropertyMetadata(null));



private async void NavToolbarEnterCompactOverlay_Click(object sender, RoutedEventArgs e)
{
var view = ApplicationView.GetForCurrentView();
if (view.ViewMode == ApplicationViewMode.CompactOverlay)
{
await view.TryEnterViewModeAsync(ApplicationViewMode.Default);
NavToolbarExitCompactOverlay.Visibility = Visibility.Collapsed;
NavToolbarEnterCompactOverlay.Visibility = Visibility.Visible;
}
else
{
await view.TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay);
NavToolbarExitCompactOverlay.Visibility = Visibility.Visible;
NavToolbarEnterCompactOverlay.Visibility = Visibility.Collapsed;
}
}
}
}
Loading