summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfm.cpp267
-rw-r--r--noncore/apps/advancedfm/advancedfm.h6
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
@@ -150,8 +150,9 @@ AdvancedFm::AdvancedFm( )
Local_View->addColumn( tr("Date"),-1);
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);
tabLayout->addWidget( Local_View, 0, 0 );
@@ -175,8 +176,9 @@ AdvancedFm::AdvancedFm( )
Remote_View->addColumn( tr("Date"),-1);
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);
connect( Remote_View, SIGNAL( clicked( QListViewItem*)),
@@ -369,6 +371,7 @@ void AdvancedFm::populateLocalView()
fillCombo( (const QString &) currentDir.canonicalPath());
}
+
void AdvancedFm::populateRemoteView()
{
// QList<QListViewItem> * getSelectedItems( QListView * Local_View );
@@ -564,17 +567,20 @@ 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();
+
}
void AdvancedFm::showRemoteHidden()
@@ -630,6 +636,8 @@ void AdvancedFm::showLocalMenu(QListViewItem * item)
m.insertItem( tr( "Open" ), 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() ));
@@ -663,6 +671,8 @@ void AdvancedFm::showRemoteMenu(QListViewItem * item)
m.insertItem( tr( "Open" ), 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() ));
@@ -752,13 +762,19 @@ 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();
}
@@ -772,9 +788,10 @@ void AdvancedFm::localDelete()
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="rm "+f;
- system( cmd.latin1());
+ QFile file(f);
+ file.remove();
+// system( cmd.latin1());
populateLocalView();
}
break;
@@ -783,17 +800,25 @@ void AdvancedFm::localDelete()
break;
};
}
+
+ }
}
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();
}
@@ -807,9 +832,10 @@ void AdvancedFm::remoteDelete()
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="rm "+f;
- system( cmd.latin1());
+ QFile file(f);
+ file.remove();
+// system( cmd.latin1());
populateRemoteView();
}
break;
@@ -819,6 +845,7 @@ void AdvancedFm::remoteDelete()
};
}
}
+}
void AdvancedFm::localRename()
{
@@ -855,11 +882,13 @@ void AdvancedFm::remoteRename()
void AdvancedFm::switchToLocalTab()
{
TabWidget->setCurrentPage(0);
+ Local_View->setFocus();
}
void AdvancedFm::switchToRemoteTab()
{
TabWidget->setCurrentPage(1);
+ Remote_View->setFocus();
}
void AdvancedFm::readConfig()
@@ -926,31 +955,66 @@ 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();
if( filePerm)
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 *)));
prop.showMaximized();
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() {
QString current = QDir::homeDirPath();
@@ -1032,23 +1096,33 @@ 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())
f.remove();
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())
f.remove();
if(!copyFile(destFile, curFile) )
qWarning("nothin doing");
+ }
populateLocalView();
TabWidget->setCurrentPage(0);
}
@@ -1056,11 +1130,17 @@ 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();
if( fileDlg->result() == 1 ) {
@@ -1073,12 +1153,16 @@ void AdvancedFm::copyAs()
if(!copyFile(destFile, curFile) )
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();
if( fileDlg->result() == 1 ) {
@@ -1091,17 +1175,24 @@ void AdvancedFm::copyAs()
if(!copyFile(destFile, curFile) )
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);
QFile f(destFile);
@@ -1112,10 +1203,13 @@ void AdvancedFm::move() {
return;
}
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);
if( f.exists())
@@ -1127,6 +1221,7 @@ void AdvancedFm::move() {
QFile::remove(curFile);
TabWidget->setCurrentPage(0);
}
+ }
populateRemoteView();
populateLocalView();
}
@@ -1293,3 +1388,93 @@ void AdvancedFm::doAbout() {
"L.J.Potter<llornkcor@handhelds.org>\n"
"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
@@ -18,6 +18,7 @@
#include <qdir.h>
#include <qstring.h>
#include <qpoint.h>
+#include <qstringlist.h>
class QVBoxLayout;
class QHBoxLayout;
@@ -93,14 +94,15 @@ protected slots:
void doProperties();
void runCommand();
void runCommandStd();
- QString getPath();
+ QStringList getPath();
+ void mkSym();
void switchToLocalTab();
void switchToRemoteTab();
protected:
QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3;
QStringList remoteDirPathStringList, localDirPathStringList;
-
+ void keyReleaseEvent( QKeyEvent *);
protected slots:
void homeButtonPushed();
void docButtonPushed();