File indexing completed on 2024-12-08 04:34:50

0001 /*
0002     smb4ksharesmenu  -  Shares 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 SMB4KSHARESMENU_H
0009 #define SMB4KSHARESMENU_H
0010 
0011 // application specific includes
0012 #include "core/smb4kglobal.h"
0013 
0014 // Qt includes
0015 #include <QAction>
0016 #include <QActionGroup>
0017 
0018 // KDE includes
0019 #include <KActionMenu>
0020 
0021 // forward declarations
0022 class Smb4KShare;
0023 
0024 class Smb4KSharesMenu : public KActionMenu
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     /**
0030      * Constructor
0031      */
0032     explicit Smb4KSharesMenu(QObject *parent = nullptr);
0033 
0034     /**
0035      * Destructor
0036      */
0037     ~Smb4KSharesMenu();
0038 
0039     /**
0040      * Refresh the shares menu
0041      */
0042     void refreshMenu();
0043 
0044 protected Q_SLOTS:
0045     /**
0046      * This slot is invokes when a share was mounted
0047      */
0048     void slotShareMounted(const SharePtr &share);
0049 
0050     /**
0051      * This slot is invoked when a share was unmounted
0052      */
0053     void slotShareUnmounted(const SharePtr &share);
0054 
0055     /**
0056      * This slot is invoked when the modifictions of the
0057      * mounted shares list are finished.
0058      */
0059     void slotMountedSharesListChanged();
0060 
0061     /**
0062      * This slot unmounts all shares at once.
0063      */
0064     void slotUnmountAllShares();
0065 
0066     /**
0067      * This slot is called when an action is triggered.
0068      *
0069      * @param action        The action that was triggered
0070      */
0071     void slotShareAction(QAction *action);
0072 
0073 private:
0074     /**
0075      * Add a share to the menu
0076      */
0077     void addShareToMenu(const SharePtr &share);
0078 
0079     /**
0080      * Remove a share from the menu
0081      */
0082     void removeShareFromMenu(const SharePtr &share);
0083 
0084     /**
0085      * Share menus
0086      */
0087     QActionGroup *m_menus;
0088 
0089     /**
0090      * Share actions
0091      */
0092     QActionGroup *m_actions;
0093 
0094     /**
0095      * The Unmount All action
0096      */
0097     QAction *m_unmountAll;
0098 
0099     /**
0100      * The separator action
0101      */
0102     QAction *m_separator;
0103 };
0104 
0105 #endif