Esempio n. 1
0
        public static async Task <ApiResult <string> > Add(Token token, BookmarksModel model)
        {
            //var result=null;
            try
            {
                string url = string.Format(Constact.BookMarks_add);
                Dictionary <string, string> _params = new Dictionary <string, string>();
                _params.Add("LinkUrl", model.LinkUrl);
                _params.Add("Title", model.Title);
                _params.Add("Summary", model.Summary);
                _params.Add("Tags", model.Tag);
                var result = await HttpBase.PostAsync(token, url, _params);

                if (result.IsSuccess)
                {
                    return(ApiResult.Ok(result.Message));
                    //return   ApiResult.Ok(list);
                }
                return(ApiResult <string> .Error(result.Message));

                //return ApiResult<List<Article>>.Error(result.Message);
            }
            catch (Exception ex)
            {
                return(ApiResult <string> .Error(ex.Message));
            }
        }
Esempio n. 2
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            var linkUrl     = Intent.GetStringExtra("linkurl");
            var title       = Intent.GetStringExtra("title");
            var fromCNBlogs = Intent.GetBooleanExtra("fromCNBlogs", false);

            bookmarkPresenter = new BookmarkAddPresenter(this);
            handler           = new Handler();
            dialog            = new ProgressDialog(this);
            dialog.SetCancelable(false);
            StatusBarCompat.SetOrdinaryToolBar(this);
            toolbar = FindViewById <Toolbar>(Resource.Id.toolbar);
            toolbar.SetNavigationIcon(Resource.Drawable.back_24dp);
            SetSupportActionBar(toolbar);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            toolbar.SetNavigationOnClickListener(this);
            toolbar.SetOnMenuItemClickListener(this);

            txtLinkUrl = FindViewById <EditText>(Resource.Id.txtLinkUrl);
            txtTitle   = FindViewById <EditText>(Resource.Id.txtTitle);
            txtTags    = FindViewById <EditText>(Resource.Id.txtTags);
            txtContent = FindViewById <EditText>(Resource.Id.txtContent);

            txtLinkUrl.Text = linkUrl;
            if (linkUrl != null && linkUrl != "")
            {
                txtLinkUrl.SetSelection(txtLinkUrl.Text.Length);
            }
            txtTitle.Text = title;

            bookmark             = new BookmarksModel();
            bookmark.FromCNBlogs = fromCNBlogs;
        }
Esempio n. 3
0
        private void FolderNodeContextMenu_Popup(object sender, EventArgs e)
        {
            ContextMenu    contextMenu = sender as ContextMenu;
            TreeNode       treeNode    = contextMenu.Tag as TreeNode;
            BookmarkFolder folder      = treeNode.Tag as BookmarkFolder;

            contextMenu.MenuItems.Clear();

            contextMenu.MenuItems.Add(new MenuItem(folder == null ? "&Add Folder..." : "&Add Subfolder...", (sender2, e2) =>
            {
                string dialogResult = PromptBox.Show("Folder path:", folder == null ? "" : (folder.Path + "/"), "Add subfolder", null);

                if (dialogResult != null)
                {
                    BookmarksModel.RegisterPath(dialogResult);
                }
            })
            {
                Name = "folder_add"
            });

            if (folder != null)
            {
                contextMenu.MenuItems.Add(new MenuItem("&Edit Folder...", (sender2, e2) =>
                {
                    string folderPath   = GetPathFileName(folder.Path);
                    string dialogResult = PromptBox.Show("Change name to:", folder.Text, string.Format("Edit Bookmark folder - {0}", folder.Path), (new string[] {
                        folder.Text,
                        CultureInfo.CurrentCulture?.TextInfo?.ToTitleCase(folder.Text),
                        folder.Text.ToLower(),
                        folder.Text.ToUpper(),
                        folderPath,
                        CultureInfo.CurrentCulture?.TextInfo?.ToTitleCase(folderPath),
                        folderPath.ToLower(),
                        folderPath.ToUpper(),
                    }).Distinct().Where(x => !string.IsNullOrEmpty(x)).ToArray());

                    if (dialogResult != null)
                    {
                        folder.Text   = dialogResult;
                        treeNode.Text = dialogResult;
                        treeView.Sort(treeNode.Parent, treeViewNodeSorter);
                    }
                })
                {
                    Name = "folder_edit"
                });

                contextMenu.MenuItems.Add(new MenuItem("&Remove Folder", (sender2, e2) =>
                {
                    treeNode.Remove();
                    BookmarksModel.RemovePath(folder.Path);
                })
                {
                    Name = "remove_folder"
                });

                // TODO: "move to..." command (to change the folder (and its children) path)
            }
        }
Esempio n. 4
0
 public void AddRecentBookmark(int pageIndex, string path)
 {
     if (BookmarksModel.HasRecentBookmark(pageIndex, path))
     {
         BookmarksModel.EditRecentBookmark(pageIndex, path);
     }
     else
     {
         BookmarksModel.AddRecentBookmark(pageIndex, path);
     }
 }
Esempio n. 5
0
 public void AddLibraryBookmark(int pageIndex, string path)
 {
     if (BookmarksModel.HasLibraryBookmark(pageIndex, path))
     {
         BookmarksModel.EditLibraryBookmark(pageIndex, path);
     }
     else
     {
         BookmarksModel.AddLibraryBookmark(pageIndex, path);
     }
 }
Esempio n. 6
0
 public void AddQueryBookmark(string query, int pageIndex, string path)
 {
     if (BookmarksModel.HasQueryBookmark(query, pageIndex, path))
     {
         BookmarksModel.EditQueryBookmark(query, pageIndex, path);
     }
     else
     {
         BookmarksModel.AddQueryBookmark(query, pageIndex, path);
     }
 }
Esempio n. 7
0
 public void AddTaggedBookmark(int tagId, int pageIndex, string path)
 {
     if (BookmarksModel.HasTaggedBookmark(tagId, pageIndex, path))
     {
         BookmarksModel.EditTaggedBookmark(tagId, pageIndex, path);
     }
     else
     {
         BookmarksModel.AddTaggedBookmark(tagId, pageIndex, path);
     }
 }
