Add settings, cloud places, and optional archive-content indexing.
Keep official clients in charge of sync while Explorer can group locations, persist UI prefs, and list zip/rar/7z members without extracting them. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -41,6 +41,32 @@
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
<Menu DockPanel.Dock="Top" Background="{DynamicResource Panel}" Foreground="{DynamicResource Fg}"
|
||||
BorderBrush="{DynamicResource Stroke}" BorderThickness="0,0,0,1" Padding="4,0">
|
||||
<MenuItem Header="_File">
|
||||
<MenuItem Header="New _tab" InputGestureText="Ctrl+T" Command="{Binding NewTabCommand}"/>
|
||||
<MenuItem Header="_Split pane" Command="{Binding SplitCommand}"/>
|
||||
<MenuItem Header="_Close tab" InputGestureText="Ctrl+W" Command="{Binding CloseTabCommand}" CommandParameter="{Binding ActiveTab}"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="_View">
|
||||
<MenuItem Header="_Details" Command="{Binding SetViewCommand}" CommandParameter="Details"/>
|
||||
<MenuItem Header="_List" Command="{Binding SetViewCommand}" CommandParameter="List"/>
|
||||
<MenuItem Header="_Preview" Command="{Binding SetViewCommand}" CommandParameter="Preview"/>
|
||||
<Separator/>
|
||||
<MenuItem Header="_Refresh" InputGestureText="F5" Command="{Binding RefreshCommand}"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Tools">
|
||||
<MenuItem Header="_Index this location" Command="{Binding BuildIndexCommand}"/>
|
||||
<MenuItem Header="_Storage" Command="{Binding Analysis.OpenCommand}"/>
|
||||
<MenuItem Header="_Duplicates" Command="{Binding Duplicates.OpenCommand}"/>
|
||||
<Separator/>
|
||||
<MenuItem Header="Add _network…" Click="OnAddNetwork"/>
|
||||
<MenuItem Header="Add One_Drive…" Click="OnAddOneDrive"/>
|
||||
<MenuItem Header="Add _Google Drive…" Click="OnAddGoogleDrive"/>
|
||||
<MenuItem Header="Add Ne_xtcloud…" Click="OnAddNextcloud"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Settings" Click="OnOpenSettings"/>
|
||||
</Menu>
|
||||
<Border DockPanel.Dock="Top" Background="{DynamicResource Panel}" BorderBrush="{DynamicResource Stroke}" BorderThickness="0,0,0,1" Padding="8">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -54,12 +80,49 @@
|
||||
<Button Content="→" Command="{Binding ForwardCommand}" Width="36" Margin="0,0,4,0" ToolTip="Forward (Alt+Right)"/>
|
||||
<Button Content="↑" Command="{Binding UpCommand}" Width="36" Margin="0,0,4,0" ToolTip="Up (Alt+Up)"/>
|
||||
<Button Content="↻" Command="{Binding RefreshCommand}" Width="36" Margin="0,0,12,0" ToolTip="Refresh (F5)"/>
|
||||
<Button Content="New tab" Command="{Binding NewTabCommand}" Margin="0,0,4,0"/>
|
||||
<Button Content="Split" Command="{Binding SplitCommand}" Margin="0,0,4,0"/>
|
||||
<Button Content="Index" Command="{Binding BuildIndexCommand}" Margin="0,0,4,0"/>
|
||||
<Button Content="Details" Command="{Binding SetViewCommand}" CommandParameter="Details" Margin="8,0,4,0"/>
|
||||
<Button Content="List" Command="{Binding SetViewCommand}" CommandParameter="List" Margin="0,0,4,0"/>
|
||||
<Button Content="Preview" Command="{Binding SetViewCommand}" CommandParameter="Preview"/>
|
||||
<Button Style="{StaticResource ToolbarIconButton}" Content=""
|
||||
Command="{Binding NewTabCommand}" ToolTip="New tab (Ctrl+T)"/>
|
||||
<Button Style="{StaticResource ToolbarIconButton}" Content=""
|
||||
Command="{Binding SplitCommand}" ToolTip="Split pane"/>
|
||||
<Button Style="{StaticResource ToolbarIconButton}" Content=""
|
||||
Command="{Binding BuildIndexCommand}" ToolTip="Index this location"/>
|
||||
<Border Width="1" Height="18" Margin="4,0,8,0" VerticalAlignment="Center" Background="{DynamicResource Stroke}"/>
|
||||
<Button Content=""
|
||||
Command="{Binding SetViewCommand}" CommandParameter="Details" ToolTip="Details">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource ToolbarIconButton}">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ActivePane.ViewMode}" Value="Details">
|
||||
<Setter Property="Background" Value="{DynamicResource FillHover}"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
<Button Content=""
|
||||
Command="{Binding SetViewCommand}" CommandParameter="List" ToolTip="List">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource ToolbarIconButton}">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ActivePane.ViewMode}" Value="List">
|
||||
<Setter Property="Background" Value="{DynamicResource FillHover}"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
<Button Content=""
|
||||
Command="{Binding SetViewCommand}" CommandParameter="Preview" ToolTip="Preview">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource ToolbarIconButton}">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ActivePane.ViewMode}" Value="Preview">
|
||||
<Setter Property="Background" Value="{DynamicResource FillHover}"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
<ComboBox Grid.Column="1" Margin="12,0" Style="{StaticResource PathComboBox}"
|
||||
ItemsSource="{Binding PathHistory}"
|
||||
@@ -69,8 +132,7 @@
|
||||
<TextBox Grid.Column="2" Text="{Binding Search.Text, UpdateSourceTrigger=PropertyChanged}"
|
||||
KeyDown="OnSearchKeyDown"/>
|
||||
<StackPanel Grid.Column="3" Orientation="Horizontal" Margin="8,0,0,0">
|
||||
<Button Content="Search" Command="{Binding SearchCommand}" Margin="0,0,4,0"/>
|
||||
<Button Content="Theme" Command="{Binding ToggleThemeCommand}"/>
|
||||
<Button Content="Search" Command="{Binding SearchCommand}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -102,7 +164,9 @@
|
||||
<Button Content="Storage" Command="{Binding Analysis.OpenCommand}" Margin="0,0,6,0"/>
|
||||
<Button Content="Duplicates" Command="{Binding Duplicates.OpenCommand}" Margin="0,0,6,0"/>
|
||||
<Button Content="Add network" Click="OnAddNetwork" Margin="0,0,6,0"/>
|
||||
<Button Content="Add OneDrive" Click="OnAddOneDrive"/>
|
||||
<Button Content="Add OneDrive" Click="OnAddOneDrive" Margin="0,0,6,0"/>
|
||||
<Button Content="Add Google Drive" Click="OnAddGoogleDrive" Margin="0,0,6,0"/>
|
||||
<Button Content="Add Nextcloud" Click="OnAddNextcloud"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -118,7 +182,13 @@
|
||||
<TreeView x:Name="NavTree" ItemsSource="{Binding Tree.Roots}"
|
||||
SelectedItemChanged="OnTreeSelected"
|
||||
TreeViewItem.Expanded="OnTreeExpanded"
|
||||
ContextMenuOpening="OnTreeContextOpening"
|
||||
HorizontalContentAlignment="Stretch">
|
||||
<TreeView.ContextMenu>
|
||||
<ContextMenu>
|
||||
<MenuItem x:Name="RemoveLocationMenu" Header="Remove from Explorer" Click="OnRemoveLocation"/>
|
||||
</ContextMenu>
|
||||
</TreeView.ContextMenu>
|
||||
<TreeView.ItemTemplate>
|
||||
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
@@ -206,6 +276,9 @@
|
||||
<Separator/>
|
||||
<MenuItem Header="Refresh" Command="{Binding DataContext.RefreshCommand, RelativeSource={RelativeSource AncestorType=Window}}"/>
|
||||
<MenuItem Header="Rescan folder" Command="{Binding DataContext.RescanFolderCommand, RelativeSource={RelativeSource AncestorType=Window}}"/>
|
||||
<Separator Visibility="{Binding DataContext.ShowForgetSource, RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource BoolVis}}"/>
|
||||
<MenuItem Header="Remove from Explorer" Click="OnRemoveLocation"
|
||||
Visibility="{Binding DataContext.ShowForgetSource, RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource BoolVis}}"/>
|
||||
<Separator Visibility="{Binding DataContext.ShowCloudPin, RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource BoolVis}}"/>
|
||||
<MenuItem Header="Always keep on this device"
|
||||
Command="{Binding DataContext.PinCloudCommand, RelativeSource={RelativeSource AncestorType=Window}}"
|
||||
|
||||
Reference in New Issue
Block a user