1/*
2 SPDX-FileCopyrightText: 2008, 2015 David Faure <faure@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#ifndef KFILECOPYTOMENU_P_H
8#define KFILECOPYTOMENU_P_H
9
10#include <KConfigGroup>
11#include <QActionGroup>
12#include <QMenu>
13#include <QUrl>
14
15class KFileCopyToMenuPrivate
16{
17public:
18 KFileCopyToMenuPrivate(KFileCopyToMenu *qq, QWidget *parentWidget);
19
20 KFileCopyToMenu *const q;
21 QList<QUrl> m_urls;
22 QWidget *m_parentWidget;
23 bool m_readOnly;
24 bool m_autoErrorHandling;
25};
26
27enum MenuType {
28 Copy,
29 Move
30};
31
32// The main menu, shown when opening "Copy To" or "Move To"
33// It contains Home Folder, Root Folder, Browse, and recent destinations
34class KFileCopyToMainMenu : public QMenu
35{
36 Q_OBJECT
37public:
38 KFileCopyToMainMenu(QMenu *parent, KFileCopyToMenuPrivate *d, MenuType menuType);
39
40 QActionGroup &actionGroup()
41 {
42 return m_actionGroup; // used by submenus
43 }
44 MenuType menuType() const
45 {
46 return m_menuType; // used by submenus
47 }
48
49private Q_SLOTS:
50 void slotAboutToShow();
51 void slotBrowse();
52 void slotTriggered(QAction *action);
53
54private:
55 void copyOrMoveTo(const QUrl &dest);
56
57private:
58 MenuType m_menuType;
59 QActionGroup m_actionGroup;
60 KFileCopyToMenuPrivate *d; // this isn't our own d pointer, it's the one for the public class
61 KConfigGroup m_recentDirsGroup;
62};
63
64// The menu that lists a directory
65class KFileCopyToDirectoryMenu : public QMenu
66{
67 Q_OBJECT
68public:
69 KFileCopyToDirectoryMenu(QMenu *parent, KFileCopyToMainMenu *mainMenu, const QString &path);
70
71private Q_SLOTS:
72 void slotAboutToShow();
73
74private:
75 KFileCopyToMainMenu *m_mainMenu;
76 QString m_path;
77};
78
79#endif
80

source code of kio/src/filewidgets/kfilecopytomenu_p.h