예제 #1
0
        public void OpenMediaFile(MediaFile mediaFile, bool preview = false)
        {
            string filePath = string.Empty;

            if (mediaFile is ImageFile || !preview)
            {
                filePath = Path.Combine(mediaFile.Source.RootedPath, mediaFile.RelativePathName);
            }
            else if (mediaFile is VideoFile)
            {
                FileSystemHandler.ClearWorkingDirectory();
                using (GalleryDatabase database = GalleryDatabase.Open(Gallery.FilePath, Gallery.EncryptionAlgorithm, Gallery.Password, false))
                {
                    filePath = database.ExtractEntry(mediaFile.DatabasePreviewPathName, ObjectPool.CompleteWorkingDirectory);
                }
            }
            if (File.Exists(filePath))
            {
                Process process = new Process()
                {
                    StartInfo = { FileName = filePath, Verb = "Open" }
                };
                process.Start();
            }
        }
예제 #2
0
 private void LoadThumbnailsThread(MediaFolder folder)
 {
     try
     {
         RaiseStatusUpdatedEvent("Loading thumbnails...");
         using (GalleryDatabase database = GalleryDatabase.Open(Gallery.FilePath, Gallery.EncryptionAlgorithm, Gallery.Password, false))
         {
             foreach (MediaFile mediaFile in folder.Files)
             {
                 bool thumbnailLoaded = false;
                 using (Stream stream = database.ExtractEntry(mediaFile.DatabaseThumbnailPathName))
                 {
                     if (stream != null && stream.Length > 0)
                     {
                         mediaFile.ThumbnailImage = Image.FromStream(stream);
                         thumbnailLoaded          = true;
                     }
                 }
                 if (thumbnailLoaded)
                 {
                     FileUpdated(mediaFile);
                 }
             }
         }
         RaiseDatabaseOperationCompletedEvent(OperationType.LoadThumbnails);
     }
     catch (Exception ex)
     {
         CommonWorker.ShowError(ex);
     }
 }
예제 #3
0
 private void LoadGalleryThread()
 {
     try
     {
         RaiseStatusUpdatedEvent("Loading gallery (" + Gallery.FilePath + ")...");
         using (GalleryDatabase database = GalleryDatabase.Open(Gallery.FilePath, Gallery.EncryptionAlgorithm, Gallery.Password, false))
         {
             using (Stream stream = database.ExtractEntry(GALLERY_FILE_NAME))
             {
                 XmlReader reader = XmlReader.Create(stream, new XmlReaderSettings()
                 {
                     CheckCharacters = false
                 });
                 DataContractSerializer serializer = new DataContractSerializer(typeof(Gallery), _serializableDataObjectTypes);
                 Gallery = (Gallery)serializer.ReadObject(reader, true);
                 Gallery.UpdateMediaCount();
                 reader.Close();
             }
         }
         RaiseGalleryLoadedEvent();
         Gallery.Sources.ForEach(source => FolderAdded(source.RootFolder));
         RaiseDatabaseOperationCompletedEvent(OperationType.LoadGallery);
     }
     catch (Exception ex)
     {
         CommonWorker.ShowError(ex);
     }
 }
예제 #4
0
 private void ScanSourceThread(GallerySource source, bool reScan)
 {
     try
     {
         using (GalleryDatabase database = GalleryDatabase.Open(Gallery.FilePath, Gallery.EncryptionAlgorithm, Gallery.Password, true))
         {
             database.RegisterStreamProvider <Gallery>(GalleryMetadataStreamProvider);
             database.RegisterStreamProvider <MediaFile>(MediaFileStreamProvider);
             FileSystemHandler.ScanFolders(database, source, reScan);
             source.ScanDate = DateTime.Now;
             source.UpdateMediaCount();
             database.UpdateEntry(GALLERY_FILE_NAME, string.Empty, Gallery, true);
             database.Save();
         }
         RaiseDatabaseOperationCompletedEvent(OperationType.ScanSource);
     }
     catch (Exception ex)
     {
         CommonWorker.ShowError(ex);
     }
 }
예제 #5
0
        public void AddSource()
        {
            FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog()
            {
                Description = "Please select a source root folder..."
            };

            if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
            {
                GallerySource source = new GallerySource(folderBrowserDialog.SelectedPath, Gallery);
                if (Gallery.AddSource(source))
                {
                    using (GalleryDatabase database = GalleryDatabase.Open(Gallery.FilePath, Gallery.EncryptionAlgorithm, Gallery.Password, true))
                    {
                        database.RegisterStreamProvider <Gallery>(GalleryMetadataStreamProvider);
                        database.UpdateEntry(GALLERY_FILE_NAME, string.Empty, Gallery, true);
                        database.Save();
                    }
                    FolderAdded(source.RootFolder);
                }
            }
        }