コード例 #1
0
 private async Task <List <Project> > CheckOtherProjects()
 {
     return(await Task.Run(async() =>
     {
         var projects = new List <Project>();
         var dir = new DirectoryInfo(MainVm.ShortcutFolder);
         foreach (var projDir in dir.EnumerateDirectories())
         {
             if (Project.GetProject(projDir, false) == null)
             {
                 var proj = Project.GetProject(projDir, true);
                 var itemFiles = await MainVM.GetShortcutFiles(projDir.FullName);
                 proj.Shortcuts = await MainVM.GetShortcutItems(itemFiles);
                 foreach (var i in proj.Shortcuts)
                 {
                     Checks.CheckElement(i);
                 }
                 projects.Add(proj);
             }
         }
         return projects;
     }));
 }
コード例 #2
0
ファイル: MainVM.cs プロジェクト: vildar82/ShortcutMonitor
        private async void UpdateExecute()
        {
            try
            {
                projectWatcher?.Watcher?.Dispose();
                if (inUpdate || !Directory.Exists(ShortcutFolder))
                {
                    return;
                }

//                projectWatcher = new FileWatcherRx(ShortcutFolder, "", (NotifyFilters) 19, WatcherChangeTypes.All);
//                projectWatcher.Watcher.IncludeSubdirectories = true;
//                projectWatcher.Created.ObserveOn(dispatcher).Subscribe(s => OnCreatedProject(s.EventArgs));
//                projectWatcher.Deleted.ObserveOn(dispatcher).Subscribe(s => OnDeletedProject(s.EventArgs));
//                projectWatcher.Renamed.ObserveOn(dispatcher).Subscribe(s => OnRenamedProject(s.EventArgs));
//                projectWatcher.Changed.ObserveOn(dispatcher).Subscribe(s => OnChangedProject(s.EventArgs));
                inUpdate = true;
                var files = new List <FileInfo>();
                AllElements.Clear();
                AllProjects.Clear();
                await ShowProgressDialog(c =>
                {
                    c.SetIndeterminate();
                    if (ShortcutFolder == null || !Directory.Exists(ShortcutFolder))
                    {
                        return;
                    }

                    files = GetShortcutFiles(ShortcutFolder).Result;
                }, "Загрузка элементов...", "", false);

                if (!files.Any())
                {
                    ShowMessage("Не найдены файлы быстрых ссылок (xml)");
                    return;
                }

                foreach (var xmls in files.ChunkBy(50))
                {
                    var items = await GetShortcutItems(xmls);

                    foreach (var i in items)
                    {
                        Checks.CheckElement(i);
                        i.Project.Shortcuts.Add(i);
                        AllElements.Add(i);
                    }
                }

                var projects = Project.GetProjects();
                AllProjects.AddRange(projects);
                ProjectsVM.UpdateProjects();
            }
            catch (Exception ex)
            {
                ShowMessage(ex.ToString());
            }
            finally
            {
                inUpdate = false;
            }
        }
コード例 #3
0
        private async void Update()
        {
            // Обновление элементов быстрых ссылок
            var filesXml = await MainVM.GetShortcutFiles(shortcutsDir);

            var items = await MainVM.GetShortcutItems(filesXml);

            foreach (var shortcut in Shortcuts.ToList())
            {
                if (!System.IO.File.Exists(shortcut.XmlFile) && !shortcut.IsDeleted)
                {
                    shortcut.IsDeleted  = true;
                    shortcut.Background = MainVM.eventDeleteBackground;
                    shortcut.Events.Add($"Удалено {DateTime.Now}.");
                    Shortcuts.Remove(shortcut);
                    MainVM.Notify.ShowError($"Удалена быстрая ссылка {shortcut.Name}, {Name}.");
                }
            }

            foreach (var item in items)
            {
                Checks.CheckElement(item);
                var shortcut = Shortcuts.FirstOrDefault(i => i.XmlFile == item.XmlFile);
                if (shortcut == null)
                {
                    shortcut = Shortcuts.FirstOrDefault(i => i.Name == item.Name);
                    if (shortcut != null)
                    {
                        // Переименовался файл
                        shortcut.Background = MainVM.eventBackground;
                        var msg = $"Переименован файл xml {shortcut.XmlFileName} -> {item.XmlFileName}.";
                        shortcut.Events.Add($"{msg} {Name}.");
                        MainVM.Notify.ShowWarning($"{msg} {Name}.");
                        continue;
                    }

                    item.Background = MainVM.eventNewBackground;
                    item.Events.Add($"Создан {DateTime.Now}.");
                    MainVM.AllElements.Insert(0, item);
                    MainVM.Notify.ShowSuccess($"Создан элемент {item.ElementName}. {Name}");
                    item.Project.Shortcuts.Add(item);
                    Shortcuts.Insert(0, item);
                }
                else
                {
                    if (item.Name != shortcut.Name)
                    {
                        // Изменилось ключевое имя быстрой ссылки
                        var msg = $"Переименован ключ быстрой ссылки {shortcut.Name} -> {item.Name}.";
                        shortcut.Events.Add(msg);
                        MainVM.Notify.ShowWarning($"{msg} {Name}.");
                        shortcut.Name = item.Name;
                    }

                    if (item.ElementName != shortcut.ElementName)
                    {
                        // Изменилось имя объекта быстрой ссылки
                        var msg = $"Переименован объект быстрой ссылки {shortcut.ElementName} -> {item.ElementName}.";
                        shortcut.Events.Add(msg);
                        MainVM.Notify.ShowWarning($"{msg} {Name}.");
                        shortcut.ElementName = item.ElementName;
                    }
                }
            }
        }