Skip to content

Commit eae2448

Browse files
committed
Eliminate Static Variables Everywhere to Facilitate Multiple Separate Tab Instances
1 parent 447a813 commit eae2448

20 files changed

+1636
-878
lines changed

Files UWP/AddItem.xaml.cs

Lines changed: 51 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,38 @@
66
using Files.Filesystem;
77
using System.Collections.ObjectModel;
88
using System.Threading.Tasks;
9+
using Microsoft.Toolkit.Uwp.UI.Controls;
10+
using Windows.UI.Xaml.Navigation;
911

1012
namespace Files
1113
{
1214

1315
public sealed partial class AddItem : Page
1416
{
15-
public static ListView addItemsChoices;
17+
public ListView addItemsChoices;
18+
public ItemViewModel<AddItem> instanceViewModel;
1619
public AddItem()
1720
{
1821
this.InitializeComponent();
22+
1923
addItemsChoices = AddItemsListView;
2024
AddItemsToList();
2125
}
2226

27+
protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
28+
{
29+
base.OnNavigatedTo(eventArgs);
30+
var parameters = eventArgs.Parameter;
31+
if (parameters.GetType() == typeof(GenericFileBrowser))
32+
{
33+
instanceViewModel = new ItemViewModel<AddItem>(null, typeof(GenericFileBrowser));
34+
}
35+
else if (parameters.GetType() == typeof(PhotoAlbum))
36+
{
37+
instanceViewModel = new ItemViewModel<AddItem>(null, typeof(PhotoAlbum));
38+
}
39+
}
40+
2341
public static List<AddListItem> AddItemsList = new List<AddListItem>();
2442

2543
public static void AddItemsToList()
@@ -31,41 +49,60 @@ public static void AddItemsToList()
3149

3250
}
3351

34-
52+
public T GetCurrentSelectedTabInstance<T>()
53+
{
54+
var selectedTabContent = ((InstanceTabsView.tabView.SelectedItem as TabViewItem).Content as Grid);
55+
foreach (UIElement uiElement in selectedTabContent.Children)
56+
{
57+
if (uiElement.GetType() == typeof(Frame))
58+
{
59+
return (T)((uiElement as Frame).Content);
60+
}
61+
}
62+
return default;
63+
}
3564
private async void ListView_ItemClick(object sender, ItemClickEventArgs e)
3665
{
37-
38-
ItemViewModel.GetCurrentSelectedTabInstance<ProHome>().AddItemBox.Hide();
39-
var currentPath = App.ViewModel.Universal.path;
66+
var TabInstance = GetCurrentSelectedTabInstance<ProHome>();
67+
TabInstance.AddItemBox.Hide();
68+
string currentPath = null;
69+
if (TabInstance.accessibleContentFrame.SourcePageType == typeof(GenericFileBrowser))
70+
{
71+
currentPath = (TabInstance.accessibleContentFrame.Content as GenericFileBrowser).instanceViewModel.Universal.path;
72+
}
73+
else if (TabInstance.accessibleContentFrame.SourcePageType == typeof(PhotoAlbum))
74+
{
75+
currentPath = (TabInstance.accessibleContentFrame.Content as PhotoAlbum).instanceViewModel.Universal.path;
76+
}
4077
StorageFolder folderToCreateItem = await StorageFolder.GetFolderFromPathAsync(currentPath);
4178
if ((e.ClickedItem as AddListItem).Header == "Folder")
4279
{
43-
await ItemViewModel.GetCurrentSelectedTabInstance<ProHome>().NameBox.ShowAsync();
44-
var userInput = ItemViewModel.GetCurrentSelectedTabInstance<ProHome>().inputForRename;
80+
await TabInstance.NameBox.ShowAsync();
81+
var userInput = TabInstance.inputForRename;
4582
if (userInput != null)
4683
{
4784
var folder = await folderToCreateItem.CreateFolderAsync(userInput, CreationCollisionOption.FailIfExists);
48-
App.ViewModel.AddFileOrFolder(new ListedItem(folder.FolderRelativeId){ FileName = userInput, FileDateReal = DateTimeOffset.Now, EmptyImgVis = Visibility.Collapsed, FolderImg = Visibility.Visible, FileIconVis = Visibility.Collapsed, FileType = "Folder", FileImg = null, FilePath = (App.ViewModel.Universal.path + "\\" + userInput) });
85+
instanceViewModel.AddFileOrFolder(new ListedItem(folder.FolderRelativeId){ FileName = userInput, FileDateReal = DateTimeOffset.Now, EmptyImgVis = Visibility.Collapsed, FolderImg = Visibility.Visible, FileIconVis = Visibility.Collapsed, FileType = "Folder", FileImg = null, FilePath = (instanceViewModel.Universal.path + "\\" + userInput) });
4986
}
5087
}
5188
else if ((e.ClickedItem as AddListItem).Header == "Text Document")
5289
{
53-
await ItemViewModel.GetCurrentSelectedTabInstance<ProHome>().NameBox.ShowAsync();
54-
var userInput = ItemViewModel.GetCurrentSelectedTabInstance<ProHome>().inputForRename;
90+
await TabInstance.NameBox.ShowAsync();
91+
var userInput = TabInstance.inputForRename;
5592
if (userInput != null)
5693
{
5794
var folder = await folderToCreateItem.CreateFileAsync(userInput + ".txt", CreationCollisionOption.FailIfExists);
58-
App.ViewModel.AddFileOrFolder(new ListedItem(folder.FolderRelativeId) { FileName = userInput, FileDateReal = DateTimeOffset.Now, EmptyImgVis = Visibility.Visible, FolderImg = Visibility.Collapsed, FileIconVis = Visibility.Collapsed, FileType = "Text Document", FileImg = null, FilePath = (App.ViewModel.Universal.path + "\\" + userInput + ".txt"), DotFileExtension = ".txt" });
95+
instanceViewModel.AddFileOrFolder(new ListedItem(folder.FolderRelativeId) { FileName = userInput, FileDateReal = DateTimeOffset.Now, EmptyImgVis = Visibility.Visible, FolderImg = Visibility.Collapsed, FileIconVis = Visibility.Collapsed, FileType = "Text Document", FileImg = null, FilePath = (instanceViewModel.Universal.path + "\\" + userInput + ".txt"), DotFileExtension = ".txt" });
5996
}
6097
}
6198
else if ((e.ClickedItem as AddListItem).Header == "Bitmap Image")
6299
{
63-
await ItemViewModel.GetCurrentSelectedTabInstance<ProHome>().NameBox.ShowAsync();
64-
var userInput = ItemViewModel.GetCurrentSelectedTabInstance<ProHome>().inputForRename;
100+
await GetCurrentSelectedTabInstance<ProHome>().NameBox.ShowAsync();
101+
var userInput = GetCurrentSelectedTabInstance<ProHome>().inputForRename;
65102
if (userInput != null)
66103
{
67104
var folder = await folderToCreateItem.CreateFileAsync(userInput + ".bmp", CreationCollisionOption.FailIfExists);
68-
App.ViewModel.AddFileOrFolder(new ListedItem(folder.FolderRelativeId) { FileName = userInput, FileDateReal = DateTimeOffset.Now, EmptyImgVis = Visibility.Visible, FolderImg = Visibility.Collapsed, FileIconVis = Visibility.Collapsed, FileType = "BMP File", FileImg = null, FilePath = (App.ViewModel.Universal.path + "\\" + userInput + ".bmp"), DotFileExtension = ".bmp" });
105+
instanceViewModel.AddFileOrFolder(new ListedItem(folder.FolderRelativeId) { FileName = userInput, FileDateReal = DateTimeOffset.Now, EmptyImgVis = Visibility.Visible, FolderImg = Visibility.Collapsed, FileIconVis = Visibility.Collapsed, FileType = "BMP File", FileImg = null, FilePath = (instanceViewModel.Universal.path + "\\" + userInput + ".bmp"), DotFileExtension = ".bmp" });
69106
}
70107
}
71108
}

Files UWP/App.xaml.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,8 @@ public App()
6363

6464

6565
}
66-
public static Filesystem.ItemViewModel ViewModel = new Filesystem.ItemViewModel();
67-
public static Interacts.Home.HomeItemsState HomeItems { get; set; } = new Interacts.Home.HomeItemsState();
68-
public static Interacts.Share.ShareItemsState ShareItems { get; set; } = new Interacts.Share.ShareItemsState();
69-
public static Interacts.Layout.LayoutItemsState LayoutItems { get; set; } = new Interacts.Layout.LayoutItemsState();
70-
public static Interacts.AlwaysPresentCommandsState AlwaysPresentCommands { get; set; } = new Interacts.AlwaysPresentCommandsState();
71-
public static DisplayedPathText PathText { get; set; } = new DisplayedPathText();
72-
public static Filesystem.LoadingVisibility Loading { get; set; } = new Filesystem.LoadingVisibility();
73-
public static RefreshState RS { get; set; } = new RefreshState();
7466