Esempio n. 8
0
        public static void Edit(Token token, BookmarksModel model, Action <ResponseMessage> callBack)
        {
            string url = string.Format(Constact.BookMarks_patch, model.WzLinkId);
            Dictionary <string, string> _params = new Dictionary <string, string>();

            _params.Add("LinkUrl", model.LinkUrl);
            _params.Add("Title", model.Title);
            _params.Add("Summary", model.Summary);
            _params.Add("Tags", model.Tag);
            _params.Add("WzLinkId", model.WzLinkId.ToString());
            HttpBase.Patch(url, token, _params, callBack);
        }
Esempio n. 9
0
        public BookmarksTreeView(BookmarksFilter bookmarksFilter, BookmarksModel bookmarksModel, Configuration.ConfigBookmarksList bookmarksListSettings, WebBrowserTreeNodeToolTip webBrowserToolTip, IQueryParser queryParser, ICacheFileSystem cacheFileSystem, SearchHandler searchHandler)
        {
            InitializeComponent();

            BookmarksFilter       = bookmarksFilter;
            BookmarksModel        = bookmarksModel;
            BookmarksListSettings = bookmarksListSettings;
            WebBrowserToolTip     = webBrowserToolTip;
            QueryParser           = queryParser;
            CacheFileSystem       = cacheFileSystem;
            SearchHandler         = searchHandler;

            treeView            = new TreeViewEx();
            treeViewContextMenu = new ContextMenu();
            treeViewNodeSorter  = new BookmarksTreeViewNodeSorter();

            SuspendLayout();

            //
            //
            //
            treeViewContextMenu.Tag    = treeView;
            treeViewContextMenu.Popup += TreeViewContextMenu_Popup;

            //
            //
            //
            treeView.HideSelection = false;
            treeView.HotTracking   = true;
            treeView.Dock          = DockStyle.Fill;
            //treeView.TreeViewNodeSorter = new TreeViewNodeSorter();
            treeView.Sorted         = true;
            treeView.ContextMenu    = treeViewContextMenu;
            treeView.NodeActivated += TreeView_NodeActivated;
            treeView.NodeSelected  += TreeView_NodeSelected;
            treeView.AfterExpand   += TreeView_AfterExpand;
            treeView.AfterCollapse += TreeView_AfterCollapse;
            treeView.ItemDrag      += TreeView_ItemDrag;
            treeView.DragDrop      += TreeView_DragDrop;
            treeView.DragOver      += TreeView_DragOver;
            treeView.DragEnter     += TreeView_DragEnter;
            treeView.AllowDrop      = true;

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

            BookmarksModel.FolderAdded  += BookmarksModel_FolderAdded;
            bookmarksFilter.TextChanged += BookmarksFilter_TextChanged;

            ResumeLayout(false);
        }
Esempio n. 10
0
        public void BookmarkEdit(AccessToken token, BookmarksModel bookmark, int position)
        {
            try
            {
                var url = string.Format(ApiUtils.BookmarkEdit, bookmark.WzLinkId);

                var param = new List <OkHttpUtils.Param>()
                {
                    new OkHttpUtils.Param("WzLinkId", bookmark.WzLinkId.ToString()),
                    new OkHttpUtils.Param("LinkUrl", bookmark.LinkUrl),
                    new OkHttpUtils.Param("Title", bookmark.Title),
                    new OkHttpUtils.Param("Summary", bookmark.Summary),
                    new OkHttpUtils.Param("Tags", bookmark.Tag),
                    new OkHttpUtils.Param("DateAdded", bookmark.DateAdded.ToString()),
                    new OkHttpUtils.Param("FromCNBlogs", bookmark.FromCNBlogs.ToString())
                };

                OkHttpUtils.Instance(token).Patch(url, param, async(call, response) =>
                {
                    var code = response.Code();
                    var body = await response.Body().StringAsync();
                    if (code == (int)System.Net.HttpStatusCode.OK)
                    {
                        await SQLiteUtils.Instance().UpdateBookmark(bookmark);
                        bookmarkView.BookmarkEditSuccess(position);
                    }
                    else
                    {
                        try
                        {
                            var error = JsonConvert.DeserializeObject <ErrorMessage>(body);
                            bookmarkView.BookmarkEditFail(error.Message);
                        }
                        catch (Exception e)
                        {
                            bookmarkView.BookmarkEditFail(e.Message);
                        }
                    }
                }, (call, ex) =>
                {
                    bookmarkView.BookmarkEditFail(ex.Message);
                });
            }
            catch (Exception e)
            {
                bookmarkView.BookmarkEditFail(e.Message);
            }
        }
Esempio n. 11
0
        public async Task SetBookmarksForDocAsync(BookmarksModel item)
        {
            if (item == null)
            {
                return;
            }

            if ((await this.db.Table <BookmarksModel>().FirstOrDefaultAsync(x => x.DocIdentifier == item.DocIdentifier)) == null)
            {
                await this.db.InsertWithChildrenAsync(item).ConfigureAwait(false);
            }
            else
            {
                await this.db.UpdateWithChildrenAsync(item).ConfigureAwait(false);
            }
        }
Esempio n. 12
0
        public void BookmarkAdd(AccessToken token, BookmarksModel bookmark)
        {
            try
            {
                var url = ApiUtils.BookmarkAdd;

                var param = new List <OkHttpUtils.Param>()
                {
                    new OkHttpUtils.Param("LinkUrl", bookmark.LinkUrl),
                    new OkHttpUtils.Param("Title", bookmark.Title),
                    new OkHttpUtils.Param("Summary", bookmark.Summary),
                    new OkHttpUtils.Param("Tags", bookmark.Tag),
                    new OkHttpUtils.Param("FromCNBlogs", bookmark.FromCNBlogs.ToString())
                };

                OkHttpUtils.Instance(token).Post(url, param, async(call, response) =>
                {
                    var code = response.Code();
                    var body = await response.Body().StringAsync();
                    if (code == (int)System.Net.HttpStatusCode.Created)
                    {
                        bookmarkView.BookmarkAddSuccess();
                    }
                    else
                    {
                        try
                        {
                            var error = JsonConvert.DeserializeObject <ErrorMessage>(body);
                            bookmarkView.BookmarkAddFail(error.Message);
                        }
                        catch (Exception e)
                        {
                            bookmarkView.BookmarkAddFail(e.Message);
                        }
                    }
                }, (call, ex) =>
                {
                    bookmarkView.BookmarkAddFail(ex.Message);
                });
            }
            catch (Exception e)
            {
                bookmarkView.BookmarkAddFail(e.Message);
            }
        }
