summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfm.cpp55
-rw-r--r--noncore/apps/advancedfm/advancedfm.h7
2 files changed, 51 insertions, 11 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp
index d4351b0..6b7fa1f 100644
--- a/noncore/apps/advancedfm/advancedfm.cpp
+++ b/noncore/apps/advancedfm/advancedfm.cpp
@@ -1,252 +1,255 @@
1/*************************************************************************** 1/***************************************************************************
2 AdvancedFm.cpp 2 AdvancedFm.cpp
3 ------------------- 3 -------------------
4 ** Created: Sat Mar 9 23:33:09 2002 4 ** Created: Sat Mar 9 23:33:09 2002
5 copyright : (C) 2002 by ljp 5 copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com 6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 ***************************************************************************/ 11 ***************************************************************************/
12#define DEVELOPERS_VERSION 12#define DEVELOPERS_VERSION
13#include "advancedfm.h" 13#include "advancedfm.h"
14 14
15 15
16// #include <opie/ofileselector.h> 16// #include <opie/ofileselector.h>
17// #include <opie/ofiledialog.h> 17// #include <opie/ofiledialog.h>
18 18
19#include <opie/otabwidget.h> 19#include <opie/otabwidget.h>
20 20
21#include <qpe/filemanager.h> 21#include <qpe/filemanager.h>
22#include <qpe/qcopenvelope_qws.h> 22#include <qpe/qcopenvelope_qws.h>
23#include <qpe/qpeapplication.h> 23#include <qpe/qpeapplication.h>
24#include <qpe/config.h> 24#include <qpe/config.h>
25#include <qpe/mimetype.h> 25#include <qpe/mimetype.h>
26#include <qpe/applnk.h> 26#include <qpe/applnk.h>
27#include <qpe/ir.h> 27#include <qpe/ir.h>
28#include <qpe/resource.h> 28#include <qpe/resource.h>
29#include <qpe/menubutton.h> 29#include <qpe/menubutton.h>
30 30
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
35#include <qlistview.h> 35#include <qlistview.h>
36#include <qlabel.h> 36#include <qlabel.h>
37#include <qwidget.h> 37#include <qwidget.h>
38#include <qlayout.h> 38#include <qlayout.h>
39#include <qimage.h> 39#include <qimage.h>
40#include <qmessagebox.h> 40#include <qmessagebox.h>
41#include <qlineedit.h> 41#include <qlineedit.h>
42 42
43#include <sys/stat.h> 43#include <sys/stat.h>
44#include <time.h> 44#include <time.h>
45#include <dirent.h> 45#include <dirent.h>
46#include <fcntl.h> 46#include <fcntl.h>
47#include <sys/vfs.h> 47#include <sys/vfs.h>
48#include <mntent.h> 48#include <mntent.h>
49 49
50AdvancedFm::AdvancedFm( ) 50AdvancedFm::AdvancedFm( )
51 : QMainWindow( ) { 51 : QMainWindow( ) {
52 init(); 52 init();
53 renameBox = 0; 53 renameBox = 0;
54 54
55 unknownXpm = Resource::loadImage( "UnknownDocument" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); 55 unknownXpm = Resource::loadImage( "UnknownDocument" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
56 56
57 initConnections(); 57 initConnections();
58 whichTab=1; 58 whichTab=1;
59 rePopulate(); 59 rePopulate();
60 currentPathCombo->setFocus(); 60 currentPathCombo->setFocus();
61 channel = new QCopChannel( "QPE/Application/advancedfm", this );
62 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
63 this, SLOT( qcopReceive(const QCString&, const QByteArray&)) );
61} 64}
62 65
63AdvancedFm::~AdvancedFm() { 66AdvancedFm::~AdvancedFm() {
64} 67}
65 68
66 69
67void AdvancedFm::cleanUp() 70void AdvancedFm::cleanUp()
68{ 71{
69 QString sfile=QDir::homeDirPath(); 72 QString sfile=QDir::homeDirPath();
70 if(sfile.right(1) != "/") 73 if(sfile.right(1) != "/")
71 sfile+="/._temp"; 74 sfile+="/._temp";
72 else 75 else
73 sfile+="._temp"; 76 sfile+="._temp";
74 QFile file( sfile); 77 QFile file( sfile);
75 if(file.exists()) 78 if(file.exists())
76 file.remove(); 79 file.remove();
77} 80}
78 81
79void AdvancedFm::tabChanged(QWidget *w) 82void AdvancedFm::tabChanged(QWidget *w)
80{ 83{
81 if( w == tab) 84 if( w == tab)
82 whichTab = 1; 85 whichTab = 1;
83 else 86 else
84 whichTab = 2; 87 whichTab = 2;
85 88
86// qDebug("tab changed %d", whichTab ); 89// qDebug("tab changed %d", whichTab );
87 90
88 QString path = CurrentDir()->canonicalPath(); 91 QString path = CurrentDir()->canonicalPath();
89 currentPathCombo->lineEdit()->setText( path ); 92 currentPathCombo->lineEdit()->setText( path );
90 93
91 viewMenu->setItemChecked(viewMenu->idAt(0),TRUE); 94 viewMenu->setItemChecked(viewMenu->idAt(0),TRUE);
92 viewMenu->setItemChecked(viewMenu->idAt(1),FALSE); 95 viewMenu->setItemChecked(viewMenu->idAt(1),FALSE);
93 96
94 QString fs= getFileSystemType( (const QString &) path); 97 QString fs= getFileSystemType( (const QString &) path);
95 98
96 setCaption("AdvancedFm :: "+fs+" :: " 99 setCaption("AdvancedFm :: "+fs+" :: "
97 +checkDiskSpace( (const QString &) path )+ " kB free" ); 100 +checkDiskSpace( (const QString &) path )+ " kB free" );
98 chdir( path.latin1()); 101 chdir( path.latin1());
99} 102}
100 103
101 104
102void AdvancedFm::populateView() 105void AdvancedFm::populateView()
103{ 106{
104 QPixmap pm; 107 QPixmap pm;
105 QListView *thisView = CurrentView(); 108 QListView *thisView = CurrentView();
106 QDir *thisDir = CurrentDir(); 109 QDir *thisDir = CurrentDir();
107 QString path = thisDir->canonicalPath(); 110 QString path = thisDir->canonicalPath();
108 111
109 thisView->clear(); 112 thisView->clear();
110 thisDir->setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); 113 thisDir->setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
111 thisDir->setMatchAllDirs(TRUE); 114 thisDir->setMatchAllDirs(TRUE);
112 thisDir->setNameFilter(filterStr); 115 thisDir->setNameFilter(filterStr);
113 QString fileL, fileS, fileDate; 116 QString fileL, fileS, fileDate;
114 QString fs= getFileSystemType((const QString &) path); 117 QString fs= getFileSystemType((const QString &) path);
115 setCaption("AdvancedFm :: "+fs+" :: " 118 setCaption("AdvancedFm :: "+fs+" :: "
116 +checkDiskSpace((const QString &) path)+" kB free" ); 119 +checkDiskSpace((const QString &) path)+" kB free" );
117 bool isDir=FALSE; 120 bool isDir=FALSE;
118 const QFileInfoList *list = thisDir->entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); 121 const QFileInfoList *list = thisDir->entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/);
119 QFileInfoListIterator it(*list); 122 QFileInfoListIterator it(*list);
120 QFileInfo *fi; 123 QFileInfo *fi;
121 while ( (fi=it.current()) ) 124 while ( (fi=it.current()) )
122 { 125 {
123 if (fi->isSymLink() ) 126 if (fi->isSymLink() )
124 { 127 {
125 QString symLink=fi->readLink(); 128 QString symLink=fi->readLink();
126 QFileInfo sym( symLink); 129 QFileInfo sym( symLink);
127 fileS.sprintf( "%10i", sym.size() ); 130 fileS.sprintf( "%10i", sym.size() );
128 fileL.sprintf( "%s -> %s", fi->fileName().data(),sym.filePath().data() ); 131 fileL.sprintf( "%s -> %s", fi->fileName().data(),sym.filePath().data() );
129 fileDate = sym.lastModified().toString(); 132 fileDate = sym.lastModified().toString();
130 } 133 }
131 else 134 else
132 { 135 {
133 fileS.sprintf( "%10i", fi->size() ); 136 fileS.sprintf( "%10i", fi->size() );
134 fileL.sprintf( "%s",fi->fileName().data() ); 137 fileL.sprintf( "%s",fi->fileName().data() );
135 fileDate= fi->lastModified().toString(); 138 fileDate= fi->lastModified().toString();
136 if( QDir(QDir::cleanDirPath( path +"/"+fileL)).exists() ) 139 if( QDir(QDir::cleanDirPath( path +"/"+fileL)).exists() )
137 { 140 {
138 fileL+="/"; 141 fileL+="/";
139 isDir=TRUE; 142 isDir=TRUE;
140 } 143 }
141 } 144 }
142 145
143 QFileInfo fileInfo( path + "/" + fileL); 146 QFileInfo fileInfo( path + "/" + fileL);
144 147
145 if(fileL !="./" && fi->exists()) 148 if(fileL !="./" && fi->exists())
146 { 149 {
147 item= new QListViewItem( thisView, fileL, fileS , fileDate); 150 item= new QListViewItem( thisView, fileL, fileS , fileDate);
148 151
149 if(isDir || fileL.find("/",0,TRUE) != -1) 152 if(isDir || fileL.find("/",0,TRUE) != -1)
150 { 153 {
151 154
152 if( !QDir( fi->filePath() ).isReadable()) //is directory 155 if( !QDir( fi->filePath() ).isReadable()) //is directory
153 pm = Resource::loadPixmap( "lockedfolder" ); 156 pm = Resource::loadPixmap( "lockedfolder" );
154 else 157 else
155 pm= Resource::loadPixmap( "folder" ); 158 pm= Resource::loadPixmap( "folder" );
156 } 159 }
157 else if ( fs == "vfat" && fileInfo.filePath().contains("/bin") ) 160 else if ( fs == "vfat" && fileInfo.filePath().contains("/bin") )
158 { 161 {
159 pm = Resource::loadPixmap( "exec"); 162 pm = Resource::loadPixmap( "exec");
160 } 163 }
161 else if( (fileInfo.permission( QFileInfo::ExeUser) 164 else if( (fileInfo.permission( QFileInfo::ExeUser)
162 | fileInfo.permission( QFileInfo::ExeGroup) 165 | fileInfo.permission( QFileInfo::ExeGroup)
163 | fileInfo.permission( QFileInfo::ExeOther)) && fs != "vfat" ) 166 | fileInfo.permission( QFileInfo::ExeOther)) && fs != "vfat" )
164 { 167 {
165 pm = Resource::loadPixmap( "exec"); 168 pm = Resource::loadPixmap( "exec");
166 } 169 }
167 else if( !fi->isReadable() ) 170 else if( !fi->isReadable() )
168 { 171 {
169 pm = Resource::loadPixmap( "locked" ); 172 pm = Resource::loadPixmap( "locked" );
170 } 173 }
171 else { //everything else goes by mimetype 174 else { //everything else goes by mimetype
172 MimeType mt(fi->filePath()); 175 MimeType mt(fi->filePath());
173 pm=mt.pixmap(); //sets the correct pixmap for mimetype 176 pm=mt.pixmap(); //sets the correct pixmap for mimetype
174 if(pm.isNull()) { 177 if(pm.isNull()) {
175 pm = unknownXpm; 178 pm = unknownXpm;
176 } 179 }
177 } 180 }
178 if( fi->isSymLink() && fileL.find("->",0,TRUE) != -1) 181 if( fi->isSymLink() && fileL.find("->",0,TRUE) != -1)
179 { 182 {
180 // overlay link image 183 // overlay link image
181 pm= Resource::loadPixmap( "folder" ); 184 pm= Resource::loadPixmap( "folder" );
182 QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); 185 QPixmap lnk = Resource::loadPixmap( "opie/symlink" );
183 QPainter painter( &pm ); 186 QPainter painter( &pm );
184 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); 187 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
185 pm.setMask( pm.createHeuristicMask( FALSE ) ); 188 pm.setMask( pm.createHeuristicMask( FALSE ) );
186 } 189 }
187 item->setPixmap( 0,pm); 190 item->setPixmap( 0,pm);
188 191
189 } 192 }
190 isDir=FALSE; 193 isDir=FALSE;
191 ++it; 194 ++it;
192 } 195 }
193 196
194 if( path.find("dev",0,TRUE) != -1) 197 if( path.find("dev",0,TRUE) != -1)
195 { 198 {
196 struct stat buf; 199 struct stat buf;
197 dev_t devT; 200 dev_t devT;
198 DIR *dir; 201 DIR *dir;
199 struct dirent *mydirent; 202 struct dirent *mydirent;
200 203
201 if((dir = opendir( path.latin1())) != NULL) 204 if((dir = opendir( path.latin1())) != NULL)
202 while ((mydirent = readdir(dir)) != NULL) 205 while ((mydirent = readdir(dir)) != NULL)
203 { 206 {
204 lstat( mydirent->d_name, &buf); 207 lstat( mydirent->d_name, &buf);
205// qDebug(mydirent->d_name); 208// qDebug(mydirent->d_name);
206 fileL.sprintf("%s", mydirent->d_name); 209 fileL.sprintf("%s", mydirent->d_name);
207 devT = buf.st_dev; 210 devT = buf.st_dev;
208 fileS.sprintf("%d, %d", (int) ( devT >>8) &0xFF, (int)devT &0xFF); 211 fileS.sprintf("%d, %d", (int) ( devT >>8) &0xFF, (int)devT &0xFF);
209 fileDate.sprintf("%s", ctime( &buf.st_mtime)); 212 fileDate.sprintf("%s", ctime( &buf.st_mtime));
210 if( fileL.find(".") == -1 ) 213 if( fileL.find(".") == -1 )
211 { 214 {
212 item= new QListViewItem( thisView, fileL, fileS, fileDate); 215 item= new QListViewItem( thisView, fileL, fileS, fileDate);
213 pm = unknownXpm; 216 pm = unknownXpm;
214 item->setPixmap( 0,pm); 217 item->setPixmap( 0,pm);
215 } 218 }
216 } 219 }
217 220
218 closedir(dir); 221 closedir(dir);
219 } 222 }
220 223
221 thisView->setSorting( 3,FALSE); 224 thisView->setSorting( 3,FALSE);
222 fillCombo( (const QString &) path ); 225 fillCombo( (const QString &) path );
223} 226}
224 227
225void AdvancedFm::rePopulate() 228void AdvancedFm::rePopulate()
226{ 229{
227 int tmpTab = whichTab; 230 int tmpTab = whichTab;
228 qDebug("%d", tmpTab); 231 qDebug("%d", tmpTab);
229 232
230 for(int i =1; i < 3; i++) 233 for(int i =1; i < 3; i++)
231 { 234 {
232 TabWidget->setCurrentTab(i - 1); 235 TabWidget->setCurrentTab(i - 1);
233 populateView(); 236 populateView();
234 } 237 }
235 TabWidget->setCurrentTab( tmpTab - 1); 238 TabWidget->setCurrentTab( tmpTab - 1);
236} 239}
237 240
238void AdvancedFm::ListClicked(QListViewItem *selectedItem) 241void AdvancedFm::ListClicked(QListViewItem *selectedItem)
239{ 242{
240 if(selectedItem) 243 if(selectedItem)
241 { 244 {
242 QString strItem=selectedItem->text(0); 245 QString strItem=selectedItem->text(0);
243 QString strSize=selectedItem->text(1); 246 QString strSize=selectedItem->text(1);
244 strSize=strSize.stripWhiteSpace(); 247 strSize=strSize.stripWhiteSpace();
245 bool isDirectory = false; 248 bool isDirectory = false;
246 QString strItem2; 249 QString strItem2;
247 250
248 if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 )//if symlink 251 if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 )//if symlink
249 { 252 {
250 strItem2 = dealWithSymName((const QString&)strItem); 253 strItem2 = dealWithSymName((const QString&)strItem);
251 if(QDir(strItem2).exists() ) 254 if(QDir(strItem2).exists() )
252 strItem = strItem2; 255 strItem = strItem2;
@@ -617,263 +620,293 @@ void AdvancedFm::showFileMenu()
617 n->insertItem( tr( "Copy Same Dir" ), this, SLOT( copySameDir() )); 620 n->insertItem( tr( "Copy Same Dir" ), this, SLOT( copySameDir() ));
618 n->insertItem( tr( "Move" ), this, SLOT( move() )); 621 n->insertItem( tr( "Move" ), this, SLOT( move() ));
619 622
620 n->insertSeparator(); 623 n->insertSeparator();
621 n->insertItem( tr( "Delete" ), this, SLOT( doDelete() )); 624 n->insertItem( tr( "Delete" ), this, SLOT( doDelete() ));
622 m->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() )); 625 m->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() ));
623 626
624 m->insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); 627 m->insertItem( tr( "Run Command" ), this, SLOT( runCommand() ));
625 m->insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); 628 m->insertItem( tr( "File Info" ), this, SLOT( fileStatus() ));
626 629
627 m->insertSeparator(); 630 m->insertSeparator();
628 m->insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); 631 m->insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() ));
629 632
630#if defined(QT_QWS_OPIE) 633#if defined(QT_QWS_OPIE)
631 m->insertItem( tr( "Properties" ), this, SLOT( doProperties() )); 634 m->insertItem( tr( "Properties" ), this, SLOT( doProperties() ));
632#endif 635#endif
633 m->setCheckable(TRUE); 636 m->setCheckable(TRUE);
634 if (!b) 637 if (!b)
635 m->setItemChecked(m->idAt(0),TRUE); 638 m->setItemChecked(m->idAt(0),TRUE);
636 else 639 else
637 m->setItemChecked(m->idAt(0),FALSE); 640 m->setItemChecked(m->idAt(0),FALSE);
638 641
639 if(Ir::supported()) 642 if(Ir::supported())
640 m->insertItem( tr( "Beam File" ), this, SLOT( doBeam() )); 643 m->insertItem( tr( "Beam File" ), this, SLOT( doBeam() ));
641 m->setFocus(); 644 m->setFocus();
642 m->exec( QPoint( 4,QCursor::pos().y()) ); 645 m->exec( QPoint( 4,QCursor::pos().y()) );
643 646
644 if(m) delete m; 647 if(m) delete m;
645} 648}
646 649
647 650
648void AdvancedFm::cancelMenuTimer() 651void AdvancedFm::cancelMenuTimer()
649{ 652{
650// qDebug("selectionChanged: cancel menu timer"); 653// qDebug("selectionChanged: cancel menu timer");
651 if( menuTimer.isActive() ) 654 if( menuTimer.isActive() )
652 menuTimer.stop(); 655 menuTimer.stop();
653} 656}
654 657
655QString AdvancedFm::checkDiskSpace(const QString &path) 658QString AdvancedFm::checkDiskSpace(const QString &path)
656{ 659{
657 struct statfs fss; 660 struct statfs fss;
658 if ( !statfs( path.latin1(), &fss ) ) 661 if ( !statfs( path.latin1(), &fss ) )
659 { 662 {
660 int blkSize = fss.f_bsize; 663 int blkSize = fss.f_bsize;
661// int totalBlks = fs.f_blocks; 664// int totalBlks = fs.f_blocks;
662 int availBlks = fss.f_bavail; 665 int availBlks = fss.f_bavail;
663 666
664 long mult = blkSize / 1024; 667 long mult = blkSize / 1024;
665 long div = 1024 / blkSize; 668 long div = 1024 / blkSize;
666 if ( !mult ) mult = 1; 669 if ( !mult ) mult = 1;
667 if ( !div ) div = 1; 670 if ( !div ) div = 1;
668 671
669 672
670 return QString::number(availBlks * mult / div); 673 return QString::number(availBlks * mult / div);
671 } 674 }
672 return ""; 675 return "";
673} 676}
674 677
675void AdvancedFm::addToDocs() 678void AdvancedFm::addToDocs()
676{ 679{
677 QStringList strListPaths = getPath(); 680 QStringList strListPaths = getPath();
678 QDir *thisDir = CurrentDir(); 681 QDir *thisDir = CurrentDir();
679 682
680 if( strListPaths.count() > 0) 683 if( strListPaths.count() > 0)
681 { 684 {
682 QString curFile; 685 QString curFile;
683 for ( QStringList::Iterator it = strListPaths.begin(); it != strListPaths.end(); ++it ) 686 for ( QStringList::Iterator it = strListPaths.begin(); it != strListPaths.end(); ++it )
684 { 687 {
685 curFile = thisDir->canonicalPath()+"/"+(*it); 688 curFile = thisDir->canonicalPath()+"/"+(*it);
686// qDebug(curFile); 689// qDebug(curFile);
687 DocLnk f; 690 DocLnk f;
688// curFile.replace(QRegExp("\\..*"),""); 691// curFile.replace(QRegExp("\\..*"),"");
689 f.setName((*it)); 692 f.setName((*it));
690 f.setFile( curFile); 693 f.setFile( curFile);
691 f.writeLink(); 694 f.writeLink();
692 } 695 }
693 } 696 }
694} 697}
695 698
696 699
697void AdvancedFm::customDirsToMenu() 700void AdvancedFm::customDirsToMenu()
698{ 701{
699 702
700 Config cfg("AdvancedFm"); 703 Config cfg("AdvancedFm");
701 cfg.setGroup("Menu"); 704 cfg.setGroup("Menu");
702 705
703 QStringList list = cfg.readListEntry( "CustomDir", ','); 706 QStringList list = cfg.readListEntry( "CustomDir", ',');
704 menuButton->insertItems(list ); 707 menuButton->insertItems(list );
705 708
706// for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 709// for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
707// { 710// {
708// customDirMenu->insertItem(*it ); 711// customDirMenu->insertItem(*it );
709// } 712// }
710} 713}
711 714
712void AdvancedFm::dirMenuSelected(int item) 715void AdvancedFm::dirMenuSelected(int item)
713{ 716{
714 qDebug("menu item %d", item); 717 qDebug("menu item %d", item);
715 switch(item) 718 switch(item)
716 { 719 {
717 720
718 case -21: 721 case -21:
719 case 0: 722 case 0:
720 addCustomDir(); 723 addCustomDir();
721 break; 724 break;
722 case -22: 725 case -22:
723 case 1: 726 case 1:
724 removeCustomDir(); 727 removeCustomDir();
725 break; 728 break;
726 default: 729 default:
727 { 730 {
728// gotoCustomDir( menuButton->text(item)); 731// gotoCustomDir( menuButton->text(item));
729// gotoCustomDir( customDirMenu->text(item)); 732// gotoCustomDir( customDirMenu->text(item));
730 } 733 }
731 break; 734 break;
732 735
733 }; 736 };
734} 737}
735 738
736void AdvancedFm::addCustomDir() 739void AdvancedFm::addCustomDir()
737{ 740{
738 Config cfg("AdvancedFm"); 741 Config cfg("AdvancedFm");
739 cfg.setGroup("Menu"); 742 cfg.setGroup("Menu");
740 QString dir; 743 QString dir;
741 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)','); 744 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)',');
742 745
743 dir = CurrentDir()->canonicalPath(); 746 dir = CurrentDir()->canonicalPath();
744 747
745 bool addIt=true; 748 bool addIt=true;
746 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 749 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
747 { 750 {
748 if( dir == (*it)) 751 if( dir == (*it))
749 { 752 {
750 addIt=false; 753 addIt=false;
751 } 754 }
752 } 755 }
753 if(addIt) 756 if(addIt)
754 { 757 {
755 menuButton->insertItem(dir); 758 menuButton->insertItem(dir);
756// customDirMenu->insertItem(dir); 759// customDirMenu->insertItem(dir);
757 list << dir; 760 list << dir;
758 } 761 }
759 762
760 cfg.writeEntry("CustomDir", list, ','); 763 cfg.writeEntry("CustomDir", list, ',');
761 cfg.write(); 764 cfg.write();
762} 765}
763 766
764void AdvancedFm::removeCustomDir() 767void AdvancedFm::removeCustomDir()
765{ 768{
766// qDebug("remove custom dir"); 769// qDebug("remove custom dir");
767 Config cfg("AdvancedFm"); 770 Config cfg("AdvancedFm");
768 cfg.setGroup("Menu"); 771 cfg.setGroup("Menu");
769 QString dir; 772 QString dir;
770 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)','); 773 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)',');
771 QStringList list2; 774 QStringList list2;
772 dir = CurrentDir()->canonicalPath(); 775 dir = CurrentDir()->canonicalPath();
773 int ramble=2; 776 int ramble=2;
774// int ramble=-24; 777// int ramble=-24;
775//first remove list 778//first remove list
776 if(list.grep(dir,true).isEmpty()) 779 if(list.grep(dir,true).isEmpty())
777 { 780 {
778 QMessageBox::message(tr( "AdvancedFm" ), 781 QMessageBox::message(tr( "AdvancedFm" ),
779 tr("Cannot remove current directory\nfrom bookmarks.\nIt is not bookmarked!")); 782 tr("Cannot remove current directory\nfrom bookmarks.\nIt is not bookmarked!"));
780 } 783 }
781 else 784 else
782 { 785 {
783 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 786 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
784 { 787 {
785 if((*it) != dir)//current item is not our current dir, so add it to temp list 788 if((*it) != dir)//current item is not our current dir, so add it to temp list
786 { 789 {
787 list2 <<(*it); 790 list2 <<(*it);
788 } 791 }
789 else 792 else
790 { 793 {
791// customDirMenu->removeItem( ramble); 794// customDirMenu->removeItem( ramble);
792 menuButton->remove( ramble); 795 menuButton->remove( ramble);
793 796
794 } 797 }
795 ramble++; 798 ramble++;
796// ramble--; 799// ramble--;
797 } 800 }
798 801
799 cfg.writeEntry("CustomDir", list2, ','); 802 cfg.writeEntry("CustomDir", list2, ',');
800 cfg.write(); 803 cfg.write();
801 } 804 }
802// customDirsToMenu(); 805// customDirsToMenu();
803 806
804} 807}
805 808
806void AdvancedFm::gotoCustomDir(const QString &dir) 809void AdvancedFm::gotoCustomDir(const QString &dir)
807{ 810{
808// qDebug("gotoCustomDir(const QString &dir) " +dir ); 811// qDebug("gotoCustomDir(const QString &dir) " +dir );
809 QString curDir = dir; 812// QString curDir = dir;
810 QDir *thisDir = CurrentDir(); 813// QDir *thisDir = CurrentDir();
811// if( curDir.isEmpty()) { 814// if( curDir.isEmpty()) {
812// } 815// }
813 if( curDir == s_addBookmark) 816 if( dir == s_addBookmark)
814 { 817 {
815 addCustomDir(); 818 addCustomDir();
816 } 819 }
817 if( curDir == s_removeBookmark) 820 if( dir == s_removeBookmark)
818 { 821 {
819 removeCustomDir( ); 822 removeCustomDir( );
820 } 823 }
821 else 824 else
822 { 825 {
823 if(QDir( curDir).exists() ) 826 gotoDirectory( dir);
824 { 827// if(QDir( curDir).exists() )
825 thisDir->setPath( curDir ); 828// {
826 chdir( curDir.latin1() ); 829// thisDir->setPath( curDir );
827 thisDir->cd( curDir, TRUE); 830// chdir( curDir.latin1() );
828 populateView(); 831// thisDir->cd( curDir, TRUE);
829 } 832// populateView();
833// }
830 } 834 }
831} 835}
832 836
833QDir *AdvancedFm::CurrentDir() 837QDir *AdvancedFm::CurrentDir()
834{ 838{
835 if ( whichTab == 1) 839 if ( whichTab == 1)
836 { 840 {
837 return &currentDir; 841 return &currentDir;
838 } 842 }
839 else 843 else
840 { 844 {
841 return &currentRemoteDir; 845 return &currentRemoteDir;
842 } 846 }
843} 847}
844 848
845QDir *AdvancedFm::OtherDir() 849QDir *AdvancedFm::OtherDir()
846{ 850{
847 if ( whichTab == 1) 851 if ( whichTab == 1)
848 { 852 {
849 return &currentRemoteDir; 853 return &currentRemoteDir;
850 } 854 }
851 else 855 else
852 { 856 {
853 return &currentDir; 857 return &currentDir;
854 } 858 }
855} 859}
856 860
857QListView * AdvancedFm::CurrentView() 861QListView * AdvancedFm::CurrentView()
858{ 862{
859 if ( whichTab == 1) 863 if ( whichTab == 1)
860 return Local_View; 864 return Local_View;
861 else 865 else
862 return Remote_View; 866 return Remote_View;
863} 867}
864 868
865QListView * AdvancedFm::OtherView() 869QListView * AdvancedFm::OtherView()
866{ 870{
867 if ( whichTab == 1) 871 if ( whichTab == 1)
868 return Remote_View; 872 return Remote_View;
869 else 873 else
870 return Local_View; 874 return Local_View;
871} 875}
872 876
873void AdvancedFm::setOtherTabCurrent() 877void AdvancedFm::setOtherTabCurrent()
874{ 878{
875 if ( whichTab == 1) 879 if ( whichTab == 1)
876 TabWidget->setCurrentTab(1); 880 TabWidget->setCurrentTab(1);
877 else 881 else
878 TabWidget->setCurrentTab(0); 882 TabWidget->setCurrentTab(0);
879} 883}
884
885void AdvancedFm::qcopReceive(const QCString &msg, const QByteArray &data) {
886 qDebug("qcop message "+msg );
887 QDataStream stream ( data, IO_ReadOnly );
888 if ( msg == "openDirectory(QString)" ) {
889 qDebug("received");
890 QString file;
891 stream >> file;
892 gotoDirectory( (const QString &) file);
893 }
894}
895
896 void AdvancedFm::setDocument(const QString &file) {
897 gotoDirectory( file);
898
899 }
900
901void AdvancedFm::gotoDirectory(const QString &file) {
902
903 QString curDir = file;
904 QDir *thisDir = CurrentDir();
905
906 if(QDir( curDir).exists() ) {
907 thisDir->setPath( curDir );
908 chdir( curDir.latin1() );
909 thisDir->cd( curDir, TRUE);
910 populateView();
911 }
912}
diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h
index 4480051..c9a5525 100644
--- a/noncore/apps/advancedfm/advancedfm.h
+++ b/noncore/apps/advancedfm/advancedfm.h
@@ -1,171 +1,178 @@
1/*************************************************************************** 1/***************************************************************************
2 advancedfm.h 2 advancedfm.h
3 ------------------- 3 -------------------
4 ** Created: Sat Mar 9 23:33:09 2002 4 ** Created: Sat Mar 9 23:33:09 2002
5 copyright : (C) 2002 by ljp 5 copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com 6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 ***************************************************************************/ 11 ***************************************************************************/
12#ifndef ADVANCEDFM_H 12#ifndef ADVANCEDFM_H
13#define ADVANCEDFM_H 13#define ADVANCEDFM_H
14#define QTOPIA_INTERNAL_FSLP // to get access to fileproperties 14#define QTOPIA_INTERNAL_FSLP // to get access to fileproperties
15#define QT_QWS_OPIE 15#define QT_QWS_OPIE
16 16
17//#include <opie/otabwidget.h> 17//#include <opie/otabwidget.h>
18#include <opie/oprocess.h> 18#include <opie/oprocess.h>
19
19#include <qpe/ir.h> 20#include <qpe/ir.h>
21#include <qpe/qcopenvelope_qws.h>
20 22
21#include <qvariant.h> 23#include <qvariant.h>
22#include <qdialog.h> 24#include <qdialog.h>
23#include <qmainwindow.h> 25#include <qmainwindow.h>
24#include <qstringlist.h> 26#include <qstringlist.h>
25#include <qdir.h> 27#include <qdir.h>
26#include <qstring.h> 28#include <qstring.h>
27#include <qpoint.h> 29#include <qpoint.h>
28#include <qtimer.h> 30#include <qtimer.h>
29#include <qpixmap.h> 31#include <qpixmap.h>
30 32
31class OTabWidget; 33class OTabWidget;
32class QVBoxLayout; 34class QVBoxLayout;
33class QHBoxLayout; 35class QHBoxLayout;
34class QGridLayout; 36class QGridLayout;
35class QComboBox; 37class QComboBox;
36class QListView; 38class QListView;
37class QListviewItem; 39class QListviewItem;
38class QLabel; 40class QLabel;
39class QProgressBar; 41class QProgressBar;
40class QSpinBox; 42class QSpinBox;
41class QTabWidget; 43class QTabWidget;
42class QWidget; 44class QWidget;
43class QPopupMenu; 45class QPopupMenu;
44class QFile; 46class QFile;
45class QListViewItem; 47class QListViewItem;
46class QLineEdit; 48class QLineEdit;
47class MenuButton; 49class MenuButton;
48 50
49class QToolButton; 51class QToolButton;
50class Ir; 52class Ir;
51 53
52class AdvancedFm : public QMainWindow 54class AdvancedFm : public QMainWindow
53{ 55{
54 Q_OBJECT 56 Q_OBJECT
55public: 57public:
56 AdvancedFm(); 58 AdvancedFm();
57 ~AdvancedFm(); 59 ~AdvancedFm();
58protected slots: 60protected slots:
59 void selectAll(); 61 void selectAll();
60 void addToDocs(); 62 void addToDocs();
61 void doDirChange(); 63 void doDirChange();
62 void mkDir(); 64 void mkDir();
63 void del(); 65 void del();
64 void rn(); 66 void rn();
65 void populateView(); 67 void populateView();
66 void rePopulate(); 68 void rePopulate();
67 void showHidden(); 69 void showHidden();
68 void showMenuHidden(); 70 void showMenuHidden();
69 void writeConfig(); 71 void writeConfig();
70 void readConfig(); 72 void readConfig();
71 void ListClicked(QListViewItem *); 73 void ListClicked(QListViewItem *);
72 void ListPressed( int, QListViewItem *, const QPoint&, int); 74 void ListPressed( int, QListViewItem *, const QPoint&, int);
73 void makeDir(); 75 void makeDir();
74 void doDelete(); 76 void doDelete();
75 void tabChanged(QWidget*); 77 void tabChanged(QWidget*);
76 void cleanUp(); 78 void cleanUp();
77 void renameIt(); 79 void renameIt();
78 void runThis(); 80 void runThis();
79 void runText(); 81 void runText();
80 void filePerms(); 82 void filePerms();
81 void doProperties(); 83 void doProperties();
82 void runCommand(); 84 void runCommand();
83 void runCommandStd(); 85 void runCommandStd();
84 QStringList getPath(); 86 QStringList getPath();
85 void mkSym(); 87 void mkSym();
86 void switchToLocalTab(); 88 void switchToLocalTab();
87 void switchToRemoteTab(); 89 void switchToRemoteTab();
88 90
89protected: 91protected:
90 92
91 OTabWidget *TabWidget; 93 OTabWidget *TabWidget;
94 QCopChannel * channel;
92 QPixmap unknownXpm; 95 QPixmap unknownXpm;
93 int whichTab; 96 int whichTab;
94// QTabWidget *TabWidget; 97// QTabWidget *TabWidget;
95 QWidget *tab, *tab_2, *tab_3; 98 QWidget *tab, *tab_2, *tab_3;
96 QListView *Local_View, *Remote_View; 99 QListView *Local_View, *Remote_View;
97 100
98 QLineEdit *currentPathEdit; 101 QLineEdit *currentPathEdit;
99 QPopupMenu *fileMenu, *localMenu, *remoteMenu, *viewMenu /*, *customDirMenu*/; 102 QPopupMenu *fileMenu, *localMenu, *remoteMenu, *viewMenu /*, *customDirMenu*/;
100 QToolButton *homeButton, *docButton, *cdUpButton, *sdButton, *cfButton, *qpeDirButton; 103 QToolButton *homeButton, *docButton, *cdUpButton, *sdButton, *cfButton, *qpeDirButton;
101// QPushButton *homeButton, *docButton, *cdUpButton, *sdButton, *cfButton, *qpeDirButton; 104// QPushButton *homeButton, *docButton, *cdUpButton, *sdButton, *cfButton, *qpeDirButton;
102 QDir currentDir, currentRemoteDir; 105 QDir currentDir, currentRemoteDir;
103 QComboBox *currentPathCombo; 106 QComboBox *currentPathCombo;
104 QString filterStr, s_addBookmark, s_removeBookmark; 107 QString filterStr, s_addBookmark, s_removeBookmark;
105 QListViewItem * item; 108 QListViewItem * item;
106 bool b; 109 bool b;
107 QStringList fileSystemTypeList, fsList; 110 QStringList fileSystemTypeList, fsList;
108 int currentServerConfig; 111 int currentServerConfig;
109 bool zaurusDevice; 112 bool zaurusDevice;
110 QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3; 113 QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3;
111 QStringList remoteDirPathStringList, localDirPathStringList; 114 QStringList remoteDirPathStringList, localDirPathStringList;
112 QLineEdit *renameBox; 115 QLineEdit *renameBox;
113 116
114 void init(); 117 void init();
115 void initConnections(); 118 void initConnections();
116 void keyReleaseEvent( QKeyEvent *); 119 void keyReleaseEvent( QKeyEvent *);
117 void keyPressEvent( QKeyEvent *); 120 void keyPressEvent( QKeyEvent *);
118 QString getFileSystemType(const QString &); 121 QString getFileSystemType(const QString &);
119 QString getDiskSpace(const QString &); 122 QString getDiskSpace(const QString &);
120 void parsetab(const QString &fileName); 123 void parsetab(const QString &fileName);
121 QString checkDiskSpace(const QString &); 124 QString checkDiskSpace(const QString &);
122 QString dealWithSymName(const QString &); 125 QString dealWithSymName(const QString &);
123 QDir *CurrentDir(); 126 QDir *CurrentDir();
124 QDir *OtherDir(); 127 QDir *OtherDir();
125 QListView *CurrentView(); 128 QListView *CurrentView();
126 QListView *OtherView(); 129 QListView *OtherView();
127 void setOtherTabCurrent(); 130 void setOtherTabCurrent();
128 131
129protected slots: 132protected slots:
130 void dirMenuSelected(int); 133 void dirMenuSelected(int);
131 void showFileMenu(); 134 void showFileMenu();
132 void cancelMenuTimer(); 135 void cancelMenuTimer();
133 void homeButtonPushed(); 136 void homeButtonPushed();
134 void docButtonPushed(); 137 void docButtonPushed();
135 void SDButtonPushed(); 138 void SDButtonPushed();
136 void CFButtonPushed(); 139 void CFButtonPushed();
137 void QPEButtonPushed(); 140 void QPEButtonPushed();
138 void upDir(); 141 void upDir();
139 void currentPathComboChanged(); 142 void currentPathComboChanged();
140 void copy(); 143 void copy();
141 void copyAs(); 144 void copyAs();
142 void copySameDir(); 145 void copySameDir();
143 void currentPathComboActivated(const QString &); 146 void currentPathComboActivated(const QString &);
144 void fillCombo(const QString &); 147 void fillCombo(const QString &);
145 bool copyFile( const QString & , const QString & ); 148 bool copyFile( const QString & , const QString & );
146 void move(); 149 void move();
147 void fileStatus(); 150 void fileStatus();
148 void doAbout(); 151 void doAbout();
149 void doBeam(); 152 void doBeam();
150 void fileBeamFinished( Ir *); 153 void fileBeamFinished( Ir *);
151 154
152private: 155private:
153 MenuButton *menuButton; 156 MenuButton *menuButton;
154 QString oldName; 157 QString oldName;
155 QTimer menuTimer; 158 QTimer menuTimer;
156 void startProcess(const QString &); 159 void startProcess(const QString &);
157 bool eventFilter( QObject * , QEvent * ); 160 bool eventFilter( QObject * , QEvent * );
158 void cancelRename(); 161 void cancelRename();
159 void doRename(QListView *); 162 void doRename(QListView *);
160 void okRename(); 163 void okRename();
161 void customDirsToMenu(); 164 void customDirsToMenu();
162 void addCustomDir(); 165 void addCustomDir();
163 void removeCustomDir(); 166 void removeCustomDir();
167 void gotoDirectory(const QString &);
164 168
165private slots: 169private slots:
166 void processEnded(OProcess *); 170 void processEnded(OProcess *);
167 void oprocessStderr(OProcess *, char *, int); 171 void oprocessStderr(OProcess *, char *, int);
168 void gotoCustomDir(const QString &); 172 void gotoCustomDir(const QString &);
173 void qcopReceive(const QCString&, const QByteArray&);
174 void setDocument(const QString &);
175
169}; 176};
170 177
171#endif // ADVANCEDFM_H 178#endif // ADVANCEDFM_H