File indexing completed on 2024-04-14 03:53:07

0001 /*
0002     SPDX-FileCopyrightText: 2008, 2015 David Faure <faure@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #ifndef KFILECOPYTOMENU_P_H
0008 #define KFILECOPYTOMENU_P_H
0009 
0010 #include <KConfigGroup>
0011 #include <QActionGroup>
0012 #include <QMenu>
0013 #include <QUrl>
0014 
0015 class KFileCopyToMenuPrivate
0016 {
0017 public:
0018     KFileCopyToMenuPrivate(KFileCopyToMenu *qq, QWidget *parentWidget);
0019 
0020     KFileCopyToMenu *const q;
0021     QList<QUrl> m_urls;
0022     QWidget *m_parentWidget;
0023     bool m_readOnly;
0024     bool m_autoErrorHandling;
0025 };
0026 
0027 enum MenuType { Copy, Move };
0028 
0029 // The main menu, shown when opening "Copy To" or "Move To"
0030 // It contains Home Folder, Root Folder, Browse, and recent destinations
0031 class KFileCopyToMainMenu : public QMenu
0032 {
0033     Q_OBJECT
0034 public:
0035     KFileCopyToMainMenu(QMenu *parent, KFileCopyToMenuPrivate *d, MenuType menuType);
0036 
0037     QActionGroup &actionGroup()
0038     {
0039         return m_actionGroup; // used by submenus
0040     }
0041     MenuType menuType() const
0042     {
0043         return m_menuType; // used by submenus
0044     }
0045 
0046 private Q_SLOTS:
0047     void slotAboutToShow();
0048     void slotBrowse();
0049     void slotTriggered(QAction *action);
0050 
0051 private:
0052     void copyOrMoveTo(const QUrl &dest);
0053 
0054 private:
0055     MenuType m_menuType;
0056     QActionGroup m_actionGroup;
0057     KFileCopyToMenuPrivate *d; // this isn't our own d pointer, it's the one for the public class
0058     KConfigGroup m_recentDirsGroup;
0059 };
0060 
0061 // The menu that lists a directory
0062 class KFileCopyToDirectoryMenu : public QMenu
0063 {
0064     Q_OBJECT
0065 public:
0066     KFileCopyToDirectoryMenu(QMenu *parent, KFileCopyToMainMenu *mainMenu, const QString &path);
0067 
0068 private Q_SLOTS:
0069     void slotAboutToShow();
0070 
0071 private:
0072     KFileCopyToMainMenu *m_mainMenu;
0073     QString m_path;
0074 };
0075 
0076 #endif