Skip to content

Feature: Added option to show check boxes next to file names #11017

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 35 commits into from
Jan 19, 2023
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
f7deab7
Update DetailsLayout to new multi select behavior
marcelwgn Jan 15, 2023
4f395d9
Disable multi select for Column layout
marcelwgn Jan 15, 2023
098fb01
Fix issue with rectangle selection not updating checkboxes
marcelwgn Jan 15, 2023
91daaec
Update grid based layouts
marcelwgn Jan 15, 2023
80c03e9
Switch to preference for multi selection
marcelwgn Jan 15, 2023
7f689b5
Merge branch 'main' into dev/refactor-multi-select
marcelwgn Jan 15, 2023
129f9d5
Format xaml
yaira2 Jan 15, 2023
2f2469f
Move multiselect checkbox to folders settings
marcelwgn Jan 15, 2023
08f3af3
Revert formatting
marcelwgn Jan 15, 2023
c93b89c
Fix thumbnails not loading
marcelwgn Jan 15, 2023
7d7f20c
Update Folders.xaml
yaira2 Jan 15, 2023
e0401f0
Update src/Files.App/Strings/en-US/Resources.resw
yaira2 Jan 15, 2023
96cbd64
Update Folders.xaml
yaira2 Jan 15, 2023
f150ed9
CR feedback
marcelwgn Jan 15, 2023
a0bb218
Merge branch 'dev/refactor-multi-select' of https://github.com/chingu…
marcelwgn Jan 15, 2023
c253678
Merge branch 'main' into dev/refactor-multi-select
marcelwgn Jan 15, 2023
873b63e
Merge branch 'main' into dev/refactor-multi-select
marcelwgn Jan 16, 2023
3f4d7a9
Update checkbox loading
marcelwgn Jan 16, 2023
43c881c
Merge branch 'dev/refactor-multi-select' of https://github.com/chingu…
marcelwgn Jan 16, 2023
74b2595
Merge branch 'main' into dev/refactor-multi-select
yaira2 Jan 16, 2023
41fe9bf
Update DetailsLayoutBrowser.xaml
yaira2 Jan 16, 2023
f5eeab9
Update DetailsLayoutBrowser.xaml
yaira2 Jan 16, 2023
a24eb04
Revert file changes
marcelwgn Jan 16, 2023
e37917f
Merge branch 'dev/refactor-multi-select' of https://github.com/chingu…
marcelwgn Jan 16, 2023
2581616
Fix issue with selection rectangle
marcelwgn Jan 16, 2023
00340d4
CR feedback
marcelwgn Jan 16, 2023
7926512
Update DetailsLayoutBrowser.xaml
yaira2 Jan 16, 2023
4bedac6
Merge branch 'main' into dev/refactor-multi-select
yaira2 Jan 18, 2023
851fb06
Update DetailsLayoutBrowser.xaml.cs
yaira2 Jan 18, 2023
02e21ec
Merge branch 'main' into dev/refactor-multi-select
yaira2 Jan 18, 2023
37bb1a6
CR feedback
marcelwgn Jan 19, 2023
9825a0f
Merge branch 'dev/refactor-multi-select' of https://github.com/chingu…
marcelwgn Jan 19, 2023
d55b063
Merge branch 'main' into dev/refactor-multi-select
marcelwgn Jan 19, 2023
9d6d7ab
CR feedback
marcelwgn Jan 19, 2023
8d6ba1d
Merge branch 'dev/refactor-multi-select' of https://github.com/chingu…
marcelwgn Jan 19, 2023
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
28 changes: 21 additions & 7 deletions src/Files.App/DataModels/AppModel.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.DependencyInjection;
using Files.App.ServicesImplementation.Settings;
using Files.App.ViewModels;
using Files.App.Views;
using Files.Backend.Services.Settings;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media;
using System;
Expand All @@ -11,14 +14,32 @@ namespace Files.App.DataModels
{
public class AppModel : ObservableObject
{
private IFoldersSettingsService FoldersSettings;

public bool ShowSelectionCheckboxes
{
get => FoldersSettings.ShowSelectionCheckboxes;
set => FoldersSettings.ShowSelectionCheckboxes = value;
}

public AppModel()
{
FoldersSettings = Ioc.Default.GetRequiredService<IUserSettingsService>().FoldersSettingsService;
FoldersSettings.PropertyChanged += FoldersSettings_PropertyChanged; ;
Clipboard.ContentChanged += Clipboard_ContentChanged;

//todo: this doesn't belong here
DetectFontName();
}

private void FoldersSettings_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(FoldersSettingsService.ShowSelectionCheckboxes))
{
OnPropertyChanged(nameof(ShowSelectionCheckboxes));
}
}

//todo: refactor this method
public void Clipboard_ContentChanged(object sender, object e)
{
Expand Down Expand Up @@ -70,13 +91,6 @@ public bool IsPasteEnabled
set => SetProperty(ref isPasteEnabled, value);
}

