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
5 changes: 5 additions & 0 deletions src/Files.App/Data/Contracts/IGeneralSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -294,5 +294,10 @@ public interface IGeneralSettingsService : IBaseSettingsService, INotifyProperty
/// Gets or sets a value indicating whether or not to show the shelf pane.
/// </summary>
bool ShowShelfPane { get; set; }

/// <summary>
/// Gets or sets a value indicating whether or not to enable the Omnibar.
/// </summary>
bool EnableOmnibar { get; set; }
}
}
6 changes: 6 additions & 0 deletions src/Files.App/Services/Settings/GeneralSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,12 @@ public bool ShowShelfPane
set => Set(value);
}

public bool EnableOmnibar
{
get => Get(false);
set => Set(value);
}

protected override void RaiseOnSettingChangedEvent(object sender, SettingChangedEventArgs e)
{
base.RaiseOnSettingChangedEvent(sender, e);
Expand Down
3 changes: 3 additions & 0 deletions src/Files.App/Strings/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -4187,4 +4187,7 @@
<data name="Decimal" xml:space="preserve">
<value>Decimal</value>
</data>
<data name="EnableOmnibar" xml:space="preserve">
<value>Enable Omnibar</value>
</data>
</root>
214 changes: 114 additions & 100 deletions src/Files.App/UserControls/NavigationToolbar.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
xmlns:ucs="using:Files.App.UserControls.StatusCenter"
xmlns:vm="using:Files.App.ViewModels.UserControls"
x:Name="NavToolbar"
Height="50"
Loading="NavToolbar_Loading"
mc:Ignorable="d">

Expand Down Expand Up @@ -55,14 +54,14 @@
</UserControl.Resources>

<Grid
Padding="8"
Height="48"
Padding="4,0,4,0"
Background="{ThemeResource App.Theme.AddressBar.BackgroundBrush}"
ColumnSpacing="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<!-- Listary Integration -->
Expand Down Expand Up @@ -203,114 +202,129 @@
</Button>
</StackPanel>

<!-- Path Box -->
<AutoSuggestBox
x:Name="VisiblePath"
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
x:Load="{x:Bind ViewModel.ManualEntryBoxLoaded, Mode=OneWay}"
BorderBrush="{ThemeResource SystemBaseMediumLowColor}"
BorderThickness="{ThemeResource TextControlBorderThemeThickness}"
CornerRadius="{StaticResource ControlCornerRadius}"
FocusDisengaged="VisiblePath_LostFocus"
FontWeight="SemiBold"
ItemsSource="{x:Bind ViewModel.NavigationBarSuggestions, Mode=OneWay}"
Loaded="VisiblePath_Loaded"
LostFocus="VisiblePath_LostFocus"
PlaceholderText="{helpers:ResourceString Name=NavigationToolbarVisiblePath/PlaceholderText}"
PreviewKeyDown="VisiblePath_KeyDown"
QuerySubmitted="VisiblePath_QuerySubmitted"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
Text="{x:Bind ViewModel.PathText, Mode=OneWay}"
TextChanged="{x:Bind ViewModel.VisiblePath_TextChanged, Mode=OneWay}"
TextMemberPath="Text"
Visibility="{x:Bind converters:MultiBooleanConverter.OrNotConvertToVisibility(ShowSearchBox, ViewModel.IsSearchBoxVisible), Mode=OneWay}">
<AutoSuggestBox.ItemTemplate>
<DataTemplate x:DataType="items:NavigationBarSuggestionItem">
<StackPanel Margin="0,4">
<Grid ColumnSpacing="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<!-- Primary Title -->
<TextBlock
x:Name="PrimaryDisplayBlock"
Grid.Column="0"
Foreground="{ThemeResource TextFillColorPrimaryBrush}"
MaxLines="1"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap">
<Run FontWeight="Normal" Text="{x:Bind PrimaryDisplayPreMatched, Mode=OneWay}" /><Run FontWeight="Bold" Text="{x:Bind PrimaryDisplayMatched, Mode=OneWay}" /><Run FontWeight="Normal" Text="{x:Bind PrimaryDisplayPostMatched, Mode=OneWay}" />
</TextBlock>

<!-- Keyboard Shortcuts -->
<keyboard:KeyboardShortcut
x:Name="RightAlignedKeyboardShortcut"
Grid.Column="1"
HotKeys="{x:Bind HotKeys, Mode=OneWay}" />
</Grid>
</StackPanel>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
</AutoSuggestBox>

<!-- Path Breadcrumb Bar -->
<!-- Legacy breadcrumb bar -->
<Grid
x:Name="ClickablePath"
x:Name="LegacyBreadcrumb"
Grid.Column="1"
MinHeight="33"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
x:Load="{x:Bind ViewModel.ClickablePathLoaded, Mode=OneWay}"
Background="{ThemeResource TextControlBackground}"
BorderBrush="{ThemeResource ControlElevationBorderBrush}"
BorderThickness="1"
CornerRadius="{StaticResource ControlCornerRadius}"
GettingFocus="ClickablePath_GettingFocus"
PointerPressed="ManualPathEntryItem_Click"
Visibility="{x:Bind converters:MultiBooleanConverter.OrNotConvertToVisibility(ShowSearchBox, ViewModel.IsSearchBoxVisible), Mode=OneWay}">
x:Load="{x:Bind ViewModel.EnableOmnibar, Mode=OneWay, Converter={StaticResource BoolNegationConverter}}"
ColumnSpacing="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<uc:PathBreadcrumb
Grid.Column="0"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ViewModel="{x:Bind ViewModel, Mode=OneWay}" />
<FontIcon
<!-- Path Box -->
<AutoSuggestBox
x:Name="VisiblePath"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
x:Load="{x:Bind ViewModel.ManualEntryBoxLoaded, Mode=OneWay}"
BorderBrush="{ThemeResource SystemBaseMediumLowColor}"
BorderThickness="{ThemeResource TextControlBorderThemeThickness}"
CornerRadius="{StaticResource ControlCornerRadius}"
FocusDisengaged="VisiblePath_LostFocus"
FontWeight="SemiBold"
ItemsSource="{x:Bind ViewModel.NavigationBarSuggestions, Mode=OneWay}"
Loaded="VisiblePath_Loaded"
LostFocus="VisiblePath_LostFocus"
PlaceholderText="{helpers:ResourceString Name=NavigationToolbarVisiblePath/PlaceholderText}"
PreviewKeyDown="VisiblePath_KeyDown"
QuerySubmitted="VisiblePath_QuerySubmitted"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
Text="{x:Bind ViewModel.PathText, Mode=OneWay}"
TextChanged="{x:Bind ViewModel.VisiblePath_TextChanged, Mode=OneWay}"
TextMemberPath="Text"
Visibility="{x:Bind converters:MultiBooleanConverter.OrNotConvertToVisibility(ShowSearchBox, ViewModel.IsSearchBoxVisible), Mode=OneWay}">
<AutoSuggestBox.ItemTemplate>
<DataTemplate x:DataType="items:NavigationBarSuggestionItem">
<StackPanel Margin="0,4">
<Grid ColumnSpacing="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<!-- Primary Title -->
<TextBlock
x:Name="PrimaryDisplayBlock"
Grid.Column="0"
Foreground="{ThemeResource TextFillColorPrimaryBrush}"
MaxLines="1"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap">
<Run FontWeight="Normal" Text="{x:Bind PrimaryDisplayPreMatched, Mode=OneWay}" /><Run FontWeight="Bold" Text="{x:Bind PrimaryDisplayMatched, Mode=OneWay}" /><Run FontWeight="Normal" Text="{x:Bind PrimaryDisplayPostMatched, Mode=OneWay}" />
</TextBlock>

<!-- Keyboard Shortcuts -->
<keyboard:KeyboardShortcut
x:Name="RightAlignedKeyboardShortcut"
Grid.Column="1"
HotKeys="{x:Bind HotKeys, Mode=OneWay}" />
</Grid>
</StackPanel>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
</AutoSuggestBox>

<!-- Path Breadcrumb Bar -->
<Grid
x:Name="ClickablePath"
Height="34"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
x:Load="{x:Bind ViewModel.ClickablePathLoaded, Mode=OneWay}"
Background="{ThemeResource TextControlBackground}"
BorderBrush="{ThemeResource ControlElevationBorderBrush}"
BorderThickness="1"
CornerRadius="{StaticResource ControlCornerRadius}"
GettingFocus="ClickablePath_GettingFocus"
PointerPressed="ManualPathEntryItem_Click"
Visibility="{x:Bind converters:MultiBooleanConverter.OrNotConvertToVisibility(ShowSearchBox, ViewModel.IsSearchBoxVisible), Mode=OneWay}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<uc:PathBreadcrumb
Grid.Column="0"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ViewModel="{x:Bind ViewModel, Mode=OneWay}" />
<FontIcon
Grid.Column="1"
Margin="12"
FontSize="16"
Foreground="{ThemeResource App.Theme.IconBaseBrush}"
Glyph="&#xE70D;" />
</Grid>

<!-- Storage Search Box -->
<uc:SearchBox
x:Name="SearchRegion"
Grid.Column="1"
Margin="12"
FontSize="16"
Foreground="{ThemeResource App.Theme.IconBaseBrush}"
Glyph="&#xE70D;" />
Width="240"
Height="34"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
AccessKey="K"
AccessKeyInvoked="SearchRegion_AccessKeyInvoked"
Canvas.ZIndex="100"
CornerRadius="{StaticResource ControlCornerRadius}"
GotFocus="SearchRegion_OnGotFocus"
LostFocus="SearchRegion_LostFocus"
SearchBoxViewModel="{x:Bind ViewModel.SearchBoxViewModel, Mode=OneWay}"
Visibility="{x:Bind converters:MultiBooleanConverter.OrConvertToVisibility(ShowSearchBox, ViewModel.IsSearchBoxVisible), Mode=OneWay}" />
</Grid>

<!-- Storage Search Box -->
<uc:SearchBox
x:Name="SearchRegion"
Grid.Column="2"
Width="240"
Height="34"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
AccessKey="K"
AccessKeyInvoked="SearchRegion_AccessKeyInvoked"
Canvas.ZIndex="100"
CornerRadius="{StaticResource ControlCornerRadius}"
GotFocus="SearchRegion_OnGotFocus"
LostFocus="SearchRegion_LostFocus"
SearchBoxViewModel="{x:Bind ViewModel.SearchBoxViewModel, Mode=OneWay}"
Visibility="{x:Bind converters:MultiBooleanConverter.OrConvertToVisibility(ShowSearchBox, ViewModel.IsSearchBoxVisible), Mode=OneWay}" />
<!-- Omnibar -->
<controls:Omnibar
x:Name="Omnibar"
Grid.Column="1"
x:Load="{x:Bind ViewModel.EnableOmnibar, Mode=OneWay}" />

<!-- Right Side Action Buttons -->
<StackPanel
Grid.Column="3"
Grid.Column="2"
Orientation="Horizontal"
Spacing="4">

Expand Down Expand Up @@ -465,7 +479,7 @@
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ShowSearchButton.Visibility" Value="Visible" />
<Setter Target="SearchRegion.(Grid.Column)" Value="1" />
<Setter Target="SearchRegion.(Grid.Column)" Value="0" />
<Setter Target="SearchRegion.Width" Value="NaN" />
</VisualState.Setters>
</VisualState>
Expand Down
14 changes: 14 additions & 0 deletions src/Files.App/ViewModels/Settings/AdvancedViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,20 @@ public bool ShowFlattenOptions
OnPropertyChanged();
}
}

