File indexing completed on 2024-10-06 04:35:41
0001 /* 0002 The network search widget dock widget 0003 0004 SPDX-FileCopyrightText: 2018-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net> 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef SMB4KSHARESVIEWDOCKWIDGET_H 0009 #define SMB4KSHARESVIEWDOCKWIDGET_H 0010 0011 // application specific includes 0012 #include "core/smb4kglobal.h" 0013 0014 // Qt includes 0015 #include <QDockWidget> 0016 #include <QListWidgetItem> 0017 #include <QPointer> 0018 0019 // KDE includes 0020 #include <KActionCollection> 0021 #include <KActionMenu> 0022 0023 // forward declarations 0024 class Smb4KSharesViewItem; 0025 class Smb4KSharesView; 0026 class Smb4KPasswordDialog; 0027 0028 using namespace Smb4KGlobal; 0029 0030 class Smb4KSharesViewDockWidget : public QDockWidget 0031 { 0032 Q_OBJECT 0033 0034 public: 0035 /** 0036 * Constructor 0037 */ 0038 Smb4KSharesViewDockWidget(const QString &title, QWidget *parent = nullptr); 0039 0040 /** 0041 * Destructor 0042 */ 0043 ~Smb4KSharesViewDockWidget(); 0044 0045 /** 0046 * Load settings 0047 */ 0048 void loadSettings(); 0049 0050 /** 0051 * Save settings 0052 */ 0053 void saveSettings(); 0054 0055 /** 0056 * Returns the action collection of this dock widget 0057 * @returns the action collection 0058 */ 0059 KActionCollection *actionCollection(); 0060 0061 protected Q_SLOTS: 0062 /** 0063 * This slot is called if the user requests the context menu. It shows 0064 * the menu with the actions defined for the widget. 0065 * @param pos The position where user clicked. 0066 */ 0067 void slotContextMenuRequested(const QPoint &pos); 0068 0069 /** 0070 * This slot is invoked when the user activated an item. It is used to mount 0071 * shares. 0072 * @param item The item that was executed. 0073 */ 0074 void slotItemActivated(QListWidgetItem *item); 0075 0076 /** 0077 * This slot is called when the selection changed. It takes care of the 0078 * actions being enabled or disabled accordingly. All widget specific 0079 * stuff has to be done in the shares view itself. 0080 */ 0081 void slotItemSelectionChanged(); 0082 0083 /** 0084 * This slot is used to process an accepted drop event. 0085 * @param item The item where the drop event occurred. 0086 * @param e The drop event that encapsulates the necessary data. 0087 */ 0088 void slotDropEvent(Smb4KSharesViewItem *item, QDropEvent *e); 0089 0090 /** 0091 * This slot is invoked when the view mode was changed in the View Modes 0092 * context menu. 0093 * @param action The action that was checked 0094 */ 0095 void slotViewModeChanged(QAction *action); 0096 0097 /** 0098 * This slot is connected to the Smb4KMounter::mounted() signal and adds the 0099 * mounted share @p share to the shares view. 0100 * @param share The share item 0101 */ 0102 void slotShareMounted(const SharePtr &share); 0103 0104 /** 0105 * This slot is connected to the Smb4KMounter::unmounted() signal and removes 0106 * the share @p share from the shares view. 0107 * @param share The share item 0108 */ 0109 void slotShareUnmounted(const SharePtr &share); 0110 0111 /** 0112 * This slot is connected to the Smb4KMounter::updated() signal and updates 0113 * the item in the shares view corresponding to @p share. 0114 * 0115 * This slot does not remove or add any share, it only updates the present 0116 * items. 0117 * @param share The Smb4KShare item 0118 */ 0119 void slotShareUpdated(const SharePtr &share); 0120 0121 /** 0122 * This slot is connected to the 'Unmount action'. 0123 * @param checked TRUE if the action is checked and FALSE otherwise. 0124 */ 0125 void slotUnmountActionTriggered(bool checked); 0126 0127 /** 0128 * This slot is connected to the 'Unmount All' action. All shares - either of 0129 * the user or that are present on the system (depending on the settings the 0130 * user chose) - will be unmounted. 0131 * @param checked TRUE if the action is checked and FALSE otherwise. 0132 */ 0133 void slotUnmountAllActionTriggered(bool checked); 0134 0135 /** 0136 * This slot is connected to the 'Add Bookmark' action. It lets you add a share 0137 * to the bookmarks. 0138 * @param checked TRUE if the action is checked and FALSE otherwise. 0139 */ 0140 void slotBookmarkActionTriggered(bool checked); 0141 0142 /** 0143 * Provide custom options for a server or share. This slot is connected 0144 * to the 'Add Custom Settings' action. 0145 * 0146 * @param checked Is TRUE if the action is checked (not used here). 0147 */ 0148 void slotAddCustomSettingsTriggered(bool checked); 0149 0150 /** 0151 * This slot is connected to the 'Synchronize' action. The selected items will be 0152 * synchronized with a local copy (or vice versa) if you activate it. 0153 * 0154 * @param checked TRUE if the action is checked and FALSE otherwise. 0155 */ 0156 void slotSynchronizeActionTriggered(bool checked); 0157 0158 /** 0159 * This slot is connected to the 'Open with Konsole' action. The mount point of 0160 * the selected share items will be opened in Konsole. 0161 * @param checked TRUE if the action is checked and FALSE otherwise. 0162 */ 0163 void slotKonsoleActionTriggered(bool checked); 0164 0165 /** 0166 * This slot is connected to the 'Open with Filemanager' action. The contents of 0167 * the selected share items will be opened in the file manager. 0168 * @param checked TRUE if the action is checked and FALSE otherwise. 0169 */ 0170 void slotFileManagerActionTriggered(bool checked); 0171 0172 private: 0173 void setupActions(); 0174 Smb4KSharesView *m_sharesView; 0175 KActionCollection *m_actionCollection; 0176 KActionMenu *m_contextMenu; 0177 }; 0178 0179 #endif