File indexing completed on 2024-11-03 04:36:57
0001 /* 0002 smb4kbookmarkmenu - Bookmark menu 0003 0004 SPDX-FileCopyrightText: 2011-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net> 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef SMB4KBOOKMARKMENU_H 0009 #define SMB4KBOOKMARKMENU_H 0010 0011 // application specific includes 0012 #include "smb4kbookmarkeditor.h" 0013 #include "smb4kglobal.h" 0014 0015 // Qt includes 0016 #include <QAction> 0017 #include <QActionGroup> 0018 #include <QPointer> 0019 0020 // KDE includes 0021 #include <KActionMenu> 0022 0023 // forward declarations 0024 class Smb4KBookmark; 0025 0026 class Smb4KBookmarkMenu : public KActionMenu 0027 { 0028 Q_OBJECT 0029 0030 public: 0031 /** 0032 * Enumeration 0033 */ 0034 enum Type { MainWindow, SystemTray }; 0035 0036 /** 0037 * Constructor 0038 */ 0039 explicit Smb4KBookmarkMenu(int type, QObject *parent = nullptr); 0040 0041 /** 0042 * Destructor 0043 */ 0044 ~Smb4KBookmarkMenu(); 0045 0046 /** 0047 * Refresh the menu 0048 */ 0049 void refreshMenu(); 0050 0051 /** 0052 * Enable/disable the 'Add Bookmark' action 0053 */ 0054 void setBookmarkActionEnabled(bool enable); 0055 0056 public Q_SLOTS: 0057 /** 0058 * Load the bookmarks into the menu 0059 */ 0060 void loadBookmarks(); 0061 0062 Q_SIGNALS: 0063 /** 0064 * This signal is emitted when the 'Add Bookmark' is triggered. 0065 */ 0066 void addBookmark(); 0067 0068 protected Q_SLOTS: 0069 /** 0070 * Called when the edit action is triggered 0071 */ 0072 void slotEditActionTriggered(bool checked); 0073 0074 /** 0075 * Called when the add action is triggered 0076 */ 0077 void slotAddActionTriggered(bool checked); 0078 0079 /** 0080 * Called when a mount action was triggered 0081 */ 0082 void slotMountActionTriggered(QAction *action); 0083 0084 /** 0085 * Called when a bookmark action is triggered 0086 */ 0087 void slotBookmarkActionTriggered(QAction *action); 0088 0089 /** 0090 * Called when a bookmark was unmounted 0091 */ 0092 void slotEnableBookmark(const SharePtr &share); 0093 0094 private: 0095 /** 0096 * Enables or disables the mount actions according to the status 0097 * of the bookmarks in their respective category. 0098 */ 0099 void adjustMountActions(); 0100 0101 /** 0102 * The actions 0103 */ 0104 QActionGroup *m_mountActions; 0105 0106 /** 0107 * The categories 0108 */ 0109 QActionGroup *m_categories; 0110 0111 /** 0112 * The bookmarks 0113 */ 0114 QActionGroup *m_bookmarks; 0115 0116 /** 0117 * The 'Edit Bookmarks' action 0118 */ 0119 QAction *m_editBookmarks; 0120 0121 /** 0122 * The "Add Bookmark" action 0123 */ 0124 QAction *m_addBookmark; 0125 0126 /** 0127 * The toplevel "Mount All Bookmarks" action 0128 */ 0129 QAction *m_toplevelMount; 0130 0131 /** 0132 * The separator between the actions and the bookmarks 0133 */ 0134 QAction *m_separator; 0135 }; 0136 0137 #endif