┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinremoteencoding.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-07-24 22:08:30 +0000
committerPeter Penz <[email protected]>2010-07-24 22:08:30 +0000
commita5cf21ff06aff44cde563eaceae3c6cef452ee48 (patch)
tree3d23179b483e4c9ad5598b128c3063885fe33a30 /src/dolphinremoteencoding.cpp
parent652d08c9242ed51d86dba3b2afda9d3b2e9a9cd7 (diff)
Sourcecode hierarchy cleanup: Move further files from src to src/views
svn path=/trunk/KDE/kdebase/apps/; revision=1154150
Diffstat (limited to 'src/dolphinremoteencoding.cpp')
-rw-r--r--src/dolphinremoteencoding.cpp241
1 files changed, 0 insertions, 241 deletions
diff --git a/src/dolphinremoteencoding.cpp b/src/dolphinremoteencoding.cpp
deleted file mode 100644
index 397eaccc0..000000000
--- a/src/dolphinremoteencoding.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009 by Rahman Duran <[email protected]> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
- /*
- * This code is largely based on the kremoteencodingplugin
- * Copyright (c) 2003 Thiago Macieira <[email protected]>
- * Distributed under the same terms.
- */
-
-#include "dolphinremoteencoding.h"
-#include "dolphinviewactionhandler.h"
-
-#include <kdebug.h>
-#include <kactionmenu.h>
-#include <kactioncollection.h>
-#include <kicon.h>
-#include <klocale.h>
-#include <kglobal.h>
-#include <kmimetype.h>
-#include <kconfig.h>
-#include <kcharsets.h>
-#include <kmenu.h>
-#include <kprotocolinfo.h>
-#include <kprotocolmanager.h>
-#include <kio/slaveconfig.h>
-#include <kio/scheduler.h>
-#include <kconfiggroup.h>
-
-#define DATA_KEY QLatin1String("Charset")
-
-DolphinRemoteEncoding::DolphinRemoteEncoding(QObject* parent, DolphinViewActionHandler* actionHandler)
- :QObject(parent),
- m_actionHandler(actionHandler),
- m_loaded(false),
- m_idDefault(0)
-{
- m_menu = new KActionMenu(KIcon("character-set"), i18n("Select Remote Charset"), this);
- m_actionHandler->actionCollection()->addAction("change_remote_encoding", m_menu);
- connect(m_menu->menu(), SIGNAL(aboutToShow()),
- this, SLOT(slotAboutToShow()));
-
- m_menu->setEnabled(false);
- m_menu->setDelayed(false);
-}
-
-DolphinRemoteEncoding::~DolphinRemoteEncoding()
-{
-}
-
-void DolphinRemoteEncoding::slotReload()
-{
- loadSettings();
-}
-
-void DolphinRemoteEncoding::loadSettings()
-{
- m_loaded = true;
- m_encodingDescriptions = KGlobal::charsets()->descriptiveEncodingNames();
-
- fillMenu();
-}
-
-void DolphinRemoteEncoding::slotAboutToOpenUrl()
-{
- KUrl oldURL = m_currentURL;
- m_currentURL = m_actionHandler->currentView()->url();
-
- if (m_currentURL.protocol() != oldURL.protocol()) {
- // 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) {
-
- m_menu->setEnabled(true);
- loadSettings();
- } else {
- m_menu->setEnabled(false);
- }
- return;
- }
-
- if (m_currentURL.host() != oldURL.host()) {
- updateMenu();
- }
-}
-
-void DolphinRemoteEncoding::fillMenu()
-{
- KMenu* menu = m_menu->menu();
- menu->clear();
-
-
- 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);
- m_idDefault = m_encodingDescriptions.size() + 2;
-
- connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(slotItemSelected(QAction*)));
-}
-
-void DolphinRemoteEncoding::updateMenu()
-{
- if (!m_loaded) {
- loadSettings();
- }
-
- // uncheck everything
- for (int i = 0; i < m_menu->menu()->actions().count(); i++) {
- m_menu->menu()->actions().at(i)->setChecked(false);
- }
-
- QString charset = KIO::SlaveConfig::self()->configData(m_currentURL.protocol(),
- m_currentURL.host(), DATA_KEY);
-
- if (!charset.isEmpty()) {
- int id = 0;
- bool isFound = false;
- for (int i = 0; i < m_encodingDescriptions.size(); i++) {
- if (m_encodingDescriptions.at(i).contains(charset)) {
- isFound = true;
- id = i;
- break;
- }
- }
-
- kDebug() << "URL=" << m_currentURL << " charset=" << charset;
-
- if (!isFound) {
- kWarning() << "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()
-{
- if (!m_loaded) {
- loadSettings();
- }
- updateMenu();
-}
-
-void DolphinRemoteEncoding::slotItemSelected(QAction* action)
-{
- if (action != 0) {
- int id = action->data().toInt();
-
- KConfig config(("kio_" + m_currentURL.protocol() + "rc").toLatin1());
- QString host = m_currentURL.host();
- if (m_menu->menu()->actions().at(id)->isChecked()) {
- QString charset = KGlobal::charsets()->encodingForName(m_encodingDescriptions.at(id));
- KConfigGroup cg(&config, host);
- cg.writeEntry(DATA_KEY, charset);
- config.sync();
-
- // Update the io-slaves...
- updateView();
- }
- }
-}
-
-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.protocol() + "rc").toLatin1());
-
- QStringList partList = m_currentURL.host().split('.', QString::SkipEmptyParts);
- if (!partList.isEmpty()) {
- partList.erase(partList.begin());
-
- QStringList domains;
- // Remove the exact name match...
- domains << m_currentURL.host();
-
- while (partList.count()) {
- if (partList.count() == 2) {
- if (partList[0].length() <= 2 && partList[1].length() == 2) {
- break;
- }
- }
-
- if (partList.count() == 1) {
- break;
- }
-
- domains << partList.join(".");
- partList.erase(partList.begin());
- }
-
- for (QStringList::const_iterator it = domains.constBegin(); it != domains.constEnd();++it) {
- kDebug() << "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
- }
- }
- }
- config.sync();
-
- // Update the io-slaves.
- updateView();
-}
-
-void DolphinRemoteEncoding::updateView()
-{
- KIO::Scheduler::emitReparseSlaveConfiguration();
- // Reload the page with the new charset
- m_actionHandler->currentView()->setUrl(m_currentURL);
- m_actionHandler->currentView()->reload();
-}
-
-#include "dolphinremoteencoding.moc"