Пример #1
0
        public void CreateArchive(Metadata metadata, bool deletePagesDirectoryIfNecessary)
        {
            string pagesPath;

            if (PathFormatter.IsEnabled)
            {
                pagesPath = PathFormatter.GetPages(metadata);
            }
            else
            {
                pagesPath = string.Format(CultureInfo.InvariantCulture, "{0}{1}/", PathFormatter.GetCacheDirectory(), metadata.Id);
            }

            foreach (IArchiveWriter archiveWriter in ArchiveWriters)
            {
                CreateArchive(archiveWriter, metadata, pagesPath);
            }

            if (deletePagesDirectoryIfNecessary)
            {
                int[] cachedPageIndices = CacheFileSystem.GetCachedPageIndices(metadata.Id);

                if (cachedPageIndices.Length == metadata.Images.Pages.Count)
                {
                    Directory.Delete(pagesPath, true);
                }
            }
        }
Пример #2
0
        private void WebBrowser_GalleryDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            int galleryId = (int)webBrowser.Tag;

            if (!CacheFileSystem.DoesCoverExists(galleryId))
            {
                Metadata cachedMetadata = SearchResultCache.Find(galleryId);
                CoverDownloaderFilters filters;

                if (DetailsBrowserSettings.CoverLoadBlockAction == DetailsCoverLoadBlockAction.None)
                {
                    filters = CoverDownloaderFilters.All;
                }
                else if (DetailsBrowserSettings.CoverLoadBlockAction == DetailsCoverLoadBlockAction.Confirm)
                {
                    bool isInHidelist = MetadataKeywordLists.Hidelist.IsInMetadata(cachedMetadata);

                    if (isInHidelist &&
                        MessageBox.Show("This gallery is currently hidden. Do you want to download the cover?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                    {
                        return;
                    }

                    filters = CoverDownloaderFilters.All & ~CoverDownloaderFilters.Hidelist;
                }
                else
                {
                    filters = CoverDownloaderFilters.None;
                }

                CoverDownloader.Download(cachedMetadata, filters);
            }
        }
Пример #3
0
        public LibraryTreeView(LibraryFilter libraryFilter, LibraryModel libraryModel, List <IArchiveWriter> archiveWriters, WebBrowserTreeNodeToolTip webBrowserToolTip, SearchHandler searchHandler, ICacheFileSystem cacheFileSystem)
        {
            InitializeComponent();

            LibraryFilter     = libraryFilter;
            LibraryModel      = libraryModel;
            ArchiveWriters    = archiveWriters;
            SearchHandler     = searchHandler;
            CacheFileSystem   = cacheFileSystem as CacheFileSystem;             // lazy hack.
            WebBrowserToolTip = webBrowserToolTip;

            treeView = new TreeViewEx();

            SuspendLayout();

            //
            //
            //
            treeView.HideSelection             = false;
            treeView.HotTracking               = true;
            treeView.Dock                      = DockStyle.Fill;
            treeView.Sorted                    = true;
            treeView.TreeViewNodeSorter        = new LibraryTreeViewNodeSorter(LibrarySortType.CreationTime, SortOrder.Descending);
            treeView.AfterSelect              += TreeView_AfterSelect;
            treeView.NodeActivated            += TreeView_NodeActivated;
            treeView.NodeContextMenuRequested += TreeView_NodeContextMenuRequested;
            // TODO: add this once I have sorting options
            //treeViewContextMenu = new ContextMenu();
            //treeViewContextMenu.Popup += TreeViewContextMenu_Popup;
            //treeView.ContextMenu = treeViewContextMenu;

            //
            // this
            //
            Controls.Add(treeView);

            LibraryFilter.SortTypeChanged  += LibraryFilter_SortTypeChanged;
            LibraryFilter.SortOrderChanged += LibraryFilter_SortOrderChanged;
            LibraryFilter.TextChanged      += LibraryFilter_TextChanged;
            LibraryModel.Poll += LibraryModel_Poll;

            ResumeLayout(false);
        }