67+
public static PasteState PS { get; set; } = new PasteState();
7568

7669
/// <summary>
7770
/// Invoked when the application is launched normally by the end user. Other entry points

Files UWP/ClassicMode.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<SplitView DisplayMode="Inline" IsPaneOpen="True" HorizontalAlignment="Stretch" Margin="0,0,0,0" Grid.RowSpan="1" Grid.Row="1" VerticalAlignment="Stretch">
5555
<SplitView.Pane>
5656
<Grid Background="{StaticResource SystemControlAcrylicWindowMediumHighBrush}">
57-
<UILib:TreeView ScrollViewer.HorizontalScrollMode="Enabled" Expanding="DirectoryView_Expanding" UILib:ItemsSource="{x:Bind local:App.ViewModel.ClassicFolderList}" Name="DirectoryView">
57+
<UILib:TreeView ScrollViewer.HorizontalScrollMode="Enabled" Expanding="DirectoryView_Expanding" Name="DirectoryView">
5858
<UILib:TreeView.ItemTemplate>
5959
<DataTemplate>
6060
<UILib:TreeViewItem ItemsSource="{Binding Children}" HasUnrealizedChildren="True">

Files UWP/ClassicMode.xaml.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@
44
using Windows.UI.Xaml;
55
using Windows.UI.Xaml.Controls;
66
using Files.Filesystem;
7+
using Files.Interacts;
78

