void WorkerIntegration::createActAsAdminAction(KActionCollection *actionCollection, DolphinMainWindow *dolphinMainWindow)
{
- Q_ASSERT(!instance);
+ Q_ASSERT(!instance /* We never want to construct more than one instance,
+ however in automatic testing sometimes multiple DolphinMainWindows are created, so this assert is diluted to accommodate for that: */
+ || instance->parent() != dolphinMainWindow);
if (isWorkerInstalled()) {
QAction *actAsAdminAction = actionCollection->addAction(QStringLiteral("act_as_admin"));
actAsAdminAction->setText(actionName());
}
}
-void WorkerIntegration::exitAdminMode()
+QAction *WorkerIntegration::FriendAccess::actAsAdminAction()
{
- if (instance->m_actAsAdminAction->isChecked()) {
- instance->m_actAsAdminAction->trigger();
- }
+ return instance->m_actAsAdminAction;
}
void WorkerIntegration::toggleActAsAdmin()
{
auto dolphinMainWindow = static_cast<DolphinMainWindow *>(parent());
QUrl url = dolphinMainWindow->activeViewContainer()->urlNavigator()->locationUrl();
- if (url.scheme() == QStringLiteral("file")) {
- bool risksAccepted = !KMessageBox::shouldBeShownContinue(warningDontShowAgainName);
- if (!risksAccepted) {
- KMessageDialog warningDialog{KMessageDialog::QuestionTwoActions, warningMessage(), dolphinMainWindow};
- warningDialog.setCaption(i18nc("@title:window", "Risks of Acting as an Administrator"));
- warningDialog.setIcon(QIcon::fromTheme(QStringLiteral("security-low")));
- warningDialog.setButtons(KGuiItem{i18nc("@action:button", "I Understand and Accept These Risks"), QStringLiteral("data-warning")},
- KStandardGuiItem::cancel());
- warningDialog.setDontAskAgainText(i18nc("@option:check", "Do not warn me about these risks again"));
-
- risksAccepted = warningDialog.exec() != 4 /* Cancel */;
- if (warningDialog.isDontAskAgainChecked()) {
- KMessageBox::saveDontShowAgainContinue(warningDontShowAgainName);
- }
+ if (url.scheme() == QStringLiteral("admin")) {
+ url.setScheme(QStringLiteral("file"));
+ dolphinMainWindow->changeUrl(url);
+ return;
+ } else if (url.scheme() != QStringLiteral("file")) {
+ return;
+ }
- if (!risksAccepted) {
- updateActAsAdminAction(); // Uncheck the action
- return;
- }
+ bool risksAccepted = !KMessageBox::shouldBeShownContinue(warningDontShowAgainName);
+
+ if (!risksAccepted) {
+ KMessageDialog warningDialog{KMessageDialog::QuestionTwoActions, warningMessage(), dolphinMainWindow};
+ warningDialog.setCaption(i18nc("@title:window", "Risks of Acting as an Administrator"));
+ warningDialog.setIcon(QIcon::fromTheme(QStringLiteral("security-low")));
+ warningDialog.setButtons(KGuiItem{i18nc("@action:button", "I Understand and Accept These Risks"), QStringLiteral("data-warning")},
+ KStandardGuiItem::cancel());
+ warningDialog.setDontAskAgainText(i18nc("@option:check", "Do not warn me about these risks again"));
+
+ risksAccepted = warningDialog.exec() != 4 /* Cancel */;
+ if (warningDialog.isDontAskAgainChecked()) {
+ KMessageBox::saveDontShowAgainContinue(warningDontShowAgainName);
}
- url.setScheme(QStringLiteral("admin"));
- } else if (url.scheme() == QStringLiteral("admin")) {
- url.setScheme(QStringLiteral("file"));
+ if (!risksAccepted) {
+ updateActAsAdminAction(); // Uncheck the action
+ return;
+ }
}
+
+ url.setScheme(QStringLiteral("admin"));
dolphinMainWindow->changeUrl(url);
}
}
}
}
+
+#include "moc_workerintegration.cpp"