public static void SaveSessionTabs() // Enumerates through all tabs and gets the Path property and saves it to AppSettings.LastSessionPages { AppSettings.LastSessionPages = MainPage.AppInstances.DefaultIfEmpty().Select(tab => tab != null ? tab.Path ?? ResourceController.GetTranslation("NewTab") : ResourceController.GetTranslation("NewTab")).ToArray(); }
public void AddNewTab(Type t, string path) { Frame frame = new Frame(); //frame.Navigate(t, path); string tabLocationHeader = null; Microsoft.UI.Xaml.Controls.FontIconSource fontIconSource = new Microsoft.UI.Xaml.Controls.FontIconSource(); Microsoft.UI.Xaml.Controls.IconSource tabIcon; if (path != null) { if (path == "Settings") { tabLocationHeader = ResourceController.GetTranslation("SidebarSettings/Text"); fontIconSource.Glyph = "\xE713"; foreach (TabViewItem item in tabView.TabItems) { if (item.Header.ToString() == ResourceController.GetTranslation("SidebarSettings/Text")) { tabView.SelectedItem = item; return; } } } else if (path.StartsWith(App.AppSettings.DesktopPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDesktop"); fontIconSource.Glyph = "\xE8FC"; } else if (path.StartsWith(App.AppSettings.DownloadsPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDownloads"); fontIconSource.Glyph = "\xE896"; } else if (path.StartsWith(App.AppSettings.DocumentsPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDocuments"); fontIconSource.Glyph = "\xE8A5"; } else if (path.StartsWith(App.AppSettings.PicturesPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarPictures"); fontIconSource.Glyph = "\xEB9F"; } else if (path.StartsWith(App.AppSettings.MusicPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarMusic"); fontIconSource.Glyph = "\xEC4F"; } else if (path.StartsWith(App.AppSettings.VideosPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarVideos"); fontIconSource.Glyph = "\xE8B2"; } else if (App.AppSettings.OneDrivePath != null && path.StartsWith(App.AppSettings.OneDrivePath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = "OneDrive"; fontIconSource.Glyph = "\xE753"; } else if (path == "New tab") { tabLocationHeader = ResourceController.GetTranslation("NewTab"); fontIconSource.Glyph = "\xE737"; } else { tabLocationHeader = Path.GetDirectoryName(path); fontIconSource.Glyph = "\xE8B7"; } } tabIcon = fontIconSource; Grid gr = new Grid(); gr.Children.Add(frame); gr.HorizontalAlignment = HorizontalAlignment.Stretch; gr.VerticalAlignment = VerticalAlignment.Stretch; TabViewItem tvi = new TabViewItem() { Header = tabLocationHeader, Content = gr, Width = 200, IconSource = tabIcon, Transitions = null, ContentTransitions = null }; tabView.TabItems.Add(tvi); TabStrip.SelectedIndex = TabStrip.TabItems.Count - 1; var tabViewItemFrame = (tvi.Content as Grid).Children[0] as Frame; tabViewItemFrame.Loaded += delegate { if (tabViewItemFrame.CurrentSourcePageType != typeof(ModernShellPage)) { tabViewItemFrame.Navigate(t, path); } }; }
public async void SetSelectedTabInfo(string text, string currentPathForTabIcon = null) { string tabLocationHeader; Microsoft.UI.Xaml.Controls.FontIconSource fontIconSource = new Microsoft.UI.Xaml.Controls.FontIconSource(); Microsoft.UI.Xaml.Controls.IconSource tabIcon; if (currentPathForTabIcon == null && text == ResourceController.GetTranslation("SidebarSettings/Text")) { tabLocationHeader = ResourceController.GetTranslation("SidebarSettings/Text"); fontIconSource.Glyph = "\xE713"; } else if (currentPathForTabIcon == null && text == "New tab") { tabLocationHeader = ResourceController.GetTranslation("NewTab"); fontIconSource.Glyph = "\xE737"; } else if (currentPathForTabIcon.StartsWith(App.AppSettings.DesktopPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDesktop"); fontIconSource.Glyph = "\xE8FC"; } else if (currentPathForTabIcon.StartsWith(App.AppSettings.DownloadsPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDownloads"); fontIconSource.Glyph = "\xE896"; } else if (currentPathForTabIcon.StartsWith(App.AppSettings.DocumentsPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDocuments"); fontIconSource.Glyph = "\xE8A5"; } else if (currentPathForTabIcon.StartsWith(App.AppSettings.PicturesPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarPictures"); fontIconSource.Glyph = "\xEB9F"; } else if (currentPathForTabIcon.StartsWith(App.AppSettings.MusicPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarMusic"); fontIconSource.Glyph = "\xEC4F"; } else if (currentPathForTabIcon.StartsWith(App.AppSettings.VideosPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarVideos"); fontIconSource.Glyph = "\xE8B2"; } else if (App.AppSettings.OneDrivePath != null && currentPathForTabIcon.StartsWith(App.AppSettings.OneDrivePath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = "OneDrive"; fontIconSource.Glyph = "\xE753"; } else { // If path is a drive's root if (NormalizePath(Path.GetPathRoot(currentPathForTabIcon)) == NormalizePath(currentPathForTabIcon)) { if (NormalizePath(currentPathForTabIcon) != NormalizePath("A:") && NormalizePath(currentPathForTabIcon) != NormalizePath("B:")) { var remDriveNames = (await KnownFolders.RemovableDevices.GetFoldersAsync()).Select(x => x.DisplayName); if (!remDriveNames.Contains(NormalizePath(currentPathForTabIcon))) { fontIconSource.Glyph = "\xEDA2"; tabLocationHeader = NormalizePath(currentPathForTabIcon); } else { fontIconSource.Glyph = "\xE88E"; tabLocationHeader = (await KnownFolders.RemovableDevices.GetFolderAsync(currentPathForTabIcon)).DisplayName; } } else { fontIconSource.Glyph = "\xE74E"; tabLocationHeader = NormalizePath(currentPathForTabIcon); } } else { fontIconSource.Glyph = "\xE8B7"; tabLocationHeader = currentPathForTabIcon.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).Split('\\', StringSplitOptions.RemoveEmptyEntries).Last(); } } tabIcon = fontIconSource; (tabView.SelectedItem as TabViewItem).Header = tabLocationHeader; (tabView.SelectedItem as TabViewItem).IconSource = tabIcon; }
public void TabStrip_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (TabStrip.SelectedItem == null) { if (e.RemovedItems.Count > 0) { var itemToReselect = e.RemovedItems[0]; if (TabStrip.TabItems.Contains(itemToReselect)) { TabStrip.SelectedItem = itemToReselect; } } } else { Microsoft.UI.Xaml.Controls.FontIconSource icon = new Microsoft.UI.Xaml.Controls.FontIconSource(); icon.Glyph = "\xE713"; if ((tabView.SelectedItem as TabViewItem).Header.ToString() != ResourceController.GetTranslation("SidebarSettings/Text") && (tabView.SelectedItem as TabViewItem).IconSource != icon) { App.CurrentInstance = GetCurrentSelectedTabInstance <ModernShellPage>(); } if ((tabView.SelectedItem as TabViewItem).Header.ToString() == ResourceController.GetTranslation("SidebarSettings/Text")) { App.InteractionViewModel.TabsLeftMargin = new Thickness(0, 0, 0, 0); App.InteractionViewModel.LeftMarginLoaded = false; } else { if (App.CurrentInstance != null) { if ((tabView.SelectedItem as TabViewItem).Header.ToString() == ResourceController.GetTranslation("NewTab")) { App.CurrentInstance.InstanceViewModel.IsPageTypeNotHome = false; } else { App.CurrentInstance.InstanceViewModel.IsPageTypeNotHome = true; } App.CurrentInstance.InstanceViewModel.IsPageTypeRecycleBin = App.CurrentInstance?.FilesystemViewModel?.WorkingDirectory?.StartsWith(App.AppSettings.RecycleBinPath) ?? false; App.CurrentInstance.InstanceViewModel.IsPageTypeMtpDevice = App.CurrentInstance?.FilesystemViewModel?.WorkingDirectory?.StartsWith("\\\\?\\") ?? false; } App.InteractionViewModel.TabsLeftMargin = new Thickness(200, 0, 0, 0); App.InteractionViewModel.LeftMarginLoaded = true; } } }
private void AddTabButton_Click(object sender, RoutedEventArgs e) { AddNewTab(typeof(ModernShellPage), ResourceController.GetTranslation("NewTab")); }
public async void AddNewTab(Type t, string path) { Frame frame = new Frame(); string tabLocationHeader = null; Microsoft.UI.Xaml.Controls.FontIconSource fontIconSource = new Microsoft.UI.Xaml.Controls.FontIconSource(); Microsoft.UI.Xaml.Controls.IconSource tabIcon; if (path != null) { if (path == "Settings") { tabLocationHeader = ResourceController.GetTranslation("SidebarSettings/Text"); fontIconSource.Glyph = "\xE713"; foreach (TabViewItem item in tabView.TabItems) { if (item.Header.ToString() == ResourceController.GetTranslation("SidebarSettings/Text")) { tabView.SelectedItem = item; return; } } } else if (path.Equals(App.AppSettings.DesktopPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDesktop"); fontIconSource.Glyph = "\xE8FC"; } else if (path.Equals(App.AppSettings.DownloadsPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDownloads"); fontIconSource.Glyph = "\xE896"; } else if (path.Equals(App.AppSettings.DocumentsPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarDocuments"); fontIconSource.Glyph = "\xE8A5"; } else if (path.Equals(App.AppSettings.PicturesPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarPictures"); fontIconSource.Glyph = "\xEB9F"; } else if (path.Equals(App.AppSettings.MusicPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarMusic"); fontIconSource.Glyph = "\xEC4F"; } else if (path.Equals(App.AppSettings.VideosPath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = ResourceController.GetTranslation("SidebarVideos"); fontIconSource.Glyph = "\xE8B2"; } else if (path.Equals(App.AppSettings.RecycleBinPath, StringComparison.OrdinalIgnoreCase)) { var localSettings = ApplicationData.Current.LocalSettings; tabLocationHeader = localSettings.Values.Get("RecycleBin_Title", "Recycle Bin"); fontIconSource.Glyph = "\xE74D"; } else if (App.AppSettings.OneDrivePath != null && path.Equals(App.AppSettings.OneDrivePath, StringComparison.OrdinalIgnoreCase)) { tabLocationHeader = "OneDrive"; fontIconSource.Glyph = "\xE753"; } else if (path == ResourceController.GetTranslation("NewTab")) { tabLocationHeader = ResourceController.GetTranslation("NewTab"); fontIconSource.Glyph = "\xE737"; } else { var isRoot = Path.GetPathRoot(path) == path; if (Path.IsPathRooted(path) || isRoot) // Or is a directory or a root (drive) { var normalizedPath = NormalizePath(path); var dirName = Path.GetDirectoryName(normalizedPath); if (dirName != null) { tabLocationHeader = dirName; fontIconSource.Glyph = "\xE8B7"; } else { // Pick the best icon for this tab var remDriveNames = (await KnownFolders.RemovableDevices.GetFoldersAsync()).Select(x => x.DisplayName); if (!remDriveNames.Contains(normalizedPath)) { if (path != "A:" && path != "B:") // Check if it's using (generally) floppy-reserved letters. { fontIconSource.Glyph = "\xE74E"; // Floppy Disk icon } else { fontIconSource.Glyph = "\xEDA2"; // Hard Disk icon } tabLocationHeader = normalizedPath; } else { fontIconSource.Glyph = "\xE88E"; tabLocationHeader = (await KnownFolders.RemovableDevices.GetFolderAsync(path)).DisplayName; } } } else { // Invalid path, open new tab instead (explorer opens Documents when it fails) Debug.WriteLine($"Invalid path \"{path}\" in InstanceTabsView.xaml.cs\\AddNewTab"); path = ResourceController.GetTranslation("NewTab"); tabLocationHeader = ResourceController.GetTranslation("NewTab"); fontIconSource.Glyph = "\xE737"; } } } tabIcon = fontIconSource; Grid gr = new Grid(); gr.Children.Add(frame); gr.HorizontalAlignment = HorizontalAlignment.Stretch; gr.VerticalAlignment = VerticalAlignment.Stretch; TabViewItem tvi = new TabViewItem() { Header = tabLocationHeader, Content = gr, Width = 200, IconSource = tabIcon, Transitions = null, Style = rootGrid.Resources["TabItemStyle"] as Style, ContentTransitions = null }; tabView.TabItems.Add(tvi); TabStrip.SelectedIndex = TabStrip.TabItems.Count - 1; var tabViewItemFrame = (tvi.Content as Grid).Children[0] as Frame; tabViewItemFrame.Loaded += delegate { if (tabViewItemFrame.CurrentSourcePageType != typeof(ModernShellPage)) { tabViewItemFrame.Navigate(t, path); } }; }
public LibraryCards() { InitializeComponent(); itemsAdded.Clear(); itemsAdded.Add(new FavoriteLocationItem() { ImageSource = "Assets/Cards/Gradients/Blue.png", Icon = "\xe91c", Text = ResourceController.GetTranslation("SidebarDownloads"), Tag = "Downloads" }); itemsAdded.Add(new FavoriteLocationItem() { ImageSource = "Assets/Cards/Gradients/Green.png", Icon = "\xea11", Text = ResourceController.GetTranslation("SidebarDocuments"), Tag = "Documents" }); itemsAdded.Add(new FavoriteLocationItem() { ImageSource = "Assets/Cards/Gradients/Orange.png", Icon = "\xea83", Text = ResourceController.GetTranslation("SidebarPictures"), Tag = "Pictures" }); itemsAdded.Add(new FavoriteLocationItem() { ImageSource = "Assets/Cards/Gradients/Pink.png", Icon = "\xead4", Text = ResourceController.GetTranslation("SidebarMusic"), Tag = "Music" }); itemsAdded.Add(new FavoriteLocationItem() { ImageSource = "Assets/Cards/Gradients/Red.png", Icon = "\xec0d", Text = ResourceController.GetTranslation("SidebarVideos"), Tag = "Videos" }); }
public void TabStrip_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (TabStrip.SelectedItem == null) { if (e.RemovedItems.Count > 0) { var itemToReselect = e.RemovedItems[0]; if (TabStrip.TabItems.Contains(itemToReselect)) { TabStrip.SelectedItem = itemToReselect; } } } else { Microsoft.UI.Xaml.Controls.FontIconSource icon = new Microsoft.UI.Xaml.Controls.FontIconSource(); icon.Glyph = "\xE713"; if ((tabView.SelectedItem as TabViewItem).Header.ToString() != ResourceController.GetTranslation("SidebarSettings/Text") && (tabView.SelectedItem as TabViewItem).IconSource != icon) { App.CurrentInstance = GetCurrentSelectedTabInstance <ModernShellPage>(); } if ((tabView.SelectedItem as TabViewItem).Header.ToString() == ResourceController.GetTranslation("SidebarSettings/Text")) { App.InteractionViewModel.TabsLeftMargin = new Thickness(0, 0, 0, 0); App.InteractionViewModel.LeftMarginLoaded = false; } else { if (App.CurrentInstance != null) { if ((tabView.SelectedItem as TabViewItem).Header.ToString() == ResourceController.GetTranslation("NewTab")) { App.CurrentInstance.InstanceViewModel.IsPageTypeNotHome = false; } else { App.CurrentInstance.InstanceViewModel.IsPageTypeNotHome = true; } if ((tabView.SelectedItem as TabViewItem).Header.ToString() == ApplicationData.Current.LocalSettings.Values.Get("RecycleBin_Title", "Recycle Bin")) { App.CurrentInstance.InstanceViewModel.IsPageTypeNotRecycleBin = false; } else { App.CurrentInstance.InstanceViewModel.IsPageTypeNotRecycleBin = true; } } App.InteractionViewModel.TabsLeftMargin = new Thickness(200, 0, 0, 0); App.InteractionViewModel.LeftMarginLoaded = true; } } }
private void LoadMenuFlyoutItem(IList <MenuFlyoutItemBase> MenuItemsList, IEnumerable <Win32ContextMenuItem> menuFlyoutItems, string menuHandle, bool showIcons = true, int itemsBeforeOverflow = int.MaxValue) { var items_count = 0; // Separators do not count for reaching the overflow threshold var menu_items = menuFlyoutItems.TakeWhile(x => x.Type == MenuItemType.MFT_SEPARATOR || ++items_count <= itemsBeforeOverflow).ToList(); var overflow_items = menuFlyoutItems.Except(menu_items).ToList(); if (overflow_items.Where(x => x.Type != MenuItemType.MFT_SEPARATOR).Any()) { var menuLayoutSubItem = new MenuFlyoutSubItem() { Text = ResourceController.GetTranslation("ContextMenuMoreItemsLabel"), Tag = ((Win32ContextMenuItem)null, menuHandle), Icon = new FontIcon() { FontFamily = App.Current.Resources["FluentUIGlyphs"] as Windows.UI.Xaml.Media.FontFamily, Glyph = "\xEAD0" } }; LoadMenuFlyoutItem(menuLayoutSubItem.Items, overflow_items, menuHandle, false); MenuItemsList.Insert(0, menuLayoutSubItem); } foreach (var menuFlyoutItem in menu_items .SkipWhile(x => x.Type == MenuItemType.MFT_SEPARATOR) // Remove leading seperators .Reverse() .SkipWhile(x => x.Type == MenuItemType.MFT_SEPARATOR)) // Remove trailing separators { if ((menuFlyoutItem.Type == MenuItemType.MFT_SEPARATOR) && (MenuItemsList.FirstOrDefault() is MenuFlyoutSeparator)) { // Avoid duplicate separators continue; } BitmapImage image = null; if (showIcons) { image = new BitmapImage(); if (!string.IsNullOrEmpty(menuFlyoutItem.IconBase64)) { byte[] bitmapData = Convert.FromBase64String(menuFlyoutItem.IconBase64); using (var ms = new MemoryStream(bitmapData)) { #pragma warning disable CS4014 image.SetSourceAsync(ms.AsRandomAccessStream()); #pragma warning restore CS4014 } } } if (menuFlyoutItem.Type == MenuItemType.MFT_SEPARATOR) { var menuLayoutItem = new MenuFlyoutSeparator() { Tag = (menuFlyoutItem, menuHandle) }; MenuItemsList.Insert(0, menuLayoutItem); } else if (menuFlyoutItem.SubItems.Where(x => x.Type != MenuItemType.MFT_SEPARATOR).Any() && !string.IsNullOrEmpty(menuFlyoutItem.Label)) { var menuLayoutSubItem = new MenuFlyoutSubItem() { Text = menuFlyoutItem.Label.Replace("&", ""), Tag = (menuFlyoutItem, menuHandle), }; LoadMenuFlyoutItem(menuLayoutSubItem.Items, menuFlyoutItem.SubItems, menuHandle, false); MenuItemsList.Insert(0, menuLayoutSubItem); } else if (!string.IsNullOrEmpty(menuFlyoutItem.Label)) { var menuLayoutItem = new MenuFlyoutItemWithImage() { Text = menuFlyoutItem.Label.Replace("&", ""), Tag = (menuFlyoutItem, menuHandle), BitmapIcon = image }; menuLayoutItem.Click += MenuLayoutItem_Click; MenuItemsList.Insert(0, menuLayoutItem); } } }
private async void RecentsView_ItemClick(object sender, ItemClickEventArgs e) { var path = (e.ClickedItem as RecentItem).RecentPath; try { await Interaction.InvokeWin32Component(path); } catch (UnauthorizedAccessException) { await App.ConsentDialogDisplay.ShowAsync(); } catch (ArgumentException) { if (new DirectoryInfo(path).Root.ToString().Contains(@"C:\")) { App.CurrentInstance.ContentFrame.Navigate(AppSettings.GetLayoutType(), path); } else { foreach (DriveItem drive in AppSettings.DrivesManager.Drives) { if (drive.Path.ToString() == new DirectoryInfo(path).Root.ToString()) { App.CurrentInstance.ContentFrame.Navigate(AppSettings.GetLayoutType(), path); return; } } } } catch (COMException) { await DialogDisplayHelper.ShowDialog(ResourceController.GetTranslation("DriveUnpluggedDialog.Title"), ResourceController.GetTranslation("DriveUnpluggedDialog.Text")); } }