Example #1
0
        private void TaskBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e.UserState is AddBrowsingItemTask)
            {
                AddBrowsingItemTask task = e.UserState as AddBrowsingItemTask;

                if (browsingTreeView.Visible)
                {
                    if (browsingFilter.ShouldFilter(new KeyValuePair <string, BrowsingItem>(task.Uri, task.Item)))
                    {
                        browsingTreeView.AddItem(task.Uri, task.Item);
                    }
                }
            }
            else if (e.UserState is AddBookmarkItemTask)
            {
                AddBookmarkItemTask task = e.UserState as AddBookmarkItemTask;

                if (bookmarksTreeView.Visible)
                {
                    if (bookmarksFilter.ShouldFilter(task.Item))
                    {
                        bookmarksTreeView.AddItem(task.Path, task.Item);
                    }
                }
            }
        }
Example #2
0
        private void TreeView_NodeActivated(object sender, TreeViewExEventArgs e)
        {
            AddBookmarkItemTask item   = e.Node.Tag as AddBookmarkItemTask;
            BookmarkFolder      folder = e.Node.Tag as BookmarkFolder;

            if (item != null)
            {
                SearchHandler.ParseAndExecuteSearchText(item.Item.Value);
            }
            else if (folder != null)
            {
                if (e.Action == TreeViewAction.ByKeyboard)
                {
                    e.Node.ToggleCollapse();
                }
            }
        }
Example #3
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)
            }
        }
Example #4
0
        private bool CanDragTreeNodeOver(object sender, DragEventArgs e)
        {
            TreeView treeView    = (TreeView)sender;
            TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
            Point    targetPoint = treeView.PointToClient(new Point(e.X, e.Y));
            TreeNode targetNode  = treeView.GetNodeAt(targetPoint);

            if (draggedNode.Equals(targetNode))
            {
                return(false);
            }

            BookmarkFolder      draggedFolder   = draggedNode.Tag as BookmarkFolder;
            AddBookmarkItemTask draggedBookmark = draggedNode.Tag as AddBookmarkItemTask;
            BookmarkFolder      targetFolder    = targetNode?.Tag as BookmarkFolder;
            AddBookmarkItemTask targetBookmark  = targetNode?.Tag as AddBookmarkItemTask;

            if (draggedFolder != null)
            {
                string targetPath = null;

                if (targetFolder != null)
                {
                    targetPath = targetFolder.Path;
                }
                else if (targetBookmark != null)
                {
                    return(false);
                }
                else
                {
                    targetPath = "";
                }

                if (targetPath != null)
                {
                    // can't move folder onto itself.
                    if (draggedFolder.Path.Equals(targetPath, StringComparison.InvariantCulture))
                    {
                        return(false);
                    }

                    // can't move folder to any of its own child subfolders.
                    if (!string.IsNullOrEmpty(targetPath) &&
                        targetPath.StartsWith(draggedFolder.Path, StringComparison.InvariantCulture))
                    {
                        return(false);
                    }

                    int lastPathSeparatorIndex = draggedFolder.Path.LastIndexOf('/');

                    // can't move folder to its own parent folder.
                    if (lastPathSeparatorIndex != -1 &&
                        !string.IsNullOrEmpty(targetPath) &&
                        draggedFolder.Path.Substring(0, lastPathSeparatorIndex).Equals(targetPath, StringComparison.InvariantCulture))
                    {
                        return(false);
                    }
                }
            }
            else if (draggedBookmark != null)
            {
                string targetPath = null;

                if (targetFolder != null)
                {
                    targetPath = targetFolder.Path;
                }
                else if (targetBookmark != null)
                {
                    return(false);
                }
                else
                {
                    targetPath = "";
                }

                if (targetPath != null)
                {
                    // can't move bookmark to its own parent folder.
                    if (draggedNode.Level > 0 &&
                        !string.IsNullOrEmpty(targetPath) &&
                        draggedBookmark.Path.Substring(0, draggedBookmark.Path.LastIndexOf('/')).Equals(targetPath, StringComparison.InvariantCulture))
                    {
                        return(false);
                    }

                    string combinedTargetPath = string.IsNullOrEmpty(targetPath) ? draggedBookmark.Item.Value : string.Format("{0}/{1}", targetPath, draggedBookmark.Item.Value);

                    // can't move bookmark to a folder containing the same bookmark value.
                    if (BookmarksModel.Bookmarks.ContainsKey(combinedTargetPath))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Example #5
0
        private void TreeView_DragDropTreeNode(object sender, DragEventArgs e)
        {
            TreeView treeView    = (TreeView)sender;
            TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
            Point    targetPoint = treeView.PointToClient(new Point(e.X, e.Y));
            TreeNode targetNode  = treeView.GetNodeAt(targetPoint);

            if (draggedNode.Equals(targetNode))
            {
                return;
            }

            BookmarkFolder      draggedFolder   = draggedNode.Tag as BookmarkFolder;
            AddBookmarkItemTask draggedBookmark = draggedNode.Tag as AddBookmarkItemTask;
            BookmarkFolder      targetFolder    = targetNode?.Tag as BookmarkFolder;
            AddBookmarkItemTask targetBookmark  = targetNode?.Tag as AddBookmarkItemTask;

            if (draggedFolder != null)
            {
                string targetPath = null;

                if (targetFolder != null)
                {
                    targetPath = targetFolder.Path;
                }
                else if (targetBookmark != null)
                {
                    // Error: dropping a folder on a bookmark is not allowed.
                }
                else
                {
                    targetPath = "";
                }

                if (targetPath != null)
                {
                    if (e.Effect.HasFlag(DragDropEffects.Copy))
                    {
                        BookmarksModel.CopyBookmarks(draggedNode.Level, draggedFolder.Path, targetPath);
                    }
                    else if (e.Effect.HasFlag(DragDropEffects.Move))
                    {
                        BookmarksModel.MoveBookmarks(draggedNode.Level, draggedFolder.Path, targetPath);
                        BookmarksModel.RemovePath(draggedFolder.Path);
                        draggedNode.Remove();
                    }
                }
            }
            else if (draggedBookmark != null)
            {
                string targetPath = null;

                if (targetFolder != null)
                {
                    targetPath = targetFolder.Path;
                }
                else if (targetBookmark != null)
                {
                    // Error: dropping a bookmark on another bookmark is not allowed.
                }
                else
                {
                    targetPath = "";
                }

                if (targetPath != null)
                {
                    if (e.Effect.HasFlag(DragDropEffects.Copy))
                    {
                        BookmarksModel.CopyBookmark(draggedBookmark.Path, targetPath);
                    }
                    else if (e.Effect.HasFlag(DragDropEffects.Move))
                    {
                        BookmarksModel.MoveBookmark(draggedBookmark.Path, targetPath);
                        draggedNode.Remove();
                    }
                }
            }
        }