Esempio n. 13
0
        public void AddDownloadBookmark(string metadataJson, string path)
        {
            Metadata metadata = JsonConvert.DeserializeObject <Metadata>(metadataJson);

            if (metadata == null)
            {
                return;
            }

            if (BookmarksModel.HasDownloadBookmark(metadata, path))
            {
                BookmarksModel.EditDownloadBookmark(metadata, path);
            }
            else
            {
                BookmarksModel.AddDownloadBookmark(metadata, path);
            }
        }
Esempio n. 14
0
        protected async override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Id                = Intent.GetIntExtra("id", 0);
            position          = Intent.GetIntExtra("position", position);
            bookmarkPresenter = new BookmarkEditPresenter(this);
            handler           = new Handler();
            dialog            = new ProgressDialog(this);
            dialog.SetCancelable(false);
            StatusBarCompat.SetOrdinaryToolBar(this);
            toolbar = FindViewById <Toolbar>(Resource.Id.toolbar);
            toolbar.SetNavigationIcon(Resource.Drawable.back_24dp);
            SetSupportActionBar(toolbar);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            toolbar.SetNavigationOnClickListener(this);
            toolbar.SetOnMenuItemClickListener(this);

            txtLinkUrl = FindViewById <EditText>(Resource.Id.txtLinkUrl);
            txtTitle   = FindViewById <EditText>(Resource.Id.txtTitle);
            txtTags    = FindViewById <EditText>(Resource.Id.txtTags);
            txtContent = FindViewById <EditText>(Resource.Id.txtContent);

            bookmark = await SQLiteUtils.Instance().QueryBookmark(Id);

            if (bookmark != null && bookmark.WzLinkId > 0)
            {
                txtLinkUrl.Text = bookmark.LinkUrl;
                txtLinkUrl.SetSelection(txtLinkUrl.Text.Length);
                txtTitle.Text   = bookmark.Title;
                txtTags.Text    = bookmark.Tag;
                txtContent.Text = bookmark.Summary;
            }
            else
            {
                Toast.MakeText(this, "获取数据失败,请重试", ToastLength.Short).Show();
            }
        }
Esempio n. 15
0
        private void FolderNodeContextMenu_Popup(object sender, EventArgs e)
        {
            ContextMenu    contextMenu = sender as ContextMenu;
            TreeNode       treeNode    = contextMenu.Tag as TreeNode;
            BookmarkFolder folder      = treeNode.Tag as BookmarkFolder;

            contextMenu.MenuItems.Clear();

            if (folder != null)
            {
                contextMenu.MenuItems.Add(new MenuItem("&Edit Folder", (sender2, e2) =>
                {
                    string dialogResult = PromptBox.Show("Change name to:", folder.Text, "Bookmark folder name", (new string[] { folder.Text, GetPathFileName(folder.Path) }).Distinct().Where(x => !string.IsNullOrEmpty(x)).ToArray());

                    if (dialogResult != null)
                    {
                        folder.Text   = dialogResult;
                        treeNode.Text = dialogResult;
                    }
                })
                {
                    Name = "folder_edit"
                });

                contextMenu.MenuItems.Add(new MenuItem("&Remove Folder", (sender2, e2) =>
                {
                    treeNode.Remove();
                    BookmarksModel.RemovePath(folder.Path);
                })
                {
                    Name = "remove_folder"
                });

                // TODO: "move to..." command (to change the folder (and its children) path)
            }
        }
Esempio n. 16
0
 private void Delete(ProgressDialog progressDialog, BookmarksModel model)
 {
     progressDialog.Show();
     BookmarksService.Delete(token, model.WzLinkId, (response) => {
         if (response.IsSuccess)
         {
             RunOnUiThread(() =>
             {
                 progressDialog.Hide();
                 bookMarkList.Remove(model);
                 adapter.SetNewData(bookMarkList);
                 // OnRefresh();
             });
         }
         else
         {
             RunOnUiThread(() =>
             {
                 progressDialog.Hide();
                 AlertUtil.ToastShort(this, response.Message);
             });
         }
     });
 }
Esempio n. 17
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)
            }
        }
