Diffstat (limited to 'noncore/apps/advancedfm/advancedfmMenu.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/advancedfm/advancedfmMenu.cpp | 121 |
1 files changed, 69 insertions, 52 deletions
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp index f89ad30..0a9f921 100644 --- a/noncore/apps/advancedfm/advancedfmMenu.cpp +++ b/noncore/apps/advancedfm/advancedfmMenu.cpp @@ -10,11 +10,11 @@ * (at your option) any later version. * ***************************************************************************/ #include "advancedfm.h" -#include "inputDialog.h" #include "output.h" #include "filePermissions.h" #include <opie/otabwidget.h> +#include <opie/oprocess.h> #include <qpe/lnkproperties.h> #include <qpe/qpeapplication.h> @@ -233,7 +233,7 @@ void AdvancedFm::localDelete() { case 0: { f=f.left(f.length()-1); QString cmd="rm -rf "+f; - system( cmd.latin1()); + startProcess( (const QString)cmd.latin1() ); populateLocalView(); } break; @@ -255,7 +255,6 @@ void AdvancedFm::localDelete() { QFile file(f); if(QFileInfo(myFile).fileName().find("../",0,TRUE)==-1) file.remove(); - // system( cmd.latin1()); } } } @@ -298,7 +297,7 @@ void AdvancedFm::remoteDelete() { case 0: { f=f.left(f.length()-1); QString cmd="rm -rf "+f; - system( cmd.latin1()); + startProcess( (const QString)cmd ); populateRemoteView(); } break; @@ -320,7 +319,6 @@ void AdvancedFm::remoteDelete() { QFile file(f); if(QFileInfo(myFile).fileName().find("../",0,TRUE)==-1) file.remove(); - // system( cmd.latin1()); } } } @@ -823,34 +821,20 @@ void AdvancedFm::runCommand() { fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); fileDlg->setInputText(curFile); fileDlg->exec(); - QString command; + //QString command; + if( fileDlg->result() == 1 ) { - command = fileDlg->LineEdit1->text(); + qDebug(fileDlg->LineEdit1->text()); + QStringList command; + command << "/bin/sh"; + command << "-c"; + command << fileDlg->LineEdit1->text(); Output *outDlg; - outDlg = new Output(this, tr("AdvancedFm Output"),FALSE); + outDlg = new Output( command, this, tr("AdvancedFm Output"), true); outDlg->showMaximized(); - outDlg->show(); + outDlg->exec(); qApp->processEvents(); - FILE *fp; - char line[130]; - sleep(1); - command +=" 2>&1"; - fp = popen( (const char *) command, "r"); - if ( !fp ) { - qDebug("Could not execute '" + command + "'! err=%d", fp); - QMessageBox::warning( this, "AdvancedFm", tr("command failed!"), tr("&OK") ); - pclose(fp); - return; - } else { - while ( fgets( line, sizeof line, fp)) { - QString lineStr = line; - lineStr=lineStr.left(lineStr.length()-1); - outDlg->OutputEdit->append(lineStr); - outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); - } - } - pclose(fp); } } @@ -870,11 +854,10 @@ void AdvancedFm::runCommandStd() { fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); fileDlg->setInputText(curFile); fileDlg->exec(); - QString command; + if( fileDlg->result() == 1 ) { qApp->processEvents(); - command = fileDlg->LineEdit1->text() + " &"; - system(command.latin1()); + startProcess( (const QString)fileDlg->LineEdit1->text().latin1()); } } @@ -885,32 +868,46 @@ void AdvancedFm::fileStatus() { } else { curFile = Remote_View->currentItem()->text(0); } - QString command = " stat -l "+ curFile +" 2>&1"; + + QStringList command; + command << "/bin/sh"; + command << "-c"; + command << "stat -l "+ curFile; + Output *outDlg; - outDlg = new Output(this, tr("AdvancedFm Output"),FALSE); + outDlg = new Output( command, this, tr("AdvancedFm Output"), true); outDlg->showMaximized(); - outDlg->show(); + outDlg->exec(); qApp->processEvents(); - FILE *fp; - char line[130]; - sleep(1); - fp = popen( (const char *) command, "r"); - if ( !fp ) { - qDebug("Could not execute '" + command + "'! err=%d", fp); - QMessageBox::warning( this, "AdvancedFm", tr("command failed!"), tr("&OK") ); - pclose(fp); - return; - } else { - while ( fgets( line, sizeof line, fp)) { - outDlg->OutputEdit->append(line); - outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); - } - } - pclose(fp); +// Output *outDlg; +// outDlg = new Output(this, tr("AdvancedFm Output"),FALSE); +// outDlg->showMaximized(); +// outDlg->show(); +// qApp->processEvents(); + +// FILE *fp; +// char line[130]; +// sleep(1); +// fp = popen( (const char *) command, "r"); +// if ( !fp ) { +// qDebug("Could not execute '" + command + "'! err=%d", fp); +// QMessageBox::warning( this, "AdvancedFm", tr("command failed!"), tr("&OK") ); +// pclose(fp); +// return; +// } else { +// while ( fgets( line, sizeof line, fp)) { +// outDlg->OutputEdit->append(line); +// outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); + +// } + +// } +// pclose(fp); } + void AdvancedFm::mkDir() { if (TabWidget->getCurrentTab() == 0) localMakDir(); @@ -948,7 +945,7 @@ void AdvancedFm::mkSym() { if( curFile.right(1) == "/") curFile = curFile.left( curFile.length() -1); cmd = "ln -s "+curFile+" "+destName; qDebug(cmd); - system(cmd.latin1() ); + startProcess( (const QString)cmd ); } populateRemoteView(); TabWidget->setCurrentTab(1); @@ -962,7 +959,7 @@ void AdvancedFm::mkSym() { cmd = "ln -s "+curFile+" "+destName; qDebug(cmd); - system(cmd.latin1() ); + startProcess( (const QString)cmd ); } populateLocalView(); TabWidget->setCurrentTab(0); @@ -1018,3 +1015,23 @@ void AdvancedFm::selectAll() { Remote_View->setSelected( Remote_View->firstChild(),false); } } + +void AdvancedFm::startProcess(const QString & cmd) { + QStringList command; + OProcess *process; + process = new OProcess(); + connect(process, SIGNAL(processExited(OProcess *)), + this, SLOT( processEnded())); + + command << "/bin/sh"; + command << "-c"; + command << cmd.latin1(); + *process << command; + if(!process->start(OProcess::NotifyOnExit) ) + qDebug("could not start process"); +} + +void AdvancedFm::processEnded() { + populateLocalView(); + populateRemoteView(); +} |