Пример #4
0
        private void ItemContentNodeContextMenu_Popup(object sender, EventArgs e)
        {
            ContextMenu         contextMenu = sender as ContextMenu;
            TreeNode            treeNode    = contextMenu.Tag as TreeNode;
            AddBookmarkItemTask item        = treeNode.Tag as AddBookmarkItemTask;

            contextMenu.MenuItems.Clear();

            if (item != null)
            {
                string[] tokens = item.Item.Value.Split(new char[] { ':' });
                int      galleryId;
                int      pageIndex;
                string   query;
                int      tagId;
                string   tagType;
                string   tagName;

                if (QueryParser.ParseDetailsSearch(tokens, out galleryId))
                {
                    contextMenu.MenuItems.Add(new MenuItem("&Show Details", (sender2, e2) =>
                    {
                        SearchHandler.ParseAndExecuteSearchText(item.Item.Value);
                    }));

                    contextMenu.MenuItems.Add("-");

                    contextMenu.MenuItems.Add(new MenuItem("&Read", (sender2, e2) =>
                    {
                        CacheFileSystem.OpenFirstCachedPage(galleryId);
                    }));

                    contextMenu.MenuItems.Add(new MenuItem("&Browse", (sender2, e2) =>
                    {
                        CacheFileSystem.SelectFirstCachedPage(galleryId);
                    }));

                    contextMenu.MenuItems.Add(new MenuItem("&Show in Explorer", (sender2, e2) =>
                    {
                        CacheFileSystem.SelectPagesFolder(galleryId);
                    }));
                }
                else if (QueryParser.ParseDownloadSearch(tokens, out galleryId))
                {
                    contextMenu.MenuItems.Add(new MenuItem("&Show Download", (sender2, e2) =>
                    {
                        SearchHandler.ParseAndExecuteSearchText(item.Item.Value);
                    }));

                    contextMenu.MenuItems.Add("-");

                    contextMenu.MenuItems.Add(new MenuItem("&Read", (sender2, e2) =>
                    {
                        CacheFileSystem.OpenFirstCachedPage(galleryId);
                    }));

                    contextMenu.MenuItems.Add(new MenuItem("&Browse", (sender2, e2) =>
                    {
                        CacheFileSystem.SelectFirstCachedPage(galleryId);
                    }));

                    contextMenu.MenuItems.Add(new MenuItem("&Show in Explorer", (sender2, e2) =>
                    {
                        CacheFileSystem.SelectPagesFolder(galleryId);
                    }));
                }
                else if (QueryParser.ParseRecentSearch(tokens, out pageIndex))
                {
                    contextMenu.MenuItems.Add(new MenuItem("&Recent Search", (sender2, e2) =>
                    {
                        SearchHandler.ParseAndExecuteSearchText(item.Item.Value);
                    }));
                }
                else if (QueryParser.ParseQuerySearch(tokens, out query, out pageIndex))
                {
                    contextMenu.MenuItems.Add(new MenuItem("&Query Search", (sender2, e2) =>
                    {
                        SearchHandler.ParseAndExecuteSearchText(item.Item.Value);
                    }));
                }
                else if (QueryParser.ParseTaggedSearch(tokens, out tagId, out tagType, out tagName, out pageIndex))
                {
                    contextMenu.MenuItems.Add(new MenuItem("&Tagged Search", (sender2, e2) =>
                    {
                        SearchHandler.ParseAndExecuteSearchText(item.Item.Value);
                    }));
                }
                else if (QueryParser.ParseLibrarySearch(tokens, out pageIndex))
                {
                    contextMenu.MenuItems.Add(new MenuItem("&Show in Library", (sender2, e2) =>
                    {
                        SearchHandler.ParseAndExecuteSearchText(item.Item.Value);
                    }));
                }

                contextMenu.MenuItems.Add("-");

                contextMenu.MenuItems.Add(new MenuItem("&Remove bookmark", (sender2, e2) =>
                {
                    WebBrowserToolTip.RemoveToolTip(treeNode);
                    treeNode.Remove();
                    BookmarksModel.RemoveBookmark(item.Path);
                })
                {
                    Name = "remove"
                });

                // TODO: "move to..." command (to change the bookmark path)
            }
        }