89
namespace Files
910
{
1011

1112
public sealed partial class ClassicMode : Page
1213
{
1314
public static Page ClassicView;
15+
public ItemViewModel<ClassicMode> instanceViewModel;
16+
public Interaction<ClassicMode> instanceInteraction;
1417
public ClassicMode()
1518
{
1619
this.InitializeComponent();
20+
instanceViewModel = new ItemViewModel<ClassicMode>(this, null);
21+
instanceInteraction = new Interaction<ClassicMode>(this);
1722
var CoreTitleBar = CoreApplication.GetCurrentView().TitleBar;
1823
Window.Current.SetTitleBar(DragArea);
1924
CoreTitleBar.ExtendViewIntoTitleBar = true;
@@ -22,15 +27,15 @@ public ClassicMode()
2227
titleBar.ButtonHoverBackgroundColor = Color.FromArgb(75, 10, 10, 10);
2328
titleBar.ButtonHoverBackgroundColor = Color.FromArgb(75, 10, 10, 10);
2429
ClassicView = ClassicModePage;
25-
App.ViewModel.AddItemsToCollectionAsync(@"C:\", ClassicView);
30+
instanceViewModel.AddItemsToCollectionAsync(@"C:\", ClassicView);
2631
}
2732

2833

2934
private void DirectoryView_Expanding(Microsoft.UI.Xaml.Controls.TreeView sender, Microsoft.UI.Xaml.Controls.TreeViewExpandingEventArgs args)
3035
{
3136
if (args.Node.HasUnrealizedChildren)
3237
{
33-
ItemViewModel.FillTreeNode(args.Item, sender);
38+
instanceViewModel.FillTreeNode(args.Item, sender);
3439
}
3540
}
3641
}

Files UWP/FilesUWP.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@
128128
<Compile Include="LocationsList.cs" />
129129
<Compile Include="Navigation\BackState.cs" />
130130
<Compile Include="Navigation\ForwardState.cs" />
131-
<Compile Include="Navigation\NavigationActions.cs" />
132131
<Compile Include="Navigation\UniversalPath.cs" />
133132
<Compile Include="PhotoAlbum.xaml.cs">
134133
<DependentUpon>PhotoAlbum.xaml</DependentUpon>

0 commit comments

Comments
 (0)