File indexing completed on 2024-05-12 04:57:58

0001 /* ============================================================
0002 * Falkon - Qt web browser
0003 * Copyright (C) 2014  David Rosca <nowrep@gmail.com>
0004 *
0005 * This program is free software: you can redistribute it and/or modify
0006 * it under the terms of the GNU General Public License as published by
0007 * the Free Software Foundation, either version 3 of the License, or
0008 * (at your option) any later version.
0009 *
0010 * This program is distributed in the hope that it will be useful,
0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013 * GNU General Public License for more details.
0014 *
0015 * You should have received a copy of the GNU General Public License
0016 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
0017 * ============================================================ */
0018 #ifndef BOOKMARKSTOOLS_H
0019 #define BOOKMARKSTOOLS_H
0020 
0021 #include <QMenu>
0022 #include <QPushButton>
0023 
0024 #include "qzcommon.h"
0025 
0026 class Bookmarks;
0027 class BookmarkItem;
0028 
0029 class FALKON_EXPORT BookmarksFoldersMenu : public QMenu
0030 {
0031     Q_OBJECT
0032 
0033 public:
0034     explicit BookmarksFoldersMenu(QWidget* parent = nullptr);
0035 
0036     BookmarkItem* selectedFolder() const;
0037 
0038 Q_SIGNALS:
0039     void folderSelected(BookmarkItem* folder);
0040 
0041 private Q_SLOTS:
0042     void folderChoosed();
0043 
0044 private:
0045     void init();
0046     void createMenu(QMenu* menu, BookmarkItem* parent);
0047 
0048     BookmarkItem* m_selectedFolder;
0049 };
0050 
0051 class FALKON_EXPORT BookmarksFoldersButton : public QPushButton
0052 {
0053     Q_OBJECT
0054 
0055 public:
0056     explicit BookmarksFoldersButton(QWidget* parent, BookmarkItem* folder = nullptr);
0057 
0058     BookmarkItem* selectedFolder() const;
0059 
0060 Q_SIGNALS:
0061     void selectedFolderChanged(BookmarkItem* folder);
0062 
0063 public Q_SLOTS:
0064     void setSelectedFolder(BookmarkItem* folder);
0065 
0066 private:
0067     void init();
0068 
0069     BookmarksFoldersMenu* m_menu;
0070     BookmarkItem* m_selectedFolder;
0071 };
0072 
0073 class BrowserWindow;
0074 class TabWidget;
0075 class Action;
0076 class Menu;
0077 
0078 class FALKON_EXPORT BookmarksTools
0079 {
0080 public:
0081     // Add Bookmark Dialogs
0082     static bool addBookmarkDialog(QWidget* parent, const QUrl &url, const QString &title, BookmarkItem* folder = nullptr);
0083     static bool bookmarkAllTabsDialog(QWidget* parent, TabWidget* tabWidget, BookmarkItem* folder = nullptr);
0084 
0085     // Edit Bookmark Dialog
0086     static bool editBookmarkDialog(QWidget* parent, BookmarkItem* item);
0087 
0088     // Open Bookmarks
0089     static void openBookmark(BrowserWindow* window, BookmarkItem* item);
0090     static void openBookmarkInNewTab(BrowserWindow* window, BookmarkItem* item);
0091     static void openBookmarkInNewWindow(BookmarkItem* item);
0092     static void openBookmarkInNewPrivateWindow(BookmarkItem* item);
0093     static void openFolderInTabs(BrowserWindow* window, BookmarkItem* folder);
0094 
0095     // Create Menu
0096     static void addActionToMenu(QObject* receiver, Menu* menu, BookmarkItem* item);
0097     static void addFolderToMenu(QObject* receiver, Menu* menu, BookmarkItem* folder);
0098     static void addUrlToMenu(QObject* receiver, Menu* menu, BookmarkItem* bookmark);
0099     static void addSeparatorToMenu(Menu* menu, BookmarkItem* separator);
0100     static void addFolderContentsToMenu(QObject* receiver, Menu* menu, BookmarkItem* folder);
0101 
0102     // Migration from Sql Bookmarks (returns true if bookmarks migrated)
0103     static bool migrateBookmarksIfNecessary(Bookmarks* bookmarks);
0104 };
0105 
0106 #endif // BOOKMARKSTOOLS_H