-rw-r--r-- | noncore/apps/advancedfm/advancedfm.cpp | 609 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.h | 16 |
2 files changed, 337 insertions, 288 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 @@ -72,4 +72,5 @@ AdvancedFm::AdvancedFm( ) { setCaption( tr( "AdvancedFm" ) ); +// menuTimer( this ); QGridLayout *layout = new QGridLayout( this ); @@ -145,6 +146,23 @@ AdvancedFm::AdvancedFm( ) viewMenu->setCheckable(TRUE); + + 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); tab = new QWidget( TabWidget, "tab" ); @@ -166,4 +184,6 @@ AdvancedFm::AdvancedFm( ) QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); + + tabLayout->addWidget( Local_View, 0, 0 ); @@ -172,4 +192,5 @@ AdvancedFm::AdvancedFm( ) connect( Local_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), this,SLOT( localListPressed(int, QListViewItem *, const QPoint&, int)) ); + connect( Local_View, SIGNAL( selectionChanged() ), SLOT( cancelMenuTimer() ) ); TabWidget->insertTab( tab, tr("1")); @@ -196,4 +217,5 @@ AdvancedFm::AdvancedFm( ) connect( Remote_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), this,SLOT( remoteListPressed(int, QListViewItem *, const QPoint&, int)) ); + connect( Remote_View, SIGNAL( selectionChanged() ), SLOT( cancelMenuTimer() ) ); tabLayout_2->addWidget( Remote_View, 0, 0 ); @@ -222,21 +244,10 @@ 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); filterStr="*"; b=FALSE; + + connect( &menuTimer, SIGNAL( timeout() ), SLOT( showFileMenu() ) ); + populateLocalView(); populateRemoteView(); @@ -537,8 +548,8 @@ void AdvancedFm::localListClicked(QListViewItem *selectedItem) strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); if( QFile::exists(strItem ) ) { - qDebug("clicked item "+strItem); - DocLnk doc( strItem, FALSE ); - doc.execute(); - // Local_View->clearSelection(); + qDebug("clicked item "+strItem); + DocLnk doc( strItem, FALSE ); + doc.execute(); + // Local_View->clearSelection(); } } //end not symlink @@ -578,8 +589,8 @@ void AdvancedFm::remoteListClicked(QListViewItem *selectedItem) strItem=QDir::cleanDirPath( currentRemoteDir.canonicalPath()+"/"+strItem); if( QFile::exists(strItem ) ) { - qDebug("clicked item "+strItem); - DocLnk doc( strItem, FALSE ); - doc.execute(); - // Remote_View->clearSelection(); + qDebug("clicked item "+strItem); + DocLnk doc( strItem, FALSE ); + doc.execute(); + // Remote_View->clearSelection(); } } //end not symlink @@ -638,152 +649,78 @@ void AdvancedFm::showRemoteHidden() void AdvancedFm::localListPressed( int mouse, QListViewItem *item, const QPoint &point, int i) { - switch (mouse) { - case 1: - break; - case 2: - showLocalMenu(item); - Local_View->clearSelection(); - break; - }; + switch (mouse) { + case 1: + break; + case 2: + menuTimer.start( 500, TRUE ); + break; + }; } void AdvancedFm::remoteListPressed( int mouse, QListViewItem *item, const QPoint &point, int i) { - switch (mouse) { - case 1: - break; - case 2: - showRemoteMenu(item); - Remote_View->clearSelection(); - break; - }; -} - -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() ); - } + switch (mouse) { + case 1: + break; + case 2: + menuTimer.start( 500, TRUE ); + break; + }; } void AdvancedFm::runThis() { // QFileInfo *fi; -QString fs; + QString fs; if (TabWidget->currentPageIndex() == 0) { QString curFile = Local_View->currentItem()->text(0); - - fs= getFileSystemType((const QString &) currentDir.canonicalPath()); - QFileInfo fileInfo( currentDir.canonicalPath()+"/"+curFile); - qDebug( fileInfo.owner()); - if( (fileInfo.permission( QFileInfo::ExeUser) - | fileInfo.permission( QFileInfo::ExeGroup) - | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { - | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { + if(curFile != "../") { + + fs= getFileSystemType((const QString &) currentDir.canonicalPath()); + QFileInfo fileInfo( currentDir.canonicalPath()+"/"+curFile); + qDebug( fileInfo.owner()); + if( (fileInfo.permission( QFileInfo::ExeUser) + | fileInfo.permission( QFileInfo::ExeGroup) + | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { + | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { // if( fileInfo.isExecutable() | - QCopEnvelope e("QPE/System", "execute(QString)" ); - e << curFile; - } else { - curFile = currentDir.canonicalPath()+"/"+curFile; - DocLnk nf(curFile); - QString execStr = nf.exec(); - qDebug( execStr); - if( execStr.isEmpty() ) { + QCopEnvelope e("QPE/System", "execute(QString)" ); + e << curFile; } else { - nf.execute(); + curFile = currentDir.canonicalPath()+"/"+curFile; + DocLnk nf(curFile); + QString execStr = nf.exec(); + qDebug( execStr); + if( execStr.isEmpty() ) { + } else { + nf.execute(); + } } - } + } // MimeType mt( curFile); } else { QString curFile = Remote_View->currentItem()->text(0); - fs= getFileSystemType((const QString &) currentRemoteDir.canonicalPath()); - qDebug("Filesystemtype is "+fs); - QFileInfo fileInfo( currentRemoteDir.canonicalPath()+"/"+curFile); - if( (fileInfo.permission( QFileInfo::ExeUser) - | fileInfo.permission( QFileInfo::ExeGroup) - | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { - | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { - QCopEnvelope e("QPE/System", "execute(QString)" ); - e << curFile; - } else { - curFile = currentRemoteDir.canonicalPath()+"/"+curFile; - DocLnk nf(curFile); - QString execStr = nf.exec(); - qDebug(execStr); - if( execStr.isEmpty() ) { + if(curFile != "../") { + + fs= getFileSystemType((const QString &) currentRemoteDir.canonicalPath()); + qDebug("Filesystemtype is "+fs); + QFileInfo fileInfo( currentRemoteDir.canonicalPath()+"/"+curFile); + if( (fileInfo.permission( QFileInfo::ExeUser) + | fileInfo.permission( QFileInfo::ExeGroup) + | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { + | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { + QCopEnvelope e("QPE/System", "execute(QString)" ); + e << curFile; } else { - nf.execute(); + curFile = currentRemoteDir.canonicalPath()+"/"+curFile; + DocLnk nf(curFile); + QString execStr = nf.exec(); + qDebug(execStr); + if( execStr.isEmpty() ) { + } else { + nf.execute(); + } } - } + } // MimeType mt( curFile); } @@ -793,13 +730,17 @@ void AdvancedFm::runText() { if (TabWidget->currentPageIndex() == 0) { QString curFile = Local_View->currentItem()->text(0); + if(curFile != "../") { curFile = currentDir.canonicalPath()+"/"+curFile; QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); e << curFile; + } } else { QString curFile = Remote_View->currentItem()->text(0); + if(curFile != "../") { curFile = currentRemoteDir.canonicalPath()+"/"+curFile; DocLnk nf(curFile); QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); e << curFile; + } } } @@ -832,45 +773,47 @@ void AdvancedFm::localDelete() { 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(); - if(f.right(1).find("/",0,TRUE) == -1) - f+="/"; - f+=myFile; - if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { - switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ - "\nand all it's contents ?" - ,tr("Yes"),tr("No"),0,0,1) ) { - case 0: { - f=f.left(f.length()-1); - QString cmd="rm -rf "+f; - system( cmd.latin1()); - populateLocalView(); - } - break; - case 1: - // exit - break; - }; + if(curFileList.count() > 0) { + 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(); + if(f.right(1).find("/",0,TRUE) == -1) + f+="/"; + f+=myFile; + if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ + "\nand all it's contents ?" + ,tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + f=f.left(f.length()-1); + QString cmd="rm -rf "+f; + system( cmd.latin1()); + populateLocalView(); + } + break; + case 1: + // exit + break; + }; - } else { - switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f - +" ?",tr("Yes"),tr("No"),0,0,1) ) { - case 0: { - QString cmd="rm "+f; - QFile file(f); - file.remove(); + } else { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f + +" ?",tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + QString cmd="rm "+f; + QFile file(f); + file.remove(); // system( cmd.latin1()); - populateLocalView(); - } - break; - case 1: - // exit - break; - }; + populateLocalView(); + } + break; + case 1: + // exit + break; + }; + } } } @@ -880,45 +823,47 @@ void AdvancedFm::remoteDelete() { QStringList curFileList = getPath(); - QString myFile; + if( curFileList.count() > 0) { + 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(); - if(f.right(1).find("/",0,TRUE) == -1) - f+="/"; - f+=myFile; - if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { - switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ - "\nand all it's contents ?", - tr("Yes"),tr("No"),0,0,1) ) { - case 0: { - f=f.left(f.length()-1); - QString cmd="rm -rf "+f; - system( cmd.latin1()); - populateRemoteView(); - } - break; - case 1: - // exit - break; - }; + 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(); + if(f.right(1).find("/",0,TRUE) == -1) + f+="/"; + f+=myFile; + if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ + "\nand all it's contents ?", + tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + f=f.left(f.length()-1); + QString cmd="rm -rf "+f; + system( cmd.latin1()); + populateRemoteView(); + } + break; + case 1: + // exit + break; + }; - } else { - switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f - +" ?",tr("Yes"),tr("No"),0,0,1) ) { - case 0: { - QString cmd="rm "+f; - QFile file(f); - file.remove(); + } else { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f + +" ?",tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + QString cmd="rm "+f; + QFile file(f); + file.remove(); // system( cmd.latin1()); - populateRemoteView(); - } - break; - case 1: - // exit - break; - }; + populateRemoteView(); + } + break; + case 1: + // exit + break; + }; + } } } @@ -928,31 +873,36 @@ void AdvancedFm::localRename() { QString curFile = Local_View->currentItem()->text(0); - InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); - fileDlg->setInputText((const QString &)curFile); - fileDlg->exec(); - if( fileDlg->result() == 1 ) { - QString oldname = currentDir.canonicalPath() + "/" + curFile; - QString newName = currentDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist"; - if( rename(oldname.latin1(), newName.latin1())== -1) - QMessageBox::message(tr("Note"),tr("Could not rename")); - } - populateLocalView(); + qDebug("currentItem "+curFile); + if( curFile !="../") { + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); + fileDlg->setInputText((const QString &)curFile); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString oldname = currentDir.canonicalPath() + "/" + curFile; + QString newName = currentDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist"; + if( rename(oldname.latin1(), newName.latin1())== -1) + QMessageBox::message(tr("Note"),tr("Could not rename")); + } + populateLocalView(); + } } void AdvancedFm::remoteRename() -{ - QString curFile = Local_View->currentItem()->text(0); - InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); - fileDlg->setInputText((const QString &)curFile); - fileDlg->exec(); - if( fileDlg->result() == 1 ) { - QString oldname = currentRemoteDir.canonicalPath() + "/" + curFile; - QString newName = currentRemoteDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist"; - if( rename(oldname.latin1(), newName.latin1())== -1) - QMessageBox::message(tr("Note"),tr("Could not rename")); - } - populateRemoteView(); + { + QString curFile = Remote_View->currentItem()->text(0); + if( curFile !="../") { + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); + fileDlg->setInputText((const QString &)curFile); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString oldname = currentRemoteDir.canonicalPath() + "/" + curFile; + QString newName = currentRemoteDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist"; + if( rename(oldname.latin1(), newName.latin1())== -1) + QMessageBox::message(tr("Note"),tr("Could not rename")); + } + populateRemoteView(); + } } @@ -1056,6 +1006,4 @@ void AdvancedFm::filePerms() { populateRemoteView(); } - - } @@ -1064,5 +1012,4 @@ void AdvancedFm::doProperties() { QString filePath; if (TabWidget->currentPageIndex() == 0) { - filePath = currentDir.canonicalPath()+"/"; } else { @@ -1185,4 +1132,5 @@ void AdvancedFm::copy() { QStringList curFileList = getPath(); + if( curFileList.count() > 0) { QString curFile; if (TabWidget->currentPageIndex() == 0) { @@ -1229,8 +1177,10 @@ void AdvancedFm::copy() } } +} void AdvancedFm::copyAs() { QStringList curFileList = getPath(); + if( curFileList.count() > 0) { QString curFile; InputDialog *fileDlg; @@ -1285,5 +1235,6 @@ void AdvancedFm::copyAs() TabWidget->setCurrentPage(0); } - } + } +} } @@ -1291,4 +1242,5 @@ void AdvancedFm::move() { QStringList curFileList = getPath(); + if( curFileList.count() > 0) { QString curFile; // qDebug(curFile); @@ -1342,4 +1294,5 @@ void AdvancedFm::move() { populateRemoteView(); populateLocalView(); +} } @@ -1575,4 +1528,5 @@ void AdvancedFm::mkSym() { QString cmd; QStringList curFileList = getPath(); + if( curFileList.count() > 0) { if (TabWidget->currentPageIndex() == 0) { @@ -1587,6 +1541,6 @@ void AdvancedFm::mkSym() { system(cmd.latin1() ); } - populateRemoteView(); - TabWidget->setCurrentPage(1); + populateRemoteView(); + TabWidget->setCurrentPage(1); } else { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { @@ -1601,8 +1555,9 @@ void AdvancedFm::mkSym() { system(cmd.latin1() ); } - populateLocalView(); - TabWidget->setCurrentPage(0); + populateLocalView(); + TabWidget->setCurrentPage(0); } } +} void AdvancedFm::QPEButtonPushed() { @@ -1664,32 +1619,35 @@ QString AdvancedFm::getFileSystemType(const QString ¤tText) { void AdvancedFm::doBeam() { - Ir ir; - if(!ir.supported()){ - } else { + Ir ir; + if(!ir.supported()){ + } else { - QStringList curFileList = getPath(); + QStringList curFileList = getPath(); + if( curFileList.count() > 0) { - if (TabWidget->currentPageIndex() == 0) { - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + if (TabWidget->currentPageIndex() == 0) { + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + + QString curFile = currentDir.canonicalPath()+"/"+(*it); + if( curFile.right(1) == "/") curFile = curFile.left( curFile.length() -1); + Ir *file = new Ir(this, "IR"); + connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); + file->send( curFile, curFile ); + } - QString curFile = currentDir.canonicalPath()+"/"+(*it); - if( curFile.right(1) == "/") curFile = curFile.left( curFile.length() -1); - Ir *file = new Ir(this, "IR"); - connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); - file->send( curFile, curFile ); - } + } else { + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - } else { - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + QString curFile = currentRemoteDir.canonicalPath()+"/"+(*it); + if( curFile.right(1) == "/") curFile = curFile.left( curFile.length() -1); + Ir *file = new Ir(this, "IR"); + connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); + file->send( curFile, curFile ); - QString curFile = currentRemoteDir.canonicalPath()+"/"+(*it); - if( curFile.right(1) == "/") curFile = curFile.left( curFile.length() -1); - Ir *file = new Ir(this, "IR"); - connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); - file->send( curFile, curFile ); + } + } + } +} - } - } - } } @@ -1709,2 +1667,87 @@ 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 @@ -13,12 +13,14 @@ #define ADVANCEDFM_H +#include <qpe/ir.h> + #include <qvariant.h> #include <qdialog.h> #include <qmainwindow.h> +#include <qstringlist.h> #include <qdir.h> #include <qstring.h> #include <qpoint.h> -#include <qstringlist.h> -#include <qpe/ir.h> +#include <qtimer.h> class QVBoxLayout; @@ -40,4 +42,5 @@ class QListViewItem; class QLineEdit; class QPushButton; +class Ir; class AdvancedFm : public QMainWindow @@ -63,6 +66,4 @@ public: int currentServerConfig; protected slots: - void showLocalMenu( QListViewItem *); - void showRemoteMenu( QListViewItem *); void doLocalCd(); void doRemoteCd(); @@ -105,4 +106,5 @@ protected: QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3; QStringList remoteDirPathStringList, localDirPathStringList; + void keyReleaseEvent( QKeyEvent *); QString getFileSystemType(const QString &); @@ -110,4 +112,6 @@ protected: protected slots: + void showFileMenu(); + void cancelMenuTimer(); void homeButtonPushed(); void docButtonPushed(); @@ -126,5 +130,7 @@ protected slots: void doAbout(); void doBeam(); - void fileBeamFinished( Ir *ir); + void fileBeamFinished( Ir *); +private: + QTimer menuTimer; }; |