diff options
Diffstat (limited to 'kio/tests/kioslavetest.cpp')
-rw-r--r-- | kio/tests/kioslavetest.cpp | 555 |
1 files changed, 0 insertions, 555 deletions
diff --git a/kio/tests/kioslavetest.cpp b/kio/tests/kioslavetest.cpp deleted file mode 100644 index 27a99eabc..000000000 --- a/kio/tests/kioslavetest.cpp +++ /dev/null @@ -1,555 +0,0 @@ - /* - This file is or will be part of KDE desktop environment - - Copyright 1999 Matt Koss <koss@miesto.sk> - - It is licensed under GPL version 2. - - If it is part of KDE libraries than this file is licensed under - LGPL version 2. - */ - -#include <tqlayout.h> -#include <tqmessagebox.h> -#include <tqdir.h> - -#include <kacl.h> -#include <kapplication.h> -#include <kcmdlineargs.h> -#include <kdebug.h> -#include <klocale.h> -#include <kurl.h> -#include <kstatusbar.h> -#include <kio/job.h> -#include <kio/scheduler.h> -#include <kprotocolinfo.h> - -#include "kioslavetest.h" - -using namespace TDEIO; - -KioslaveTest::KioslaveTest( TQString src, TQString dest, uint op, uint pr ) - : KMainWindow(0, "") -{ - - job = 0L; - - main_widget = new TQWidget( this, ""); - TQBoxLayout *topLayout = new TQVBoxLayout( main_widget, 10, 5 ); - - TQGridLayout *grid = new TQGridLayout( 2, 2, 10 ); - topLayout->addLayout( grid ); - - grid->setRowStretch(0,1); - grid->setRowStretch(1,1); - - grid->setColStretch(0,1); - grid->setColStretch(1,100); - - lb_from = new TQLabel( "From:", main_widget ); - grid->addWidget( lb_from, 0, 0 ); - - le_source = new TQLineEdit( main_widget ); - grid->addWidget( le_source, 0, 1 ); - le_source->setText( src ); - - lb_to = new TQLabel( "To:", main_widget ); - grid->addWidget( lb_to, 1, 0 ); - - le_dest = new TQLineEdit( main_widget ); - grid->addWidget( le_dest, 1, 1 ); - le_dest->setText( dest ); - - // Operation groupbox & buttons - opButtons = new TQButtonGroup( "Operation", main_widget ); - topLayout->addWidget( opButtons, 10 ); - connect( opButtons, TQT_SIGNAL(clicked(int)), TQT_SLOT(changeOperation(int)) ); - - TQBoxLayout *hbLayout = new TQHBoxLayout( opButtons, 15 ); - - rbList = new TQRadioButton( "List", opButtons ); - opButtons->insert( rbList, List ); - hbLayout->addWidget( rbList, 5 ); - - rbListRecursive = new TQRadioButton( "ListRecursive", opButtons ); - opButtons->insert( rbListRecursive, ListRecursive ); - hbLayout->addWidget( rbListRecursive, 5 ); - - rbStat = new TQRadioButton( "Stat", opButtons ); - opButtons->insert( rbStat, Stat ); - hbLayout->addWidget( rbStat, 5 ); - - rbGet = new TQRadioButton( "Get", opButtons ); - opButtons->insert( rbGet, Get ); - hbLayout->addWidget( rbGet, 5 ); - - rbPut = new TQRadioButton( "Put", opButtons ); - opButtons->insert( rbPut, Put ); - hbLayout->addWidget( rbPut, 5 ); - - rbCopy = new TQRadioButton( "Copy", opButtons ); - opButtons->insert( rbCopy, Copy ); - hbLayout->addWidget( rbCopy, 5 ); - - rbMove = new TQRadioButton( "Move", opButtons ); - opButtons->insert( rbMove, Move ); - hbLayout->addWidget( rbMove, 5 ); - - rbDelete = new TQRadioButton( "Delete", opButtons ); - opButtons->insert( rbDelete, Delete ); - hbLayout->addWidget( rbDelete, 5 ); - - rbShred = new TQRadioButton( "Shred", opButtons ); - opButtons->insert( rbShred, Shred ); - hbLayout->addWidget( rbShred, 5 ); - - rbMkdir = new TQRadioButton( "Mkdir", opButtons ); - opButtons->insert( rbMkdir, Mkdir ); - hbLayout->addWidget( rbMkdir, 5 ); - - rbMimetype = new TQRadioButton( "Mimetype", opButtons ); - opButtons->insert( rbMimetype, Mimetype ); - hbLayout->addWidget( rbMimetype, 5 ); - - opButtons->setButton( op ); - changeOperation( op ); - - // Progress groupbox & buttons - progressButtons = new TQButtonGroup( "Progress dialog mode", main_widget ); - topLayout->addWidget( progressButtons, 10 ); - connect( progressButtons, TQT_SIGNAL(clicked(int)), TQT_SLOT(changeProgressMode(int)) ); - - hbLayout = new TQHBoxLayout( progressButtons, 15 ); - - rbProgressNone = new TQRadioButton( "None", progressButtons ); - progressButtons->insert( rbProgressNone, ProgressNone ); - hbLayout->addWidget( rbProgressNone, 5 ); - - rbProgressDefault = new TQRadioButton( "Default", progressButtons ); - progressButtons->insert( rbProgressDefault, ProgressDefault ); - hbLayout->addWidget( rbProgressDefault, 5 ); - - rbProgressStatus = new TQRadioButton( "Status", progressButtons ); - progressButtons->insert( rbProgressStatus, ProgressStatus ); - hbLayout->addWidget( rbProgressStatus, 5 ); - - progressButtons->setButton( pr ); - changeProgressMode( pr ); - - // statusbar progress widget - statusProgress = new StatusbarProgress( statusBar() ); - statusBar()->addWidget( statusProgress, 0, true ); - - // run & stop butons - hbLayout = new TQHBoxLayout( topLayout, 15 ); - - pbStart = new TQPushButton( "&Start", main_widget ); - pbStart->setFixedSize( pbStart->sizeHint() ); - connect( pbStart, TQT_SIGNAL(clicked()), TQT_SLOT(startJob()) ); - hbLayout->addWidget( pbStart, 5 ); - - pbStop = new TQPushButton( "Sto&p", main_widget ); - pbStop->setFixedSize( pbStop->sizeHint() ); - pbStop->setEnabled( false ); - connect( pbStop, TQT_SIGNAL(clicked()), TQT_SLOT(stopJob()) ); - hbLayout->addWidget( pbStop, 5 ); - - // close button - close = new TQPushButton( "&Close", main_widget ); - close->setFixedSize( close->sizeHint() ); - connect(close, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotQuit())); - - topLayout->addWidget( close, 5 ); - - main_widget->setMinimumSize( main_widget->sizeHint() ); - setCentralWidget( main_widget ); - - slave = 0; -// slave = TDEIO::Scheduler::getConnectedSlave(KURL("ftp://ftp.kde.org")); - TDEIO::Scheduler::connect(TQT_SIGNAL(slaveConnected(TDEIO::Slave*)), - this, TQT_SLOT(slotSlaveConnected())); - TDEIO::Scheduler::connect(TQT_SIGNAL(slaveError(TDEIO::Slave*,int,const TQString&)), - this, TQT_SLOT(slotSlaveError())); -} - - -void KioslaveTest::closeEvent( TQCloseEvent * ){ - slotQuit(); -} - - -void KioslaveTest::slotQuit(){ - if ( job ) { - job->kill( true ); // kill the job quietly - } - if (slave) - TDEIO::Scheduler::disconnectSlave(slave); - kapp->quit(); -} - - -void KioslaveTest::changeOperation( int id ) { - // only two urls for copy and move - bool enab = rbCopy->isChecked() || rbMove->isChecked(); - - le_dest->setEnabled( enab ); - - selectedOperation = id; -} - - -void KioslaveTest::changeProgressMode( int id ) { - progressMode = id; - - if ( progressMode == ProgressStatus ) { - statusBar()->show(); - } else { - statusBar()->hide(); - } -} - - -void KioslaveTest::startJob() { - TQString sCurrent = TQDir::currentDirPath()+"/"; - KURL::encode_string(sCurrent); - TQString sSrc( le_source->text() ); - KURL src( sCurrent, sSrc ); - - if ( !src.isValid() ) { - TQMessageBox::critical(this, "Kioslave Error Message", "Source URL is malformed" ); - return; - } - - TQString sDest( le_dest->text() ); - KURL dest( sCurrent, sDest ); - - if ( !dest.isValid() && - ( selectedOperation == Copy || selectedOperation == Move ) ) { - TQMessageBox::critical(this, "Kioslave Error Message", - "Destination URL is malformed" ); - return; - } - - pbStart->setEnabled( false ); - - bool observe = true; - if (progressMode != ProgressDefault) { - observe = false; - } - - SimpleJob *myJob = 0; - - switch ( selectedOperation ) { - case List: - myJob = TDEIO::listDir( src ); - connect(myJob, TQT_SIGNAL( entries( TDEIO::Job*, const TDEIO::UDSEntryList&)), - TQT_SLOT( slotEntries( TDEIO::Job*, const TDEIO::UDSEntryList&))); - break; - - case ListRecursive: - myJob = TDEIO::listRecursive( src ); - connect(myJob, TQT_SIGNAL( entries( TDEIO::Job*, const TDEIO::UDSEntryList&)), - TQT_SLOT( slotEntries( TDEIO::Job*, const TDEIO::UDSEntryList&))); - break; - - case Stat: - myJob = TDEIO::stat( src, false, 2 ); - break; - - case Get: - myJob = TDEIO::get( src, true ); - connect(myJob, TQT_SIGNAL( data( TDEIO::Job*, const TQByteArray &)), - TQT_SLOT( slotData( TDEIO::Job*, const TQByteArray &))); - break; - - case Put: - putBuffer = 0; - myJob = TDEIO::put( src, -1, true, false); - connect(myJob, TQT_SIGNAL( dataReq( TDEIO::Job*, TQByteArray &)), - TQT_SLOT( slotDataReq( TDEIO::Job*, TQByteArray &))); - break; - - case Copy: - job = TDEIO::copy( src, dest, observe ); - break; - - case Move: - job = TDEIO::move( src, dest, observe ); - break; - - case Delete: - job = TDEIO::del( src, false, observe ); - break; - - case Shred: - job = TDEIO::del(src, true, observe); - break; - - case Mkdir: - myJob = TDEIO::mkdir( src ); - break; - - case Mimetype: - myJob = TDEIO::mimetype( src ); - break; - } - if (myJob) - { - if (slave) - TDEIO::Scheduler::assignJobToSlave(slave, myJob); - job = myJob; - } - - connect( job, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotResult( TDEIO::Job * ) ) ); - - connect( job, TQT_SIGNAL( canceled( TDEIO::Job * ) ), - TQT_SLOT( slotResult( TDEIO::Job * ) ) ); - - if (progressMode == ProgressStatus) { - statusProgress->setJob( job ); - } - - pbStop->setEnabled( true ); -} - - -void KioslaveTest::slotResult( TDEIO::Job * _job ) -{ - if ( _job->error() ) - { - _job->showErrorDialog(); - } - else if ( selectedOperation == Stat ) - { - UDSEntry entry = ((TDEIO::StatJob*)_job)->statResult(); - printUDSEntry( entry ); - } - else if ( selectedOperation == Mimetype ) - { - kdDebug() << "mimetype is " << ((TDEIO::MimetypeJob*)_job)->mimetype() << endl; - } - - if (job == _job) - job = 0L; - pbStart->setEnabled( true ); - pbStop->setEnabled( false ); -} - -void KioslaveTest::slotSlaveConnected() -{ - kdDebug() << "Slave connected." << endl; -} - -void KioslaveTest::slotSlaveError() -{ - kdDebug() << "Error connected." << endl; - slave = 0; -} - -static void printACL( const TQString& acl ) -{ - KACL kacl( acl ); - kdDebug() << "According to KACL: " << endl << kacl.asString() << endl; - kdDebug() << "Owner: " << kacl.ownerPermissions() << endl; - kdDebug() << "Owning group: " << kacl.owningGroupPermissions() << endl; - kdDebug() << "Others: " << kacl.othersPermissions() << endl; -} - - -void KioslaveTest::printUDSEntry( const TDEIO::UDSEntry & entry ) -{ - TDEIO::UDSEntry::ConstIterator it = entry.begin(); - for( ; it != entry.end(); it++ ) { - switch ((*it).m_uds) { - case TDEIO::UDS_FILE_TYPE: - kdDebug() << "File Type : " << (mode_t)((*it).m_long) << endl; - if ( S_ISDIR( (mode_t)((*it).m_long) ) ) - { - kdDebug() << "is a dir" << endl; - } - break; - case TDEIO::UDS_ACCESS: - kdDebug() << "Access permissions : " << (*it).m_long << endl; - break; - case TDEIO::UDS_EXTENDED_ACL: - if( (*it).m_long == 1 ) - kdDebug() << "Has extended ACL information." << endl; - break; - case TDEIO::UDS_ACL_STRING: - kdDebug() << "ACL: " << ( (*it).m_str.ascii() ) << endl; - printACL( (*it).m_str ); - break; - case TDEIO::UDS_DEFAULT_ACL_STRING: - kdDebug() << "Default ACL: " << ( (*it).m_str.ascii() ) << endl; - printACL( (*it).m_str ); - break; - case TDEIO::UDS_USER: - kdDebug() << "User : " << ((*it).m_str.ascii() ) << endl; - break; - case TDEIO::UDS_GROUP: - kdDebug() << "Group : " << ((*it).m_str.ascii() ) << endl; - break; - case TDEIO::UDS_NAME: - kdDebug() << "Name : " << ((*it).m_str.ascii() ) << endl; - //m_strText = decodeFileName( (*it).m_str ); - break; - case TDEIO::UDS_URL: - kdDebug() << "URL : " << ((*it).m_str.ascii() ) << endl; - break; - case TDEIO::UDS_MIME_TYPE: - kdDebug() << "MimeType : " << ((*it).m_str.ascii() ) << endl; - break; - case TDEIO::UDS_LINK_DEST: - kdDebug() << "LinkDest : " << ((*it).m_str.ascii() ) << endl; - break; - case TDEIO::UDS_SIZE: - kdDebug() << "Size: " << TDEIO::convertSize((*it).m_long) << endl; - break; - } - } -} - -void KioslaveTest::slotEntries(TDEIO::Job* job, const TDEIO::UDSEntryList& list) { - - KURL url = static_cast<TDEIO::ListJob*>( job )->url(); - KProtocolInfo::ExtraFieldList extraFields = KProtocolInfo::extraFields(url); - UDSEntryListConstIterator it=list.begin(); - for (; it != list.end(); ++it) { - // For each file... - KProtocolInfo::ExtraFieldList::Iterator extraFieldsIt = extraFields.begin(); - UDSEntry::ConstIterator it2 = (*it).begin(); - for( ; it2 != (*it).end(); it2++ ) { - if ((*it2).m_uds == UDS_NAME) - kdDebug() << "" << ( *it2 ).m_str << endl; - else if ( (*it2).m_uds == UDS_EXTRA) { - Q_ASSERT( extraFieldsIt != extraFields.end() ); - TQString column = (*extraFieldsIt).name; - //TQString type = (*extraFieldsIt).type; - kdDebug() << " Extra data (" << column << ") :" << ( *it2 ).m_str << endl; - ++extraFieldsIt; - } - } - } -} - -void KioslaveTest::slotData(TDEIO::Job*, const TQByteArray &data) -{ - if (data.size() == 0) - { - kdDebug(0) << "Data: <End>" << endl; - } - else - { - kdDebug(0) << "Data: \"" << TQCString(data, data.size()+1) << "\"" << endl; - } -} - -void KioslaveTest::slotDataReq(TDEIO::Job*, TQByteArray &data) -{ - const char *fileDataArray[] = - { - "Hello world\n", - "This is a test file\n", - "You can safely delete it.\n", - "BIG\n", - 0 - }; - const char *fileData = fileDataArray[putBuffer++]; - - if (!fileData) - { - kdDebug(0) << "DataReq: <End>" << endl; - return; - } - if (!strcmp(fileData, "BIG\n")) - data.fill(0, 29*1024*1024); - else - data.duplicate(fileData, strlen(fileData)); - kdDebug(0) << "DataReq: \"" << fileData << "\"" << endl; -} - -void KioslaveTest::stopJob() { - kdDebug() << "KioslaveTest::stopJob()" << endl; - job->kill(); - job = 0L; - - pbStop->setEnabled( false ); - pbStart->setEnabled( true ); -} - -static const char version[] = "v0.0.0 0000"; // :-) -static const char description[] = "Test for kioslaves"; -static KCmdLineOptions options[] = -{ - { "s", 0, 0 }, - { "src <src>", "Source URL", "" }, - { "d", 0, 0 }, - { "dest <dest>", "Destination URL", "" }, - { "o", 0, 0 }, - { "operation <operation>", "Operation (list,listrecursive,stat,get,put,copy,move,del,shred,mkdir)", "copy" }, - { "p", 0, 0 }, - { "progress <progress>", "Progress Type (none,default,status)", "default" }, - KCmdLineLastOption -}; - -int main(int argc, char **argv) { - TDECmdLineArgs::init( argc, argv, "kioslavetest", description, version ); - TDECmdLineArgs::addCmdLineOptions( options ); - TDEApplication app; - - TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); - - TQString src = args->getOption("src"); - TQString dest = args->getOption("dest"); - - uint op = 0; - uint pr = 0; - - TQString tmps; - - tmps = args->getOption("operation"); - if ( tmps == "list") { - op = KioslaveTest::List; - } else if ( tmps == "listrecursive") { - op = KioslaveTest::ListRecursive; - } else if ( tmps == "stat") { - op = KioslaveTest::Stat; - } else if ( tmps == "get") { - op = KioslaveTest::Get; - } else if ( tmps == "put") { - op = KioslaveTest::Put; - } else if ( tmps == "copy") { - op = KioslaveTest::Copy; - } else if ( tmps == "move") { - op = KioslaveTest::Move; - } else if ( tmps == "del") { - op = KioslaveTest::Delete; - } else if ( tmps == "shred") { - op = KioslaveTest::Shred; - } else if ( tmps == "mkdir") { - op = KioslaveTest::Mkdir; - } else TDECmdLineArgs::usage("unknown operation"); - - tmps = args->getOption("progress"); - if ( tmps == "none") { - pr = KioslaveTest::ProgressNone; - } else if ( tmps == "default") { - pr = KioslaveTest::ProgressDefault; - } else if ( tmps == "status") { - pr = KioslaveTest::ProgressStatus; - } else TDECmdLineArgs::usage("unknown progress mode"); - - args->clear(); // Free up memory - - KioslaveTest test( src, dest, op, pr ); - test.show(); - // Bug in KTMW / Qt / layouts ? - test.resize( test.sizeHint() ); - - app.setMainWidget(&test); - app.exec(); -} - - -#include "kioslavetest.moc" |