]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/admin/workerintegration.cpp
kio-admin: Risk dialog saves only on accept
[dolphin.git] / src / admin / workerintegration.cpp
index 0b95ec782119a6c6fdca042b001bffc4c12f40cf..b769e8a7c313a3d140773ef3a38445ea62f1d373 100644 (file)
@@ -122,7 +122,9 @@ WorkerIntegration::WorkerIntegration(DolphinMainWindow *parent, QAction *actAsAd
 
 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());
@@ -134,6 +136,11 @@ void WorkerIntegration::createActAsAdminAction(KActionCollection *actionCollecti
     }
 }
 
+QAction *WorkerIntegration::FriendAccess::actAsAdminAction()
+{
+    return instance->m_actAsAdminAction;
+}
+
 void WorkerIntegration::toggleActAsAdmin()
 {
     auto dolphinMainWindow = static_cast<DolphinMainWindow *>(parent());
@@ -157,15 +164,16 @@ void WorkerIntegration::toggleActAsAdmin()
                                  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);
-        }
+        risksAccepted = warningDialog.exec() == KMessageDialog::PrimaryAction;
 
         if (!risksAccepted) {
             updateActAsAdminAction(); // Uncheck the action
             return;
         }
+
+        if (warningDialog.isDontAskAgainChecked()) {
+            KMessageBox::saveDontShowAgainContinue(warningDontShowAgainName);
+        }
     }
 
     url.setScheme(QStringLiteral("admin"));
@@ -188,7 +196,4 @@ void WorkerIntegration::updateActAsAdminAction()
     }
 }
 
-QAction *WorkerIntegration::actAsAdminAction()
-{
-    return instance->m_actAsAdminAction;
-}
+#include "moc_workerintegration.cpp"