Skip to content

Commit 73ef37f

Browse files
authored
Added the option to pin hidden folders to the sidebar (#3277)
1 parent 9245fe8 commit 73ef37f

35 files changed

+593
-89
lines changed

Files/BaseLayout.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,18 @@ public void RightClickContextMenu_Opening(object sender, object e)
585585
newItemMenu.Items.Insert(separatorIndex + 1, menuLayoutItem);
586586
}
587587
}
588+
var isPinned = App.SidebarPinnedController.Model.Items.Contains(
589+
ParentShellPageInstance.FilesystemViewModel.WorkingDirectory);
590+
if (isPinned)
591+
{
592+
LoadMenuFlyoutItemByName("UnpinDirectoryFromSidebar");
593+
UnloadMenuFlyoutItemByName("PinDirectoryToSidebar");
594+
}
595+
else
596+
{
597+
LoadMenuFlyoutItemByName("PinDirectoryToSidebar");
598+
UnloadMenuFlyoutItemByName("UnpinDirectoryFromSidebar");
599+
}
588600
}
589601

590602
public void RightClickItemContextMenu_Opening(object sender, object e)

Files/DataModels/SidebarPinnedModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ public async Task AddItemToSidebarAsync(string path)
179179
{
180180
var item = await FilesystemTasks.Wrap(() => DrivesManager.GetRootFromPathAsync(path));
181181
var res = await FilesystemTasks.Wrap(() => StorageFileExtensions.DangerousGetFolderFromPathAsync(path, item));
182-
if (res)
182+
if (res || (FilesystemResult)ItemViewModel.CheckFolderAccessWithWin32(path))
183183
{
184184
int insertIndex = MainPage.SideBarItems.IndexOf(MainPage.SideBarItems.Last(x => x.ItemType == NavigationControlItemType.Location
185185
&& !x.Path.Equals(App.AppSettings.RecycleBinPath))) + 1;
@@ -189,7 +189,7 @@ public async Task AddItemToSidebarAsync(string path)
189189
Path = path,
190190
Glyph = GetItemIcon(path),
191191
IsDefaultLocation = false,
192-
Text = res.Result.DisplayName
192+
Text = res.Result?.DisplayName ?? Path.GetFileName(path.TrimEnd('\\'))
193193
};
194194

195195
if (!MainPage.SideBarItems.Contains(locationItem))

Files/Filesystem/ListedItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ public override string ToString()
278278
public bool IsShortcutItem => this is ShortcutItem;
279279
public bool IsLinkItem => IsShortcutItem && ((ShortcutItem)this).IsUrl;
280280

281-
public bool IsPinned { get; set; }
281+
public bool IsPinned => App.SidebarPinnedController.Model.Items.Contains(itemPath);
282282
}
283283

284284
public class RecycleBinItem : ListedItem

Files/Interacts/Interaction.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,6 @@ public void PinItem_Click(object sender, RoutedEventArgs e)
227227
foreach (ListedItem listedItem in AssociatedInstance.ContentPage.SelectedItems)
228228
{
229229
App.SidebarPinnedController.Model.AddItem(listedItem.ItemPath);
230-
listedItem.IsPinned = true;
231230
}
232231
}
233232
}
@@ -239,7 +238,6 @@ public void UnpinItem_Click(object sender, RoutedEventArgs e)
239238
foreach (ListedItem listedItem in AssociatedInstance.ContentPage.SelectedItems)
240239
{
241240
App.SidebarPinnedController.Model.RemoveItem(listedItem.ItemPath);
242-
listedItem.IsPinned = false;
243241
}
244242
}
245243
}
@@ -526,7 +524,7 @@ public async Task<bool> OpenPath(string path, FilesystemItemType? itemType = nul
526524
});
527525
if (!opened)
528526
{
529-
opened = (FilesystemResult)AssociatedInstance.FilesystemViewModel.CheckFolderAccessWithWin32(path);
527+
opened = (FilesystemResult)ItemViewModel.CheckFolderAccessWithWin32(path);
530528
}
531529
if (opened)
532530
{
@@ -793,6 +791,11 @@ public void PinDirectoryToSidebar(object sender, RoutedEventArgs e)
793791
App.SidebarPinnedController.Model.AddItem(AssociatedInstance.FilesystemViewModel.WorkingDirectory);
794792
}
795793

