Exemplo n.º 1
0
 private void UserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
 {
     if (DataContext is TabViewModel)
     {
         _vm = DataContext as TabViewModel;
     }
 }
Exemplo n.º 2
0
        private void ReadConfig()
        {
            if (!string.IsNullOrEmpty(App.YamlFilePath) && File.Exists(App.YamlFilePath))
            {
                var yamlText     = File.ReadAllText(App.YamlFilePath);
                var deserializer = new Deserializer();
                MVM.TabsVmList = deserializer.Deserialize <ObservableCollection <TabViewModel> >(yamlText);
            }

            if (MVM.TabsVmList != null && MVM.TabsVmList.Count > 0)
            {
                var cvm = MVM.TabsVmList.FirstOrDefault(t => t.IsCurrent);
                if (cvm != null)
                {
                    MVM.CurrentTabViewModel = cvm;
                }
            }
            else
            {
                NewTab();
            }

            var newTab = new TabViewModel
            {
                Type  = 1,
                Title = "+",
            };

            MVM.TabsVmList.Add(newTab);
        }
Exemplo n.º 3
0
 private void ShowDialog1(TabViewModel vm)
 {
     Dialog1.DataContext        = vm;
     Dialog1.Visibility         = Visibility.Visible;
     Dialog1_RenameTextBox.Text = vm.Title;
     Dialog1_RenameTextBox.SelectAll();
     Dialog1_RenameTextBox.Focus();
 }
Exemplo n.º 4
0
        private void NewTab()
        {
            ResetTabCurrent();

            int n   = MVM.TabsVmList.Count(t => t.Title.StartsWith("未命名"));
            var nvm = new TabViewModel
            {
                Title      = string.Concat("未命名", n + 1),
                FileFilter = "*.*;",
                Hours      = "12",
                IsCurrent  = true,
            };

            var i = MVM.TabsVmList.Count - 1;

            if (i < 0)
            {
                i = 0;
            }
            MVM.TabsVmList.Insert(i, nvm);
            MVM.CurrentTabViewModel = nvm;
        }
Exemplo n.º 5
0
        /// <summary>
        /// 查找文件
        /// </summary>
        /// <param name="vm"></param>
        /// <param name="container"></param>
        /// <param name="dispatcher"></param>
        private static void Find(TabViewModel vm, List <FoundItem> container, Dispatcher dispatcher)
        {
            if (string.IsNullOrEmpty(vm.SrcDir))
            {
                vm.TipsText = "请选择来源目录。";
                return;
            }

            if (!Directory.Exists(vm.SrcDir))
            {
                vm.TipsText = "来源目录不存在,请重新选择。";
                return;
            }

            if (vm.SrcDir.Length <= 4)
            {
                vm.TipsText = "请勿选择磁盘根目录。";
                return;
            }

            var fileFilter = vm.FileFilter.ToLower().Split(';');

            if (fileFilter.Length == 1 && (string.IsNullOrEmpty(fileFilter[0]) || string.IsNullOrWhiteSpace(fileFilter[0])))
            {
                vm.TipsText = "请输入文件类型,如 *.xml;*.html;*.txt";
                return;
            }

            // 要排除的后缀名文件
            var excludeExtFilterList = new List <string>();
            // 要排除的文件
            var excludeFileFilterList = new List <string>();
            // 要排除的目录
            var excludeDirFilterList = new List <string>();

            foreach (var item in vm.ExcludeFilter.ToLower().Split(';'))
            {
                var s = item.Trim();
                if (string.IsNullOrEmpty(s))
                {
                    continue;
                }

                if (s.StartsWith("*."))
                {
                    excludeExtFilterList.Add(s.Substring(1));
                }
                else
                {
                    s = s.Replace("/", "\\");
                    if (!s.StartsWith("\\"))
                    {
                        s = string.Concat("\\", s);
                    }

                    if (s.Contains("."))
                    {
                        excludeFileFilterList.Add(s);
                    }

                    if (!s.EndsWith("\\"))
                    {
                        s = string.Concat(s, "\\");
                    }
                    excludeDirFilterList.Add(s);
                }
            }

            container.Clear();
            vm.LmList.Clear();
            vm.TipsText                 = "正在搜索文件,请稍候……";
            vm.ReadMeVisibility         = Visibility.Collapsed;
            vm.SelectAllButtonIsEnabled = false;
            vm.CopyButtonIsEnabled      = false;
            vm.SearchButtonIsEnabled    = false;

            var startTime = DateTime.Now.Ticks;

            if (int.TryParse(vm.Hours, out int hours))
            {
                var sdir = vm.SrcDir;
                Task.Factory.StartNew(() =>
                {
                    SearchFiles(sdir, sdir, fileFilter, excludeExtFilterList.ToArray(), excludeFileFilterList.ToArray(), excludeDirFilterList.ToArray(), hours, container);

                    dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new Action(() =>
                    {
                        foreach (var item in container.OrderByDescending(i => i.LastWriteTime))
                        {
                            vm.LmList.Add(item);
                        }

                        var ts      = new TimeSpan(DateTime.Now.Ticks - startTime);
                        vm.TipsText = string.Format("共找到 {0} 个文件,耗时 {1} 秒。", vm.LmList.Count, ts.TotalSeconds.ToString("f2"));
                        vm.SearchButtonIsEnabled    = true;
                        vm.SelectAllButtonIsEnabled = true;
                        vm.CopyButtonIsEnabled      = true;
                    }));
                });
            }
        }