// TODO remove when feature is marked as stable
public bool EnableOmnibar
{
get => UserSettingsService.GeneralSettingsService.EnableOmnibar;
set
{
if (value == UserSettingsService.GeneralSettingsService.EnableOmnibar)
return;

UserSettingsService.GeneralSettingsService.EnableOmnibar = value;
OnPropertyChanged();
}
}

public async Task OpenFilesOnWindowsStartupAsync()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr

private readonly IUserSettingsService UserSettingsService = Ioc.Default.GetRequiredService<IUserSettingsService>();
private readonly IAppearanceSettingsService AppearanceSettingsService = Ioc.Default.GetRequiredService<IAppearanceSettingsService>();
private readonly IGeneralSettingsService GeneralSettingsService = Ioc.Default.GetRequiredService<IGeneralSettingsService>();
private readonly DrivesViewModel drivesViewModel = Ioc.Default.GetRequiredService<DrivesViewModel>();
private readonly IUpdateService UpdateService = Ioc.Default.GetRequiredService<IUpdateService>();
private readonly ICommandManager Commands = Ioc.Default.GetRequiredService<ICommandManager>();
Expand Down Expand Up @@ -66,6 +67,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
public bool SearchHasFocus { get; private set; }

public bool ShowHomeButton => AppearanceSettingsService.ShowHomeButton;
public bool EnableOmnibar => GeneralSettingsService.EnableOmnibar;

public bool ShowShelfPaneToggleButton => AppearanceSettingsService.ShowShelfPaneToggleButton && AppLifecycleHelper.AppEnvironment is AppEnvironment.Dev;

Expand Down Expand Up @@ -306,6 +308,15 @@ public NavigationToolbarViewModel()
break;
}
};
GeneralSettingsService.PropertyChanged += (s, e) =>
{
switch (e.PropertyName)
{
case nameof(GeneralSettingsService.EnableOmnibar):
OnPropertyChanged(nameof(EnableOmnibar));
break;
}
};
}

// Methods
Expand Down
Loading
Loading