794+
public void UnpinDirectoryFromSidebar(object sender, RoutedEventArgs e)
795+
{
796+
App.SidebarPinnedController.Model.RemoveItem(AssociatedInstance.FilesystemViewModel.WorkingDirectory);
797+
}
798+
796799
private async void Manager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
797800
{
798801
DataRequestDeferral dataRequestDeferral = args.Request.GetDeferral();

Files/MultilingualResources/Files.ar.xlf

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,10 +1310,6 @@
13101310
<source>Rating</source>
13111311
<target state="translated" state-qualifier="tm-suggestion">التقييم</target>
13121312
</trans-unit>
1313-
<trans-unit id="PropertyItemFolderPathDisplay" translate="yes" xml:space="preserve">
1314-
<source>Item Folder Path</source>
1315-
<target state="translated">مسار مجلد العنصر</target>
1316-
</trans-unit>
13171313
<trans-unit id="PropertyItemTypeText" translate="yes" xml:space="preserve">
13181314
<source>Item Type</source>
13191315
<target state="translated" state-qualifier="tm-suggestion">نوع العنصر</target>
@@ -2174,6 +2170,38 @@
21742170
<source>Desired name</source>
21752171
<target state="translated">الاسم المطلوب</target>
21762172
</trans-unit>
2173+
<trans-unit id="PropertyItemPathDisplay" translate="yes" xml:space="preserve">
2174+
<source>Item Path</source>
2175+
<target state="new">Item Path</target>
2176+
</trans-unit>
2177+
<trans-unit id="SettingsEnableAdaptivePreviewPane.Header" translate="yes" xml:space="preserve">
2178+
<source>Enable adaptive preview pane</source>
2179+
<target state="new">Enable adaptive preview pane</target>
2180+
</trans-unit>
2181+
<trans-unit id="SidebarCloudDrives" translate="yes" xml:space="preserve">
2182+
<source>Cloud Drives</source>
2183+
<target state="new">Cloud Drives</target>
2184+
</trans-unit>
2185+
<trans-unit id="PreviewPaneToggle.ToolTipService.ToolTip" translate="yes" xml:space="preserve">
2186+
<source>Toggle the preview pane (Ctrl + P)</source>
2187+
<target state="new">Toggle the preview pane (Ctrl + P)</target>
2188+
</trans-unit>
2189+
<trans-unit id="DetailsPanePreviewNotAvaliableText" translate="yes" xml:space="preserve">
2190+
<source>No preview available</source>
2191+
<target state="new">No preview available</target>
2192+
</trans-unit>
2193+
<trans-unit id="PreviewPaneDetailsNotAvailableText" translate="yes" xml:space="preserve">
2194+
<source>No details available</source>
2195+
<target state="new">No details available</target>
2196+
</trans-unit>
2197+
<trans-unit id="PropertyItemName" translate="yes" xml:space="preserve">
2198+
<source>Item Name</source>
2199+
<target state="new">Item Name</target>
2200+
</trans-unit>
2201+
<trans-unit id="BaseLayoutContextFlyoutUnpinDirectoryFromSidebar.Text" translate="yes" xml:space="preserve">
2202+
<source>Unpin directory from sidebar</source>
2203+
<target state="new">Unpin directory from sidebar</target>
2204+
</trans-unit>
21772205
</group>
21782206
</body>
21792207
</file>

Files/MultilingualResources/Files.cs-CZ.xlf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2214,6 +2214,14 @@
22142214
<source>Enable adaptive preview pane</source>
22152215
<target state="new">Enable adaptive preview pane</target>
22162216
</trans-unit>
2217+
<trans-unit id="SidebarCloudDrives" translate="yes" xml:space="preserve">
2218+
<source>Cloud Drives</source>
2219+
<target state="new">Cloud Drives</target>
2220+
</trans-unit>
2221+
<trans-unit id="BaseLayoutContextFlyoutUnpinDirectoryFromSidebar.Text" translate="yes" xml:space="preserve">
2222+
<source>Unpin directory from sidebar</source>
2223+
<target state="new">Unpin directory from sidebar</target>
2224+
</trans-unit>
22172225
</group>
22182226
</body>
22192227
</file>

Files/MultilingualResources/Files.da-DK.xlf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,6 +2194,14 @@
21942194
<source>Enable adaptive preview pane</source>
21952195
<target state="new">Enable adaptive preview pane</target>
21962196
</trans-unit>
2197+
<trans-unit id="SidebarCloudDrives" translate="yes" xml:space="preserve">
2198+
<source>Cloud Drives</source>
2199+
<target state="new">Cloud Drives</target>
2200+
</trans-unit>
2201+
<trans-unit id="BaseLayoutContextFlyoutUnpinDirectoryFromSidebar.Text" translate="yes" xml:space="preserve">
2202+
<source>Unpin directory from sidebar</source>
2203+
<target state="new">Unpin directory from sidebar</target>
2204+
</trans-unit>
21972205
</group>
21982206
</body>
21992207
</file>

Files/MultilingualResources/Files.da.xlf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,6 +2194,14 @@
21942194
<source>Enable adaptive preview pane</source>
21952195
<target state="new">Enable adaptive preview pane</target>
21962196
</trans-unit>
2197+
<trans-unit id="SidebarCloudDrives" translate="yes" xml:space="preserve">
2198+
<source>Cloud Drives</source>
2199+
<target state="new">Cloud Drives</target>
2200+
</trans-unit>
2201+
<trans-unit id="BaseLayoutContextFlyoutUnpinDirectoryFromSidebar.Text" translate="yes" xml:space="preserve">
2202+
<source>Unpin directory from sidebar</source>
2203+
<target state="new">Unpin directory from sidebar</target>
2204+
</trans-unit>
21972205
</group>
21982206
</body>
21992207
</file>

Files/MultilingualResources/Files.de-DE.xlf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2200,6 +2200,10 @@
22002200
<source>Cloud Drives</source>
22012201
<target state="new">Cloud Drives</target>
22022202
</trans-unit>
2203+
<trans-unit id="BaseLayoutContextFlyoutUnpinDirectoryFromSidebar.Text" translate="yes" xml:space="preserve">
2204+
<source>Unpin directory from sidebar</source>
2205+
<target state="new">Unpin directory from sidebar</target>
2206+
</trans-unit>
22032207
</group>
22042208
</body>
22052209
</file>

Files/MultilingualResources/Files.es-ES.xlf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,6 +2194,14 @@
21942194
<source>Enable adaptive preview pane</source>
21952195
<target state="new">Enable adaptive preview pane</target>
21962196
</trans-unit>
2197+
<trans-unit id="SidebarCloudDrives" translate="yes" xml:space="preserve">
2198+
<source>Cloud Drives</source>
2199+
<target state="new">Cloud Drives</target>
2200+
</trans-unit>
2201+
<trans-unit id="BaseLayoutContextFlyoutUnpinDirectoryFromSidebar.Text" translate="yes" xml:space="preserve">
2202+
<source>Unpin directory from sidebar</source>
2203+
<target state="new">Unpin directory from sidebar</target>
2204+
</trans-unit>
21972205
</group>
21982206
</body>
21992207
</file>

0 commit comments

Comments
 (0)