Skip to content

Commit 529db14

Browse files
authored
Added an option to hide files starting with '.' (#8169)
1 parent 827eb96 commit 529db14

File tree

11 files changed

+79
-15
lines changed

11 files changed

+79
-15
lines changed

src/Files/Filesystem/Search/FolderSearch.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,13 @@ private async Task SearchTagsAsync(string folder, IList<ListedItem> results, Can
207207
{
208208
var isSystem = ((FileAttributes)findData.dwFileAttributes & FileAttributes.System) == FileAttributes.System;
209209
var isHidden = ((FileAttributes)findData.dwFileAttributes & FileAttributes.Hidden) == FileAttributes.Hidden;
210-
211-
bool shouldBeListed = !isHidden || (UserSettingsService.PreferencesSettingsService.AreHiddenItemsVisible && (!isSystem || !UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden));
212-
210+
var startWithDot = findData.cFileName.StartsWith(".");
211+
212+
bool shouldBeListed = (!isHidden ||
213+
(UserSettingsService.PreferencesSettingsService.AreHiddenItemsVisible &&
214+
(!isSystem || !UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden))) &&
215+
(!startWithDot || UserSettingsService.PreferencesSettingsService.ShowDotFiles);
216+
213217
if (shouldBeListed)
214218
{
215219
var item = GetListedItemAsync(match.FilePath, findData);
@@ -297,10 +301,13 @@ await Task.Run(() =>
297301

298302
var isSystem = ((FileAttributes)findData.dwFileAttributes & FileAttributes.System) == FileAttributes.System;
299303
var isHidden = ((FileAttributes)findData.dwFileAttributes & FileAttributes.Hidden) == FileAttributes.Hidden;
300-
bool shouldBeListed = hiddenOnly ?
301-
isHidden && (!isSystem || !UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden) :
302-
!isHidden || (UserSettingsService.PreferencesSettingsService.AreHiddenItemsVisible && (!isSystem || !UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden));
304+
var startWithDot = findData.cFileName.StartsWith(".");
303305

306+
bool shouldBeListed = (hiddenOnly ?
307+
isHidden && (!isSystem || !UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden) :
308+
!isHidden || (UserSettingsService.PreferencesSettingsService.AreHiddenItemsVisible && (!isSystem || !UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden))) &&
309+
(!startWithDot || UserSettingsService.PreferencesSettingsService.ShowDotFiles);
310+
304311
if (shouldBeListed)
305312
{
306313
var item = GetListedItemAsync(itemPath, findData);

src/Files/Filesystem/StorageEnumerators/Win32StorageEnumerator.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ public static async Task<List<ListedItem>> ListEntries(
5353
{
5454
var isSystem = ((FileAttributes)findData.dwFileAttributes & FileAttributes.System) == FileAttributes.System;
5555
var isHidden = ((FileAttributes)findData.dwFileAttributes & FileAttributes.Hidden) == FileAttributes.Hidden;
56-
if (!isHidden || (userSettingsService.PreferencesSettingsService.AreHiddenItemsVisible && (!isSystem || !userSettingsService.PreferencesSettingsService.AreSystemItemsHidden)))
56+
var startWithDot = findData.cFileName.StartsWith(".");
57+
if ((!isHidden ||
58+
(userSettingsService.PreferencesSettingsService.AreHiddenItemsVisible &&
59+
(!isSystem || !userSettingsService.PreferencesSettingsService.AreSystemItemsHidden))) &&
60+
(!startWithDot || userSettingsService.PreferencesSettingsService.ShowDotFiles))
5761
{
5862
if (((FileAttributes)findData.dwFileAttributes & FileAttributes.Directory) != FileAttributes.Directory)
5963
{

src/Files/Helpers/RegistryToJsonSettingsMerger.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static void MergeSettings()
3131
userSettingsService.PreferencesSettingsService.ShowFileExtensions = appSettings.Get(true, "ShowFileExtensions");
3232
userSettingsService.PreferencesSettingsService.AreHiddenItemsVisible = appSettings.Get(false, "AreHiddenItemsVisible");
3333
userSettingsService.PreferencesSettingsService.AreSystemItemsHidden = appSettings.Get(true, "AreSystemItemsHidden");
34+
userSettingsService.PreferencesSettingsService.ShowDotFiles = appSettings.Get(false, "ShowDotFiles");
3435
userSettingsService.PreferencesSettingsService.ListAndSortDirectoriesAlongsideFiles = appSettings.Get(false, "ListAndSortDirectoriesAlongsideFiles");
3536
userSettingsService.PreferencesSettingsService.OpenFilesWithOneClick = appSettings.Get(false, "OpenItemsWithOneClick");
3637
userSettingsService.PreferencesSettingsService.OpenFoldersWithOneClick = appSettings.Get(false, "OpenItemsWithOneClick");

src/Files/MultilingualResources/Files.es-ES.xlf

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2778,11 +2778,15 @@
27782778
<trans-unit id="SettingsFilesAndFoldersShowHiddenItems" translate="yes" xml:space="preserve">
27792779
<source>Show hidden files and folders</source>
27802780
<target state="translated">Mostrar archivos y carpetas ocultos</target>
2781-
</trans-unit>
2781+
</trans-unit>
27822782
<trans-unit id="SettingsFilesAndFoldersHideSystemItems" translate="yes" xml:space="preserve">
27832783
<source>Hide protected operating system files (Recommended)</source>
27842784
<target state="translated">Ocultar archivos protegidos del sistema operativo (recomendado)</target>
27852785
</trans-unit>
2786+
<trans-unit id="ShowDotFiles" translate="yes" xml:space="preserve">
2787+
<source>Show dot files</source>
2788+
<target state="translated">Mostrar archivos que comienzan con un punto</target>
2789+
</trans-unit>
27862790
<trans-unit id="SettingsOpenFilesWithOneClick" translate="yes" xml:space="preserve">
27872791
<source>Open files with a single click</source>
27882792
<target state="needs-review-translation">Abrir elementos con un solo clic</target>
@@ -3522,4 +3526,4 @@ Utilizamos App Center para hacer un seguimiento del uso de la aplicación, encon
35223526
</group>
35233527
</body>
35243528
</file>
3525-
</xliff>
3529+
</xliff>

src/Files/MultilingualResources/Files.it-IT.xlf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2783,6 +2783,10 @@
27832783
<source>Hide protected operating system files (Recommended)</source>
27842784
<target state="translated">Nascondi file protetti e di sistema (Raccomandato)</target>
27852785
</trans-unit>
2786+
<trans-unit id="ShowDotFiles" translate="yes" xml:space="preserve">
2787+
<source>Show dot files</source>
2788+
<target state="translated">Mostra file e cartelle che iniziano con un punto</target>
2789+
</trans-unit>
27862790
<trans-unit id="SettingsOpenFilesWithOneClick" translate="yes" xml:space="preserve">
27872791
<source>Open files with a single click</source>
27882792
<target state="translated">Apri i file con un solo click</target>

src/Files/Services/IPreferencesSettingsService.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@ public interface IPreferencesSettingsService : IBaseSettingsService, INotifyProp
2929
/// Gets or sets a value indicating whether or not system items should be visible.
3030
/// </summary>
3131
bool AreSystemItemsHidden { get; set; }
32-
32+
33+
/// <summary>
34+
/// Gets or sets a value indicating whether or not to display dot files.
35+
/// </summary>
36+
bool ShowDotFiles{ get; set; }
37+
3338
/// <summary>
3439
/// Gets or sets a value indicating whether or not files should be sorted together with folders.
3540
/// </summary>

src/Files/Services/Implementation/PreferencesSettingsService.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ public bool AreSystemItemsHidden
4141
get => Get(true);
4242
set => Set(value);
4343
}
44+
45+
public bool ShowDotFiles
46+
{
47+
get => Get(false);
48+
set => Set(value);
49+
}
4450

4551
public bool ListAndSortDirectoriesAlongsideFiles
4652
{
@@ -141,6 +147,7 @@ public override void RaiseOnSettingChangedEvent(object sender, EventArguments.Se
141147
case nameof(ShowFileExtensions):
142148
case nameof(AreHiddenItemsVisible):
143149
case nameof(AreSystemItemsHidden):
150+
case nameof(ShowDotFiles):
144151
case nameof(ListAndSortDirectoriesAlongsideFiles):
145152
case nameof(OpenFilesWithOneClick):
146153
case nameof(OpenFoldersWithOneClick):
@@ -167,6 +174,7 @@ public void ReportToAppCenter()
167174
Analytics.TrackEvent($"{nameof(ShowFileExtensions)}, {ShowFileExtensions}");
168175
Analytics.TrackEvent($"{nameof(AreHiddenItemsVisible)}, {AreHiddenItemsVisible}");
169176
Analytics.TrackEvent($"{nameof(AreSystemItemsHidden)}, {AreSystemItemsHidden}");
177+
Analytics.TrackEvent($"{nameof(ShowDotFiles)}, {ShowDotFiles}");
170178
Analytics.TrackEvent($"{nameof(ListAndSortDirectoriesAlongsideFiles)}, {ListAndSortDirectoriesAlongsideFiles}");
171179
Analytics.TrackEvent($"{nameof(OpenFilesWithOneClick)}, {OpenFilesWithOneClick}");
172180
Analytics.TrackEvent($"{nameof(OpenFoldersWithOneClick)}, {OpenFoldersWithOneClick}");

src/Files/Strings/en-US/Resources.resw

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@
231231
<data name="SettingsFilesAndFoldersShowHiddenItems" xml:space="preserve">
232232
<value>Show hidden files and folders</value>
233233
</data>
234+
<data name="ShowDotFiles" xml:space="preserve">
235+
<value>Show dot files</value>
236+
</data>
234237
<data name="SettingsExperimentalTitle.Text" xml:space="preserve">
235238
<value>Experimental</value>
236239
</data>
@@ -2744,4 +2747,4 @@ We use App Center to track which settings are being used, find bugs, and fix cra
27442747
<data name="UpdateFiles" xml:space="preserve">
27452748
<value>Update Files</value>
27462749
</data>
2747-
</root>
2750+
</root>

src/Files/ViewModels/ItemViewModel.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ private async void UserSettingsService_OnSettingChangedEvent(object sender, Sett
386386
case nameof(UserSettingsService.PreferencesSettingsService.ShowFileExtensions):
387387
case nameof(UserSettingsService.PreferencesSettingsService.AreHiddenItemsVisible):
388388
case nameof(UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden):
389+
case nameof(UserSettingsService.PreferencesSettingsService.ShowDotFiles):
389390
case nameof(UserSettingsService.PreferencesSettingsService.AreFileTagsEnabled):
390391
case nameof(UserSettingsService.PreferencesSettingsService.ShowFolderSize):
391392
await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(() =>
@@ -2119,7 +2120,11 @@ private async Task<ListedItem> AddFileOrFolderAsync(string fileOrFolderPath, str
21192120

21202121
var isSystem = ((FileAttributes)findData.dwFileAttributes & FileAttributes.System) == FileAttributes.System;
21212122
var isHidden = ((FileAttributes)findData.dwFileAttributes & FileAttributes.Hidden) == FileAttributes.Hidden;
2122-
if (isHidden && (!UserSettingsService.PreferencesSettingsService.AreHiddenItemsVisible || (isSystem && UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden)))
2123+
var startWithDot = findData.cFileName.StartsWith(".");
2124+
if ((isHidden &&
2125+
(!UserSettingsService.PreferencesSettingsService.AreHiddenItemsVisible ||
2126+
(isSystem && UserSettingsService.PreferencesSettingsService.AreSystemItemsHidden))) ||
2127+
(startWithDot && !UserSettingsService.PreferencesSettingsService.ShowDotFiles))
21232128
{
21242129
// Do not add to file list if hidden/system attribute is set and system/hidden file are not to be shown
21252130
return null;

src/Files/ViewModels/SettingsViewModels/PreferencesViewModel.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,19 @@ public bool AreSystemItemsHidden
532532
}
533533
}
534534
}
535+
536+
public bool ShowDotFiles
537+
{
538+
get => UserSettingsService.PreferencesSettingsService.ShowDotFiles;
539+
set
540+
{
541+
if (value != UserSettingsService.PreferencesSettingsService.ShowDotFiles)
542+
{
543+
UserSettingsService.PreferencesSettingsService.ShowDotFiles = value;
544+
OnPropertyChanged();
545+
}
546+
}
547+
}
535548

536549
public bool ShowFileExtensions
537550
{
@@ -626,4 +639,4 @@ public void Dispose()
626639
Dispose();
627640
}
628641
}
629-
}
642+
}

src/Files/Views/SettingsPages/Preferences.xaml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,17 @@
151151
IsOn="{Binding AreHiddenItemsVisible, Mode=TwoWay}"
152152
Style="{StaticResource RightAlignedToggleSwitchStyle}" />
153153
</local:SettingsBlockControl>
154-
154+
155+
<local:SettingsBlockControl Title="{helpers:ResourceString Name=ShowDotFiles}" HorizontalAlignment="Stretch">
156+
<local:SettingsBlockControl.Icon>
157+
<FontIcon Glyph="&#xE7B3;" />
158+
</local:SettingsBlockControl.Icon>
159+
<ToggleSwitch
160+
AutomationProperties.Name="{helpers:ResourceString Name=ShowDotFiles}"
161+
IsOn="{Binding ShowDotFiles, Mode=TwoWay}"
162+
Style="{StaticResource RightAlignedToggleSwitchStyle}" />
163+
</local:SettingsBlockControl>
164+
155165
<local:SettingsBlockControl Title="{helpers:ResourceString Name=SettingsFilesAndFoldersHideSystemItems}" HorizontalAlignment="Stretch">
156166
<local:SettingsBlockControl.Icon>
157167
<FontIcon contract13NotPresent:Glyph="&#xE72E;" contract13Present:Glyph="&#xED1A;" />
@@ -346,4 +356,4 @@
346356
VerticalAlignment="Bottom"
347357
ShowDialog="{Binding ShowRestartControl, Mode=TwoWay}" />
348358
</Grid>
349-
</Page>
359+
</Page>

0 commit comments

Comments
 (0)