private void FileList_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) { if ((e.OriginalSource as FrameworkElement)?.DataContext is ListedItem item && ((!UserSettingsService.FilesAndFoldersSettingsService.OpenFilesWithOneClick && item.PrimaryItemAttribute == StorageItemTypes.File) || (!UserSettingsService.FilesAndFoldersSettingsService.OpenFoldersWithOneClick && item.PrimaryItemAttribute == StorageItemTypes.Folder))) { if (item.PrimaryItemAttribute == Windows.Storage.StorageItemTypes.Folder) { DismissOtherBlades(sender as ListView); listViewItem = (FileList.ContainerFromItem(item) as ListViewItem); var frame = new Frame(); frame.Navigated += Frame_Navigated; var blade = new BladeItem(); blade.Content = frame; ColumnHost.Items.Add(blade); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = 1, Path = item.ItemPath }); } else { NavigationHelpers.OpenSelectedItems(ParentShellPageInstance, false); } } ResetRenameDoubleClick(); }
private void ColumnViewBase_ItemInvoked(object sender, EventArgs e) { var column = sender as ColumnParam; if (column.ListView.FindAscendant <ColumnViewBrowser>() != this) { return; } var nextBladeIndex = ColumnHost.ActiveBlades.IndexOf(column.ListView.FindAscendant <BladeItem>()) + 1; if (ColumnHost.ActiveBlades.ElementAtOrDefault(nextBladeIndex) is not BladeItem nextBlade || ((nextBlade.Content as Frame)?.Content as IShellPage)?.FilesystemViewModel?.WorkingDirectory != column.NavPathParam) { DismissOtherBlades(column.ListView); var frame = new Frame(); frame.Navigated += Frame_Navigated; var newblade = new BladeItem(); newblade.Content = frame; ColumnHost.Items.Add(newblade); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = ColumnHost.ActiveBlades.IndexOf(newblade), NavPathParam = column.NavPathParam }); } }
private void ColumnViewBase_ItemInvoked(object sender, EventArgs e) { var column = sender as ColumnParam; if (column.ListView.FindAscendant <ColumnViewBrowser>() != this) { return; } var frame = new Frame(); frame.Navigated += Frame_Navigated; var newblade = new BladeItem(); newblade.Content = frame; ColumnHost.Items.Add(newblade); //pane.NavigateWithArguments(typeof(ColumnViewBase), new NavigationArguments() //{ // NavPathParam = item.ItemPath, // AssociatedTabInstance = ParentShellPageInstance //}); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = ColumnHost.ActiveBlades.IndexOf(newblade), Path = column.Path }); }
private void ColumnViewBase_ItemInvoked(object sender, EventArgs e) { var column = sender as ColumnParam; if (column.ListView.FindAscendant <ColumnViewBrowser>() != this) { return; } DismissOtherBlades(column.ListView); var frame = new Frame(); frame.Navigated += Frame_Navigated; var newblade = new BladeItem(); newblade.Content = frame; ColumnHost.Items.Add(newblade); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = ColumnHost.ActiveBlades.IndexOf(newblade), NavPathParam = column.NavPathParam }); }
private void ColumnShellPage_NotifyRoot(object sender, EventArgs e) { var column = sender as ColumnParam; try { while (ColumnHost.ActiveBlades.Count > column.Column) { ColumnHost.ActiveBlades.RemoveAt(column.Column + 1); } } catch { } var frame = new Frame(); var blade = new BladeItem(); blade.Content = frame; ColumnHost.Items.Add(blade); //pane.NavigateWithArguments(typeof(ColumnViewBase), new NavigationArguments() //{ // NavPathParam = item.ItemPath, // AssociatedTabInstance = ParentShellPageInstance //}); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = ColumnHost.ActiveBlades.IndexOf(blade), Path = column.Path }); }
private async void FileList_ItemTapped(object sender, TappedRoutedEventArgs e) { if (listViewItem != null) { //_ = VisualStateManager.GoToState(listViewItem, "CurrentItem", true); } var ctrlPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down); var shiftPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down); var item = (e.OriginalSource as FrameworkElement)?.DataContext as ListedItem; if (ctrlPressed || shiftPressed) // Allow for Ctrl+Shift selection { return; } // Check if the setting to open items with a single click is turned on if (item != null && ((UserSettingsService.FilesAndFoldersSettingsService.OpenFoldersWithOneClick && item.PrimaryItemAttribute == StorageItemTypes.Folder) || (UserSettingsService.FilesAndFoldersSettingsService.OpenFilesWithOneClick && item.PrimaryItemAttribute == StorageItemTypes.File))) { ResetRenameDoubleClick(); if (item.PrimaryItemAttribute == StorageItemTypes.Folder) { DismissOtherBlades(sender as ListView); listViewItem = (FileList.ContainerFromItem(item) as ListViewItem); var frame = new Frame(); frame.Navigated += Frame_Navigated; var blade = new BladeItem(); blade.Content = frame; ColumnHost.Items.Add(blade); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = 1, Path = item.ItemPath }); } else { NavigationHelpers.OpenSelectedItems(ParentShellPageInstance, false); } } else { var clickedItem = e.OriginalSource as FrameworkElement; if (clickedItem is TextBlock && ((TextBlock)clickedItem).Name == "ItemName") { CheckRenameDoubleClick(clickedItem?.DataContext); } else if (IsRenamingItem) { ListViewItem listViewItem = FileList.ContainerFromItem(RenamingItem) as ListViewItem; if (listViewItem != null) { var textBox = listViewItem.FindDescendant("ListViewTextBoxItemName") as TextBox; CommitRename(textBox); } } } }
private void btnSearch_Click(object sender, RoutedEventArgs e) { BladeItem bi = new BladeItem(); bi.Title = txtSearch.Text; bi.Content = new SearchResults(txtSearch.Text); bladeView.Items.Add(bi); }
private async void FileList_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) { DismissOtherBlades(sender as ListView); await Task.Delay(200); if ((e.OriginalSource as FrameworkElement)?.DataContext is ListedItem && !AppSettings.OpenItemsWithOneclick) { if (listViewItem != null) { listViewItem.Style = (Style)this.Resources["NormalStyle"]; } var item = (e.OriginalSource as FrameworkElement).DataContext as ListedItem; if (item.PrimaryItemAttribute == Windows.Storage.StorageItemTypes.Folder) { //var pane = new ModernShellPage(); //pane.FilesystemViewModel = new ItemViewModel(InstanceViewModel?.FolderSettings); //await pane.FilesystemViewModel.SetWorkingDirectoryAsync(item.ItemPath); //pane.IsPageMainPane = false; //pane.NavParams = item.ItemPath; try { while (ColumnHost.ActiveBlades.Count > 1) { ColumnHost.Items.RemoveAt(1); ColumnHost.ActiveBlades.RemoveAt(1); } } catch { } if (item.ContainsFilesOrFolders) { listViewItem = (FileList.ContainerFromItem(item) as ListViewItem); var frame = new Frame(); var blade = new BladeItem(); blade.Content = frame; ColumnHost.Items.Add(blade); //pane.NavigateWithArguments(typeof(ColumnViewBase), new NavigationArguments() //{ // NavPathParam = item.ItemPath, // AssociatedTabInstance = ParentShellPageInstance //}); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = 1, Path = item.ItemPath }); } } // The delay gives time for the item to be selected else { NavigationHelpers.OpenSelectedItems(ParentShellPageInstance, false); } } }
private void OnAddBladeButtonClicked(object sender, RoutedEventArgs e) { BladeItem bladeItem = new BladeItem() { Title = "Default blade", Width = 400, IsOpen = true }; BladeView?.Items?.Add(bladeItem); }
private void OnAddBladeButtonClicked(object sender, RoutedEventArgs e) { if (resources?.ContainsKey("BladeStyle") == true) { BladeItem bladeItem = new BladeItem() { Style = resources["BladeStyle"] as Style }; bladeView?.Items?.Add(bladeItem); } }
/// <summary> /// Event handler clears the respective viewmodels when the user closes the blade /// </summary> private void BladeView_BladeClosed(object sender, BladeItem e) { if (e.Name == "IdentifiedFeatureBlade") { MainViewModel.IdentifiedFeatureViewModel = null; } else if (e.Name == "OriginRelationshipBlade") { MainViewModel.IdentifiedFeatureViewModel.SelectedOriginRelationship = null; } else if (e.Name == "DestinationRelationshipBlade") { MainViewModel.IdentifiedFeatureViewModel.SelectedDestinationRelationship = null; } }
/// <summary> /// Returns the ordinal position in the set for the element that is associated with the automation peer. /// </summary> /// <returns> /// The ordinal position in the set. /// </returns> protected override int GetPositionInSetCore() { int positionInSet = base.GetPositionInSetCore(); if (positionInSet != -1) { return(positionInSet); } BladeItem owner = this.OwnerBladeItem; BladeView parent = owner.ParentBladeView; positionInSet = parent.IndexFromContainer(owner); return(positionInSet); }
/// <summary> /// Returns the size of the set where the element that is associated with the automation peer is located. /// </summary> /// <returns> /// The size of the set. /// </returns> protected override int GetSizeOfSetCore() { int sizeOfSet = base.GetSizeOfSetCore(); if (sizeOfSet != -1) { return(sizeOfSet); } BladeItem owner = this.OwnerBladeItem; BladeView parent = owner.ParentBladeView; sizeOfSet = parent.Items.Count; return(sizeOfSet); }
private void UnloadBlade(object sender, BladeItem e) { // sender is the BladeView, e is the BladeItem itself // get the current index // index before the current index should invoke ListView.SelectedItems.Clear() // active blades BladeItem[] activeBlades = bladeView.ActiveBlades.ToArray(); // blade to be unloaded BladeItem currentBlade = e; // index of blade to be unloaded int currentIndex = Array.IndexOf(activeBlades, currentBlade); // index of previous blade in ActiveBlades int previousIndex = currentIndex - 1; if (previousIndex > -1) { // previous BladeItem BladeItem previousBlade = activeBlades[previousIndex]; // ListView contained in previous BladeItem ListView previousList = previousBlade.Content as ListView; // Clear selected item in ListView // previousList.SelectedItems.Clear(); previousList.SelectedItem = null; } // we also need to close all the blades after the current blade // everything after this index should be removed if (currentIndex + 1 >= activeBlades.Count() - 1) { for (int i = currentIndex + 1; i < activeBlades.Count(); i++) { bladeView.Items.RemoveAt(i); } } }
private void DismissOtherBlades(BladeItem blade) { var index = ColumnHost.ActiveBlades.IndexOf(blade); if (index >= 0) { Common.Extensions.IgnoreExceptions(() => { while (ColumnHost.ActiveBlades.Count > index + 1) { if ((ColumnHost.ActiveBlades[index + 1].Content as Frame)?.Content is IDisposable disposableContent) { disposableContent.Dispose(); } ColumnHost.Items.RemoveAt(index + 1); ColumnHost.ActiveBlades.RemoveAt(index + 1); } }); } ContentChanged(LastColumnShellPage); }
private void DismissOtherBlades(BladeItem blade) { var index = ColumnHost.ActiveBlades.IndexOf(blade); if (index >= 0) { Common.Extensions.IgnoreExceptions(() => { while (ColumnHost.ActiveBlades.Count > index + 1) { if ((ColumnHost.ActiveBlades[index + 1].Content as Frame)?.Content is IDisposable disposableContent) { disposableContent.Dispose(); } (((ColumnHost.ActiveBlades[index + 1].Content as Frame).Content as ColumnShellPage).SlimContentPage as ColumnViewBase).ItemInvoked -= ColumnViewBase_ItemInvoked; ((ColumnHost.ActiveBlades[index + 1].Content as Frame).Content as UIElement).RemoveHandler(UIElement.PointerPressedEvent, ColumnPointerPressedHandler); ColumnHost.Items.RemoveAt(index + 1); ColumnHost.ActiveBlades.RemoveAt(index + 1); } }); } ContentChanged(ActiveColumnShellPage); }
private async void LoadBlade(object sender, SelectionChangedEventArgs e) { // instantiate sender into a listview object ListView theSender = (ListView)sender; //Load a blade for the selected tweet //Tweet SelectedTweet = (sender as ListView).SelectedItem as Tweet; if (theSender.SelectedItem != null) { // this needs to go away at some point Tweet2 SelectedTweet = (theSender.SelectedItem as Tweet2).ShallowCopy(); // Create a new list of Tweet objects List <Tweet2> theTweet = new List <Tweet2>(); TwitterUser theUser = SelectedTweet.Tweet.User; string theTweetId = SelectedTweet.Tweet.Id; // we don't have to do this if there aren't any responses // but Twitter won't let us know this information without paying the big bucks Utils.Loaders Loader = new Utils.Loaders(); List <Tweet2> theTweets = await Loader.GetTweetRepliesAsync(theUser, theTweetId); // Add selected tweet to list theTweet.Add(SelectedTweet); // TODO // - use search API to retreive tweet responses. this will be inexact at best, but whatevs. // create a new listview control ListView newList = new ListView(); newList.Name = "lstFeed"; newList.Margin = new Thickness { Bottom = 0, Top = 7, Left = 0, Right = 0 }; // populate listview with selected tweet newList.ItemsSource = FormatEntities(theTweet); // unload any existing blades spawned by this view UnloadBlade(bladeView, theSender.Parent as BladeItem); BladeItem newBlade = new BladeItem(); newBlade.Name = "bldHome"; newBlade.Width = 430; newList.ItemTemplate = (DataTemplate)App.Current.Resources["TweetTemplate"]; newList.SelectionChanged += LoadBlade; newBlade.Content = newList; newBlade.Style = (Style)App.Current.Resources["BladeStyle"]; bladeView.Items.Add(newBlade); // TODO: scroll bladeView to newly-created blade. if (bladeView.BladeMode == BladeMode.Fullscreen) { // update the layout so StartBringIntoView() works bladeView.UpdateLayout(); // scroll BladeView to newly-created BladeItem newBlade.StartBringIntoView(); } } }
private async void FileList_ItemClick(object sender, ItemClickEventArgs e) { DismissOtherBlades(sender as ListView); await Task.Delay(200); if (listViewItem != null) { listViewItem.Style = (Style)this.Resources["NormalStyle"]; } var ctrlPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down); var shiftPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down); if (ctrlPressed || shiftPressed) // Allow for Ctrl+Shift selection { return; } if (IsRenamingItem) { return; } var item = (e.ClickedItem as ListedItem); // Check if the setting to open items with a single click is turned on if (AppSettings.OpenItemsWithOneclick) { tapDebounceTimer.Stop(); await Task.Delay(200); if (item.PrimaryItemAttribute == Windows.Storage.StorageItemTypes.Folder) { //var pane = new ModernShellPage(); //pane.FilesystemViewModel = new ItemViewModel(InstanceViewModel?.FolderSettings); //await pane.FilesystemViewModel.SetWorkingDirectoryAsync(item.ItemPath); //pane.IsPageMainPane = false; //pane.NavParams = item.ItemPath; if (item.ContainsFilesOrFolders) { listViewItem = (FileList.ContainerFromItem(item) as ListViewItem); var frame = new Frame(); var blade = new BladeItem(); blade.Content = frame; ColumnHost.Items.Add(blade); //pane.NavigateWithArguments(typeof(ColumnViewBase), new NavigationArguments() //{ // NavPathParam = item.ItemPath, // AssociatedTabInstance = ParentShellPageInstance //}); frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = 1, Path = item.ItemPath }); } } // The delay gives time for the item to be selected else { NavigationHelpers.OpenSelectedItems(ParentShellPageInstance, false); } } }
/// <summary> /// Initializes a new instance of the <see cref="BladeItemAutomationPeer"/> class. /// </summary> /// <param name="owner"> /// The <see cref="BladeItem" /> that is associated with this <see cref="T:Windows.UI.Xaml.Automation.Peers.BladeItemAutomationPeer" />. /// </param> public BladeItemAutomationPeer(BladeItem owner) : base(owner) { }
public void SetSelectedPathOrNavigate(string navigationPath, Type sourcePageType, NavigationArguments navArgs = null) { var destPath = navArgs != null ? (navArgs.IsSearchResultPage ? navArgs.SearchPathParam : navArgs.NavPathParam) : navigationPath; var columnPath = ((ColumnHost.ActiveBlades.Last().Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory; var columnFirstPath = ((ColumnHost.ActiveBlades.First().Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory; if (string.IsNullOrEmpty(destPath) || string.IsNullOrEmpty(destPath) || string.IsNullOrEmpty(destPath)) { ParentShellPageInstance.NavigateToPath(navigationPath, sourcePageType, navArgs); return; } var destComponents = StorageFileExtensions.GetDirectoryPathComponents(destPath); var columnComponents = StorageFileExtensions.GetDirectoryPathComponents(columnPath); var columnFirstComponents = StorageFileExtensions.GetDirectoryPathComponents(columnFirstPath); var lastCommonItemIndex = columnComponents .Select((value, index) => new { value, index }) .LastOrDefault(x => x.index < destComponents.Count && x.value.Path == destComponents[x.index].Path)?.index ?? -1; var relativeIndex = lastCommonItemIndex - (columnFirstComponents.Count - 1); if (relativeIndex < 0 || destComponents.Count - (lastCommonItemIndex + 1) > 1) // Going above parent or too deep down { ParentShellPageInstance.NavigateToPath(navigationPath, sourcePageType, navArgs); } else { DismissOtherBlades(relativeIndex); for (int ii = lastCommonItemIndex + 1; ii < destComponents.Count; ii++) { var frame = new Frame(); frame.Navigated += Frame_Navigated; var newblade = new BladeItem(); newblade.Content = frame; ColumnHost.Items.Add(newblade); if (navArgs != null) { frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = ColumnHost.ActiveBlades.IndexOf(newblade), IsSearchResultPage = navArgs.IsSearchResultPage, SearchQuery = navArgs.SearchQuery, NavPathParam = destComponents[ii].Path, SearchUnindexedItems = navArgs.SearchUnindexedItems, SearchPathParam = navArgs.SearchPathParam }); } else { frame.Navigate(typeof(ColumnShellPage), new ColumnParam { Column = ColumnHost.ActiveBlades.IndexOf(newblade), NavPathParam = destComponents[ii].Path }); } } } }
private void DismissOtherBlades(BladeItem blade) { DismissOtherBlades(ColumnHost.ActiveBlades.IndexOf(blade)); }