2 This file is part of the KDE project
3 SPDX-FileCopyrightText: 2022 Felix Ernst <felixernst@kde.org>
5 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
8 #ifndef ADMINWORKERINTEGRATION_H
9 #define ADMINWORKERINTEGRATION_H
13 class DolphinMainWindow
;
14 class KActionCollection
;
19 * @brief This namespace contains everything that is necessary to nicely integrate "KIO Admin Worker" into Dolphin.
21 * @see https://commits.kde.org/kio-admin
26 * When a user starts Dolphin with arguments that imply that they want to use administrative rights, this method is called.
27 * This function acts like a command line program that guides users towards installing kio-admin. It will not return until this is accomplished.
28 * This function will do nothing if kio-admin is already installed.
30 void guideUserTowardsInstallingAdminWorker();
32 void guideUserTowardsUsingAdminWorker();
35 * Used with the KMessageBox API so users can disable the warning.
36 * @see KMessageBox::saveDontShowAgainContinue()
37 * @see KMessageBox::enableMessage()
39 constexpr QLatin1String warningDontShowAgainName
{"warnAboutRisksBeforeActingAsAdmin"};
41 /** @returns an elaborate warning about the dangers of acting with administrative privileges. */
42 QString
warningMessage();
45 * @brief A class encapsulating the "Act as Admin"-toggle action.
47 * @see https://commits.kde.org/kio-admin
49 class WorkerIntegration
: public QObject
55 * Adds a toggle action to the \a actionCollection.
56 * The action switches between acting as a normal user or acting as an administrator.
58 static void createActAsAdminAction(KActionCollection
*actionCollection
, DolphinMainWindow
*dolphinMainWindow
);
61 * Triggers the m_actAsAdminAction only if it is currently checked.
63 static void exitAdminMode();
66 WorkerIntegration(DolphinMainWindow
*parent
, QAction
*actAsAdminAction
);
69 * Toggles between acting with admin rights or not.
70 * This enables editing more files than the normal user account would be allowed to but requires re-authorization.
72 void toggleActAsAdmin();
74 /** Updates the toggled/checked state of the action depending on the state of the currently active view. */
75 static void updateActAsAdminAction();
78 /** @see createActAsAdminAction() */
79 QAction
*const m_actAsAdminAction
= nullptr;
84 #endif // ADMINWORKERINTEGRATION_H