-rw-r--r-- | noncore/apps/advancedfm/advancedfm.cpp | 245 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.h | 16 |
2 files changed, 155 insertions, 106 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp index f32031b..869a433 100644 --- a/noncore/apps/advancedfm/advancedfm.cpp +++ b/noncore/apps/advancedfm/advancedfm.cpp @@ -73,2 +73,3 @@ AdvancedFm::AdvancedFm( ) setCaption( tr( "AdvancedFm" ) ); +// menuTimer( this ); @@ -146,4 +147,21 @@ AdvancedFm::AdvancedFm( ) + + currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" ); + currentPathCombo->setEditable(TRUE); + layout->addMultiCellWidget( currentPathCombo, 1, 1, 0, 7); + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); + + connect( currentPathCombo, SIGNAL( activated( const QString & ) ), + this, SLOT( currentPathComboActivated( const QString & ) ) ); + + connect( currentPathCombo->lineEdit(),SIGNAL(returnPressed()), + this,SLOT(currentPathComboChanged())); + + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); + + layout->addMultiCellWidget( currentPathCombo, 1, 1, 0, 7); + + TabWidget = new QTabWidget( this, "TabWidget" ); - layout->addMultiCellWidget( TabWidget, 1, 1, 0, 7); + layout->addMultiCellWidget( TabWidget, 2, 2, 0, 7); @@ -167,2 +185,4 @@ AdvancedFm::AdvancedFm( ) + + tabLayout->addWidget( Local_View, 0, 0 ); @@ -173,2 +193,3 @@ AdvancedFm::AdvancedFm( ) this,SLOT( localListPressed(int, QListViewItem *, const QPoint&, int)) ); + connect( Local_View, SIGNAL( selectionChanged() ), SLOT( cancelMenuTimer() ) ); @@ -197,2 +218,3 @@ AdvancedFm::AdvancedFm( ) this,SLOT( remoteListPressed(int, QListViewItem *, const QPoint&, int)) ); + connect( Remote_View, SIGNAL( selectionChanged() ), SLOT( cancelMenuTimer() ) ); @@ -223,16 +245,2 @@ AdvancedFm::AdvancedFm( ) b = TRUE; - currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" ); - currentPathCombo->setEditable(TRUE); - layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 7); - currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); - - connect( currentPathCombo, SIGNAL( activated( const QString & ) ), - this, SLOT( currentPathComboActivated( const QString & ) ) ); - - connect( currentPathCombo->lineEdit(),SIGNAL(returnPressed()), - this,SLOT(currentPathComboChanged())); - - currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); - - layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 7); @@ -240,2 +248,5 @@ AdvancedFm::AdvancedFm( ) b=FALSE; + + connect( &menuTimer, SIGNAL( timeout() ), SLOT( showFileMenu() ) ); + populateLocalView(); @@ -643,4 +654,3 @@ void AdvancedFm::localListPressed( int mouse, QListViewItem *item, const QPoint case 2: - showLocalMenu(item); - Local_View->clearSelection(); + menuTimer.start( 500, TRUE ); break; @@ -651,2 +661,3 @@ void AdvancedFm::remoteListPressed( int mouse, QListViewItem *item, const QPoint { + switch (mouse) { @@ -655,4 +666,3 @@ void AdvancedFm::remoteListPressed( int mouse, QListViewItem *item, const QPoint case 2: - showRemoteMenu(item); - Remote_View->clearSelection(); + menuTimer.start( 500, TRUE ); break; @@ -661,80 +671,2 @@ void AdvancedFm::remoteListPressed( int mouse, QListViewItem *item, const QPoint -void AdvancedFm::showLocalMenu(QListViewItem * item) -{ - if(item) { - QPopupMenu m; - m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() )); - m.insertSeparator(); - if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1) - m.insertItem( tr( "Change Directory" ), this, SLOT( doLocalCd() )); - else - m.insertItem( tr( "Open / Execute" ), this, SLOT( runThis() )); - 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() )); - m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); - m.insertItem( tr( "Move" ), this, SLOT( move() )); - m.insertSeparator(); - m.insertItem( tr( "Rescan" ), this, SLOT( populateLocalView() )); - m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); - m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); - m.insertSeparator(); - m.insertItem( tr( "Delete" ), this, SLOT( localDelete() )); - m.insertSeparator(); - m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); - if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) //bad hack for Sharp zaurus failings - m.insertItem( tr( "Properties" ), this, SLOT( doProperties() )); - m.setCheckable(TRUE); - if (!b) - m.setItemChecked(m.idAt(0),TRUE); - else - m.setItemChecked(m.idAt(0),FALSE); - if(Ir::supported()) - m.insertItem( tr( "Beam File" ), this, SLOT( doBeam() )); - m.exec( QCursor::pos() ); - } -} - -void AdvancedFm::showRemoteMenu(QListViewItem * item) -{ - if(item) { - QPopupMenu m; - m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showRemoteHidden() )); - m.insertSeparator(); - if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1) - m.insertItem( tr( "Change Directory" ), this, SLOT( doRemoteCd() )); - else - m.insertItem( tr( "Open / Execute" ), this, SLOT( runThis() )); - 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() )); - m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); - m.insertItem( tr( "Move" ), this, SLOT( move() )); - m.insertSeparator(); - m.insertItem( tr( "Rescan" ), this, SLOT( populateRemoteView() )); - m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); - m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); - m.insertSeparator(); - m.insertItem( tr( "Delete" ), this, SLOT( remoteDelete() )); - m.insertSeparator(); - m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); - if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) //bad hack for Sharp zaurus failings - m.insertItem( tr( "Properties" ), this, SLOT( doProperties() )); - m.setCheckable(TRUE); - if (!b) - m.setItemChecked(m.idAt(0),TRUE); - else - m.setItemChecked(m.idAt(0),FALSE); - if(Ir::supported()) - m.insertItem( tr( "Beam File" ), this, SLOT( doBeam() )); - m.exec( QCursor::pos() ); - } -} - void AdvancedFm::runThis() { @@ -744,2 +676,3 @@ QString fs; QString curFile = Local_View->currentItem()->text(0); + if(curFile != "../") { @@ -765,2 +698,3 @@ QString fs; } + } // MimeType mt( curFile); @@ -768,2 +702,4 @@ QString fs; QString curFile = Remote_View->currentItem()->text(0); + if(curFile != "../") { + fs= getFileSystemType((const QString &) currentRemoteDir.canonicalPath()); @@ -787,2 +723,3 @@ QString fs; } + } // MimeType mt( curFile); @@ -794,2 +731,3 @@ void AdvancedFm::runText() { QString curFile = Local_View->currentItem()->text(0); + if(curFile != "../") { curFile = currentDir.canonicalPath()+"/"+curFile; @@ -797,4 +735,6 @@ void AdvancedFm::runText() { e << curFile; + } } else { QString curFile = Remote_View->currentItem()->text(0); + if(curFile != "../") { curFile = currentRemoteDir.canonicalPath()+"/"+curFile; @@ -805,2 +745,3 @@ void AdvancedFm::runText() { } +} @@ -833,2 +774,3 @@ void AdvancedFm::localDelete() QStringList curFileList = getPath(); + if(curFileList.count() > 0) { QString myFile; @@ -877,2 +819,3 @@ void AdvancedFm::localDelete() } +} @@ -881,2 +824,3 @@ void AdvancedFm::remoteDelete() QStringList curFileList = getPath(); + if( curFileList.count() > 0) { QString myFile; @@ -925,2 +869,3 @@ void AdvancedFm::remoteDelete() } +} @@ -929,2 +874,4 @@ void AdvancedFm::localRename() QString curFile = Local_View->currentItem()->text(0); + qDebug("currentItem "+curFile); + if( curFile !="../") { InputDialog *fileDlg; @@ -941,2 +888,3 @@ void AdvancedFm::localRename() } +} @@ -944,3 +892,4 @@ void AdvancedFm::remoteRename() { - QString curFile = Local_View->currentItem()->text(0); + QString curFile = Remote_View->currentItem()->text(0); + if( curFile !="../") { InputDialog *fileDlg; @@ -957,2 +906,3 @@ void AdvancedFm::remoteRename() } +} @@ -1057,4 +1007,2 @@ void AdvancedFm::filePerms() { } - - } @@ -1065,3 +1013,2 @@ void AdvancedFm::doProperties() { if (TabWidget->currentPageIndex() == 0) { - filePath = currentDir.canonicalPath()+"/"; @@ -1186,2 +1133,3 @@ void AdvancedFm::copy() QStringList curFileList = getPath(); + if( curFileList.count() > 0) { QString curFile; @@ -1230,2 +1178,3 @@ void AdvancedFm::copy() } +} @@ -1234,2 +1183,3 @@ void AdvancedFm::copyAs() QStringList curFileList = getPath(); + if( curFileList.count() > 0) { QString curFile; @@ -1288,2 +1238,3 @@ void AdvancedFm::copyAs() } +} @@ -1292,2 +1243,3 @@ void AdvancedFm::move() { QStringList curFileList = getPath(); + if( curFileList.count() > 0) { QString curFile; @@ -1344,2 +1296,3 @@ void AdvancedFm::move() { } + } @@ -1576,2 +1529,3 @@ void AdvancedFm::mkSym() { QStringList curFileList = getPath(); + if( curFileList.count() > 0) { @@ -1606,2 +1560,3 @@ void AdvancedFm::mkSym() { } +} @@ -1670,2 +1625,3 @@ void AdvancedFm::doBeam() { QStringList curFileList = getPath(); + if( curFileList.count() > 0) { @@ -1695,2 +1651,4 @@ void AdvancedFm::doBeam() { +} + void AdvancedFm::fileBeamFinished( Ir *ir) { @@ -1710 +1668,86 @@ void AdvancedFm::fileBeamFinished( Ir *ir) { // } + +void AdvancedFm::showFileMenu() { + QString curApp; + bool isLocalView = false; + if (TabWidget->currentPageIndex() == 0) { + isLocalView = TRUE; + curApp = Local_View->currentItem()->text(0); + } else { + curApp = Remote_View->currentItem()->text(0); + } + + MimeType mt( curApp ); + const AppLnk* app = mt.application(); + QFile fi(curApp); + + QPopupMenu m; + m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() )); + m.insertSeparator(); + if ( QFileInfo(fi).isDir() ) { + m.insertItem( tr( "Change Directory" ), this, SLOT( doLocalCd() )); + } else { + + if ( app ) + m.insertItem( app->pixmap(), tr( "Open in " + app->name() ), this, SLOT( run() ) ); + else if( QFileInfo(fi).isExecutable() ) + m.insertItem( tr( "Execute" ), this, SLOT( run() ) ); + + m.insertItem( /*Resource::loadPixmap( "txt" ),*/ tr( "Open as text" ),this, SLOT( runText() ) ); + } + m.insertSeparator(); + + + if(isLocalView) + m.insertItem( tr( "Make Directory" ), this, SLOT( localMakDir() )); + else + m.insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() )); + + m.insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() )); + m.insertSeparator(); + + if(isLocalView) + m.insertItem( tr( "Rename" ), this, SLOT( localRename() )); + else + m.insertItem( tr( "Rename" ), this, SLOT( remoteRename() )); + + m.insertItem( tr( "Copy" ), this, SLOT( copy() )); + m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); + m.insertItem( tr( "Move" ), this, SLOT( move() )); + m.insertSeparator(); + + if(isLocalView) + m.insertItem( tr( "Rescan" ), this, SLOT( populateLocalView() )); + else + m.insertItem( tr( "Rescan" ), this, SLOT( populateRemoteView() )); + + m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); + m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); + m.insertSeparator(); + + if(isLocalView) + m.insertItem( tr( "Delete" ), this, SLOT( localDelete() )); + else + m.insertItem( tr( "Delete" ), this, SLOT( remoteDelete() )); + + m.insertSeparator(); + m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); + if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) //bad hack for Sharp zaurus failings + m.insertItem( tr( "Properties" ), this, SLOT( doProperties() )); + m.setCheckable(TRUE); + if (!b) + m.setItemChecked(m.idAt(0),TRUE); + else + m.setItemChecked(m.idAt(0),FALSE); + if(Ir::supported()) + m.insertItem( tr( "Beam File" ), this, SLOT( doBeam() )); + m.exec( QCursor::pos() ); +} + + +void AdvancedFm::cancelMenuTimer() +{ +qDebug("cancel menu timer"); + if( menuTimer.isActive() ) + menuTimer.stop(); +} diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h index 5817fca..0cf94c6 100644 --- a/noncore/apps/advancedfm/advancedfm.h +++ b/noncore/apps/advancedfm/advancedfm.h @@ -14,2 +14,4 @@ +#include <qpe/ir.h> + #include <qvariant.h> @@ -17,2 +19,3 @@ #include <qmainwindow.h> +#include <qstringlist.h> #include <qdir.h> @@ -20,4 +23,3 @@ #include <qpoint.h> -#include <qstringlist.h> -#include <qpe/ir.h> +#include <qtimer.h> @@ -41,2 +43,3 @@ class QLineEdit; class QPushButton; +class Ir; @@ -64,4 +67,2 @@ public: protected slots: - void showLocalMenu( QListViewItem *); - void showRemoteMenu( QListViewItem *); void doLocalCd(); @@ -106,2 +107,3 @@ protected: QStringList remoteDirPathStringList, localDirPathStringList; + void keyReleaseEvent( QKeyEvent *); @@ -111,2 +113,4 @@ protected: protected slots: + void showFileMenu(); + void cancelMenuTimer(); void homeButtonPushed(); @@ -127,3 +131,5 @@ protected slots: void doBeam(); - void fileBeamFinished( Ir *ir); + void fileBeamFinished( Ir *); +private: + QTimer menuTimer; }; |