From: <ck...@us...> - 2008-02-14 23:26:53
|
Revision: 2726 http://krusader.svn.sourceforge.net/krusader/?rev=2726&view=rev Author: ckarai Date: 2008-02-14 15:26:55 -0800 (Thu, 14 Feb 2008) Log Message: ----------- Select Remote Encoding, part I. Modified Paths: -------------- trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.cpp trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.h trunk/krusader_kde4/krusader/Panel/panelfunc.cpp trunk/krusader_kde4/krusader/krusader.cpp trunk/krusader_kde4/krusader/krusader.h Modified: trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.cpp =================================================================== --- trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.cpp 2008-02-14 07:38:39 UTC (rev 2725) +++ trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.cpp 2008-02-14 23:26:55 UTC (rev 2726) @@ -31,9 +31,11 @@ #include "krremoteencodingmenu.h" +#include <kactioncollection.h> #include <kmenu.h> #include <kcharsets.h> #include <kio/slaveconfig.h> +#include <kio/scheduler.h> #include "../krusader.h" #include "../krusaderview.h" @@ -43,10 +45,12 @@ #define DATA_KEY QString::fromLatin1("Charset") -KrRemoteEncodingMenu::KrRemoteEncodingMenu(const QString &text, const QString &icon, QObject *parent) : +KrRemoteEncodingMenu::KrRemoteEncodingMenu(const QString &text, const QString &icon, KActionCollection *parent) : KActionMenu( KIcon( icon, krLoader ), text, parent ), settingsLoaded( false ) { connect(menu(), SIGNAL(aboutToShow()), this, SLOT(slotAboutToShow())); + + parent->addAction("changeremoteencoding", this); } void KrRemoteEncodingMenu::slotAboutToShow() @@ -99,25 +103,6 @@ defaultID = count; } -/* TODO: -int KrRemoteEncodingMenu::plug( QWidget *widget, int index ) -{ - if( widget->inherits( "QMenu" ) ) - { - connect( widget, SIGNAL(aboutToShow()), this, SLOT(slotCheckEnabled())); - slotCheckEnabled(); - } - - return KActionMenu::plug( widget, index ); -} -*/ - -void KrRemoteEncodingMenu::slotCheckEnabled() -{ - KUrl currentURL = ACTIVE_PANEL->virtualPath(); - setEnabled( currentURL.protocol() == "ftp" || currentURL.protocol() == "sftp" || currentURL.protocol() == "fish" ); -} - void KrRemoteEncodingMenu::slotItemSelected(int id) { KUrl currentURL = ACTIVE_PANEL->virtualPath(); @@ -125,17 +110,14 @@ KConfig config(("kio_" + currentURL.protocol() + "rc").toLatin1()); QString host = currentURL.host(); - if (!menu()->isItemChecked(id)) - { - QString charset = KGlobal::charsets()->encodingForName( encodingNames[id - 1] ); + QString charset = KGlobal::charsets()->encodingForName( encodingNames[id - 1] ); - KConfigGroup group( &config, host); - group.writeEntry(DATA_KEY, charset); - config.sync(); + KConfigGroup group( &config, host); + group.writeEntry(DATA_KEY, charset); + config.sync(); - // Update the io-slaves... - updateKIOSlaves(); - } + // Update the io-slaves... + updateKIOSlaves(); } void KrRemoteEncodingMenu::slotReload() @@ -149,39 +131,37 @@ // We have no choice but delete all higher domain level // settings here since it affects what will be matched. - KConfig config(("kio_" + currentURL.protocol() + "rc").toLatin1()); + KConfig config ( ( "kio_" + currentURL.protocol() + "rc" ).toLatin1() ); - QStringList partList = QStringList::split('.', currentURL.host(), false); - if (!partList.isEmpty()) + QStringList partList = currentURL.host().split ( '.', QString::SkipEmptyParts ); + if ( !partList.isEmpty() ) { - partList.remove(partList.begin()); + partList.erase ( partList.begin() ); QStringList domains; // Remove the exact name match... domains << currentURL.host(); - while (partList.count()) + while ( partList.count() ) { - if (partList.count() == 2) - if (partList[0].length() <= 2 && partList[1].length() == 2) + if ( partList.count() == 2 ) + if ( partList[0].length() <= 2 && partList[1].length() == 2 ) break; - if (partList.count() == 1) + if ( partList.count() == 1 ) break; - domains << partList.join("."); - partList.remove(partList.begin()); + domains << partList.join ( "." ); + partList.erase ( partList.begin() ); } - for (QStringList::Iterator it = domains.begin(); it != domains.end(); it++) + for ( QStringList::Iterator it = domains.begin(); it != domains.end(); ++it ) { -// kDebug() << k_funcinfo << "Domain to remove: " << *it << endl; - if (config.hasGroup(*it)) - config.deleteGroup(*it); -#if 0 // TODO: PORTME - else if (config.hasKey(*it)) - KConfigGroup( &config, QString() ).deleteEntry(*it); -#endif + 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(); @@ -192,20 +172,8 @@ void KrRemoteEncodingMenu::updateKIOSlaves() { -#if 0 // TODO: correct KrRemoteEncodingMenu - // Inform running io-slaves about the change... - DCOPClient *client = new DCOPClient(); + KIO::Scheduler::emitReparseSlaveConfiguration(); - if (!client->attach()) - kDebug() << "Can't connect with DCOP server." << endl; - - QByteArray data; - QDataStream stream(data, QIODevice::WriteOnly); - stream << QString(); - client->send("*", "KIO::Scheduler", "reparseSlaveConfiguration(QString)", data); - delete client; -#endif - // Reload the page with the new charset QTimer::singleShot( 500, ACTIVE_FUNC, SLOT( refresh() ) ); } Modified: trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.h =================================================================== --- trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.h 2008-02-14 07:38:39 UTC (rev 2725) +++ trunk/krusader_kde4/krusader/GUI/krremoteencodingmenu.h 2008-02-14 23:26:55 UTC (rev 2726) @@ -38,18 +38,17 @@ #include <kaction.h> #include <kactionmenu.h> +class KActionCollection; + class KrRemoteEncodingMenu: public KActionMenu { Q_OBJECT public: - KrRemoteEncodingMenu (const QString &text, const QString &icon, QObject *parent=0); + KrRemoteEncodingMenu (const QString &text, const QString &icon, KActionCollection *parent=0); -// TODO: virtual int plug( QWidget *widget, int index = -1); - protected slots: void slotAboutToShow(); - void slotCheckEnabled(); void slotItemSelected(int); void slotReload(); Modified: trunk/krusader_kde4/krusader/Panel/panelfunc.cpp =================================================================== --- trunk/krusader_kde4/krusader/Panel/panelfunc.cpp 2008-02-14 07:38:39 UTC (rev 2725) +++ trunk/krusader_kde4/krusader/Panel/panelfunc.cpp 2008-02-14 23:26:55 UTC (rev 2726) @@ -1105,6 +1105,10 @@ //krProperties ->setEnabled( vfsType == vfs::NORMAL || vfsType == vfs::FTP ); // file properties krFTPDiss ->setEnabled( vfsType == vfs::FTP ); // disconnect an FTP session krCreateCS->setEnabled( vfsType == vfs::NORMAL ); + + QString protocol = files()->vfs_getOrigin().protocol(); + krRemoteEncoding->setEnabled( protocol == "ftp" || protocol == "sftp" || protocol == "fish" ); + /* krUnpack->setEnabled(true); // unpack archive krTest->setEnabled(true); // test archive Modified: trunk/krusader_kde4/krusader/krusader.cpp =================================================================== --- trunk/krusader_kde4/krusader/krusader.cpp 2008-02-14 07:38:39 UTC (rev 2725) +++ trunk/krusader_kde4/krusader/krusader.cpp 2008-02-14 23:26:55 UTC (rev 2726) @@ -129,6 +129,7 @@ KAction *Krusader::actFTPConnect = 0; KAction *Krusader::actFTPNewConnect = 0; KAction *Krusader::actFTPDisconnect = 0; +KAction *Krusader::actRemoteEncoding = 0; KAction *Krusader::actProfiles = 0; KAction *Krusader::actMultiRename = 0; KAction *Krusader::actAllFilter = 0; @@ -726,7 +727,7 @@ #endif NEW_KACTION(actManageUseractions, i18n( "Manage User Actions..." ), 0, 0, SLOTS, SLOT( manageUseractions() ), "manage useractions" ); - new KrRemoteEncodingMenu(i18n("Select Remote Charset"), "charset", actionCollection() ); + actRemoteEncoding = new KrRemoteEncodingMenu(i18n("Select Remote Charset"), "charset", actionCollection() ); // setup the Fn keys NEW_KACTION(actF2, i18n( "Start Terminal Here" ), "terminal", Qt::Key_F2, SLOTS, SLOT( terminal() ) , "F2_Terminal" ); Modified: trunk/krusader_kde4/krusader/krusader.h =================================================================== --- trunk/krusader_kde4/krusader/krusader.h 2008-02-14 07:38:39 UTC (rev 2725) +++ trunk/krusader_kde4/krusader/krusader.h 2008-02-14 23:26:55 UTC (rev 2726) @@ -132,7 +132,7 @@ static KAction *actUnselectAll, *actInvert, *actSync, *actDiskUsage, *actSavePosition, *actCompDirs; static KAction *actHomeTerminal, *actFTPConnect, *actFTPNewConnect, *actFTPDisconnect, *actProfiles; static KAction *actExecFilter, *actCustomFilter, *actMountMan, *actNewTool, *actSwapPanels, *actSwapSides; - static KAction *actKonfigurator, *actToolsSetup, *actBack, *actRoot, *actFind, *actDirUp; + static KAction *actKonfigurator, *actToolsSetup, *actBack, *actRoot, *actFind, *actDirUp, *actRemoteEncoding; static KAction *actSelectColorMask, *actMultiRename, *actAllFilter, *actOpenLeftBm, *actOpenRightBm; static KAction *actNewTab, *actDupTab, *actCloseTab, *actPreviousTab, *actNextTab, *actSplit; static KAction *actCombine, *actUserMenu, *actManageUseractions, *actSyncDirs, *actSyncBrowse; @@ -230,6 +230,7 @@ #define krFTPConnect Krusader::App->actFTPConnect // connect to an ftp #define krFTPNew Krusader::App->actFTPNewConnect // create a new connection #define krFTPDiss Krusader::App->actFTPDisconnect // disconnect an FTP session +#define krRemoteEncoding Krusader::App->actRemoteEncoding // remote encoding menu #define krAllFiles Krusader::App->actAllFilter // show all files in list #define krExecFiles Krusader::App->actExecFilter // show only executables #define krCustomFiles Krusader::App->actCustomFilter // show a custom set of files This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |