author | llornkcor <llornkcor> | 2002-04-27 22:47:48 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-04-27 22:47:48 (UTC) |
commit | 8e3c0aa915801b862f97ba7a7598ef5f3bd350aa (patch) (side-by-side diff) | |
tree | 6fed799512ebdcd4c78a56097c49d354de648690 | |
parent | 392596c06dedf8ddaea7c55745460e631073d15a (diff) | |
download | opie-8e3c0aa915801b862f97ba7a7598ef5f3bd350aa.zip opie-8e3c0aa915801b862f97ba7a7598ef5f3bd350aa.tar.gz opie-8e3c0aa915801b862f97ba7a7598ef5f3bd350aa.tar.bz2 |
fixed some bugs, added multi select, added symlink handling and keyboard shortcuts, but listview steals the event to move selection according to alpha. delete works
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.cpp | 267 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.h | 6 |
2 files changed, 230 insertions, 43 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp index 5f47b9b..bb932c5 100644 --- a/noncore/apps/advancedfm/advancedfm.cpp +++ b/noncore/apps/advancedfm/advancedfm.cpp @@ -151,6 +151,7 @@ AdvancedFm::AdvancedFm( ) Local_View->setColumnAlignment(2,QListView::AlignRight); Local_View->setAllColumnsShowFocus(TRUE); -// Local_View->setMultiSelection( TRUE ); -// Local_View->setSelectionMode(QListView::Extended); + Local_View->setMultiSelection( TRUE ); + Local_View->setSelectionMode(QListView::Extended); + QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); @@ -176,6 +177,7 @@ AdvancedFm::AdvancedFm( ) Remote_View->setColumnAlignment(2,QListView::AlignRight); Remote_View->setAllColumnsShowFocus(TRUE); -// Remote_View->setMultiSelection( TRUE ); -// Remote_View->setSelectionMode(QListView::Extended); + Remote_View->setMultiSelection( TRUE ); + Remote_View->setSelectionMode(QListView::Extended); + QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold); @@ -370,4 +372,5 @@ void AdvancedFm::populateLocalView() } + void AdvancedFm::populateRemoteView() { @@ -565,15 +568,18 @@ void AdvancedFm::showHidden() if (b) { currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); + fileMenu->setItemChecked( fileMenu->idAt(0),TRUE); // localMenu->setItemChecked(localMenu->idAt(0),TRUE); // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); - b=TRUE; + b=FALSE; } else { currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); + fileMenu->setItemChecked( fileMenu->idAt(0),FALSE); // localMenu->setItemChecked(localMenu->idAt(0),FALSE); // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); - b=FALSE; + b=TRUE; } populateLocalView(); + } @@ -631,4 +637,6 @@ void AdvancedFm::showLocalMenu(QListViewItem * item) m.insertItem( tr( "Open as Text" ), this, SLOT( runText() )); m.insertItem( tr( "Make Directory" ), this, SLOT( localMakDir() )); + m.insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() )); + m.insertSeparator(); m.insertItem( tr( "Rename" ), this, SLOT( localRename() )); m.insertItem( tr( "Copy" ), this, SLOT( copy() )); @@ -664,4 +672,6 @@ void AdvancedFm::showRemoteMenu(QListViewItem * item) m.insertItem( tr( "Open as Text" ), this, SLOT( runText() )); m.insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() )); + m.insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() )); + m.insertSeparator(); m.insertItem( tr( "Rename" ), this, SLOT( remoteRename() )); m.insertItem( tr( "Copy" ), this, SLOT( copy() )); @@ -753,11 +763,17 @@ void AdvancedFm::remoteMakDir() void AdvancedFm::localDelete() { - QString f = Local_View->currentItem()->text(0); - if(QDir(f).exists() ) { - switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ - tr(" ?\nIt must be empty"),tr("Yes"),tr("No"),0,0,1) ) { + QStringList curFileList = getPath(); + QString myFile; + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + myFile = (*it); + if( myFile.find(" -> ",0,TRUE) != -1) + myFile = myFile.left( myFile.find(" -> ",0,TRUE)); + + QString f = currentDir.canonicalPath()+"/"+myFile; + if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+" ?" + ,tr("Yes"),tr("No"),0,0,1) ) { case 0: { - f=currentDir.canonicalPath()+"/"+f; - QString cmd="rmdir "+f; + QString cmd="rmdir -rf "+f; system( cmd.latin1()); populateLocalView(); @@ -773,7 +789,8 @@ void AdvancedFm::localDelete() +" ?",tr("Yes"),tr("No"),0,0,1) ) { case 0: { - f=currentDir.canonicalPath()+"/"+f; QString cmd="rm "+f; - system( cmd.latin1()); + QFile file(f); + file.remove(); +// system( cmd.latin1()); populateLocalView(); } @@ -784,15 +801,23 @@ void AdvancedFm::localDelete() }; } + + } } void AdvancedFm::remoteDelete() { - QString f = Remote_View->currentItem()->text(0); - if(QDir(f).exists() ) { - switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ - tr(" ?\nIt must be empty"),tr("Yes"),tr("No"),0,0,1) ) { + QStringList curFileList = getPath(); + QString myFile; + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + myFile = (*it); + if(myFile.find(" -> ",0,TRUE) != -1) + myFile = myFile.left(myFile.find(" -> ",0,TRUE)); + QString f = currentRemoteDir.canonicalPath()+"/"+myFile; + if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+" ?", + tr("Yes"),tr("No"),0,0,1) ) { case 0: { - f = currentRemoteDir.canonicalPath()+"/"+f; - QString cmd="rmdir "+f; + QString cmd="rmdir -rf "+f; system( cmd.latin1()); populateRemoteView(); @@ -808,7 +833,8 @@ void AdvancedFm::remoteDelete() +" ?",tr("Yes"),tr("No"),0,0,1) ) { case 0: { - f = currentRemoteDir.canonicalPath()+"/"+f; QString cmd="rm "+f; - system( cmd.latin1()); + QFile file(f); + file.remove(); +// system( cmd.latin1()); populateRemoteView(); } @@ -820,4 +846,5 @@ void AdvancedFm::remoteDelete() } } +} void AdvancedFm::localRename() @@ -856,4 +883,5 @@ void AdvancedFm::switchToLocalTab() { TabWidget->setCurrentPage(0); + Local_View->setFocus(); } @@ -861,4 +889,5 @@ void AdvancedFm::switchToRemoteTab() { TabWidget->setCurrentPage(1); + Remote_View->setFocus(); } @@ -927,7 +956,17 @@ void AdvancedFm::currentPathComboActivated(const QString & currentPath) { void AdvancedFm::filePerms() { - QString curFile = getPath(); + + QStringList curFileList = getPath(); + QString filePath; + + if (TabWidget->currentPageIndex() == 0) { + filePath = currentDir.canonicalPath()+"/"; + } else { + filePath= currentRemoteDir.canonicalPath()+"/"; + } + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { filePermissions *filePerm; - filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(curFile)); + filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it)); filePerm->showMaximized(); filePerm->exec(); @@ -935,8 +974,16 @@ void AdvancedFm::filePerms() { delete filePerm; } +} void AdvancedFm::doProperties() { - - DocLnk lnk( getPath()); + QStringList curFileList = getPath(); + QString filePath; + if (TabWidget->currentPageIndex() == 0) { + filePath = currentDir.canonicalPath()+"/"; + } else { + filePath= currentRemoteDir.canonicalPath()+"/"; + } + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + DocLnk lnk( (filePath+*it)); LnkProperties prop( &lnk ); // connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); @@ -944,12 +991,29 @@ void AdvancedFm::doProperties() { prop.exec(); } +} -QString AdvancedFm::getPath() { +QStringList AdvancedFm::getPath() { + QStringList strList; if (TabWidget->currentPageIndex() == 0) { - return currentDir.canonicalPath()+"/"+ Local_View->currentItem()->text(0); + QList<QListViewItem> * getSelectedItems( QListView * Local_View ); + QListViewItemIterator it( Local_View ); + for ( ; it.current(); ++it ) { + if ( it.current()->isSelected() ) { + strList << it.current()->text(0); + } + } + return strList; } else { - return currentRemoteDir.canonicalPath() + "/"+Remote_View->currentItem()->text(0); + QList<QListViewItem> * getSelectedItems( QListView * Remote_View ); + QListViewItemIterator it( Remote_View ); + for ( ; it.current(); ++it ) { + if ( it.current()->isSelected() ) { + strList << currentDir.canonicalPath()+"/"+ it.current()->text(0); } } + return strList; + } + return ""; +} void AdvancedFm::homeButtonPushed() { @@ -1033,7 +1097,11 @@ void AdvancedFm::upDir() void AdvancedFm::copy() { - QString curFile = getPath(); + QStringList curFileList = getPath(); + QString curFile; if (TabWidget->currentPageIndex() == 0) { - QString destFile = currentRemoteDir.canonicalPath()+"/"+Local_View->currentItem()->text(0); + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + + QString destFile = currentRemoteDir.canonicalPath()+"/"+(*it); + curFile = currentDir.canonicalPath()+"/"+(*it); QFile f(destFile); if( f.exists()) @@ -1041,8 +1109,13 @@ void AdvancedFm::copy() if(!copyFile(destFile, curFile) ) qWarning("nothin doing"); + } populateRemoteView(); TabWidget->setCurrentPage(1); + } else { - QString destFile = currentDir.canonicalPath()+"/"+Remote_View->currentItem()->text(0); + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + + QString destFile = currentDir.canonicalPath()+"/"+(*it); + curFile = currentRemoteDir.canonicalPath()+"/"+(*it); QFile f(destFile); if( f.exists()) @@ -1050,4 +1123,5 @@ void AdvancedFm::copy() if(!copyFile(destFile, curFile) ) qWarning("nothin doing"); + } populateLocalView(); TabWidget->setCurrentPage(0); @@ -1057,9 +1131,15 @@ void AdvancedFm::copy() void AdvancedFm::copyAs() { - QString curFile = getPath(); - if (TabWidget->currentPageIndex() == 0) { - QString destFile = Local_View->currentItem()->text(0); + QStringList curFileList = getPath(); + QString curFile; InputDialog *fileDlg; fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); + + if (TabWidget->currentPageIndex() == 0) { + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + QString destFile = *it; + curFile = currentDir.canonicalPath()+"/"+(*it); +// InputDialog *fileDlg; +// fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); fileDlg->setInputText((const QString &) destFile ); fileDlg->exec(); @@ -1074,10 +1154,14 @@ void AdvancedFm::copyAs() qWarning("nothin doing"); } + } + populateRemoteView(); TabWidget->setCurrentPage(1); } else { - QString destFile = Remote_View->currentItem()->text(0); - InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); + if (TabWidget->currentPageIndex() == 0) { + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + + curFile = currentDir.canonicalPath()+"/"+(*it); + QString destFile = *it; fileDlg->setInputText((const QString &) destFile); fileDlg->exec(); @@ -1092,15 +1176,22 @@ void AdvancedFm::copyAs() qWarning("nothin doing"); } + } populateLocalView(); TabWidget->setCurrentPage(0); } } +} void AdvancedFm::move() { - QString curFile = getPath(); + + QStringList curFileList = getPath(); + QString curFile; // qDebug(curFile); QString destFile; + if (TabWidget->currentPageIndex() == 0) { - QString destFile = currentRemoteDir.canonicalPath() + "/" + Local_View->currentItem()->text(0); + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + QString destFile = currentRemoteDir.canonicalPath() + "/" + *it; + curFile = currentDir.canonicalPath()+"/"+(*it); qDebug("Destination file is "+destFile); @@ -1113,8 +1204,11 @@ void AdvancedFm::move() { } QFile::remove(curFile); + } TabWidget->setCurrentPage(1); } else { - QString destFile = currentDir.canonicalPath() + "/" + Remote_View->currentItem()->text(0); + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + QString destFile = currentRemoteDir.canonicalPath() + "/" + *it; qDebug("Destination file is "+destFile); + curFile = currentDir.canonicalPath()+"/"+(*it); QFile f(destFile); @@ -1128,4 +1222,5 @@ void AdvancedFm::move() { TabWidget->setCurrentPage(0); } + } populateRemoteView(); populateLocalView(); @@ -1294,2 +1389,92 @@ void AdvancedFm::doAbout() { "and is licensed by the GPL"); } + +void AdvancedFm::keyReleaseEvent( QKeyEvent *e) +{ + switch ( e->key() ) { + case Key_Delete: + del(); + break; + case Key_H: + showHidden(); + break; + case Key_E: + runThis(); + break; + case Key_C: + copy(); + break; + case Key_A: + copyAs(); + break; + case Key_M: + move(); + break; + case Key_R: + rn(); + break; + case Key_I: + fileStatus(); + break; + case Key_U: + upDir(); + break; + case Key_P: + filePerms(); + break; + case Key_N: + mkDir(); + break; + case Key_1: + switchToLocalTab(); + break; + case Key_2: + switchToRemoteTab(); + break; + case Key_3: + CFButtonPushed(); + break; + case Key_4: + SDButtonPushed(); + break; + case Key_5: + homeButtonPushed(); + break; + case Key_6: + docButtonPushed(); + break; + case Key_7: + break; + case Key_8: + break; + case Key_9: + break; + case Key_0: + break; + + + + } + +} + +void AdvancedFm::mkSym() { + QString cmd; + if (TabWidget->currentPageIndex() == 0) { + QString curFile = Local_View->currentItem()->text(0); + if(curFile.right(1) == "/") curFile = curFile.left(curFile.length() - 1); + QString destName = currentRemoteDir.canonicalPath()+"/"+curFile; + curFile = currentDir.canonicalPath()+"/"+curFile; + cmd = "ln -s "+curFile+" "+destName; + system(cmd.latin1() ); + populateRemoteView(); + } else { + QString curFile = Remote_View->currentItem()->text(0); + if(curFile.right(1) == "/") curFile = curFile.left(curFile.length() - 1); + QString destName = currentDir.canonicalPath()+"/"+curFile; + curFile = currentRemoteDir.canonicalPath()+"/"+curFile; + cmd = "ln -s "+curFile+" "+destName; + system(cmd.latin1() ); + populateLocalView(); + } +} diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h index a5f26a7..c00713f 100644 --- a/noncore/apps/advancedfm/advancedfm.h +++ b/noncore/apps/advancedfm/advancedfm.h @@ -19,4 +19,5 @@ #include <qstring.h> #include <qpoint.h> +#include <qstringlist.h> class QVBoxLayout; @@ -94,5 +95,6 @@ protected slots: void runCommand(); void runCommandStd(); - QString getPath(); + QStringList getPath(); + void mkSym(); void switchToLocalTab(); void switchToRemoteTab(); @@ -101,5 +103,5 @@ protected: QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3; QStringList remoteDirPathStringList, localDirPathStringList; - + void keyReleaseEvent( QKeyEvent *); protected slots: void homeButtonPushed(); |