Skip to content

Commit 8d596cb

Browse files
committed
Refactor to derive from IShellPage and INavigationControlItem
1 parent c66defd commit 8d596cb

28 files changed

+1376
-1321
lines changed

Files/App.xaml.cs

Lines changed: 62 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,25 @@
2424
using Windows.System;
2525
using Files.CommandLine;
2626
using Files.View_Models;
27+
using Files.Controls;
2728

2829
namespace Files
2930
{
3031
sealed partial class App : Application
3132
{
3233

33-
private static ProHome occupiedInstance;
34-
public static ProHome OccupiedInstance
34+
private static IShellPage currentInstance;
35+
public static IShellPage CurrentInstance
3536
{
3637
get
3738
{
38-
return occupiedInstance;
39+
return currentInstance;
3940
}
4041
set
4142
{
42-
if(value != occupiedInstance)
43+
if(value != currentInstance)
4344
{
44-
occupiedInstance = value;
45+
currentInstance = value;
4546
}
4647
}
4748
}
@@ -50,7 +51,8 @@ public static ProHome OccupiedInstance
5051
public static Dialogs.PropertiesDialog propertiesDialog { get; set; }
5152
public static Dialogs.LayoutDialog layoutDialog { get; set; }
5253
public static Dialogs.AddItemDialog addItemDialog { get; set; }
53-
public static ObservableCollection<SidebarItem> sideBarItems = new ObservableCollection<SidebarItem>();
54+
public static ObservableCollection<INavigationControlItem> sideBarItems = new ObservableCollection<INavigationControlItem>();
55+
public static ObservableCollection<LocationItem> locationItems = new ObservableCollection<LocationItem>();
5456
public static ObservableCollection<WSLDistroItem> linuxDistroItems = new ObservableCollection<WSLDistroItem>();
5557
public static SettingsViewModel AppSettings { get; set; }
5658

@@ -91,13 +93,13 @@ private async void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args)
9193
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
9294
var shift = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift);
9395
var alt = Window.Current.CoreWindow.GetKeyState(VirtualKey.Menu);
94-
if (App.OccupiedInstance != null)
96+
if (App.CurrentInstance != null)
9597
{
9698
if (ctrl.HasFlag(CoreVirtualKeyStates.Down))
9799
{
98100
if (shift.HasFlag(CoreVirtualKeyStates.Down))
99101
{
100-
if ((App.OccupiedInstance.ItemDisplayFrame.Content as BaseLayout) != null)
102+
if (App.CurrentInstance.ContentPage != null)
101103
{
102104
switch (args.VirtualKey)
103105
{
@@ -111,21 +113,21 @@ private async void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args)
111113
}
112114
else
113115
{
114-
if ((App.OccupiedInstance.ItemDisplayFrame.Content as BaseLayout) != null)
116+
if (App.CurrentInstance.ContentPage != null)
115117
{
116118
switch (args.VirtualKey)
117119
{
118120
case VirtualKey.C:
119-
App.OccupiedInstance.instanceInteraction.CopyItem_ClickAsync(null, null);
121+
App.CurrentInstance.InteractionOperations.CopyItem_ClickAsync(null, null);
120122
break;
121123
case VirtualKey.X:
122-
App.OccupiedInstance.instanceInteraction.CutItem_Click(null, null);
124+
App.CurrentInstance.InteractionOperations.CutItem_Click(null, null);
123125
break;
124126
case VirtualKey.V:
125-
App.OccupiedInstance.instanceInteraction.PasteItem_ClickAsync(null, null);
127+
App.CurrentInstance.InteractionOperations.PasteItem_ClickAsync(null, null);
126128
break;
127129
case VirtualKey.A:
128-
App.OccupiedInstance.instanceInteraction.SelectAllItems();
130+
App.CurrentInstance.InteractionOperations.SelectAllItems();
129131
break;
130132
}
131133
}
@@ -151,33 +153,33 @@ private async void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args)
151153
}
152154
else if (ctrl.HasFlag(CoreVirtualKeyStates.None) && alt.HasFlag(CoreVirtualKeyStates.None))
153155
{
154-
if ((App.OccupiedInstance.ItemDisplayFrame.Content as BaseLayout) != null)
156+
if (App.CurrentInstance.ContentPage != null)
155157
{
156158
switch (args.VirtualKey)
157159
{
158160
case VirtualKey.Delete:
159-
App.OccupiedInstance.instanceInteraction.DeleteItem_Click(null, null);
161+
App.CurrentInstance.InteractionOperations.DeleteItem_Click(null, null);
160162
break;
161163
case VirtualKey.Enter:
162-
if ((App.OccupiedInstance.ItemDisplayFrame.Content as BaseLayout).IsQuickLookEnabled)
164+
if ((App.CurrentInstance.ContentPage).IsQuickLookEnabled)
163165
{
164-
App.OccupiedInstance.instanceInteraction.ToggleQuickLook();
166+
App.CurrentInstance.InteractionOperations.ToggleQuickLook();
165167
}
166168
else
167169
{
168-
App.OccupiedInstance.instanceInteraction.List_ItemClick(null, null);
170+
App.CurrentInstance.InteractionOperations.List_ItemClick(null, null);
169171
}
170172
break;
171173
}
172174

173-
if (App.OccupiedInstance.ItemDisplayFrame.SourcePageType == typeof(PhotoAlbum))
175+
if (App.CurrentInstance.CurrentPageType == typeof(PhotoAlbum))
174176
{
175177
switch (args.VirtualKey)
176178
{
177179
case VirtualKey.F2:
178-
if((App.OccupiedInstance.ItemDisplayFrame.Content as BaseLayout).SelectedItems.Count > 0)
180+
if((App.CurrentInstance.ContentPage).SelectedItems.Count > 0)
179181
{
180-
App.OccupiedInstance.instanceInteraction.RenameItem_Click(null, null);
182+
App.CurrentInstance.InteractionOperations.RenameItem_Click(null, null);
181183
}
182184
break;
183185
}
@@ -259,21 +261,25 @@ public async void PopulatePinnedSidebarItems()
259261
var icon = "\uE8B7";
260262

261263
bool isDuplicate = false;
262-
foreach (SidebarItem sbi in sideBarItems)
264+
foreach (INavigationControlItem sbi in sideBarItems)
263265
{
264-
if (!string.IsNullOrWhiteSpace(sbi.Path) && !sbi.isDefaultLocation)
266+
if(sbi is LocationItem)
265267
{
266-
if (sbi.Path.ToString() == locationPath)
268+
if (!string.IsNullOrWhiteSpace(sbi.Path) && !(sbi as LocationItem).IsDefaultLocation)
267269
{
268-
isDuplicate = true;
270+
if (sbi.Path.ToString() == locationPath)
271+
{
272+
isDuplicate = true;
269273

274+
}
270275
}
271276
}
277+
272278
}
273279

274280
if (!isDuplicate)
275281
{
276-
sideBarItems.Add(new SidebarItem() { isDefaultLocation = false, Text = name, IconGlyph = icon, Path = locationPath });
282+
sideBarItems.Add(new LocationItem() { IsDefaultLocation = false, Text = name, Glyph = icon, Path = locationPath });
277283
}
278284
}
279285
catch (UnauthorizedAccessException e)
@@ -298,13 +304,13 @@ public async void PopulatePinnedSidebarItems()
298304

299305
private void AddDefaultLocations()
300306
{
301-
sideBarItems.Add(new SidebarItem() { Text = "Home", IconGlyph = "\uE737", isDefaultLocation = true, Path = "Home" });
302-
sideBarItems.Add(new SidebarItem() { Text = "Desktop", IconGlyph = "\uE8FC", isDefaultLocation = true, Path = AppSettings.DesktopPath });
303-
sideBarItems.Add(new SidebarItem() { Text = "Downloads", IconGlyph = "\uE896", isDefaultLocation = true, Path = AppSettings.DownloadsPath });
304-
sideBarItems.Add(new SidebarItem() { Text = "Documents", IconGlyph = "\uE8A5", isDefaultLocation = true, Path = AppSettings.DocumentsPath });
305-
sideBarItems.Add(new SidebarItem() { Text = "Pictures", IconGlyph = "\uEB9F", isDefaultLocation = true, Path = AppSettings.PicturesPath });
306-
sideBarItems.Add(new SidebarItem() { Text = "Music", IconGlyph = "\uEC4F", isDefaultLocation = true, Path = AppSettings.MusicPath });
307-
sideBarItems.Add(new SidebarItem() { Text = "Videos", IconGlyph = "\uE8B2", isDefaultLocation = true, Path = AppSettings.VideosPath });
307+
sideBarItems.Add(new LocationItem { Text = "Home", Glyph = "\uE737", IsDefaultLocation = true, Path = "Home" });
308+
sideBarItems.Add(new LocationItem { Text = "Desktop", Glyph = "\uE8FC", IsDefaultLocation = true, Path = AppSettings.DesktopPath });
309+
sideBarItems.Add(new LocationItem { Text = "Downloads", Glyph = "\uE896", IsDefaultLocation = true, Path = AppSettings.DownloadsPath });
310+
sideBarItems.Add(new LocationItem { Text = "Documents", Glyph = "\uE8A5", IsDefaultLocation = true, Path = AppSettings.DocumentsPath });
311+
sideBarItems.Add(new LocationItem { Text = "Pictures", Glyph = "\uEB9F", IsDefaultLocation = true, Path = AppSettings.PicturesPath });
312+
sideBarItems.Add(new LocationItem { Text = "Music", Glyph = "\uEC4F", IsDefaultLocation = true, Path = AppSettings.MusicPath });
313+
sideBarItems.Add(new LocationItem { Text = "Videos", Glyph = "\uE8B2", IsDefaultLocation = true, Path = AppSettings.VideosPath });
308314
}
309315

310316
public static async void RemoveStaleSidebarItems()
@@ -326,27 +332,29 @@ public static async void RemoveStaleSidebarItems()
326332

327333
// Remove unpinned items from sidebar
328334
var sideBarItems_Copy = sideBarItems.ToList();
329-
foreach (SidebarItem location in sideBarItems)
335+
foreach (INavigationControlItem location in sideBarItems)
330336
{
331-
if(!location.isDefaultLocation)
337+
if (location is LocationItem)
332338
{
333-
if (!ListFileLines.Contains(location.Path.ToString()))
339+
if (!(location as LocationItem).IsDefaultLocation)
334340
{
335-
sideBarItems_Copy.Remove(location);
341+
if (!ListFileLines.Contains(location.Path.ToString()))
342+
{
343+
sideBarItems_Copy.Remove(location);
344+
}
336345
}
337346
}
338-
339347
}
340348
sideBarItems.Clear();
341-
foreach(SidebarItem correctItem in sideBarItems_Copy)
349+
foreach(INavigationControlItem correctItem in sideBarItems_Copy)
342350
{
343351
sideBarItems.Add(correctItem);
344352
}
345353
LinesToRemoveFromFile.Clear();
346354
}
347355
}
348356

349-
public static SidebarItem rightClickedItem;
357+
public static INavigationControlItem rightClickedItem;
350358

351359
public static async void FlyoutItem_Click(object sender, RoutedEventArgs e)
352360
{
@@ -369,7 +377,7 @@ public static void Clipboard_ContentChanged(object sender, object e)
369377
try
370378
{
371379
DataPackageView packageView = Clipboard.GetContent();
372-
if (packageView.Contains(StandardDataFormats.StorageItems) && App.OccupiedInstance.ItemDisplayFrame.SourcePageType != typeof(YourHome))
380+
if (packageView.Contains(StandardDataFormats.StorageItems) && App.CurrentInstance.CurrentPageType != typeof(YourHome))
373381
{
374382
App.PS.isEnabled = true;
375383
}
@@ -488,16 +496,16 @@ private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, Accelerat
488496
NavigationActions.Forward_Click(null, null);
489497
break;
490498
case VirtualKey.F:
491-
App.OccupiedInstance.RibbonArea.RibbonTabView.SelectedIndex = 0;
499+
(App.CurrentInstance.OperationsControl as RibbonArea).RibbonTabView.SelectedIndex = 0;
492500
break;
493501
case VirtualKey.H:
494-
App.OccupiedInstance.RibbonArea.RibbonTabView.SelectedIndex = 1;
502+
(App.CurrentInstance.OperationsControl as RibbonArea).RibbonTabView.SelectedIndex = 1;
495503
break;
496504
case VirtualKey.S:
497-
App.OccupiedInstance.RibbonArea.RibbonTabView.SelectedIndex = 2;
505+
(App.CurrentInstance.OperationsControl as RibbonArea).RibbonTabView.SelectedIndex = 2;
498506
break;
499507
case VirtualKey.V:
500-
App.OccupiedInstance.RibbonArea.RibbonTabView.SelectedIndex = 3;
508+
(App.CurrentInstance.OperationsControl as RibbonArea).RibbonTabView.SelectedIndex = 3;
501509
break;
502510
}
503511
}
@@ -613,10 +621,18 @@ private void OnSuspending(object sender, SuspendingEventArgs e)
613621
}
614622
}
615623

616-
public class WSLDistroItem
624+
public class WSLDistroItem : INavigationControlItem
617625
{
618626
public string DistroName { get; set; }
619627
public string Path { get; set; }
620628
public Uri Logo { get; set; }
629+
630+
string INavigationControlItem.IconGlyph => null;
631+
632+
string INavigationControlItem.Text => DistroName;
633+
634+
string INavigationControlItem.Path => Path;
635+
636+
NavigationControlItemType INavigationControlItem.ItemType => NavigationControlItemType.LinuxDistro;
621637
}
622638
}

0 commit comments

Comments
 (0)