Exemplo n.º 1
0
 protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
 {
     base.OnNavigatedTo(eventArgs);
     //var param = (eventArgs.Parameter as NavigationArguments);
     //NavParam = param.NavPathParam;
     //var viewmodel = new ItemViewModel(FolderSettings);
     //await ParentShellPageInstance.FilesystemViewModel.SetWorkingDirectoryAsync(NavParam);
     //await viewmodel.SetWorkingDirectoryAsync(NavParam);
     FolderSettings.LayoutModeChangeRequested -= FolderSettings_LayoutModeChangeRequested;
     FolderSettings.LayoutModeChangeRequested += FolderSettings_LayoutModeChangeRequested;
     if (FileList.ItemsSource == null)
     {
         FileList.ItemsSource = ParentShellPageInstance.FilesystemViewModel.FilesAndFolders;
     }
     columnparent = ParentShellPageInstance;
     parameters   = (NavigationArguments)eventArgs.Parameter;
     if (parameters.IsLayoutSwitch)
     {
         ReloadItemIcons();
     }
 }
 protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
 {
     base.OnNavigatedTo(eventArgs);
     //var param = (eventArgs.Parameter as NavigationArguments);
     //NavParam = param.NavPathParam;
     //var viewmodel = new ItemViewModel(FolderSettings);
     //await ParentShellPageInstance.FilesystemViewModel.SetWorkingDirectoryAsync(NavParam);
     //await viewmodel.SetWorkingDirectoryAsync(NavParam);
     FolderSettings.LayoutModeChangeRequested -= FolderSettings_LayoutModeChangeRequested;
     FolderSettings.LayoutModeChangeRequested += FolderSettings_LayoutModeChangeRequested;
     ColumnViewBase.ItemInvoked             -= ColumnViewBase_ItemInvoked;
     ColumnViewBase.ItemInvoked             += ColumnViewBase_ItemInvoked;
     ColumnViewBase.UnFocusPreviousListView -= ColumnViewBase_UnFocusPreviousListView;
     ColumnViewBase.UnFocusPreviousListView += ColumnViewBase_UnFocusPreviousListView;
     ColumnViewBase.DismissColumn           -= ColumnViewBase_DismissColumn;
     ColumnViewBase.DismissColumn           += ColumnViewBase_DismissColumn;
     parameters = (NavigationArguments)eventArgs.Parameter;
     if (parameters.IsLayoutSwitch)
     {
         ReloadItemIcons();
     }
 }
Exemplo n.º 3
0
        protected override async void OnNavigatedTo(NavigationEventArgs eventArgs)
        {
            base.OnNavigatedTo(eventArgs);
            // Add item jumping handler
            Window.Current.CoreWindow.CharacterReceived += Page_CharacterReceived;
            navigationArguments     = (NavigationArguments)eventArgs.Parameter;
            ParentShellPageInstance = navigationArguments.AssociatedTabInstance;
            IsItemSelected          = false;
            FolderSettings.LayoutModeChangeRequested += FolderSettings_LayoutModeChangeRequested;
            ParentShellPageInstance.FilesystemViewModel.IsFolderEmptyTextDisplayed = false;

            if (!navigationArguments.IsSearchResultPage)
            {
                ParentShellPageInstance.NavigationToolbar.CanRefresh = true;
                string previousDir = ParentShellPageInstance.FilesystemViewModel.WorkingDirectory;
                await ParentShellPageInstance.FilesystemViewModel.SetWorkingDirectoryAsync(navigationArguments.NavPathParam);

                // pathRoot will be empty on recycle bin path
                var    workingDir = ParentShellPageInstance.FilesystemViewModel.WorkingDirectory;
                string pathRoot   = Path.GetPathRoot(workingDir);
                if (string.IsNullOrEmpty(pathRoot) || workingDir == pathRoot ||
                    workingDir.StartsWith(AppSettings.RecycleBinPath))    // Can't go up from recycle bin
                {
                    ParentShellPageInstance.NavigationToolbar.CanNavigateToParent = false;
                }
                else
                {
                    ParentShellPageInstance.NavigationToolbar.CanNavigateToParent = true;
                }

                ParentShellPageInstance.InstanceViewModel.IsPageTypeRecycleBin    = workingDir.StartsWith(App.AppSettings.RecycleBinPath);
                ParentShellPageInstance.InstanceViewModel.IsPageTypeMtpDevice     = workingDir.StartsWith("\\\\?\\");
                ParentShellPageInstance.InstanceViewModel.IsPageTypeSearchResults = false;
                ParentShellPageInstance.NavigationToolbar.PathControlDisplayText  = navigationArguments.NavPathParam;
                if (!navigationArguments.IsLayoutSwitch)
                {
                    ParentShellPageInstance.FilesystemViewModel.RefreshItems(previousDir);
                }
                else
                {
                    ParentShellPageInstance.NavigationToolbar.CanGoForward = false;
                }
            }
            else
            {
                ParentShellPageInstance.NavigationToolbar.CanRefresh              = false;
                ParentShellPageInstance.NavigationToolbar.CanGoForward            = false;
                ParentShellPageInstance.NavigationToolbar.CanGoBack               = true; // Impose no artificial restrictions on back navigation. Even in a search results page.
                ParentShellPageInstance.NavigationToolbar.CanNavigateToParent     = false;
                ParentShellPageInstance.InstanceViewModel.IsPageTypeRecycleBin    = false;
                ParentShellPageInstance.InstanceViewModel.IsPageTypeMtpDevice     = false;
                ParentShellPageInstance.InstanceViewModel.IsPageTypeSearchResults = true;
                if (!navigationArguments.IsLayoutSwitch)
                {
                    ParentShellPageInstance.FilesystemViewModel.AddSearchResultsToCollection(navigationArguments.SearchResults, navigationArguments.SearchPathParam);
                }
            }

            ParentShellPageInstance.InstanceViewModel.IsPageTypeNotHome = true; // show controls that were hidden on the home page

            FolderSettings.IsLayoutModeChanging = false;

            cachedNewContextMenuEntries = await RegistryHelper.GetNewContextMenuEntries();

            FocusFileList(); // Set focus on layout specific file list control
        }