private bool multiselectEnabled;
public bool MultiselectEnabled
{
get => multiselectEnabled;
set => SetProperty(ref multiselectEnabled, value);
}

private bool isQuickLookAvailable;
public bool IsQuickLookAvailable
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ public bool EnableOverridingFolderPreferences
set => Set(value);
}

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

public FolderLayoutModes DefaultLayoutMode
{
get => (FolderLayoutModes)Get((long)FolderLayoutModes.Adaptive);
Expand Down Expand Up @@ -273,6 +279,7 @@ protected override void RaiseOnSettingChangedEvent(object sender, SettingChanged
case nameof(ShowThumbnails):
case nameof(ShowConfirmDeleteDialog):
case nameof(SelectFilesOnHover):
case nameof(ShowSelectionCheckboxes):
Analytics.TrackEvent($"Set {e.SettingName} to {e.NewValue}");
break;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Files.App/Strings/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -1425,8 +1425,8 @@
<data name="CloudDriveSyncStatus_Unknown" xml:space="preserve">
<value>Unknown</value>
</data>
<data name="NavToolbarMultiselect.Text" xml:space="preserve">
<value>Multiselect</value>
<data name="SettingsCheckboxesToSelectItems" xml:space="preserve">
<value>Show selection checkbox next to file names</value>
</data>
<data name="RenameFileDialog.Text" xml:space="preserve">
<value>If you change a file extension, the file might become unusable. Are you sure you want to change it?</value>
Expand Down
8 changes: 0 additions & 8 deletions src/Files.App/UserControls/InnerNavigationToolbar.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -423,14 +423,6 @@
ToolTipService.ToolTip="{helpers:ResourceString Name=NavToolbarSelectionOptions/ToolTipService/ToolTip}">
<AppBarButton.Flyout>
<MenuFlyout Placement="Bottom">
<ToggleMenuFlyoutItem
x:Name="MultiselectMFI"
IsChecked="{x:Bind AppModel.MultiselectEnabled, Mode=TwoWay}"
Text="{helpers:ResourceString Name=NavToolbarMultiselect/Text}">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE762;" />
</MenuFlyoutItem.Icon>
</ToggleMenuFlyoutItem>
<MenuFlyoutItem
x:Name="SelectAllMFI"
Command="{x:Bind ViewModel.SelectAllContentPageItemsCommand, Mode=OneWay}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ private void RectangleSelection_PointerMoved(object sender, PointerRoutedEventAr
// Selected area considering scrolled offset
var rect = new System.Drawing.Rectangle((int)Canvas.GetLeft(selectionRectangle), (int)Math.Min(originDragPoint.Y, currentPoint.Position.Y + verticalOffset), (int)selectionRectangle.Width, (int)Math.Abs(originDragPoint.Y - (currentPoint.Position.Y + verticalOffset)));

var selectedItemsBeforeChange = uiElement.SelectedItems.ToArray();

foreach (var item in itemsPosition.ToList())
{
try
Expand Down Expand Up @@ -102,7 +104,8 @@ private void RectangleSelection_PointerMoved(object sender, PointerRoutedEventAr
if (prevSelectedItemsDrag is null || !prevSelectedItemsDrag.SequenceEqual(currentSelectedItemsDrag))
{
// Trigger SelectionChanged event if the selection has changed
selectionChanged(sender, null);
var removedItems = selectedItemsBeforeChange.Except(currentSelectedItemsDrag).ToList();
selectionChanged(sender, new SelectionChangedEventArgs(removedItems, currentSelectedItemsDrag));
prevSelectedItemsDrag = currentSelectedItemsDrag;
}
}
Expand Down
14 changes: 14 additions & 0 deletions src/Files.App/ViewModels/SettingsViewModels/FoldersViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,20 @@ public bool ShowDateColumn
}
}
}

public bool ShowSelectionCheckboxes
{
get => UserSettingsService.FoldersSettingsService.ShowSelectionCheckboxes;
set
{
if (value != UserSettingsService.FoldersSettingsService.ShowSelectionCheckboxes)
{
UserSettingsService.FoldersSettingsService.ShowSelectionCheckboxes = value;
OnPropertyChanged();
}
}
}

public FolderLayoutModes DefaultLayoutMode
{
get => UserSettingsService.FoldersSettingsService.DefaultLayoutMode;
Expand Down
2 changes: 1 addition & 1 deletion src/Files.App/Views/LayoutModes/ColumnViewBase.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@
RightTapped="FileList_RightTapped"
ScrollViewer.IsScrollInertiaEnabled="True"
SelectionChanged="FileList_SelectionChanged"
SelectionMode="{x:Bind AppModel.MultiselectEnabled, Mode=OneWay, Converter={StaticResource BoolToSelectionModeConverter}}"
SelectionMode="Extended"
Tapped="FileList_ItemTapped">

<ListView.ItemContainerTransitions>
Expand Down
Loading