summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-04-27 22:47:48 (UTC)
committer llornkcor <llornkcor>2002-04-27 22:47:48 (UTC)
commit8e3c0aa915801b862f97ba7a7598ef5f3bd350aa (patch) (unidiff)
tree6fed799512ebdcd4c78a56097c49d354de648690
parent392596c06dedf8ddaea7c55745460e631073d15a (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfm.cpp591
-rw-r--r--noncore/apps/advancedfm/advancedfm.h8
2 files changed, 393 insertions, 206 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
@@ -147,15 +147,16 @@ AdvancedFm::AdvancedFm( )
147 Local_View->addColumn( tr("File"),130); 147 Local_View->addColumn( tr("File"),130);
148 Local_View->addColumn( tr("Size"),-1); 148 Local_View->addColumn( tr("Size"),-1);
149 Local_View->setColumnAlignment(1,QListView::AlignRight); 149 Local_View->setColumnAlignment(1,QListView::AlignRight);
150 Local_View->addColumn( tr("Date"),-1); 150 Local_View->addColumn( tr("Date"),-1);
151 Local_View->setColumnAlignment(2,QListView::AlignRight); 151 Local_View->setColumnAlignment(2,QListView::AlignRight);
152 Local_View->setAllColumnsShowFocus(TRUE); 152 Local_View->setAllColumnsShowFocus(TRUE);
153// Local_View->setMultiSelection( TRUE ); 153 Local_View->setMultiSelection( TRUE );
154// Local_View->setSelectionMode(QListView::Extended); 154 Local_View->setSelectionMode(QListView::Extended);
155 QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); 155
156 QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold);
156 157
157 tabLayout->addWidget( Local_View, 0, 0 ); 158 tabLayout->addWidget( Local_View, 0, 0 );
158 159
159 connect( Local_View, SIGNAL( clicked( QListViewItem*)), 160 connect( Local_View, SIGNAL( clicked( QListViewItem*)),
160 this,SLOT( localListClicked(QListViewItem *)) ); 161 this,SLOT( localListClicked(QListViewItem *)) );
161 connect( Local_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 162 connect( Local_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
@@ -172,15 +173,16 @@ AdvancedFm::AdvancedFm( )
172 Remote_View->addColumn( tr("File"),130); 173 Remote_View->addColumn( tr("File"),130);
173 Remote_View->addColumn( tr("Size"),-1); 174 Remote_View->addColumn( tr("Size"),-1);
174 Remote_View->setColumnAlignment(1,QListView::AlignRight); 175 Remote_View->setColumnAlignment(1,QListView::AlignRight);
175 Remote_View->addColumn( tr("Date"),-1); 176 Remote_View->addColumn( tr("Date"),-1);
176 Remote_View->setColumnAlignment(2,QListView::AlignRight); 177 Remote_View->setColumnAlignment(2,QListView::AlignRight);
177 Remote_View->setAllColumnsShowFocus(TRUE); 178 Remote_View->setAllColumnsShowFocus(TRUE);
178// Remote_View->setMultiSelection( TRUE ); 179 Remote_View->setMultiSelection( TRUE );
179// Remote_View->setSelectionMode(QListView::Extended); 180 Remote_View->setSelectionMode(QListView::Extended);
180 QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold); 181
182 QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold);
181 183
182 connect( Remote_View, SIGNAL( clicked( QListViewItem*)), 184 connect( Remote_View, SIGNAL( clicked( QListViewItem*)),
183 this,SLOT( remoteListClicked(QListViewItem *)) ); 185 this,SLOT( remoteListClicked(QListViewItem *)) );
184 connect( Remote_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 186 connect( Remote_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
185 this,SLOT( remoteListPressed(int, QListViewItem *, const QPoint&, int)) ); 187 this,SLOT( remoteListPressed(int, QListViewItem *, const QPoint&, int)) );
186 188
@@ -366,12 +368,13 @@ void AdvancedFm::populateLocalView()
366 } 368 }
367 369
368 Local_View->setSorting( 3,FALSE); 370 Local_View->setSorting( 3,FALSE);
369 fillCombo( (const QString &) currentDir.canonicalPath()); 371 fillCombo( (const QString &) currentDir.canonicalPath());
370} 372}
371 373
374
372void AdvancedFm::populateRemoteView() 375void AdvancedFm::populateRemoteView()
373{ 376{
374// QList<QListViewItem> * getSelectedItems( QListView * Local_View ); 377// QList<QListViewItem> * getSelectedItems( QListView * Local_View );
375// QListViewItemIterator it( Remote_View ); 378// QListViewItemIterator it( Remote_View );
376// for ( ; it.current(); ++it ) { 379// for ( ; it.current(); ++it ) {
377// if ( it.current()->isSelected() ) { 380// if ( it.current()->isSelected() ) {
@@ -561,23 +564,26 @@ void AdvancedFm::doRemoteCd()
561} 564}
562 565
563void AdvancedFm::showHidden() 566void AdvancedFm::showHidden()
564{ 567{
565 if (b) { 568 if (b) {
566 currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 569 currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
570 fileMenu->setItemChecked( fileMenu->idAt(0),TRUE);
567// localMenu->setItemChecked(localMenu->idAt(0),TRUE); 571// localMenu->setItemChecked(localMenu->idAt(0),TRUE);
568// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); 572// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
569 b=TRUE; 573 b=FALSE;
570 574
571 } else { 575 } else {
572 currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 576 currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
577 fileMenu->setItemChecked( fileMenu->idAt(0),FALSE);
573// localMenu->setItemChecked(localMenu->idAt(0),FALSE); 578// localMenu->setItemChecked(localMenu->idAt(0),FALSE);
574// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); 579// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
575 b=FALSE; 580 b=TRUE;
576 } 581 }
577 populateLocalView(); 582 populateLocalView();
583
578} 584}
579 585
580void AdvancedFm::showRemoteHidden() 586void AdvancedFm::showRemoteHidden()
581{ 587{
582 if (b) { 588 if (b) {
583 currentRemoteDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 589 currentRemoteDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
@@ -618,72 +624,76 @@ void AdvancedFm::remoteListPressed( int mouse, QListViewItem *item, const QPoint
618 }; 624 };
619} 625}
620 626
621void AdvancedFm::showLocalMenu(QListViewItem * item) 627void AdvancedFm::showLocalMenu(QListViewItem * item)
622{ 628{
623 if(item) { 629 if(item) {
624 QPopupMenu m; 630 QPopupMenu m;
625 m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() )); 631 m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() ));
626 m.insertSeparator(); 632 m.insertSeparator();
627 if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1) 633 if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1)
628 m.insertItem( tr( "Change Directory" ), this, SLOT( doLocalCd() )); 634 m.insertItem( tr( "Change Directory" ), this, SLOT( doLocalCd() ));
629 else 635 else
630 m.insertItem( tr( "Open" ), this, SLOT( runThis() )); 636 m.insertItem( tr( "Open" ), this, SLOT( runThis() ));
631 m.insertItem( tr( "Open as Text" ), this, SLOT( runText() )); 637 m.insertItem( tr( "Open as Text" ), this, SLOT( runText() ));
632 m.insertItem( tr( "Make Directory" ), this, SLOT( localMakDir() )); 638 m.insertItem( tr( "Make Directory" ), this, SLOT( localMakDir() ));
633 m.insertItem( tr( "Rename" ), this, SLOT( localRename() )); 639 m.insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() ));
634 m.insertItem( tr( "Copy" ), this, SLOT( copy() )); 640 m.insertSeparator();
635 m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); 641 m.insertItem( tr( "Rename" ), this, SLOT( localRename() ));
636 m.insertItem( tr( "Move" ), this, SLOT( move() )); 642 m.insertItem( tr( "Copy" ), this, SLOT( copy() ));
637 m.insertSeparator(); 643 m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() ));
638 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); 644 m.insertItem( tr( "Move" ), this, SLOT( move() ));
639 m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); 645 m.insertSeparator();
640 m.insertSeparator(); 646 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() ));
641 m.insertItem( tr( "Delete" ), this, SLOT( localDelete() )); 647 m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() ));
642 m.insertSeparator(); 648 m.insertSeparator();
643 m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); 649 m.insertItem( tr( "Delete" ), this, SLOT( localDelete() ));
644 m.insertItem( tr( "Properties" ), this, SLOT( doProperties() )); 650 m.insertSeparator();
645 m.setCheckable(TRUE); 651 m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() ));
646 if (!b) 652 m.insertItem( tr( "Properties" ), this, SLOT( doProperties() ));
647 m.setItemChecked(m.idAt(0),TRUE); 653 m.setCheckable(TRUE);
648 else 654 if (!b)
649 m.setItemChecked(m.idAt(0),FALSE); 655 m.setItemChecked(m.idAt(0),TRUE);
650 m.exec( QCursor::pos() ); 656 else
657 m.setItemChecked(m.idAt(0),FALSE);
658 m.exec( QCursor::pos() );
651 } 659 }
652} 660}
653 661
654void AdvancedFm::showRemoteMenu(QListViewItem * item) 662void AdvancedFm::showRemoteMenu(QListViewItem * item)
655{ 663{
656 if(item) { 664 if(item) {
657 QPopupMenu m; 665 QPopupMenu m;
658 m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showRemoteHidden() )); 666 m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showRemoteHidden() ));
659 m.insertSeparator(); 667 m.insertSeparator();
660 if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1) 668 if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1)
661 m.insertItem( tr( "Change Directory" ), this, SLOT( doRemoteCd() )); 669 m.insertItem( tr( "Change Directory" ), this, SLOT( doRemoteCd() ));
662 else 670 else
663 m.insertItem( tr( "Open" ), this, SLOT( runThis() )); 671 m.insertItem( tr( "Open" ), this, SLOT( runThis() ));
664 m.insertItem( tr( "Open as Text" ), this, SLOT( runText() )); 672 m.insertItem( tr( "Open as Text" ), this, SLOT( runText() ));
665 m.insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() )); 673 m.insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() ));
666 m.insertItem( tr( "Rename" ), this, SLOT( remoteRename() )); 674 m.insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() ));
667 m.insertItem( tr( "Copy" ), this, SLOT( copy() )); 675 m.insertSeparator();
668 m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); 676 m.insertItem( tr( "Rename" ), this, SLOT( remoteRename() ));
669 m.insertItem( tr( "Move" ), this, SLOT( move() )); 677 m.insertItem( tr( "Copy" ), this, SLOT( copy() ));
670 m.insertSeparator(); 678 m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() ));
671 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); 679 m.insertItem( tr( "Move" ), this, SLOT( move() ));
672 m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); 680 m.insertSeparator();
673 m.insertSeparator(); 681 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() ));
674 m.insertItem( tr( "Delete" ), this, SLOT( remoteDelete() )); 682 m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() ));
675 m.insertSeparator(); 683 m.insertSeparator();
676 m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); 684 m.insertItem( tr( "Delete" ), this, SLOT( remoteDelete() ));
677 m.insertItem( tr( "Properties" ), this, SLOT( doProperties() )); 685 m.insertSeparator();
678 m.setCheckable(TRUE); 686 m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() ));
679 if (!b) 687 m.insertItem( tr( "Properties" ), this, SLOT( doProperties() ));
680 m.setItemChecked(m.idAt(0),TRUE); 688 m.setCheckable(TRUE);
681 else 689 if (!b)
682 m.setItemChecked(m.idAt(0),FALSE); 690 m.setItemChecked(m.idAt(0),TRUE);
683 m.exec( QCursor::pos() ); 691 else
692 m.setItemChecked(m.idAt(0),FALSE);
693 m.exec( QCursor::pos() );
684 } 694 }
685} 695}
686 696
687void AdvancedFm::runThis() { 697void AdvancedFm::runThis() {
688// QFileInfo *fi; 698// QFileInfo *fi;
689 if (TabWidget->currentPageIndex() == 0) { 699 if (TabWidget->currentPageIndex() == 0) {
@@ -749,77 +759,94 @@ void AdvancedFm::remoteMakDir()
749 } 759 }
750 populateRemoteView(); 760 populateRemoteView();
751} 761}
752 762
753void AdvancedFm::localDelete() 763void AdvancedFm::localDelete()
754{ 764{
755 QString f = Local_View->currentItem()->text(0); 765 QStringList curFileList = getPath();
756 if(QDir(f).exists() ) { 766 QString myFile;
757 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ 767 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
758 tr(" ?\nIt must be empty"),tr("Yes"),tr("No"),0,0,1) ) { 768 myFile = (*it);
759 case 0: { 769 if( myFile.find(" -> ",0,TRUE) != -1)
760 f=currentDir.canonicalPath()+"/"+f; 770 myFile = myFile.left( myFile.find(" -> ",0,TRUE));
761 QString cmd="rmdir "+f; 771
762 system( cmd.latin1()); 772 QString f = currentDir.canonicalPath()+"/"+myFile;
763 populateLocalView(); 773 if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) {
764 } 774 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+" ?"
765 break; 775 ,tr("Yes"),tr("No"),0,0,1) ) {
766 case 1: 776 case 0: {
767 // exit 777 QString cmd="rmdir -rf "+f;
768 break; 778 system( cmd.latin1());
769 }; 779 populateLocalView();
780 }
781 break;
782 case 1:
783 // exit
784 break;
785 };
770 786
771 } else { 787 } else {
772 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f 788 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f
773 +" ?",tr("Yes"),tr("No"),0,0,1) ) { 789 +" ?",tr("Yes"),tr("No"),0,0,1) ) {
774 case 0: { 790 case 0: {
775 f=currentDir.canonicalPath()+"/"+f; 791 QString cmd="rm "+f;
776 QString cmd="rm "+f; 792 QFile file(f);
777 system( cmd.latin1()); 793 file.remove();
778 populateLocalView(); 794// system( cmd.latin1());
779 } 795 populateLocalView();
780 break; 796 }
781 case 1: 797 break;
782 // exit 798 case 1:
783 break; 799 // exit
784 }; 800 break;
801 };
802 }
803
785 } 804 }
786} 805}
787 806
788void AdvancedFm::remoteDelete() 807void AdvancedFm::remoteDelete()
789{ 808{
790 QString f = Remote_View->currentItem()->text(0); 809 QStringList curFileList = getPath();
791 if(QDir(f).exists() ) { 810 QString myFile;
792 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ 811
793 tr(" ?\nIt must be empty"),tr("Yes"),tr("No"),0,0,1) ) { 812 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
794 case 0: { 813 myFile = (*it);
795 f = currentRemoteDir.canonicalPath()+"/"+f; 814 if(myFile.find(" -> ",0,TRUE) != -1)
796 QString cmd="rmdir "+f; 815 myFile = myFile.left(myFile.find(" -> ",0,TRUE));
797 system( cmd.latin1()); 816 QString f = currentRemoteDir.canonicalPath()+"/"+myFile;
798 populateRemoteView(); 817 if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) {
799 } 818 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+" ?",
800 break; 819 tr("Yes"),tr("No"),0,0,1) ) {
801 case 1: 820 case 0: {
802 // exit 821 QString cmd="rmdir -rf "+f;
803 break; 822 system( cmd.latin1());
804 }; 823 populateRemoteView();
824 }
825 break;
826 case 1:
827 // exit
828 break;
829 };
805 830
806 } else { 831 } else {
807 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f 832 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f
808 +" ?",tr("Yes"),tr("No"),0,0,1) ) { 833 +" ?",tr("Yes"),tr("No"),0,0,1) ) {
809 case 0: { 834 case 0: {
810 f = currentRemoteDir.canonicalPath()+"/"+f; 835 QString cmd="rm "+f;
811 QString cmd="rm "+f; 836 QFile file(f);
812 system( cmd.latin1()); 837 file.remove();
813 populateRemoteView(); 838// system( cmd.latin1());
814 } 839 populateRemoteView();
815 break; 840 }
816 case 1: 841 break;
817 // exit 842 case 1:
818 break; 843 // exit
819 }; 844 break;
845 };
846 }
820 } 847 }
821} 848}
822 849
823void AdvancedFm::localRename() 850void AdvancedFm::localRename()
824{ 851{
825 QString curFile = Local_View->currentItem()->text(0); 852 QString curFile = Local_View->currentItem()->text(0);
@@ -852,17 +879,19 @@ void AdvancedFm::remoteRename()
852 populateRemoteView(); 879 populateRemoteView();
853} 880}
854 881
855void AdvancedFm::switchToLocalTab() 882void AdvancedFm::switchToLocalTab()
856{ 883{
857 TabWidget->setCurrentPage(0); 884 TabWidget->setCurrentPage(0);
885 Local_View->setFocus();
858} 886}
859 887
860void AdvancedFm::switchToRemoteTab() 888void AdvancedFm::switchToRemoteTab()
861{ 889{
862 TabWidget->setCurrentPage(1); 890 TabWidget->setCurrentPage(1);
891 Remote_View->setFocus();
863} 892}
864 893
865void AdvancedFm::readConfig() 894void AdvancedFm::readConfig()
866{ 895{
867 Config cfg("AdvancedFm"); 896 Config cfg("AdvancedFm");
868} 897}
@@ -923,36 +952,71 @@ void AdvancedFm::currentPathComboActivated(const QString & currentPath) {
923 populateRemoteView(); 952 populateRemoteView();
924 update(); 953 update();
925 } 954 }
926} 955}
927 956
928void AdvancedFm::filePerms() { 957void AdvancedFm::filePerms() {
929 QString curFile = getPath(); 958
930 filePermissions *filePerm; 959 QStringList curFileList = getPath();
931 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(curFile)); 960 QString filePath;
932 filePerm->showMaximized(); 961
933 filePerm->exec(); 962 if (TabWidget->currentPageIndex() == 0) {
934 if( filePerm) 963 filePath = currentDir.canonicalPath()+"/";
935 delete filePerm; 964 } else {
965 filePath= currentRemoteDir.canonicalPath()+"/";
966 }
967
968 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
969 filePermissions *filePerm;
970 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it));
971 filePerm->showMaximized();
972 filePerm->exec();
973 if( filePerm)
974 delete filePerm;
975 }
936} 976}
937 977
938void AdvancedFm::doProperties() { 978void AdvancedFm::doProperties() {
939 979 QStringList curFileList = getPath();
940 DocLnk lnk( getPath()); 980 QString filePath;
941 LnkProperties prop( &lnk ); 981 if (TabWidget->currentPageIndex() == 0) {
982 filePath = currentDir.canonicalPath()+"/";
983 } else {
984 filePath= currentRemoteDir.canonicalPath()+"/";
985 }
986 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
987 DocLnk lnk( (filePath+*it));
988 LnkProperties prop( &lnk );
942// connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); 989// connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *)));
943 prop.showMaximized(); 990 prop.showMaximized();
944 prop.exec(); 991 prop.exec();
992 }
945} 993}
946 994
947QString AdvancedFm::getPath() { 995QStringList AdvancedFm::getPath() {
996 QStringList strList;
948 if (TabWidget->currentPageIndex() == 0) { 997 if (TabWidget->currentPageIndex() == 0) {
949 return currentDir.canonicalPath()+"/"+ Local_View->currentItem()->text(0); 998 QList<QListViewItem> * getSelectedItems( QListView * Local_View );
999 QListViewItemIterator it( Local_View );
1000 for ( ; it.current(); ++it ) {
1001 if ( it.current()->isSelected() ) {
1002 strList << it.current()->text(0);
1003 }
1004 }
1005 return strList;
950 } else { 1006 } else {
951 return currentRemoteDir.canonicalPath() + "/"+Remote_View->currentItem()->text(0); 1007 QList<QListViewItem> * getSelectedItems( QListView * Remote_View );
1008 QListViewItemIterator it( Remote_View );
1009 for ( ; it.current(); ++it ) {
1010 if ( it.current()->isSelected() ) {
1011 strList << currentDir.canonicalPath()+"/"+ it.current()->text(0);
1012 }
1013 }
1014 return strList;
952 } 1015 }
1016 return "";
953} 1017}
954 1018
955void AdvancedFm::homeButtonPushed() { 1019void AdvancedFm::homeButtonPushed() {
956 QString current = QDir::homeDirPath(); 1020 QString current = QDir::homeDirPath();
957 chdir( current.latin1() ); 1021 chdir( current.latin1() );
958 if (TabWidget->currentPageIndex() == 0) { 1022 if (TabWidget->currentPageIndex() == 0) {
@@ -1029,112 +1093,143 @@ void AdvancedFm::upDir()
1029 update(); 1093 update();
1030 } 1094 }
1031} 1095}
1032 1096
1033void AdvancedFm::copy() 1097void AdvancedFm::copy()
1034{ 1098{
1035 QString curFile = getPath(); 1099 QStringList curFileList = getPath();
1100 QString curFile;
1036 if (TabWidget->currentPageIndex() == 0) { 1101 if (TabWidget->currentPageIndex() == 0) {
1037 QString destFile = currentRemoteDir.canonicalPath()+"/"+Local_View->currentItem()->text(0); 1102 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
1038 QFile f(destFile); 1103
1039 if( f.exists()) 1104 QString destFile = currentRemoteDir.canonicalPath()+"/"+(*it);
1040 f.remove(); 1105 curFile = currentDir.canonicalPath()+"/"+(*it);
1041 if(!copyFile(destFile, curFile) ) 1106 QFile f(destFile);
1042 qWarning("nothin doing"); 1107 if( f.exists())
1108 f.remove();
1109 if(!copyFile(destFile, curFile) )
1110 qWarning("nothin doing");
1111 }
1043 populateRemoteView(); 1112 populateRemoteView();
1044 TabWidget->setCurrentPage(1); 1113 TabWidget->setCurrentPage(1);
1114
1045 } else { 1115 } else {
1046 QString destFile = currentDir.canonicalPath()+"/"+Remote_View->currentItem()->text(0); 1116 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
1047 QFile f(destFile); 1117
1048 if( f.exists()) 1118 QString destFile = currentDir.canonicalPath()+"/"+(*it);
1049 f.remove(); 1119 curFile = currentRemoteDir.canonicalPath()+"/"+(*it);
1050 if(!copyFile(destFile, curFile) ) 1120 QFile f(destFile);
1051 qWarning("nothin doing"); 1121 if( f.exists())
1122 f.remove();
1123 if(!copyFile(destFile, curFile) )
1124 qWarning("nothin doing");
1125 }
1052 populateLocalView(); 1126 populateLocalView();
1053 TabWidget->setCurrentPage(0); 1127 TabWidget->setCurrentPage(0);
1054 } 1128 }
1055} 1129}
1056 1130
1057void AdvancedFm::copyAs() 1131void AdvancedFm::copyAs()
1058{ 1132{
1059 QString curFile = getPath(); 1133 QStringList curFileList = getPath();
1134 QString curFile;
1135 InputDialog *fileDlg;
1136 fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0);
1137
1060 if (TabWidget->currentPageIndex() == 0) { 1138 if (TabWidget->currentPageIndex() == 0) {
1061 QString destFile = Local_View->currentItem()->text(0); 1139 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
1062 InputDialog *fileDlg; 1140 QString destFile = *it;
1063 fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); 1141 curFile = currentDir.canonicalPath()+"/"+(*it);
1064 fileDlg->setInputText((const QString &) destFile ); 1142// InputDialog *fileDlg;
1065 fileDlg->exec(); 1143// fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0);
1066 if( fileDlg->result() == 1 ) { 1144 fileDlg->setInputText((const QString &) destFile );
1067 QString filename = fileDlg->LineEdit1->text(); 1145 fileDlg->exec();
1068 destFile = currentRemoteDir.canonicalPath()+"/"+destFile; 1146 if( fileDlg->result() == 1 ) {
1069 1147 QString filename = fileDlg->LineEdit1->text();
1070 QFile f(destFile); 1148 destFile = currentRemoteDir.canonicalPath()+"/"+destFile;
1071 if( f.exists()) 1149
1072 f.remove(); 1150 QFile f(destFile);
1073 if(!copyFile(destFile, curFile) ) 1151 if( f.exists())
1074 qWarning("nothin doing"); 1152 f.remove();
1153 if(!copyFile(destFile, curFile) )
1154 qWarning("nothin doing");
1155 }
1075 } 1156 }
1157
1076 populateRemoteView(); 1158 populateRemoteView();
1077 TabWidget->setCurrentPage(1); 1159 TabWidget->setCurrentPage(1);
1078 } else { 1160 } else {
1079 QString destFile = Remote_View->currentItem()->text(0); 1161 if (TabWidget->currentPageIndex() == 0) {
1080 InputDialog *fileDlg; 1162 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
1081 fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); 1163
1082 fileDlg->setInputText((const QString &) destFile); 1164 curFile = currentDir.canonicalPath()+"/"+(*it);
1083 fileDlg->exec(); 1165 QString destFile = *it;
1084 if( fileDlg->result() == 1 ) { 1166 fileDlg->setInputText((const QString &) destFile);
1085 QString filename = fileDlg->LineEdit1->text(); 1167 fileDlg->exec();
1086 destFile = currentDir.canonicalPath()+"/"+destFile; 1168 if( fileDlg->result() == 1 ) {
1087 1169 QString filename = fileDlg->LineEdit1->text();
1088 QFile f(destFile); 1170 destFile = currentDir.canonicalPath()+"/"+destFile;
1089 if( f.exists()) 1171
1090 f.remove(); 1172 QFile f(destFile);
1091 if(!copyFile(destFile, curFile) ) 1173 if( f.exists())
1092 qWarning("nothin doing"); 1174 f.remove();
1175 if(!copyFile(destFile, curFile) )
1176 qWarning("nothin doing");
1177 }
1178 }
1179 populateLocalView();
1180 TabWidget->setCurrentPage(0);
1093 } 1181 }
1094 populateLocalView();
1095 TabWidget->setCurrentPage(0);
1096 } 1182 }
1097} 1183}
1098 1184
1099void AdvancedFm::move() { 1185void AdvancedFm::move() {
1100 QString curFile = getPath(); 1186
1187 QStringList curFileList = getPath();
1188 QString curFile;
1101// qDebug(curFile); 1189// qDebug(curFile);
1102 QString destFile; 1190 QString destFile;
1191
1103 if (TabWidget->currentPageIndex() == 0) { 1192 if (TabWidget->currentPageIndex() == 0) {
1104 QString destFile = currentRemoteDir.canonicalPath() + "/" + Local_View->currentItem()->text(0); 1193 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
1105 qDebug("Destination file is "+destFile); 1194 QString destFile = currentRemoteDir.canonicalPath() + "/" + *it;
1106 1195 curFile = currentDir.canonicalPath()+"/"+(*it);
1107 QFile f(destFile); 1196 qDebug("Destination file is "+destFile);
1108 if( f.exists()) 1197
1109 f.remove(); 1198 QFile f(destFile);
1110 if(!copyFile( destFile, curFile) ) { 1199 if( f.exists())
1111 QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile)); 1200 f.remove();
1112 return; 1201 if(!copyFile( destFile, curFile) ) {
1202 QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile));
1203 return;
1204 }
1205 QFile::remove(curFile);
1113 } 1206 }
1114 QFile::remove(curFile);
1115 TabWidget->setCurrentPage(1); 1207 TabWidget->setCurrentPage(1);
1116 } else { 1208 } else {
1117 QString destFile = currentDir.canonicalPath() + "/" + Remote_View->currentItem()->text(0); 1209 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
1118 qDebug("Destination file is "+destFile); 1210 QString destFile = currentRemoteDir.canonicalPath() + "/" + *it;
1119 1211 qDebug("Destination file is "+destFile);
1120 QFile f(destFile); 1212 curFile = currentDir.canonicalPath()+"/"+(*it);
1121 if( f.exists()) 1213
1122 f.remove(); 1214 QFile f(destFile);
1123 if(!copyFile(destFile, curFile) ) { 1215 if( f.exists())
1124 QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile)); 1216 f.remove();
1125 return; 1217 if(!copyFile(destFile, curFile) ) {
1218 QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile));
1219 return;
1220 }
1221 QFile::remove(curFile);
1222 TabWidget->setCurrentPage(0);
1126 } 1223 }
1127 QFile::remove(curFile);
1128 TabWidget->setCurrentPage(0);
1129 } 1224 }
1130 populateRemoteView(); 1225 populateRemoteView();
1131 populateLocalView(); 1226 populateLocalView();
1132} 1227 }
1133 1228
1134bool AdvancedFm::copyFile( const QString & dest, const QString & src ) 1229 bool AdvancedFm::copyFile( const QString & dest, const QString & src )
1135{ 1230{
1136 char bf[ 50000 ]; 1231 char bf[ 50000 ];
1137 int bytesRead; 1232 int bytesRead;
1138 bool success = TRUE; 1233 bool success = TRUE;
1139 struct stat status; 1234 struct stat status;
1140 1235
@@ -1290,6 +1385,96 @@ void AdvancedFm::del() {
1290void AdvancedFm::doAbout() { 1385void AdvancedFm::doAbout() {
1291 QMessageBox::message("AdvancedFm","Advanced FileManager\n" 1386 QMessageBox::message("AdvancedFm","Advanced FileManager\n"
1292 "is copyright 2002 by\n" 1387 "is copyright 2002 by\n"
1293 "L.J.Potter<llornkcor@handhelds.org>\n" 1388 "L.J.Potter<llornkcor@handhelds.org>\n"
1294 "and is licensed by the GPL"); 1389 "and is licensed by the GPL");
1295} 1390}
1391
1392void AdvancedFm::keyReleaseEvent( QKeyEvent *e)
1393{
1394 switch ( e->key() ) {
1395 case Key_Delete:
1396 del();
1397 break;
1398 case Key_H:
1399 showHidden();
1400 break;
1401 case Key_E:
1402 runThis();
1403 break;
1404 case Key_C:
1405 copy();
1406 break;
1407 case Key_A:
1408 copyAs();
1409 break;
1410 case Key_M:
1411 move();
1412 break;
1413 case Key_R:
1414 rn();
1415 break;
1416 case Key_I:
1417 fileStatus();
1418 break;
1419 case Key_U:
1420 upDir();
1421 break;
1422 case Key_P:
1423 filePerms();
1424 break;
1425 case Key_N:
1426 mkDir();
1427 break;
1428 case Key_1:
1429 switchToLocalTab();
1430 break;
1431 case Key_2:
1432 switchToRemoteTab();
1433 break;
1434 case Key_3:
1435 CFButtonPushed();
1436 break;
1437 case Key_4:
1438 SDButtonPushed();
1439 break;
1440 case Key_5:
1441 homeButtonPushed();
1442 break;
1443 case Key_6:
1444 docButtonPushed();
1445 break;
1446 case Key_7:
1447 break;
1448 case Key_8:
1449 break;
1450 case Key_9:
1451 break;
1452 case Key_0:
1453 break;
1454
1455
1456
1457 }
1458
1459}
1460
1461void AdvancedFm::mkSym() {
1462 QString cmd;
1463 if (TabWidget->currentPageIndex() == 0) {
1464 QString curFile = Local_View->currentItem()->text(0);
1465 if(curFile.right(1) == "/") curFile = curFile.left(curFile.length() - 1);
1466 QString destName = currentRemoteDir.canonicalPath()+"/"+curFile;
1467 curFile = currentDir.canonicalPath()+"/"+curFile;
1468 cmd = "ln -s "+curFile+" "+destName;
1469 system(cmd.latin1() );
1470 populateRemoteView();
1471 } else {
1472 QString curFile = Remote_View->currentItem()->text(0);
1473 if(curFile.right(1) == "/") curFile = curFile.left(curFile.length() - 1);
1474 QString destName = currentDir.canonicalPath()+"/"+curFile;
1475 curFile = currentRemoteDir.canonicalPath()+"/"+curFile;
1476 cmd = "ln -s "+curFile+" "+destName;
1477 system(cmd.latin1() );
1478 populateLocalView();
1479 }
1480}
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
@@ -15,12 +15,13 @@
15#include <qvariant.h> 15#include <qvariant.h>
16#include <qdialog.h> 16#include <qdialog.h>
17#include <qmainwindow.h> 17#include <qmainwindow.h>
18#include <qdir.h> 18#include <qdir.h>
19#include <qstring.h> 19#include <qstring.h>
20#include <qpoint.h> 20#include <qpoint.h>
21#include <qstringlist.h>
21 22
22class QVBoxLayout; 23class QVBoxLayout;
23class QHBoxLayout; 24class QHBoxLayout;
24class QGridLayout; 25class QGridLayout;
25class QComboBox; 26class QComboBox;
26class QListView; 27class QListView;
@@ -90,20 +91,21 @@ protected slots:
90 void runThis(); 91 void runThis();
91 void runText(); 92 void runText();
92 void filePerms(); 93 void filePerms();
93 void doProperties(); 94 void doProperties();
94 void runCommand(); 95 void runCommand();
95 void runCommandStd(); 96 void runCommandStd();
96 QString getPath(); 97 QStringList getPath();
98 void mkSym();
97 void switchToLocalTab(); 99 void switchToLocalTab();
98 void switchToRemoteTab(); 100 void switchToRemoteTab();
99 101
100protected: 102protected:
101 QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3; 103 QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3;
102 QStringList remoteDirPathStringList, localDirPathStringList; 104 QStringList remoteDirPathStringList, localDirPathStringList;
103 105 void keyReleaseEvent( QKeyEvent *);
104protected slots: 106protected slots:
105 void homeButtonPushed(); 107 void homeButtonPushed();
106 void docButtonPushed(); 108 void docButtonPushed();
107 void SDButtonPushed(); 109 void SDButtonPushed();
108 void CFButtonPushed(); 110 void CFButtonPushed();
109 void upDir(); 111 void upDir();