public void Handle(IFolderBrowserDataContext args)
 {
     if (args == null)
     {
         return;
     }
     if (args.FolderBrowserViewModel == null)
     {
         return;
     }
     args.FolderBrowserViewModel.FileCollectionChanged += (sender, e) => RefreshFilesCount(args);
 }
Пример #2
0
        public void Handle(IFolderBrowserDataContext dataContext)
        {
            if (dataContext == null)
            {
                throw new ArgumentNullException(nameof(dataContext));
            }
            var vm = dataContext.FolderBrowserViewModel;

            //加入计算哈希值菜单;
            vm.AddContextCommand(CreateComputeHashCommandItem(vm));
            //加入加入哈希集菜单;
            vm.AddContextCommand(CreateAddToHashSetCommandItem(vm));
            //加入匹配哈希值菜单;
            vm.AddContextCommand(CreateMatchHashSetsCommandItem(vm));
        }
        public void Handle(IFolderBrowserDataContext dataContext)
        {
            if (dataContext == null)
            {
                throw new ArgumentNullException(nameof(dataContext));
            }
            var vm = dataContext.FolderBrowserViewModel;

            vm.AddContextCommand(FolderBrowserCommandItemFactory.CreateSaveAsFileCommandItem(vm));
            vm.AddContextCommand(FolderBrowserCommandItemFactory.CreateSaveCheckedFilesCommandItem(vm));
            vm.AddContextCommand(FolderBrowserCommandItemFactory.CreateCheckCommandItem(vm));
            vm.AddContextCommand(FolderBrowserCommandItemFactory.CreateUnCheckCommandItem(vm));
            vm.AddContextCommand(FolderBrowserCommandItemFactory.CreateCheckAllCommandItem(vm));
            vm.AddContextCommand(FolderBrowserCommandItemFactory.CreateViewFileCommandItem(vm));
            vm.AddContextCommand(FolderBrowserCommandItemFactory.CreateNavigateCommandItem(vm));
        }
        private void RefreshFilesCount(IFolderBrowserDataContext dataContext)
        {
            if (dataContext == null)
            {
                return;
            }
            var vm = dataContext.FolderBrowserViewModel;

            if (vm == null)
            {
                return;
            }

            long fileCount    = 0;
            long regFileCount = 0;
            long dirCount     = 0;

            try {
                foreach (var file in vm.FileRows)
                {
                    if (file.File is IRegularFile)
                    {
                        regFileCount++;
                    }
                    else if (file.File is IDirectory)
                    {
                        dirCount++;
                    }
                    fileCount++;
                }

                ThreadInvoker.UIInvoke(() => {
                    var fileCountItem    = StatusBarService.GetOrCreateStatusBarTextItem(Constants.StatusBarItemText_FileCount, GridChildLength.Auto, 5);
                    var regFileCountItem = StatusBarService.GetOrCreateStatusBarTextItem(Constants.StatusBarItemGUID_RegFileCount, GridChildLength.Auto, 6);
                    var dirCountItem     = StatusBarService.GetOrCreateStatusBarTextItem(Constants.StatusBarItemGUID_DirectoryCount, GridChildLength.Auto, 7);

                    fileCountItem.Text    = $"{LanguageService.FindResourceString(Constants.StatusBarItemText_FileCount)} {fileCount}";
                    regFileCountItem.Text = $"{LanguageService.FindResourceString(Constants.StatusBarItemText_RegFileCount)} {regFileCount}";
                    dirCountItem.Text     = $"{LanguageService.FindResourceString(Constants.StatusBarItemText_DirectoryCount)} {dirCount}";
                });
            }
            catch (Exception ex) {
                LoggerService.WriteCallerLine(ex.Message);
            }
        }
Пример #5
0
        public void Handle(IFolderBrowserDataContext folderBrowserDataContext)
        {
            if (folderBrowserDataContext == null)
            {
                return;
            }

            if (folderBrowserDataContext.FolderBrowserViewModel == null)
            {
                return;
            }

            if (folderBrowserDataContext.FolderBrowserViewModel.OwnedFileCollection == null)
            {
                return;
            }

            var navContext = FileExplorerDataContextFactory.CreateNavMenuDataContext();

            folderBrowserDataContext.StackGrid.AddChild(navContext, Contracts.Controls.GridChildLength.Auto);
            folderBrowserDataContext.FolderBrowserViewModel.IsBusy   = true;
            folderBrowserDataContext.FolderBrowserViewModel.BusyWord = LanguageService.FindResourceString(Constants.BusyWord_NavMenuBeingBuilt);


            ThreadInvoker.BackInvoke(() => {
                //跳转目录时导航节点变化;
                folderBrowserDataContext.FolderBrowserViewModel.CurrentPathChanged += (sender, e) => {
                    var currentPath = folderBrowserDataContext.FolderBrowserViewModel.CurrentPath;
                    if (currentPath == null)
                    {
                        return;
                    }
                    navContext.NavMenuViewModel.SelectedPath = currentPath;
                };

                //导航选中节点发生变化时跳转目录;
                navContext.NavMenuViewModel.InternalSelectedPathChanged += (sender, e) => {
                    var slPath = navContext.NavMenuViewModel.SelectedPath;
                    if (string.IsNullOrEmpty(slPath))
                    {
                        return;
                    }

                    folderBrowserDataContext.FolderBrowserViewModel.CurrentPath = slPath;
                };

                //创建数节点;
                var node = CreateNodeModelWithFileCollection(folderBrowserDataContext.FolderBrowserViewModel.OwnedFileCollection);
                TraveseTreeChildren(
                    folderBrowserDataContext.FolderBrowserViewModel.OwnedFileCollection,
                    node,
                    CreateChildrenCollection,
                    (pNode, newNode) => pNode.Children.Add(newNode),
                    CreateNodeModelWithFileCollection
                    );

                navContext.NavMenuViewModel.RootNavNode = node;
                folderBrowserDataContext.FolderBrowserViewModel.IsBusy   = false;
                folderBrowserDataContext.FolderBrowserViewModel.BusyWord = string.Empty;
            });
        }