File indexing completed on 2024-04-21 14:53:29

0001 /*
0002     This file is part of the KDE project
0003     SPDX-FileCopyrightText: 1998, 1999 Torben Weis <weis@kde.org>
0004     SPDX-FileCopyrightText: 2006 Daniel Teske <teske@squorn.de>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #ifndef __konqbookmarkmenu_h__
0010 #define __konqbookmarkmenu_h__
0011 
0012 #include "kbookmarkactionmenu.h"
0013 #include "kbookmarkcontextmenu.h"
0014 #include "kbookmarkmenu.h"
0015 
0016 #if KBOOKMARKS_ENABLE_DEPRECATED_SINCE(5, 0)
0017 #include "kbookmarkowner.h" // for SC reasons
0018 
0019 typedef KBookmarkOwner KonqBookmarkOwner; // KF5: KonqBookmarkOwner is deprecated, use KBookmarkOwner
0020 #endif
0021 
0022 #if KBOOKMARKS_ENABLE_DEPRECATED_SINCE(5, 65)
0023 /**
0024  * @class KonqBookmarkMenu konqbookmarkmenu.h KonqBookmarkMenu
0025  *
0026  * Bookmark menu with dynamic import features, only used by Konqueror
0027  * @deprecated since 5.65, this class has moved to Konqueror
0028  */
0029 class KBOOKMARKS_EXPORT KonqBookmarkMenu : public KBookmarkMenu
0030 {
0031     // friend class KBookmarkBar;
0032     Q_OBJECT
0033 public:
0034     /**
0035      * Fills a bookmark menu with konquerors bookmarks
0036      * (one instance of KonqBookmarkMenu is created for the toplevel menu,
0037      *  but also one per submenu).
0038      *
0039      * @param mgr The bookmark manager to use (i.e. for reading and writing)
0040      * @param owner implementation of the KBookmarkOwner callback interface.
0041      * Note: If you pass a null KBookmarkOwner to the constructor, the
0042      * URLs are opened by QDesktopServices::openUrl and "Add Bookmark" is disabled.
0043      * @param parentMenu menu to be filled
0044      * @param collec parent collection for the KActions.
0045      * @deprecated since 5.65 This class has moved to Konqueror
0046      */
0047     KBOOKMARKS_DEPRECATED_VERSION(5, 65, "This class has moved to Konqueror")
0048     KonqBookmarkMenu(KBookmarkManager *mgr, KBookmarkOwner *owner, KBookmarkActionMenu *parentMenu, KActionCollection *collec)
0049         : KBookmarkMenu(mgr, owner, parentMenu->menu(), collec)
0050     {
0051     }
0052     ~KonqBookmarkMenu() override
0053     {
0054     }
0055 
0056     /**
0057      * Creates a bookmark submenu.
0058      * Only used internally and for bookmark toolbar.
0059      * @deprecated since 5.65 This class has moved to Konqueror
0060      */
0061     KBOOKMARKS_DEPRECATED_VERSION(5, 65, "This class has moved to Konqueror")
0062     KonqBookmarkMenu(KBookmarkManager *mgr, KBookmarkOwner *owner, KBookmarkActionMenu *parentMenu, QString parentAddress)
0063         : KBookmarkMenu(mgr, owner, parentMenu->menu(), parentAddress)
0064     {
0065     }
0066 
0067 protected:
0068     /**
0069      * Structure used for storing information about
0070      * the dynamic menu setting
0071      */
0072     struct DynMenuInfo {
0073         bool show;
0074         QString location;
0075         QString type;
0076         QString name;
0077         class DynMenuInfoPrivate *d;
0078     };
0079 
0080     /**
0081      * @return dynmenu info block for the given dynmenu name
0082      */
0083     static DynMenuInfo showDynamicBookmarks(const QString &id);
0084 
0085     /**
0086      * Shows an extra menu for the given bookmarks file and type.
0087      * Upgrades from option inside XBEL to option in rc file
0088      * on first call of this function.
0089      * @param id the unique identification for the dynamic menu
0090      * @param info a DynMenuInfo struct containing the to be added/modified data
0091      */
0092     static void setDynamicBookmarks(const QString &id, const DynMenuInfo &info);
0093 
0094     /**
0095      * @return list of dynamic menu ids
0096      */
0097     static QStringList dynamicBookmarksList();
0098 
0099     void refill() override;
0100     QAction *actionForBookmark(const KBookmark &bm) override;
0101     QMenu *contextMenu(QAction *action) override;
0102     void fillDynamicBookmarks();
0103 };
0104 
0105 /**
0106  * Browser-specific context menu
0107  * @deprecated since 5.65, this class has moved to Konqueror
0108  */
0109 class KBOOKMARKS_EXPORT KonqBookmarkContextMenu : public KBookmarkContextMenu
0110 {
0111     Q_OBJECT
0112 public:
0113     /**
0114      * Browser-specific context menu
0115      * @deprecated since 5.65, this class has moved to Konqueror
0116      */
0117     KBOOKMARKS_DEPRECATED_VERSION(5, 65, "This class has moved to Konqueror")
0118     KonqBookmarkContextMenu(const KBookmark &bm, KBookmarkManager *mgr, KBookmarkOwner *owner);
0119     ~KonqBookmarkContextMenu() override;
0120     void addActions() override;
0121 
0122 public Q_SLOTS:
0123     void openInNewTab();
0124     void openInNewWindow();
0125     void toggleShowInToolbar();
0126 };
0127 
0128 #endif
0129 
0130 #endif