Esempio n. 18
0
        public MainForm()
        {
            InitializeComponent();
            ProcessCommandLine();

            staticHttpClient = new StaticHttpClient(Settings.Network);

            pathFormatter = new PathFormatter(Program.ApplicationPath, Program.SourcePath, Settings.PathFormatter.Custom, Settings.PathFormatter, Settings.Lists.Tags.LanguageNames, Settings.PathFormatter.IsEnabled);

            tagsModel         = new TagsModel();
            tokenModifiers    = TokenModifiers.All.Concat(new ITokenModifier[] { new TagTokenModifier(tagsModel) }).ToArray();
            bookmarkFormatter = new BookmarkFormatter(Settings.Lists.Bookmarks, Settings.Lists.Tags, tagsModel, pathFormatter, tokenModifiers);
            bookmarksModel    = new BookmarksModel(tagsModel, bookmarkFormatter);
            libraryModel      = new LibraryModel(pathFormatter.GetCacheDirectory(), new WinformsTimer(0, Settings.Polling.LibraryRefreshInterval));
            browsingModel     = new BrowsingModel();
            galleryModel      = new GalleryModel(tagsModel);
            detailsModel      = new DetailsModel();

            metadataKeywordLists = new MetadataKeywordLists();
            metadataProcessors   = new List <IMetadataProcessor>();
            metadataConverters   = new List <IMetadataConverter>();
            archiveWriters       = new List <IArchiveWriter>();
            queryParser          = new QueryParser(tagsModel);

            coreTextFormatter     = new CoreTextFormatter(pathFormatter, tokenModifiers);
            aboutTextFormatter    = new AboutTextFormatter(pathFormatter);
            tagTextFormatter      = new TagTextFormatter();
            metadataTextFormatter = new MetadataTextFormatter(pathFormatter, Settings.Lists.Tags.LanguageNames, metadataKeywordLists, tokenModifiers);

            documentTemplates                      = new DocumentTemplates();
            documentTemplates.About                = new DocumentTemplate <object>("about", Settings.Cache.Templates, pathFormatter, (x, context) => aboutTextFormatter.Format(x));
            documentTemplates.Details              = new DocumentTemplate <Metadata>("details", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.DetailsPreload       = new DocumentTemplate <Metadata>("details-preload", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.Download             = new DocumentTemplate <Metadata>("download", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.GalleryTooltip       = new DocumentTemplate <Metadata>("gallery-tooltip", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.LibraryCovergrid     = new DocumentTemplate <ISearchProgressArg>("library-covergrid", Settings.Cache.Templates, pathFormatter, (text, context) => searchProgressArgTextFormatter.Format(text, context, "library"));
            documentTemplates.LibraryCovergridItem = new DocumentTemplate <Metadata>("library-covergrid-item", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.SearchCovergrid      = new DocumentTemplate <ISearchProgressArg>("search-covergrid", Settings.Cache.Templates, pathFormatter, (text, context) => searchProgressArgTextFormatter.Format(text, context, "search"));
            documentTemplates.SearchCovergridItem  = new DocumentTemplate <Metadata>("search-covergrid-item", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.SearchPreload        = new DocumentTemplate <ISearchArg>("search-preload", Settings.Cache.Templates, pathFormatter, (text, context) => searchArgTextFormatter.Format(text, context));
            documentTemplates.Startup              = new DocumentTemplate <object>("startup", Settings.Cache.Templates, pathFormatter, (text, context) => coreTextFormatter.Format(text, context));

            searchArgTextFormatter         = new SearchArgTextFormatter(pathFormatter, metadataKeywordLists, tagsModel, tokenModifiers);
            searchProgressArgTextFormatter = new SearchProgressArgTextFormatter(pathFormatter, metadataKeywordLists, tagsModel, metadataTextFormatter, tokenModifiers, documentTemplates.SearchCovergridItem, documentTemplates.LibraryCovergridItem);

            metadataCache     = new MetadataCache();
            searchResultCache = new SearchResultCache(metadataCache);
            sessionManager    = new SessionManager(pathFormatter, searchResultCache, Settings.Cache.Session.RecentLifeSpan, Settings.Cache.Session.SearchLifeSpan, Settings.Cache.Session.TaggedLifeSpan, Settings.Network);
            cacheFileSystem   = new CacheFileSystem(pathFormatter, searchResultCache, archiveWriters);
            pluginSystem      = new PluginSystem(Logger, pathFormatter, cacheFileSystem, archiveWriters, metadataConverters, metadataProcessors);

            backgroundTaskWorker = new BackgroundTaskWorker()
            {
                IdleWaitTime = Settings.BackgroundWorkers.BackgroundTaskWorker.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.BackgroundTaskWorker.MaxConcurrentJobCount
            };
            pageDownloader = new PageDownloader(staticHttpClient.Client, pathFormatter, searchResultCache, cacheFileSystem)
            {
                IdleWaitTime = Settings.BackgroundWorkers.PageDownloader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.PageDownloader.MaxConcurrentJobCount
            };
            coverDownloader = new CoverDownloader(staticHttpClient.Client, pathFormatter, metadataKeywordLists)
            {
                IdleWaitTime = Settings.BackgroundWorkers.CoverDownloader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.CoverDownloader.MaxConcurrentJobCount
            };
            coverLoader = new CoverDownloader(staticHttpClient.Client, pathFormatter, metadataKeywordLists)
            {
                IdleWaitTime = Settings.BackgroundWorkers.CoverLoader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.CoverLoader.MaxConcurrentJobCount
            };
            galleryDownloader = new GalleryDownloader(staticHttpClient.Client, pathFormatter, searchResultCache)
            {
                IdleWaitTime = Settings.BackgroundWorkers.GalleryDownloader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.GalleryDownloader.MaxConcurrentJobCount
            };

            detailsTabControl         = new TabControlEx();
            detailsTabPage            = new TabPage();
            downloadTabPage           = new TabPage();
            listsTabControl           = new TabControlEx();
            tagsTabPage               = new TabPage();
            bookmarksTabPage          = new TabPage();
            libraryTabPage            = new TabPage();
            browsingTabPage           = new TabPage();
            mainViewTabControl        = new TabControlEx();
            galleryBrowserViewTabPage = new TabPage();
            libraryBrowserViewTabPage = new TabPage();
            downloadsListViewTabPage  = new TabPage();
            webBrowserToolTip         = new WebBrowserTreeNodeToolTip(pathFormatter, documentTemplates.GalleryTooltip);
            loadTimer = new Timer(components);

            searchHandler = new SearchHandler(
                libraryModel
                , mainViewTabControl
                , libraryBrowserViewTabPage
                , galleryBrowserViewTabPage
                , Settings.Cache
                , searchResultCache
                , Logger
                , browsingModel
                , pathFormatter
                , staticHttpClient.Client
                , queryParser
                , galleryModel
                , detailsModel
                , galleryDownloader
                , sessionManager
                , Settings.Network);

            bookmarkPromptUtility = new BookmarkPromptUtility(bookmarksModel, Settings.Lists.Bookmarks);

            tagsFilter           = new TagsFilter(Settings.Lists.Tags, metadataKeywordLists);
            bookmarksFilter      = new BookmarksFilter(Settings.Lists.Bookmarks);
            libraryFilter        = new LibraryFilter(Settings.Lists.Library);
            browsingFilter       = new BrowsingFilter(Settings.Lists.Browsing);
            libraryBrowserFilter = new LibraryBrowserFilter(Settings.Library.Browser);
            galleryBrowserFilter = new GalleryBrowserFilter(Settings.Gallery.Browser);
            detailsBrowserFilter = new DetailsBrowserFilter(Settings.Details.Browser);

            tagsTreeView       = new TagsTreeView(tagsFilter, tagsModel, tagTextFormatter, Settings.Lists.Tags, metadataKeywordLists, searchHandler, bookmarkPromptUtility, staticHttpClient.Client);
            tagsToolStrip      = new TagsToolStrip(tagsFilter, tagsModel, Settings.Lists.Tags, metadataKeywordLists, Settings.Polling.FilterDelay);
            bookmarksTreeView  = new BookmarksTreeView(bookmarksFilter, bookmarksModel, Settings.Lists.Bookmarks, webBrowserToolTip, queryParser, cacheFileSystem, searchHandler);
            bookmarksToolStrip = new BookmarksToolStrip(bookmarksFilter, bookmarksModel, Settings.Lists.Bookmarks, Settings.Polling.FilterDelay);
            libraryTreeView    = new LibraryTreeView(libraryFilter, libraryModel, archiveWriters, webBrowserToolTip, searchHandler, cacheFileSystem);
            libraryToolStrip   = new LibraryToolStrip(libraryFilter, libraryModel, Settings.Lists.Library, Settings.Polling.FilterDelay);
            browsingTreeView   = new BrowsingTreeView(browsingFilter, browsingModel, Settings.Lists.Browsing, searchHandler, sessionManager, queryParser);
            browsingToolStrip  = new BrowsingToolStrip(browsingFilter, browsingModel, Settings.Lists.Browsing, Settings.Polling.FilterDelay);

            galleryBrowserView      = new GalleryBrowserView(galleryBrowserFilter, galleryModel, documentTemplates.SearchCovergrid, documentTemplates.SearchPreload, pathFormatter, Settings.Gallery.Browser, pageDownloader, coverDownloader, metadataKeywordLists, tagsModel, searchHandler);
            galleryToolStrip        = new GalleryBrowserToolStrip(galleryBrowserFilter, galleryModel, Settings.Gallery.Browser, searchHandler);
            libraryBrowserView      = new LibraryBrowserView(libraryBrowserFilter, libraryModel, documentTemplates.LibraryCovergrid, documentTemplates.SearchPreload, documentTemplates.LibraryCovergridItem, pathFormatter, pageDownloader, coverLoader, metadataKeywordLists, Settings.Library.Browser, searchResultCache);
            libraryBrowserToolStrip = new LibraryBrowserToolStrip(libraryBrowserFilter, libraryModel, Settings.Library.Browser, searchHandler);
            detailsToolStrip        = new DetailsBrowserToolStrip(detailsBrowserFilter, detailsModel, searchHandler);
            detailsBrowserView      = new DetailsBrowserView(detailsBrowserFilter, detailsModel, documentTemplates.Details, documentTemplates.Download, documentTemplates.DetailsPreload, galleryDownloader, pageDownloader, coverDownloader, metadataKeywordLists, Settings.Details.Browser, searchResultCache, cacheFileSystem);
            theme                  = new Theme();
            applicationLoader      = new ApplicationLoader();
            fullScreenRestoreState = new FullScreenRestoreState();
            mainMenuStrip          = new MainMenuStrip(Settings);
            startupSpecialHandler  = new StartupSpecialHandler(Settings.Gallery, tagsModel, metadataKeywordLists, searchHandler);
            taskbar                = new Taskbar(coverDownloader, galleryDownloader, pageDownloader, searchResultCache, cacheFileSystem);

            publicApi = new PublicApi(staticHttpClient.Client
                                      , pathFormatter
                                      , cacheFileSystem
                                      , searchResultCache
                                      , searchHandler
                                      , bookmarkPromptUtility
                                      , pluginSystem
                                      , libraryBrowserToolStrip
                                      , Settings.Library
                                      , galleryToolStrip
                                      , Settings.Gallery
                                      , Settings.Details
                                      , galleryDownloader
                                      , coverDownloader
                                      , pageDownloader
                                      , Settings.Notifications
                                      , metadataKeywordLists
                                      , Settings
                                      );

            splitContainer1 = new SplitContainerEx();
            splitContainer2 = new SplitContainerEx();
            splitContainer3 = new SplitContainerEx();

            splitContainer1.BeginInit();
            splitContainer1.Panel2.SuspendLayout();
            splitContainer1.SuspendLayout();

            splitContainer2.BeginInit();
            splitContainer2.Panel1.SuspendLayout();
            splitContainer2.SuspendLayout();

            splitContainer3.BeginInit();
            splitContainer3.SuspendLayout();

            SuspendLayout();

            //
            //
            //
            loadTimer.Interval = 100;
            loadTimer.Tick    += LoadTimer_Tick;

            //
            //
            //
            tagsTabPage.Name     = "tagsTabPage";
            tagsTabPage.TabIndex = 0;
            tagsTabPage.Tag      = "tags";
            tagsTabPage.Text     = "Tags";
            tagsTabPage.UseVisualStyleBackColor = true;

            bookmarksTabPage.Name     = "bookmarksTabPage";
            bookmarksTabPage.TabIndex = 1;
            bookmarksTabPage.Tag      = "bookmarks";
            bookmarksTabPage.Text     = "Bookmarks";
            bookmarksTabPage.UseVisualStyleBackColor = true;

            libraryTabPage.Name     = "libraryTabPage";
            libraryTabPage.TabIndex = 2;
            libraryTabPage.Tag      = "library";
            libraryTabPage.Text     = "Library";
            libraryTabPage.UseVisualStyleBackColor = true;

            browsingTabPage.Name     = "browsingTabPage";
            browsingTabPage.TabIndex = 4;
            browsingTabPage.Tag      = "browsing";
            browsingTabPage.Text     = "Browsing";
            browsingTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            listsTabControl.Dock          = DockStyle.Fill;
            listsTabControl.Name          = "treeViewTabControl";
            listsTabControl.SelectedIndex = -1;
            listsTabControl.TabIndex      = 2;
            listsTabControl.TabPages.Add(tagsTabPage);
            listsTabControl.TabPages.Add(bookmarksTabPage);
            listsTabControl.TabPages.Add(libraryTabPage);
            listsTabControl.TabPages.Add(browsingTabPage);
            listsTabControl.Selected += TreeViewTabControl_Selected;

            splitContainer3.Panel1.Controls.Add(listsTabControl);

            //
            //
            //
            tagsTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            tagsToolStrip.Dock         = DockStyle.Top;
            tagsToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            tagsToolStrip.AutoSize     = true;

            //
            //
            //
            tagsTabPage.Controls.Add(tagsTreeView);
            tagsTabPage.Controls.Add(tagsToolStrip);

            //
            //
            //
            bookmarksModel.ItemAdded   += BookmarksModel_ItemAdded;
            bookmarksModel.ItemChanged += BookmarksModel_ItemChanged;

            //
            //
            //
            bookmarksTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            bookmarksToolStrip.Dock         = DockStyle.Top;
            bookmarksToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            bookmarksToolStrip.AutoSize     = true;

            //
            //
            //
            bookmarksTabPage.Controls.Add(bookmarksTreeView);
            bookmarksTabPage.Controls.Add(bookmarksToolStrip);

            //
            //
            //
            libraryTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            libraryToolStrip.Dock         = DockStyle.Top;
            libraryToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            libraryToolStrip.AutoSize     = true;

            //
            //
            //
            libraryTabPage.Controls.Add(libraryTreeView);
            libraryTabPage.Controls.Add(libraryToolStrip);

            //
            //
            //
            browsingModel.ItemAdded   += BrowsingModel_ItemAdded;
            browsingModel.ItemChanged += BrowsingModel_ItemChanged;

            //
            //
            //
            browsingToolStrip.Dock         = DockStyle.Top;
            browsingToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            browsingToolStrip.AutoSize     = true;

            //
            //
            //
            browsingTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            browsingTabPage.Controls.Add(browsingTreeView);
            browsingTabPage.Controls.Add(browsingToolStrip);

            //
            //
            //
            galleryBrowserViewTabPage.Name     = "galleryBrowserViewTabPage";
            galleryBrowserViewTabPage.Padding  = Padding.Empty;
            galleryBrowserViewTabPage.TabIndex = 0;
            galleryBrowserViewTabPage.Text     = "Search";
            galleryBrowserViewTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            libraryBrowserViewTabPage.Name     = "libraryBrowserViewTabPage";
            libraryBrowserViewTabPage.TabIndex = 1;
            libraryBrowserViewTabPage.Text     = "Library";
            libraryBrowserViewTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            downloadsListViewTabPage.Name     = "downloadsListViewTabPage";
            downloadsListViewTabPage.TabIndex = 2;
            downloadsListViewTabPage.Text     = "Downloads";
            downloadsListViewTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            mainViewTabControl.Controls.Add(galleryBrowserViewTabPage);
            mainViewTabControl.Controls.Add(libraryBrowserViewTabPage);
            mainViewTabControl.Controls.Add(downloadsListViewTabPage);
            mainViewTabControl.Dock          = DockStyle.Fill;
            mainViewTabControl.Name          = "mainViewTabControl";
            mainViewTabControl.SelectedIndex = 0;
            mainViewTabControl.TabIndex      = 2;
            mainViewTabControl.Selected     += MainViewTabControl_Selected;

            splitContainer3.Panel2.Controls.Add(mainViewTabControl);
            splitContainer2.Panel2.Controls.Add(detailsTabControl);

            //
            // detailsTabControl
            //
            detailsTabControl.Controls.Add(detailsTabPage);
            detailsTabControl.Controls.Add(downloadTabPage);
            detailsTabControl.Dock          = DockStyle.Fill;
            detailsTabControl.Name          = "detailsTabControl";
            detailsTabControl.SelectedIndex = 0;
            detailsTabControl.TabIndex      = 2;

            //
            // detailsTabPage
            //
            detailsTabPage.Name     = "detailsTabPage";
            detailsTabPage.TabIndex = 0;
            detailsTabPage.Text     = "Details";
            detailsTabPage.UseVisualStyleBackColor = true;

            //
            // downloadTabPage
            //
            downloadTabPage.Name     = "downloadTabPage";
            downloadTabPage.TabIndex = 1;
            downloadTabPage.Text     = "Download";
            downloadTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            galleryBrowserView.Dock = DockStyle.Fill;
            galleryBrowserView.WebBrowser.ObjectForScripting = publicApi;

            //
            //
            //
            galleryToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            galleryToolStrip.AutoSize     = true;
            galleryToolStrip.Dock         = DockStyle.Top;

            //
            //
            //
            galleryBrowserViewTabPage.Controls.Add(galleryBrowserView);
            galleryBrowserViewTabPage.Controls.Add(galleryToolStrip);

            //
            //
            //
            libraryBrowserView.Dock = DockStyle.Fill;
            libraryBrowserView.WebBrowser.ObjectForScripting = publicApi;

            //
            //
            //
            libraryBrowserToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            libraryBrowserToolStrip.AutoSize     = true;
            libraryBrowserToolStrip.Dock         = DockStyle.Top;

            //
            //
            //
            libraryBrowserViewTabPage.Controls.Add(libraryBrowserView);
            libraryBrowserViewTabPage.Controls.Add(libraryBrowserToolStrip);

            //
            //
            //
            detailsToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            detailsToolStrip.AutoSize     = true;
            detailsToolStrip.Dock         = DockStyle.Top;

            //
            //
            //
            detailsBrowserView.Dock = DockStyle.Fill;
            detailsBrowserView.WebBrowser.ObjectForScripting = publicApi;

            //
            //
            //
            detailsTabPage.Controls.Add(detailsBrowserView);
            detailsTabPage.Controls.Add(detailsToolStrip);

            //
            // splitContainer1
            //
            splitContainer1.Dock          = DockStyle.Fill;
            splitContainer1.FixedPanel    = FixedPanel.Panel1;
            splitContainer1.Margin        = new Padding(0);
            splitContainer1.Name          = "splitContainer1";
            splitContainer1.Orientation   = Orientation.Horizontal;
            splitContainer1.Panel1MinSize = 22;

            //
            // splitContainer1.Panel2
            //
            splitContainer1.Panel2.Controls.Add(splitContainer2);
            splitContainer1.Size              = new Size(1364, 637);
            splitContainer1.SplitterDistance  = 25;
            splitContainer1.SplitterIncrement = 22;
            splitContainer1.SplitterWidth     = 7;
            splitContainer1.TabIndex          = 2;

            //
            // splitContainer2
            //
            splitContainer2.Dock       = DockStyle.Fill;
            splitContainer2.FixedPanel = FixedPanel.Panel2;
            splitContainer2.Margin     = new Padding(0);
            splitContainer2.Name       = "splitContainer2";

            //
            // splitContainer2.Panel1
            //
            splitContainer2.Panel1.Controls.Add(splitContainer3);
            splitContainer2.Size             = new Size(1364, 605);
            splitContainer2.SplitterDistance = 1214;
            splitContainer2.SplitterWidth    = 7;
            splitContainer2.TabIndex         = 1;

            //
            // splitContainer3
            //
            splitContainer3.Dock             = DockStyle.Fill;
            splitContainer3.FixedPanel       = FixedPanel.Panel1;
            splitContainer3.Margin           = new Padding(0);
            splitContainer3.Name             = "splitContainer3";
            splitContainer3.Size             = new Size(1214, 605);
            splitContainer3.SplitterDistance = 200;
            splitContainer3.SplitterWidth    = 7;
            splitContainer3.TabIndex         = 0;

            //
            // applicationMenuStrip
            //
            mainMenuStrip.Exit               += MainMenuStrip_Exit;
            mainMenuStrip.ToggleListsPanel   += MainMenuStrip_ToggleListsPanel;
            mainMenuStrip.ToggleDetailsPanel += MainMenuStrip_ToggleDetailsPanel;
            mainMenuStrip.ToggleFullScreen   += MainMenuStrip_ToggleFullScreen;
            mainMenuStrip.ShowAbout          += MainMenuStrip_ShowAbout;
            mainMenuStrip.ShowPlugins        += MainMenuStrip_ShowPlugins;

            //
            // this
            //
            Controls.Add(splitContainer1);
            Controls.Add(mainMenuStrip);
            Controls.Add(webBrowserToolTip);
            webBrowserToolTip.BringToFront();
            MainMenuStrip = mainMenuStrip;
            Padding       = new Padding(0);
            Text          = aboutTextFormatter.Format(Settings.Window.TextFormat);
            if (Settings.Network.Offline)
            {
                Text += " [OFFLINE]";
            }
            Enabled = false;

            //
            // splash screen
            //
            if (Settings.SplashScreen.IsVisible)
            {
                startupWebBrowser      = new StartupWebBrowserView(coreTextFormatter, documentTemplates.Startup, applicationLoader);
                startupWebBrowser.Name = "startupWebBrowserView";
                startupWebBrowser.Dock = DockStyle.Fill;
                startupWebBrowser.WebBrowser.DocumentCompleted += WebBrowser_DocumentCompleted;

                Controls.Add(startupWebBrowser);
                startupWebBrowser.BringToFront();

                // avoid flickering
                listsTabControl.Visible    = false;
                mainViewTabControl.Visible = false;
                detailsTabControl.Visible  = false;
            }

            backgroundTaskWorker.ProgressChanged += TaskBackgroundWorker_ProgressChanged;

            pageDownloader.PagesDownloadCompleted += PageDownloader_PagesDownloadCompleted;

            ReadTheme();
            ApplyTheme();
            ApplyVisualStyles();

            splitContainer1.Panel2.ResumeLayout(false);
            splitContainer1.EndInit();
            splitContainer1.ResumeLayout(false);

            splitContainer2.Panel1.ResumeLayout(false);
            splitContainer2.EndInit();
            splitContainer2.ResumeLayout(false);

            splitContainer3.EndInit();
            splitContainer3.ResumeLayout(false);

            ResumeLayout(false);
            PerformLayout();
        }
Esempio n. 19
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();
                    }
                }
            }
        }
Esempio n. 20
0
        public BookmarksToolStrip(BookmarksFilter bookmarksFilter, BookmarksModel bookmarksModel, Configuration.ConfigBookmarksList bookmarksListSettings, int filterDelay)
        {
            InitializeComponent();

            BookmarksFilter       = bookmarksFilter;
            BookmarksModel        = bookmarksModel;
            BookmarksListSettings = bookmarksListSettings;

            filterTextBox            = new ToolStripSpringTextBox();
            filterButton             = new ToolStripDropDownButton();
            filterNoneButton         = new ToolStripMenuItem();
            filterAllButton          = new ToolStripMenuItem();
            filterRecentSearchButton = new ToolStripMenuItem();
            filterQuerySearchButton  = new ToolStripMenuItem();
            filterTaggedSearchButton = new ToolStripMenuItem();
            filterLibraryButton      = new ToolStripMenuItem();
            filterDetailsButton      = new ToolStripMenuItem();
            filterDownloadButton     = new ToolStripMenuItem();
            toolStrip   = new ToolStrip();
            filterTimer = new Timer();

            SuspendLayout();

            //
            // filter textbox
            //
            filterTextBox.Dock         = DockStyle.Fill;
            filterTextBox.Margin       = new Padding(0, 0, 6, 0);
            filterTextBox.TextChanged += FilterTextBox_TextChanged;

            //
            // filter button
            //
            filterButton.Text        = "&Filters";
            filterButton.AutoToolTip = false;

            filterNoneButton.Name   = "none";
            filterNoneButton.Text   = "&None";
            filterNoneButton.Click += FilterNoneButton_Click;

            filterAllButton.Name   = "all";
            filterAllButton.Text   = "&All";
            filterAllButton.Click += FilterAllButton_Click;

            filterRecentSearchButton.Name   = "recent";
            filterRecentSearchButton.Text   = "&Recent Searches";
            filterRecentSearchButton.Click += FilterRecentSearchButton_Click;

            filterQuerySearchButton.Name   = "query";
            filterQuerySearchButton.Text   = "&Query Searches";
            filterQuerySearchButton.Click += FilterQuerySearchButton_Click;

            filterTaggedSearchButton.Name   = "tagged";
            filterTaggedSearchButton.Text   = "&Tagged Searches";
            filterTaggedSearchButton.Click += FilterTaggedSearchButton_Click;

            filterLibraryButton.Name   = "library";
            filterLibraryButton.Text   = "&Library";
            filterLibraryButton.Click += FilterLibraryButton_Click;

            filterDetailsButton.Name   = "details";
            filterDetailsButton.Text   = "&Details";
            filterDetailsButton.Click += FilterDetailsButton_Click;

            filterDownloadButton.Name   = "download";
            filterDownloadButton.Text   = "&Download";
            filterDownloadButton.Click += FilterDownloadButton_Click;

            ContextMenuStrip filterContextMenuStrip = new ContextMenuStrip();

            filterContextMenuStrip.ShowCheckMargin = true;
            filterContextMenuStrip.Items.Add(filterNoneButton);
            filterContextMenuStrip.Items.Add(filterAllButton);
            filterContextMenuStrip.Items.Add(new ToolStripSeparator());
            filterContextMenuStrip.Items.Add(filterRecentSearchButton);
            filterContextMenuStrip.Items.Add(filterQuerySearchButton);
            filterContextMenuStrip.Items.Add(filterTaggedSearchButton);
            filterContextMenuStrip.Items.Add(filterLibraryButton);
            filterContextMenuStrip.Items.Add(filterDetailsButton);
            filterContextMenuStrip.Items.Add(filterDownloadButton);

            filterContextMenuStrip.Opening    += Dropdown_Opening;
            filterContextMenuStrip.RenderMode  = ToolStripRenderMode.Professional;
            filterContextMenuStrip.LayoutStyle = ToolStripLayoutStyle.VerticalStackWithOverflow;

            filterButton.DropDown = filterContextMenuStrip;

            //
            // filter timer
            //
            filterTimer.Interval = filterDelay;
            filterTimer.Tick    += FilterTimer_Tick;

            //
            // toolstrip
            //
            toolStrip.Dock        = DockStyle.Fill;
            toolStrip.CanOverflow = false;
            toolStrip.Items.Add(filterTextBox);
            toolStrip.Items.Add(filterButton);

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

            bookmarksFilter.FiltersChanged += BookmarksFilter_FiltersChanged;

            ResumeLayout(false);
        }
Esempio n. 21
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            // Create your application here
            StatusBarUtil.SetColorStatusBars(this);
            SetToolBarNavBack();

            edit_url             = FindViewById <EditText>(Resource.Id.edit_url);
            edit_title           = FindViewById <EditText>(Resource.Id.edit_title);
            edit_summary         = FindViewById <EditText>(Resource.Id.edit_summary);
            edit_tags            = FindViewById <EditText>(Resource.Id.edit_tags);
            btn_submit           = FindViewById <Button>(Resource.Id.btn_submit);
            ly_expire            = FindViewById <LinearLayout>(Resource.Id.ly_expire);
            tv_startLogin        = FindViewById <TextView>(Resource.Id.tv_startLogin);
            tv_startLogin.Click += (s, e) =>
            {
                StartActivity(new Intent(this, typeof(loginactivity)));
            };
            AlertUtil.ToastLong(this, "当前线程id:" + Thread.CurrentThread.ManagedThreadId);

            string title = Intent.GetStringExtra("title");
            string url   = Intent.GetStringExtra("url");

            mode = Intent.GetStringExtra("mode");

            edit_url.Text   = string.IsNullOrEmpty(url)?"":url;
            edit_title.Text = string.IsNullOrEmpty(title)?"":title;
            Token token = UserTokenUtil.GetToken(this);

            if (mode == "edit")
            {
                string editTitle = Resources.GetString(Resource.String.bookmark_edit);
                btn_submit.Text = editTitle;
                SetToolBarTitle(editTitle);
                string summary = Intent.GetStringExtra("summary");
                string tags    = Intent.GetStringExtra("tags");
                wzLinkId = Intent.GetIntExtra("id", 0);
                if (!string.IsNullOrEmpty(summary))
                {
                    edit_summary.Text = summary;
                }
                if (!string.IsNullOrEmpty(tags))
                {
                    edit_tags.Text = tags;
                }
            }
            else if (mode == "add")
            {
                btn_submit.Text = "添加收藏";
            }
            //判断是否登录
            if (token.IsExpire)
            {
                btn_submit.Enabled   = false;
                ly_expire.Visibility = ViewStates.Visible;
            }
            else
            {
                btn_submit.Enabled   = true;
                ly_expire.Visibility = ViewStates.Gone;
            }
            btn_submit.Click += async(s, e) =>
            {
                var userToken = UserTokenUtil.GetToken(this);
                if (userToken.IsExpire)
                {
                    Android.Support.V7.App.AlertDialog.Builder alertDialog = new Android.Support.V7.App.AlertDialog.Builder(this)
                                                                             .SetTitle("登录提示")
                                                                             .SetMessage("未登录或登录token已经过期")
                                                                             .SetPositiveButton("授权", (s1, e1) =>
                    {
                        StartActivity(new Intent(this, typeof(loginactivity)));
                    })
                                                                             .SetNegativeButton("取消", (s1, e1) =>
                    {
                        return;
                    });
                    alertDialog.Create().Show();
                }
                if (edit_summary.Text.Length > 200)
                {
                    AlertUtil.ToastShort(this, "摘要不能超过200字符");
                    return;
                }
                if (token.IsExpire)
                {
                    AlertUtil.ToastShort(this, "未登录或登录token已经过期,请邓丽");
                    return;
                }
                var model = new BookmarksModel();
                model.Title   = edit_title.Text;
                model.LinkUrl = edit_url.Text;
                model.Summary = edit_summary.Text;
                model.Tags    = edit_tags.Text.Split(',').ToList();
                var dialog = new ProgressDialog(this);
                dialog.SetProgressStyle(ProgressDialogStyle.Spinner);
                dialog.SetCancelable(false);
                dialog.SetCanceledOnTouchOutside(false);
                dialog.SetTitle(Resources.GetString(Resource.String.bookmark_add));
                dialog.SetMessage("提交中.......");
                dialog.Show();
                if (mode == "add")
                {
                    var result = await BookmarksService.Add(token, model);

                    if (result.Success)
                    {
                        btn_submit.Enabled = false;
                        dialog.Hide();
                        AlertUtil.ToastLong(this, result.Message + "添加收藏成功");
                        this.Finish();
                        System.Diagnostics.Debug.Write(result.Message);
                    }
                    else
                    {
                        dialog.Hide();
                        AlertUtil.ToastLong(this, result.Message);
                        System.Diagnostics.Debug.Write(result);
                    }
                }
                if (mode == "edit")
                {
                    model.WzLinkId = wzLinkId;
                    BookmarksService.Edit(token, model, (result) => {
                        if (result.IsSuccess)
                        {
                            RunOnUiThread(() => {
                                dialog.Hide();
                                btn_submit.Enabled = false;
                                AlertUtil.ToastLong(this, result.Message + "编辑收藏成功");
                            });
                            System.Diagnostics.Debug.Write(result.Message);
                        }
                        else
                        {
                            RunOnUiThread(() =>
                            {
                                dialog.Hide();
                                AlertUtil.ToastLong(this, result.Message);
                                System.Diagnostics.Debug.Write(result);
                            });
                        }
                    });
                }
            };
        }
Esempio n. 22
0
 public BookmarkPromptUtility(BookmarksModel bookmarksModel, Configuration.ConfigBookmarksList bookmarkListSettings)
 {
     BookmarksModel       = bookmarksModel;
     BookmarkListSettings = bookmarkListSettings;
 }