Exemplo n.º 4
0
        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
                        });
                    }
                }
            }
        }
Exemplo n.º 5
0
        protected override async void OnNavigatedTo(NavigationEventArgs eventArgs)
        {
            base.OnNavigatedTo(eventArgs);
            // Add item jumping handler
            Window.Current.CoreWindow.CharacterReceived += Page_CharacterReceived;
            navigationArguments     = (NavigationArguments)eventArgs.Parameter;
            ParentShellPageInstance = navigationArguments.AssociatedTabInstance;
            IsItemSelected          = false;
            FolderSettings.LayoutModeChangeRequested += FolderSettings_LayoutModeChangeRequested;
            ParentShellPageInstance.FilesystemViewModel.IsFolderEmptyTextDisplayed = false;
            FolderSettings.SetLayoutInformation();

            if (!navigationArguments.IsSearchResultPage)
            {
                ParentShellPageInstance.NavigationToolbar.CanRefresh = true;
                string previousDir = ParentShellPageInstance.FilesystemViewModel.WorkingDirectory;
                await ParentShellPageInstance.FilesystemViewModel.SetWorkingDirectoryAsync(navigationArguments.NavPathParam);

                // pathRoot will be empty on recycle bin path
                var    workingDir = ParentShellPageInstance.FilesystemViewModel.WorkingDirectory;
                string pathRoot   = GetPathRoot(workingDir);
                if (string.IsNullOrEmpty(pathRoot) || NormalizePath(workingDir) == NormalizePath(pathRoot) ||
                    workingDir.StartsWith(AppSettings.RecycleBinPath))    // Can't go up from recycle bin
                {
                    ParentShellPageInstance.NavigationToolbar.CanNavigateToParent = false;
                }
                else
                {
                    ParentShellPageInstance.NavigationToolbar.CanNavigateToParent = true;
                }

                ParentShellPageInstance.InstanceViewModel.IsPageTypeRecycleBin    = workingDir.StartsWith(App.AppSettings.RecycleBinPath);
                ParentShellPageInstance.InstanceViewModel.IsPageTypeMtpDevice     = workingDir.StartsWith("\\\\?\\");
                ParentShellPageInstance.InstanceViewModel.IsPageTypeSearchResults = false;
                ParentShellPageInstance.NavigationToolbar.PathControlDisplayText  = navigationArguments.NavPathParam;
                if (!navigationArguments.IsLayoutSwitch)
                {
                    ParentShellPageInstance.FilesystemViewModel.RefreshItems(previousDir);
                }
                else
                {
                    ParentShellPageInstance.NavigationToolbar.CanGoForward = false;
                }
            }
            else
            {
                ParentShellPageInstance.NavigationToolbar.CanRefresh              = false;
                ParentShellPageInstance.NavigationToolbar.CanGoForward            = false;
                ParentShellPageInstance.NavigationToolbar.CanGoBack               = true; // Impose no artificial restrictions on back navigation. Even in a search results page.
                ParentShellPageInstance.NavigationToolbar.CanNavigateToParent     = false;
                ParentShellPageInstance.InstanceViewModel.IsPageTypeRecycleBin    = false;
                ParentShellPageInstance.InstanceViewModel.IsPageTypeMtpDevice     = false;
                ParentShellPageInstance.InstanceViewModel.IsPageTypeSearchResults = true;
                if (!navigationArguments.IsLayoutSwitch)
                {
                    await ParentShellPageInstance.FilesystemViewModel.AddSearchResultsToCollection(navigationArguments.SearchResults, navigationArguments.SearchPathParam);

                    ParentShellPageInstance.UpdatePathUIToWorkingDirectory(null, $"{"SearchPagePathBoxOverrideText".GetLocalized()} {navigationArguments.SearchPathParam}");
                }
            }

            ParentShellPageInstance.InstanceViewModel.IsPageTypeNotHome = true; // show controls that were hidden on the home page

            FolderSettings.IsLayoutModeChanging = false;

            cachedNewContextMenuEntries = await RegistryHelper.GetNewContextMenuEntries();

            FocusFileList(); // Set focus on layout specific file list control

            try
            {
                if (navigationArguments.SelectItems != null && navigationArguments.SelectItems.Count() > 0)
                {
                    List <ListedItem> liItemsToSelect = new List <ListedItem>();
                    foreach (string item in navigationArguments.SelectItems)
                    {
                        liItemsToSelect.Add(ParentShellPageInstance.FilesystemViewModel.FilesAndFolders.Where((li) => li.ItemName == item).First());
                    }

                    SetSelectedItemsOnUi(liItemsToSelect);
                }
            }
            catch (Exception e)
            {
            }
        }