Example #1
0
        ///<summary> Открытие папки через путь. Имеет проверку на наличие файла каталога и диалог его открытия. </summary>
        public void OpenFolder(DirectoryInfo path)
        {
            if (!CloseCatalog())
            {
                return;                                 // отменили закрытие
            }
            var vidCat = SearchForVidCatFile(path);

            if (vidCat != null)
            {
                var result = MessageBox.Show($"In folder found catalog file <{vidCat.Name}>. Open?", "Open catalog", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                switch (result)
                {
                case MessageBoxResult.Yes:
                    CatEng = new CatalogEngine();
                    CatEng.LoadCatalogXML(vidCat.FullName);
                    break;

                case MessageBoxResult.No:
                    CatEng = new CatalogEngine();
                    CatEng.LoadCatalogRoot(path.FullName);
                    break;

                case MessageBoxResult.Cancel:
                    break;
                }
            }
            else
            {
                CatEng = new CatalogEngine();
                CatEng.LoadCatalogRoot(path.FullName);
            }

            SaveRecent(path.FullName);
        }
Example #2
0
        /// <summary> Загрузка каталога из файла сохранения. </summary>
        public void LoadCatalog(object sender, EventArgs e)
        {
            var ofd = new Microsoft.Win32.OpenFileDialog();

            //ofd.InitialDirectory = CatEng.CatDir.FullName;
            ofd.Filter           = $"vcat files (*{catFileExt})|*{catFileExt}|All files (*.*)|*.*";
            ofd.FilterIndex      = 2;
            ofd.RestoreDirectory = true;

            if (ofd.ShowDialog() == true)
            {
                CatEng = new CatalogEngine();
                CatEng.LoadCatalogXML(ofd.FileName);
                SaveRecent(new FileInfo(ofd.FileName).Directory.FullName);
            }
        }
Example #3
0
        ///<summary> Сравнение текущего состояния каталога с каталогом в файле. Выводит диалог при наличии разницы. Возвращает false при отмене действий.</summary>
        private bool CheckDiff()
        {
            if (CatEng == null)
            {
                return(true);
            }
            if (!CatalogRoot.useCatFile)
            {
                return(true);
            }

            // сравниваем текщее состояние с файлом каталога
            var vidCat = SearchForVidCatFile(CatalogRoot.CatDir);

            if (vidCat == null)
            {
                return(true);
            }

            var  curRootXml = Normalize(CatalogEngine.Serialize_YAX(CatEng.CatRoot)).ToString();
            var  oldRootXML = Normalize(XDocument.Load(vidCat.FullName).Root).ToString();
            bool isDiff     = curRootXml != oldRootXML;

            if (!isDiff)
            {
                return(true);                       // нет отличий
            }
            var diffCount = curRootXml.Length - oldRootXML.Length;

            // спрашиваем про сохранение
            MessageBoxResult result = MessageBox.Show($"Catalog was changed!\nSave to <{vidCat.Name}>?", $"Diff = {diffCount}", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

            if (result == MessageBoxResult.Yes)
            {
                CatEng.SaveCatalogXML(vidCat.FullName);
                return(true);
            }

            // отменяем действия
            if (result == MessageBoxResult.Cancel)
            {
                return(false);
            }

            return(true);               // выбрали нет, успешно закрываемся
        }
Example #4
0
        /// <summary> Закрытие каталога (с проверкой изменений) и очистка ресурсов. </summary>
        public bool CloseCatalog()
        {
            if (!CheckDiff())
            {
                return(false);                          // отменили закрытие несохраненного каталога
            }
            CatEng?.CatRoot?.StopLoadAlbumesCoversThread();

            var albList = CatEng?.CatRoot?.AlbumsList;

            ForceLinkDestroy();

            CatEng?.CatRoot?.AlbumsList?.Clear();
            CatEng = null;

            if (MainPanel != null)
            {
                CloseAllTab();
                MainPanel = null;
            }

            GC_Forcer();
            return(true);
        }
Example #5
0
 public CatalogManager()
 {
     catalogEngine = new CatalogEngine();
     updateEngine  = new UpdateEngine();
 }