X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a403df91b7a4f794f95604a28a56644d4c06ab58..f9569eb19d3dad9693312015436a5419322a3a1b:/src/views/dolphinremoteencoding.cpp diff --git a/src/views/dolphinremoteencoding.cpp b/src/views/dolphinremoteencoding.cpp index fee3db1c1..33c5868d6 100644 --- a/src/views/dolphinremoteencoding.cpp +++ b/src/views/dolphinremoteencoding.cpp @@ -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 * Distributed under the same terms. @@ -12,36 +12,36 @@ #include "dolphinremoteencoding.h" -#include "dolphinviewactionhandler.h" #include "dolphindebug.h" +#include "dolphinviewactionhandler.h" #include #include #include #include #include -#include #include #include #include +#include +#include #include -#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() { - QMenu* menu = m_menu->menu(); + QMenu *menu = m_menu->menu(); menu->clear(); - - for (int i = 0; i < m_encodingDescriptions.size();i++) { - QAction* action = 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(QAction* action) +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('.', Qt::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"