]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinremoteencoding.cpp
DolphinView: Conform to global scroll speed
[dolphin.git] / src / views / dolphinremoteencoding.cpp
index 4f006df5991a9c0854124027ba86bde588e69d07..33c5868d660df6df55beae52a4b80c1d3d1617b8 100644 (file)
@@ -4,7 +4,7 @@
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
- /*
+/*
  * This code is largely based on the kremoteencodingplugin
  * SPDX-FileCopyrightText: 2003 Thiago Macieira <thiago.macieira@kdemail.net>
  * Distributed under the same terms.
 
 #include "dolphinremoteencoding.h"
 
-#include "dolphinviewactionhandler.h"
 #include "dolphindebug.h"
+#include "dolphinviewactionhandler.h"
 
 #include <KActionCollection>
 #include <KActionMenu>
 #include <KCharsets>
 #include <KConfig>
 #include <KConfigGroup>
-#include <KIO/Scheduler>
 #include <KLocalizedString>
 #include <KProtocolInfo>
 #include <KProtocolManager>
 
+#include <QDBusConnection>
+#include <QDBusMessage>
 #include <QMenu>
 
-#define DATA_KEY        QStringLiteral("Charset")
+#define DATA_KEY QStringLiteral("Charset")
 
-DolphinRemoteEncoding::DolphinRemoteEncoding(QObject* parent, DolphinViewActionHandler* actionHandler)
-   :QObject(parent),
-    m_actionHandler(actionHandler),
-    m_loaded(false),
-    m_idDefault(0)
+DolphinRemoteEncoding::DolphinRemoteEncoding(QObject *parent, DolphinViewActionHandler *actionHandler)
+    : QObject(parent)
+    , m_actionHandler(actionHandler)
+    , m_loaded(false)
+    m_idDefault(0)
 {
     m_menu = new KActionMenu(QIcon::fromTheme(QStringLiteral("character-set")), i18n("Select Remote Charset"), this);
     m_actionHandler->actionCollection()->addAction(QStringLiteral("change_remote_encoding"), m_menu);
-    connect(m_menu->menu(), &QMenu::aboutToShow,
-          this, &DolphinRemoteEncoding::slotAboutToShow);
+    connect(m_menu->menu(), &QMenu::aboutToShow, this, &DolphinRemoteEncoding::slotAboutToShow);
 
     m_menu->setEnabled(false);
-    m_menu->setDelayed(false);
+    m_menu->setPopupMode(QToolButton::InstantPopup);
 }
 
 DolphinRemoteEncoding::~DolphinRemoteEncoding()
@@ -69,9 +69,7 @@ void DolphinRemoteEncoding::slotAboutToOpenUrl()
     if (m_currentURL.scheme() != oldURL.scheme()) {
         // This plugin works on ftp, fish, etc.
         // everything whose type is T_FILESYSTEM except for local files
-        if (!m_currentURL.isLocalFile() &&
-            KProtocolManager::outputType(m_currentURL) == KProtocolInfo::T_FILESYSTEM) {
-
+        if (!m_currentURL.isLocalFile() && KProtocolManager::outputType(m_currentURL) == KProtocolInfo::T_FILESYSTEM) {
             m_menu->setEnabled(true);
             loadSettings();
         } else {
@@ -87,20 +85,19 @@ void DolphinRemoteEncoding::slotAboutToOpenUrl()
 
 void DolphinRemoteEncoding::fillMenu()
 {
-    QMenumenu = m_menu->menu();
+    QMenu *menu = m_menu->menu();
     menu->clear();
 
-
-    for (int i = 0; i < m_encodingDescriptions.size();i++) {
-        QActionaction = new QAction(m_encodingDescriptions.at(i), this);
+    menu->addAction(i18n("Default"), this, &DolphinRemoteEncoding::slotDefault)->setCheckable(true);
+    for (int i = 0; i < m_encodingDescriptions.size(); i++) {
+        QAction *action = new QAction(m_encodingDescriptions.at(i), this);
         action->setCheckable(true);
         action->setData(i);
         menu->addAction(action);
     }
     menu->addSeparator();
 
-    menu->addAction(i18n("Reload"), this, SLOT(slotReload()), 0);
-    menu->addAction(i18n("Default"), this, SLOT(slotDefault()), 0)->setCheckable(true);
+    menu->addAction(i18n("Reload"), this, &DolphinRemoteEncoding::slotReload);
     m_idDefault = m_encodingDescriptions.size() + 2;
 
     connect(menu, &QMenu::triggered, this, &DolphinRemoteEncoding::slotItemSelected);
@@ -113,7 +110,7 @@ void DolphinRemoteEncoding::updateMenu()
     }
 
     // uncheck everything
-    for (int i =  0; i < m_menu->menu()->actions().count(); i++) {
+    for (int i = 0; i < m_menu->menu()->actions().count(); i++) {
         m_menu->menu()->actions().at(i)->setChecked(false);
     }
 
@@ -132,14 +129,13 @@ void DolphinRemoteEncoding::updateMenu()
         qCDebug(DolphinDebug) << "URL=" << m_currentURL << " charset=" << charset;
 
         if (!isFound) {
-            qCWarning(DolphinDebug) << "could not find entry for charset=" << charset ;
+            qCWarning(DolphinDebug) << "could not find entry for charset=" << charset;
         } else {
             m_menu->menu()->actions().at(id)->setChecked(true);
         }
     } else {
         m_menu->menu()->actions().at(m_idDefault)->setChecked(true);
     }
-
 }
 
 void DolphinRemoteEncoding::slotAboutToShow()
@@ -150,12 +146,12 @@ void DolphinRemoteEncoding::slotAboutToShow()
     updateMenu();
 }
 
-void DolphinRemoteEncoding::slotItemSelected(QActionaction)
+void DolphinRemoteEncoding::slotItemSelected(QAction *action)
 {
     if (action) {
         int id = action->data().toInt();
 
-        KConfig config(("kio_" + m_currentURL.scheme() + "rc").toLatin1());
+        KConfig config(QLatin1String("kio_%1rc").arg(m_currentURL.scheme()));
         QString host = m_currentURL.host();
         if (m_menu->menu()->actions().at(id)->isChecked()) {
             QString charset = KCharsets::charsets()->encodingForName(m_encodingDescriptions.at(id));
@@ -173,9 +169,9 @@ void DolphinRemoteEncoding::slotDefault()
 {
     // We have no choice but delete all higher domain level
     // settings here since it affects what will be matched.
-    KConfig config(("kio_" + m_currentURL.scheme() + "rc").toLatin1());
+    KConfig config(QLatin1String("kio_%1rc").arg(m_currentURL.scheme()));
 
-    QStringList partList = m_currentURL.host().split('.', QString::SkipEmptyParts);
+    QStringList partList = m_currentURL.host().split(QLatin1Char('.'), Qt::SkipEmptyParts);
     if (!partList.isEmpty()) {
         partList.erase(partList.begin());
 
@@ -198,12 +194,12 @@ void DolphinRemoteEncoding::slotDefault()
             partList.erase(partList.begin());
         }
 
-        for (QStringList::const_iterator it = domains.constBegin(); it != domains.constEnd();++it) {
+        for (QStringList::const_iterator it = domains.constBegin(); it != domains.constEnd(); ++it) {
             qCDebug(DolphinDebug) << "Domain to remove: " << *it;
             if (config.hasGroup(*it)) {
                 config.deleteGroup(*it);
-            } else if (config.group("").hasKey(*it)) {
-                config.group("").deleteEntry(*it); //don't know what group name is supposed to be XXX
+            } else if (config.group(QString()).hasKey(*it)) {
+                config.group(QString()).deleteEntry(*it); // don't know what group name is supposed to be XXX
             }
         }
     }
@@ -215,9 +211,14 @@ void DolphinRemoteEncoding::slotDefault()
 
 void DolphinRemoteEncoding::updateView()
 {
-    KIO::Scheduler::emitReparseSlaveConfiguration();
+    QDBusMessage message =
+        QDBusMessage::createSignal(QStringLiteral("/KIO/Scheduler"), QStringLiteral("org.kde.KIO.Scheduler"), QStringLiteral("reparseSlaveConfiguration"));
+    message << QString();
+    QDBusConnection::sessionBus().send(message);
+
     // Reload the page with the new charset
     m_actionHandler->currentView()->setUrl(m_currentURL);
     m_actionHandler->currentView()->reload();
 }
 
+#include "moc_dolphinremoteencoding.cpp"