summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfm.cpp1179
-rw-r--r--noncore/apps/advancedfm/advancedfm.h7
-rw-r--r--noncore/apps/advancedfm/advancedfmData.cpp38
-rw-r--r--noncore/apps/advancedfm/advancedfmMenu.cpp591
-rw-r--r--noncore/apps/advancedfm/filePermissions.cpp2
5 files changed, 858 insertions, 959 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp
index 91318f1..2fc4b49 100644
--- a/noncore/apps/advancedfm/advancedfm.cpp
+++ b/noncore/apps/advancedfm/advancedfm.cpp
@@ -35,886 +35,857 @@
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 <qpe/qpemessagebox.h>
44
43#include <sys/stat.h> 45#include <sys/stat.h>
44#include <time.h> 46#include <time.h>
45#include <dirent.h> 47#include <dirent.h>
46#include <fcntl.h> 48#include <fcntl.h>
47#include <sys/vfs.h> 49#include <sys/vfs.h>
48#include <mntent.h> 50#include <mntent.h>
49 51
50AdvancedFm::AdvancedFm( ) 52AdvancedFm::AdvancedFm( )
51 : QMainWindow( ) { 53 : QMainWindow( ) {
52 init(); 54 init();
53 renameBox = 0; 55 renameBox = 0;
54 56
55 unknownXpm = Resource::loadImage( "UnknownDocument" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); 57 unknownXpm = Resource::loadImage( "UnknownDocument" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
56 58
57 initConnections(); 59 initConnections();
58 whichTab=1; 60 whichTab=1;
59 rePopulate(); 61 rePopulate();
60 currentPathCombo->setFocus(); 62 currentPathCombo->setFocus();
61 channel = new QCopChannel( "QPE/Application/advancedfm", this ); 63 channel = new QCopChannel( "QPE/Application/advancedfm", this );
62 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 64 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
63 this, SLOT( qcopReceive(const QCString&, const QByteArray&)) ); 65 this, SLOT( qcopReceive(const QCString&, const QByteArray&)) );
64} 66}
65 67
66AdvancedFm::~AdvancedFm() { 68AdvancedFm::~AdvancedFm() {
67} 69}
68 70
69 71
70void AdvancedFm::cleanUp() 72void AdvancedFm::cleanUp() {
71{ 73 QString sfile=QDir::homeDirPath();
72 QString sfile=QDir::homeDirPath(); 74 if(sfile.right(1) != "/")
73 if(sfile.right(1) != "/") 75 sfile+="/._temp";
74 sfile+="/._temp"; 76 else
75 else 77 sfile+="._temp";
76 sfile+="._temp"; 78 QFile file( sfile);
77 QFile file( sfile); 79 if(file.exists())
78 if(file.exists()) 80 file.remove();
79 file.remove();
80} 81}
81 82
82void AdvancedFm::tabChanged(QWidget *w) 83void AdvancedFm::tabChanged(QWidget *) {
83{ 84// qWarning("tab changed");
84 if( w == tab) 85 QString path = CurrentDir()->canonicalPath();
85 whichTab = 1; 86 currentPathCombo->lineEdit()->setText( path );
86 else 87
87 whichTab = 2; 88 if(whichTab == 1) {
89 viewMenu->setItemChecked(viewMenu->idAt(0), true);
90 viewMenu->setItemChecked(viewMenu->idAt(1), false);
91 } else {
92 viewMenu->setItemChecked(viewMenu->idAt(0), false);
93 viewMenu->setItemChecked(viewMenu->idAt(1), true);
94 }
88 95
89// qDebug("tab changed %d", whichTab ); 96 QString fs= getFileSystemType( (const QString &) path);
90 97
91 QString path = CurrentDir()->canonicalPath(); 98 setCaption(tr("AdvancedFm :: ")+fs+" :: "
92 currentPathCombo->lineEdit()->setText( path ); 99 +checkDiskSpace( (const QString &) path )+ tr(" kB free") );
93 100 chdir( path.latin1());
94 viewMenu->setItemChecked(viewMenu->idAt(0),TRUE); 101}
95 viewMenu->setItemChecked(viewMenu->idAt(1),FALSE); 102
96 103
97 QString fs= getFileSystemType( (const QString &) path); 104void AdvancedFm::populateView() {
98 105 QPixmap pm;
99 setCaption("AdvancedFm :: "+fs+" :: " 106 QListView *thisView = CurrentView();
100 +checkDiskSpace( (const QString &) path )+ " kB free" ); 107 QDir *thisDir = CurrentDir();
101 chdir( path.latin1()); 108 QString path = thisDir->canonicalPath();
102} 109// qWarning("path is "+path);
103 110 thisView->clear();
104 111 thisDir->setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
105void AdvancedFm::populateView() 112 thisDir->setMatchAllDirs(TRUE);
106{ 113 thisDir->setNameFilter(filterStr);
107 QPixmap pm; 114 QString fileL, fileS, fileDate;
108 QListView *thisView = CurrentView(); 115 QString fs= getFileSystemType((const QString &) path);
109 QDir *thisDir = CurrentDir(); 116 setCaption(tr("AdvancedFm :: ")+fs+" :: "
110 QString path = thisDir->canonicalPath(); 117 +checkDiskSpace((const QString &) path)+ tr(" kB free") );
111 118 bool isDir=FALSE;
112 thisView->clear(); 119 const QFileInfoList *list = thisDir->entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/);
113 thisDir->setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); 120 QFileInfoListIterator it(*list);
114 thisDir->setMatchAllDirs(TRUE); 121 QFileInfo *fi;
115 thisDir->setNameFilter(filterStr); 122 while ( (fi=it.current()) ) {
116 QString fileL, fileS, fileDate;
117 QString fs= getFileSystemType((const QString &) path);
118 setCaption("AdvancedFm :: "+fs+" :: "
119 +checkDiskSpace((const QString &) path)+" kB free" );
120 bool isDir=FALSE;
121 const QFileInfoList *list = thisDir->entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/);
122 QFileInfoListIterator it(*list);
123 QFileInfo *fi;
124 while ( (fi=it.current()) ) {
125 if (fi->isSymLink() ) { 123 if (fi->isSymLink() ) {
126 QString symLink=fi->readLink(); 124 QString symLink=fi->readLink();
127 QFileInfo sym( symLink); 125 QFileInfo sym( symLink);
128 fileS.sprintf( "%10i", sym.size() ); 126 fileS.sprintf( "%10i", sym.size() );
129 fileL = fi->fileName() +" -> " + sym.filePath().data(); 127 fileL = fi->fileName() +" -> " + sym.filePath().data();
130 fileDate = sym.lastModified().toString(); 128 fileDate = sym.lastModified().toString();
131 } else { 129 } else {
132 fileS.sprintf( "%10i", fi->size() ); 130 fileS.sprintf( "%10i", fi->size() );
133 fileL = fi->fileName(); 131 fileL = fi->fileName();
134 fileDate= fi->lastModified().toString(); 132 fileDate= fi->lastModified().toString();
135 if( QDir(QDir::cleanDirPath( path +"/"+fileL)).exists() ) { 133 if( QDir(QDir::cleanDirPath( path +"/"+fileL)).exists() ) {
136 fileL+="/"; 134// if(fileL == "..")
137 isDir=TRUE; 135 fileL += "/";
138 } 136 isDir=TRUE;
139 } 137 }
138 }
140 QFileInfo fileInfo( path + "/" + fileL); 139 QFileInfo fileInfo( path + "/" + fileL);
141 140
142 if(fileL !="./" && fi->exists()) { 141 if(fileL !="./" && fi->exists()) {
143 item = new QListViewItem( thisView, fileL, fileS , fileDate); 142 item = new QListViewItem( thisView, fileL, fileS , fileDate);
144 143
145 if(isDir || fileL.find("/",0,TRUE) != -1) { 144 if(isDir || fileL.find("/",0,TRUE) != -1) {
146 145
147 if( !QDir( fi->filePath() ).isReadable()) //is directory 146 if( !QDir( fi->filePath() ).isReadable()) //is directory
148 pm = Resource::loadPixmap( "lockedfolder" ); 147 pm = Resource::loadPixmap( "lockedfolder" );
149 else 148 else
150 pm= Resource::loadPixmap( "folder" ); 149 pm= Resource::loadPixmap( "folder" );
151 } 150 }
152 else if ( fs == "vfat" && fileInfo.filePath().contains("/bin") ) { 151 else if ( fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
153 pm = Resource::loadPixmap( "exec"); 152 pm = Resource::loadPixmap( "exec");
154 } 153 }
155 else if( (fileInfo.permission( QFileInfo::ExeUser) 154 else if( (fileInfo.permission( QFileInfo::ExeUser)
156 | fileInfo.permission( QFileInfo::ExeGroup) 155 | fileInfo.permission( QFileInfo::ExeGroup)
157 | fileInfo.permission( QFileInfo::ExeOther)) && fs != "vfat" ) { 156 | fileInfo.permission( QFileInfo::ExeOther)) && fs != "vfat" ) {
158 pm = Resource::loadPixmap( "exec"); 157 pm = Resource::loadPixmap( "exec");
159 } 158 }
160 else if( !fi->isReadable() ) { 159 else if( !fi->isReadable() ) {
161 pm = Resource::loadPixmap( "locked" ); 160 pm = Resource::loadPixmap( "locked" );
162 } 161 }
163 else { //everything else goes by mimetype 162 else { //everything else goes by mimetype
164 MimeType mt(fi->filePath()); 163 MimeType mt(fi->filePath());
165 pm=mt.pixmap(); //sets the correct pixmap for mimetype 164 pm=mt.pixmap(); //sets the correct pixmap for mimetype
166 if(pm.isNull()) { 165 if(pm.isNull()) {
167 pm = unknownXpm; 166 pm = unknownXpm;
168 } 167 }
169 } 168 }
170 if( fi->isSymLink() || fileL.find("->",0,TRUE) != -1) { 169 if( fi->isSymLink() || fileL.find("->",0,TRUE) != -1) {
171 // qDebug(" overlay link image"); 170 // qDebug(" overlay link image");
172 pm= Resource::loadPixmap( "advancedfm/symlink" ); 171 pm= Resource::loadPixmap( "advancedfm/symlink" );
173 // pm= Resource::loadPixmap( "folder" ); 172 // pm= Resource::loadPixmap( "folder" );
174// QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); 173// QPixmap lnk = Resource::loadPixmap( "opie/symlink" );
175// QPainter painter( &pm ); 174// QPainter painter( &pm );
176// painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); 175// painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
177// pm.setMask( pm.createHeuristicMask( FALSE ) ); 176// pm.setMask( pm.createHeuristicMask( FALSE ) );
178 } 177 }
179 item->setPixmap( 0,pm); 178 item->setPixmap( 0,pm);
180 179
181 } 180 }
182 isDir=FALSE; 181 isDir=FALSE;
183 ++it; 182 ++it;
184 } 183 }
185 184
186 if( path.find("dev",0,TRUE) != -1) { 185 if( path.find("dev",0,TRUE) != -1) {
187 struct stat buf; 186 struct stat buf;
188 dev_t devT; 187 dev_t devT;
189 DIR *dir; 188 DIR *dir;
190 struct dirent *mydirent; 189 struct dirent *mydirent;
191 190
192 if((dir = opendir( path.latin1())) != NULL) 191 if((dir = opendir( path.latin1())) != NULL)
193 while ((mydirent = readdir(dir)) != NULL) { 192 while ((mydirent = readdir(dir)) != NULL) {
194 lstat( mydirent->d_name, &buf); 193 lstat( mydirent->d_name, &buf);
195// qDebug(mydirent->d_name); 194// qDebug(mydirent->d_name);
196 fileL.sprintf("%s", mydirent->d_name); 195 fileL.sprintf("%s", mydirent->d_name);
197 devT = buf.st_dev; 196 devT = buf.st_dev;
198 fileS.sprintf("%d, %d", (int) ( devT >>8) &0xFF, (int)devT &0xFF); 197 fileS.sprintf("%d, %d", (int) ( devT >>8) &0xFF, (int)devT &0xFF);
199 fileDate.sprintf("%s", ctime( &buf.st_mtime)); 198 fileDate.sprintf("%s", ctime( &buf.st_mtime));
200 if( fileL.find(".") == -1 ) { 199 if( fileL.find(".") == -1 ) {
201 item= new QListViewItem( thisView, fileL, fileS, fileDate); 200 item= new QListViewItem( thisView, fileL, fileS, fileDate);
202 pm = unknownXpm; 201 pm = unknownXpm;
203 item->setPixmap( 0,pm); 202 item->setPixmap( 0,pm);
204 } 203 }
205 } 204 }
206 205
207 closedir(dir); 206 closedir(dir);
208 } 207 }
209 208
210 thisView->setSorting( 3,FALSE); 209 thisView->setSorting( 3,FALSE);
211 fillCombo( (const QString &) path ); 210 fillCombo( (const QString &) path );
212} 211}
213 212
214void AdvancedFm::rePopulate() 213void AdvancedFm::rePopulate() {
215{ 214 populateView();
216 int tmpTab = whichTab; 215 setOtherTabCurrent();
217 qDebug("%d", tmpTab); 216 populateView();
218 217
219 for(int i =1; i < 3; i++) 218// int tmpTab = whichTab;
220 { 219// // qDebug("%d", tmpTab);
221 TabWidget->setCurrentWidget(i - 1); 220
222 populateView(); 221// for(int i =1; i < 3; i++) {
223 } 222// TabWidget->setCurrentWidget(i - 1);
224 TabWidget->setCurrentWidget( tmpTab - 1); 223// populateView();
224// }
225// TabWidget->setCurrentWidget( tmpTab - 1);
225} 226}
226 227
227void AdvancedFm::ListClicked(QListViewItem *selectedItem) 228void AdvancedFm::ListClicked(QListViewItem *selectedItem) {
228{ 229//qWarning("listclicked");
229 if(selectedItem) 230 if(selectedItem) {
230 {
231 QString strItem=selectedItem->text(0); 231 QString strItem=selectedItem->text(0);
232// qWarning(strItem);
232 QString strSize=selectedItem->text(1); 233 QString strSize=selectedItem->text(1);
233 strSize=strSize.stripWhiteSpace(); 234 strSize=strSize.stripWhiteSpace();
234 bool isDirectory = false; 235 bool isDirectory = false;
235 QString strItem2; 236 QString strItem2;
236 237
237 if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 )//if symlink 238 if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) {//if symlink
238 { 239 strItem2 = dealWithSymName((const QString&)strItem);
239 strItem2 = dealWithSymName((const QString&)strItem); 240 if(QDir(strItem2).exists() )
240 if(QDir(strItem2).exists() )
241 strItem = strItem2; 241 strItem = strItem2;
242 } 242 }
243 243
244 if( strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) 244 if( strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) {
245 {
246 245
247 if(QDir(strItem).exists()) 246 if(QDir(strItem).exists())
248 isDirectory = true; 247 isDirectory = true;
249 } 248 }
250 249
251 if( isDirectory ) 250 if( isDirectory ) {
252 { 251 CurrentDir()->cd( strItem, TRUE);
253 CurrentDir()->cd( strItem, TRUE); 252 populateView();
254 populateView(); 253 CurrentView()->ensureItemVisible( CurrentView()->firstChild());
255 CurrentView()->ensureItemVisible( CurrentView()->firstChild()); 254 }
256 }
257 chdir( strItem.latin1()); 255 chdir( strItem.latin1());
258 } 256 }
259} 257}
260 258
261void AdvancedFm::ListPressed( int mouse, QListViewItem *, const QPoint& , int ) { 259void AdvancedFm::ListPressed( int mouse, QListViewItem *item, const QPoint& , int ) {
262 switch (mouse) { 260 dealWithSchmooSchmaa( item->listView());
263 case 1: 261 switch (mouse) {
264 { 262 case 1:
265 if(renameBox != 0 ) 263 {
266 { 264 if(renameBox != 0 ) {
267 cancelRename(); 265 cancelRename();
268 } 266 }
269 } 267 }
270 break; 268 break;
271 case 2: 269 case 2:
272 menuTimer.start( 500, TRUE ); 270 menuTimer.start( 500, TRUE );
273 break; 271 break;
274 }; 272 };
275} 273}
276 274
277void AdvancedFm::switchToLocalTab() 275
278{ 276void AdvancedFm::switchToLocalTab() {
279 TabWidget->setCurrentWidget(0); 277//qWarning("switch to local view");
280 Local_View->setFocus(); 278 TabWidget->setCurrentWidget(0);
279 Local_View->setFocus();
281} 280}
282 281
283void AdvancedFm::switchToRemoteTab() 282void AdvancedFm::switchToRemoteTab() {
284{ 283//qWarning("switch to local view");
285 TabWidget->setCurrentWidget(1); 284 TabWidget->setCurrentWidget(1);
286 Remote_View->setFocus(); 285 Remote_View->setFocus();
287} 286}
288 287
289void AdvancedFm::readConfig() 288void AdvancedFm::readConfig() {
290{ 289 Config cfg("AdvancedFm");
291 Config cfg("AdvancedFm");
292} 290}
293 291
294void AdvancedFm::writeConfig() 292void AdvancedFm::writeConfig() {
295{ 293 Config cfg("AdvancedFm");
296 Config cfg("AdvancedFm");
297} 294}
298 295
299void AdvancedFm::currentPathComboChanged() 296void AdvancedFm::currentPathComboChanged() {
300{ 297 if(QDir( currentPathCombo->lineEdit()->text()).exists()) {
301 if(QDir( currentPathCombo->lineEdit()->text()).exists())
302 {
303 CurrentDir()->setPath( currentPathCombo->lineEdit()->text() ); 298 CurrentDir()->setPath( currentPathCombo->lineEdit()->text() );
304 populateView(); 299 populateView();
305 } 300 } else {
306 else
307 {
308 QMessageBox::message(tr("Note"),tr("That directory does not exist")); 301 QMessageBox::message(tr("Note"),tr("That directory does not exist"));
309 } 302 }
310} 303}
311 304
312void AdvancedFm::fillCombo(const QString &currentPath) 305void AdvancedFm::fillCombo(const QString &currentPath) {
313{ 306
314// qDebug("%d",TabWidget->currentTab()); 307 if ( whichTab == 1) {
315 if ( whichTab == 1)
316 {
317 currentPathCombo->lineEdit()->setText( currentPath); 308 currentPathCombo->lineEdit()->setText( currentPath);
318 if( localDirPathStringList.grep( currentPath,TRUE).isEmpty() ) 309 if( localDirPathStringList.grep( currentPath,TRUE).isEmpty() ) {
319 { 310 currentPathCombo->clear();
320 currentPathCombo->clear(); 311 localDirPathStringList.prepend( currentPath );
321 localDirPathStringList.prepend( currentPath ); 312 currentPathCombo->insertStringList( localDirPathStringList,-1);
322 currentPathCombo->insertStringList( localDirPathStringList,-1); 313 }
323 } 314 } else {
324 }
325 else
326 {
327 currentPathCombo->lineEdit()->setText( currentPath); 315 currentPathCombo->lineEdit()->setText( currentPath);
328 if( remoteDirPathStringList.grep( currentPath,TRUE).isEmpty() ) 316 if( remoteDirPathStringList.grep( currentPath,TRUE).isEmpty() ) {
329 { 317 currentPathCombo->clear();
330 currentPathCombo->clear(); 318 remoteDirPathStringList.prepend( currentPath );
331 remoteDirPathStringList.prepend( currentPath ); 319 currentPathCombo->insertStringList( remoteDirPathStringList,-1);
332 currentPathCombo->insertStringList( remoteDirPathStringList,-1); 320 }
333 } 321 }
334 } 322}
335} 323
336 324void AdvancedFm::currentPathComboActivated(const QString & currentPath) {
337void AdvancedFm::currentPathComboActivated(const QString & currentPath) 325 chdir( currentPath.latin1() );
338{ 326 CurrentDir()->cd( currentPath, TRUE);
339 chdir( currentPath.latin1() ); 327 populateView();
340 CurrentDir()->cd( currentPath, TRUE); 328 update();
341 populateView(); 329}
342 update(); 330
343} 331QStringList AdvancedFm::getPath() {
344 332 QStringList strList;
345QStringList AdvancedFm::getPath() 333 QListView *thisView=CurrentView();
346{ 334 QList<QListViewItem> * getSelectedItems( QListView * thisView );
347 QStringList strList; 335 QListViewItemIterator it( thisView );
348 QListView *thisView=CurrentView(); 336 for ( ; it.current(); ++it ) {
349 QList<QListViewItem> * getSelectedItems( QListView * thisView ); 337 if ( it.current()->isSelected() ) {
350 QListViewItemIterator it( thisView ); 338 strList << it.current()->text(0);
351 for ( ; it.current(); ++it )
352 {
353 if ( it.current()->isSelected() )
354 {
355 strList << it.current()->text(0);
356// qDebug(it.current()->text(0)); 339// qDebug(it.current()->text(0));
357 } 340 }
358 } 341 }
359 return strList; 342 return strList;
360} 343}
361 344
362void AdvancedFm::homeButtonPushed() 345void AdvancedFm::homeButtonPushed() {
363{ 346 QString current = QDir::homeDirPath();
364 QString current = QDir::homeDirPath(); 347 chdir( current.latin1() );
365 chdir( current.latin1() ); 348 CurrentDir()->cd( current, TRUE);
366 CurrentDir()->cd( current, TRUE); 349 populateView();
367 populateView(); 350 update();
368 update(); 351}
369} 352
370 353void AdvancedFm::docButtonPushed() {
371void AdvancedFm::docButtonPushed() 354 QString current = QPEApplication::documentDir();
372{ 355 chdir( current.latin1() );
373 QString current = QPEApplication::documentDir(); 356 CurrentDir()->cd( current, TRUE);
374 chdir( current.latin1() ); 357 populateView();
375 CurrentDir()->cd( current, TRUE); 358 update();
376 populateView(); 359}
377 update(); 360
378} 361void AdvancedFm::SDButtonPushed() {
379 362 QString current = "/mnt/card";// this can change so fix
380void AdvancedFm::SDButtonPushed() 363 chdir( current.latin1() );
381{ 364 CurrentDir()->cd( current, TRUE);
382 QString current = "/mnt/card";// this can change so fix 365 populateView();
383 chdir( current.latin1() ); 366 update();
384 CurrentDir()->cd( current, TRUE); 367}
385 populateView(); 368
386 update(); 369void AdvancedFm::CFButtonPushed() {
387} 370 QString current;
388 371 if(zaurusDevice)
389void AdvancedFm::CFButtonPushed() 372 current= "/mnt/cf"; //zaurus
390{ 373 else
391 QString current; 374 current = "/mnt/hda"; //ipaq
392 if(zaurusDevice) 375 chdir( current.latin1() );
393 current= "/mnt/cf"; //zaurus 376 CurrentDir()->cd( current, TRUE);
394 else 377 populateView();
395 current = "/mnt/hda"; //ipaq 378 update();
396 chdir( current.latin1() ); 379}
397 CurrentDir()->cd( current, TRUE); 380
398 populateView(); 381
399 update(); 382void AdvancedFm::doAbout() {
400} 383 QMessageBox::message("AdvancedFm",tr("Advanced FileManager\n"
401 384 "is copyright 2002-2003 by\n"
402 385 "L.J.Potter<llornkcor@handhelds.org>\n"
403void AdvancedFm::doAbout() 386 "and is licensed by the GPL"));
404{ 387}
405 QMessageBox::message("AdvancedFm",tr("Advanced FileManager\n" 388
406 "is copyright 2002-2003 by\n" 389void AdvancedFm::keyPressEvent( QKeyEvent *e) {
407 "L.J.Potter<llornkcor@handhelds.org>\n" 390// qWarning("key %d", e->key());
408 "and is licensed by the GPL")); 391// if( CurrentView()->hasFocus() )
409} 392 {
410
411void AdvancedFm::keyPressEvent( QKeyEvent *e)
412{
413// e->accept();
414 if( CurrentView()->hasFocus() )
415 {
416 switch ( e->key() ) { 393 switch ( e->key() ) {
394 case Key_Left:
395 upDir();
396 break;
397 case Key_Next:
398 break;
399 case Key_Return:
400 case Key_Enter:
401 navigateToSelected();
402 break;
403 case Key_Tab: {
404 setOtherTabCurrent();
405 }
406 break;
417 case Key_Delete: 407 case Key_Delete:
418 del(); 408 del();
419 break; 409 break;
420 case Key_A: 410 case Key_A:
421 copyAs(); 411 copyAs();
422 break; 412 break;
423 case Key_C: 413 case Key_C:
424 copy(); 414 copy();
425 break; 415 break;
426 case Key_E: 416 case Key_E:
427 runThis(); 417 runThis();
428 break; 418 break;
429 case Key_G: 419 case Key_G:
430 { 420 {
431 currentPathCombo->lineEdit()->setFocus(); 421 currentPathCombo->lineEdit()->setFocus();
432 } 422 }
433 break; 423 break;
434 424
435 case Key_H: 425 case Key_H:
436 showHidden(); 426 showHidden();
437 break; 427 break;
438 case Key_I: 428 case Key_I:
439 fileStatus(); 429 fileStatus();
440 break; 430 break;
441 case Key_M: 431 case Key_M:
442 move(); 432 move();
443 break; 433 break;
444 case Key_N: 434 case Key_N:
445 mkDir(); 435 mkDir();
446 break; 436 break;
447 case Key_P: 437 case Key_P:
448 filePerms(); 438 filePerms();
449 break; 439 break;
450 case Key_R: 440 case Key_R:
451 rn(); 441 rn();
452 break; 442 break;
453 case Key_U: 443 case Key_U:
454 upDir(); 444 upDir();
455 break; 445 break;
456 case Key_1: 446 case Key_1:
457 switchToLocalTab(); 447 switchToLocalTab();
458 break; 448 break;
459 case Key_2: 449 case Key_2:
460 switchToRemoteTab(); 450 switchToRemoteTab();
461 break; 451 break;
462 case Key_3: 452 case Key_3:
463 CFButtonPushed(); 453 CFButtonPushed();
464 break; 454 break;
465 case Key_4: 455 case Key_4:
466 SDButtonPushed(); 456 SDButtonPushed();
467 break; 457 break;
468 case Key_5: 458 case Key_5:
469 homeButtonPushed(); 459 homeButtonPushed();
470 break; 460 break;
471 case Key_6: 461 case Key_6:
472 docButtonPushed(); 462 docButtonPushed();
473 break; 463 break;
474 case Key_7: 464 case Key_7:
475 break; 465 break;
476 case Key_8: 466 case Key_8:
477 break; 467 break;
478 case Key_9: 468 case Key_9:
479 break; 469 break;
480 case Key_0: 470 case Key_0:
481 break; 471 break;
482 }; 472 };
483 e->accept(); 473 e->accept();
484 } 474 }
485} 475}
486 476
487void AdvancedFm::keyReleaseEvent( QKeyEvent *e) 477void AdvancedFm::keyReleaseEvent( QKeyEvent *e) {
488{ 478 if( CurrentView()->hasFocus() )
489 if( CurrentView()->hasFocus() ) 479 e->ignore();
490 e->ignore();
491} 480}
492 481
493 482
494void AdvancedFm::QPEButtonPushed() 483void AdvancedFm::QPEButtonPushed() {
495{ 484 QString current = QPEApplication::qpeDir();
496 QString current = QPEApplication::qpeDir(); 485 chdir( current.latin1() );
497 chdir( current.latin1() ); 486 CurrentDir()->cd( current, TRUE);
498 CurrentDir()->cd( current, TRUE); 487 populateView();
499 populateView(); 488 update();
500 update();
501} 489}
502 490
503void AdvancedFm::parsetab(const QString &fileName) 491void AdvancedFm::parsetab(const QString &fileName) {
504{
505 492
506 fileSystemTypeList.clear(); 493 fileSystemTypeList.clear();
507 fsList.clear(); 494 fsList.clear();
508 struct mntent *me; 495 struct mntent *me;
509 FILE *mntfp = setmntent( fileName.latin1(), "r" ); 496 FILE *mntfp = setmntent( fileName.latin1(), "r" );
510 if ( mntfp ) 497 if ( mntfp ) {
511 { 498 while ( (me = getmntent( mntfp )) != 0 ) {
512 while ( (me = getmntent( mntfp )) != 0 ) 499 QString deviceName = me->mnt_fsname;
513 { 500 QString filesystemType = me->mnt_type;
514 QString deviceName = me->mnt_fsname; 501 QString mountDir = me->mnt_dir;
515 QString filesystemType = me->mnt_type; 502 if(deviceName != "none") {
516 QString mountDir = me->mnt_dir; 503 if( fsList.contains(filesystemType) == 0
517 if(deviceName != "none") 504 & filesystemType.find("proc",0,TRUE) == -1
518 { 505 & filesystemType.find("cramfs",0,TRUE) == -1
519 if( fsList.contains(filesystemType) == 0 506 & filesystemType.find("auto",0,TRUE) == -1)
520 & filesystemType.find("proc",0,TRUE) == -1 507 fsList << filesystemType;
521 & filesystemType.find("cramfs",0,TRUE) == -1 508 fileSystemTypeList << mountDir+"::"+filesystemType;
522 & filesystemType.find("auto",0,TRUE) == -1) 509 }
523 fsList << filesystemType; 510 }
524 fileSystemTypeList << mountDir+"::"+filesystemType; 511 }
512 endmntent( mntfp );
513}
514
515QString AdvancedFm::getFileSystemType(const QString &currentText) {
516 parsetab("/etc/mtab"); //why did TT forget filesystem type?
517 QString current = currentText;//.right( currentText.length()-1);
518 QString baseFs;
519 for ( QStringList::Iterator it = fileSystemTypeList.begin(); it != fileSystemTypeList.end(); ++it ) {
520 QString temp = (*it);
521 QString path = temp.left(temp.find("::",0,TRUE) );
522 path = path.right( path.length()-1);
523 if(path.isEmpty()) baseFs = temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
524 if( current.find( path,0,TRUE) != -1 && !path.isEmpty()) {
525 return temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
525 } 526 }
526 } 527 }
527 } 528 return baseFs;
528 endmntent( mntfp ); 529}
529} 530
530 531QString AdvancedFm::getDiskSpace( const QString &path) {
531QString AdvancedFm::getFileSystemType(const QString &currentText) 532 struct statfs fss;
532{ 533 if ( !statfs( path.latin1(), &fss ) ) {
533 parsetab("/etc/mtab"); //why did TT forget filesystem type? 534 int blkSize = fss.f_bsize;
534 QString current = currentText;//.right( currentText.length()-1);
535 QString baseFs;
536 for ( QStringList::Iterator it = fileSystemTypeList.begin(); it != fileSystemTypeList.end(); ++it ) {
537 QString temp = (*it);
538 QString path = temp.left(temp.find("::",0,TRUE) );
539 path = path.right( path.length()-1);
540 if(path.isEmpty()) baseFs = temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
541 if( current.find( path,0,TRUE) != -1 && !path.isEmpty()) {
542 return temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
543 }
544 }
545 return baseFs;
546}
547
548QString AdvancedFm::getDiskSpace( const QString &path)
549{
550 struct statfs fss;
551 if ( !statfs( path.latin1(), &fss ) ) {
552 int blkSize = fss.f_bsize;
553 // int totalBlks = fs.f_blocks; 535 // int totalBlks = fs.f_blocks;
554 int availBlks = fss.f_bavail; 536 int availBlks = fss.f_bavail;
555 537
556 long mult = blkSize / 1024; 538 long mult = blkSize / 1024;
557 long div = 1024 / blkSize; 539 long div = 1024 / blkSize;
558 if ( !mult ) mult = 1; 540 if ( !mult ) mult = 1;
559 if ( !div ) div = 1; 541 if ( !div ) div = 1;
560 542
561 return QString::number(availBlks * mult / div); 543 return QString::number(availBlks * mult / div);
562 } 544 }
563 return ""; 545 return "";
564} 546}
565 547
566 548
567void AdvancedFm::showFileMenu() 549void AdvancedFm::showFileMenu() {
568{ 550 QString curApp;
569 QString curApp; 551 curApp = CurrentView()->currentItem()->text(0);
570 curApp = CurrentView()->currentItem()->text(0);
571 552
572 MimeType mt( curApp ); 553 MimeType mt( curApp );
573 const AppLnk* app = mt.application(); 554 const AppLnk* app = mt.application();
574 QFile fi(curApp); 555 QFile fi(curApp);
575 QPopupMenu *m = new QPopupMenu(0); 556 QPopupMenu *m = new QPopupMenu(0);
576 QPopupMenu *n = new QPopupMenu(0); 557 QPopupMenu *n = new QPopupMenu(0);
577 // QPopupMenu *o = new QPopupMenu(0); 558 // QPopupMenu *o = new QPopupMenu(0);
578 m->insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() )); 559 m->insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() ));
579 560
580 if ( QFileInfo(fi).isDir() ) 561 if ( QFileInfo(fi).isDir() ) {
581 {
582 m->insertSeparator(); 562 m->insertSeparator();
583 m->insertItem( tr( "Change Directory" ), this, SLOT( doDirChange() )); 563 m->insertItem( tr( "Change Directory" ), this, SLOT( doDirChange() ));
584 } 564 } else {
585 else
586 {
587 565
588 if ( app ) 566 if ( app )
589 m->insertItem( app->pixmap(), tr( "Open in " 567 m->insertItem( app->pixmap(), tr( "Open in "
590 + app->name() ), this, SLOT( runThis() ) ); 568 + app->name() ), this, SLOT( runThis() ) );
591 else if( QFileInfo(fi).isExecutable() ) //damn opie doesnt like this 569 else if( QFileInfo(fi).isExecutable() ) //damn opie doesnt like this
592 m->insertItem( tr( "Execute" ), this, SLOT( runThis() ) ); 570 m->insertItem( tr( "Execute" ), this, SLOT( runThis() ) );
593 m->insertItem( Resource::loadPixmap( "txt" ), tr( "Open as text" ),this, SLOT( runText() ) ); 571 m->insertItem( Resource::loadPixmap( "txt" ), tr( "Open as text" ),this, SLOT( runText() ) );
594 } 572 }
595 573
596 m->insertItem(tr("Actions"),n); 574 m->insertItem(tr("Actions"),n);
597 n->insertItem( tr( "Make Directory" ), this, SLOT( makeDir() )); 575 n->insertItem( tr( "Make Directory" ), this, SLOT( makeDir() ));
598 576
599 n->insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() )); 577 n->insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() ));
600 578
601 n->insertSeparator(); 579 n->insertSeparator();
602 n->insertItem( tr( "Rename" ), this, SLOT( renameIt() )); 580 n->insertItem( tr( "Rename" ), this, SLOT( renameIt() ));
603 581
604 n->insertItem( tr( "Copy" ), this, SLOT( copy() )); 582 n->insertItem( tr( "Copy" ), this, SLOT( copy() ));
605 n->insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); 583 n->insertItem( tr( "Copy As" ), this, SLOT( copyAs() ));
606 n->insertItem( tr( "Copy Same Dir" ), this, SLOT( copySameDir() )); 584 n->insertItem( tr( "Copy Same Dir" ), this, SLOT( copySameDir() ));
607 n->insertItem( tr( "Move" ), this, SLOT( move() )); 585 n->insertItem( tr( "Move" ), this, SLOT( move() ));
608 586
609 n->insertSeparator(); 587 n->insertSeparator();
610 n->insertItem( tr( "Delete" ), this, SLOT( doDelete() )); 588 n->insertItem( tr( "Delete" ), this, SLOT( doDelete() ));
611 m->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() )); 589 m->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() ));
612 590
613 m->insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); 591 m->insertItem( tr( "Run Command" ), this, SLOT( runCommand() ));
614 m->insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); 592 m->insertItem( tr( "File Info" ), this, SLOT( fileStatus() ));
615 593
616 m->insertSeparator(); 594 m->insertSeparator();
617 m->insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); 595 m->insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() ));
618 596
619#if defined(QT_QWS_OPIE) 597#if defined(QT_QWS_OPIE)
620 m->insertItem( tr( "Properties" ), this, SLOT( doProperties() )); 598 m->insertItem( tr( "Properties" ), this, SLOT( doProperties() ));
621#endif 599#endif
622 m->setCheckable(TRUE); 600 m->setCheckable(TRUE);
623 if (!b) 601 if (!b)
624 m->setItemChecked(m->idAt(0),TRUE); 602 m->setItemChecked(m->idAt(0),TRUE);
625 else 603 else
626 m->setItemChecked(m->idAt(0),FALSE); 604 m->setItemChecked(m->idAt(0),FALSE);
627 605
628 if(Ir::supported()) 606 if(Ir::supported())
629 m->insertItem( tr( "Beam File" ), this, SLOT( doBeam() )); 607 m->insertItem( tr( "Beam File" ), this, SLOT( doBeam() ));
630 m->setFocus(); 608 m->setFocus();
631 m->exec( QPoint( 4,QCursor::pos().y()) ); 609 m->exec( QPoint( 4,QCursor::pos().y()) );
632 610
633 if(m) delete m; 611 if(m) delete m;
634} 612}
635 613
636 614
637void AdvancedFm::cancelMenuTimer() 615void AdvancedFm::cancelMenuTimer() {
638{ 616
639// qDebug("selectionChanged: cancel menu timer"); 617 if( menuTimer.isActive() )
640 if( menuTimer.isActive() ) 618 menuTimer.stop();
641 menuTimer.stop();
642} 619}
643 620
644QString AdvancedFm::checkDiskSpace(const QString &path) 621QString AdvancedFm::checkDiskSpace(const QString &path) {
645{ 622 struct statfs fss;
646 struct statfs fss; 623 if ( !statfs( path.latin1(), &fss ) ) {
647 if ( !statfs( path.latin1(), &fss ) ) 624 int blkSize = fss.f_bsize;
648 {
649 int blkSize = fss.f_bsize;
650// int totalBlks = fs.f_blocks; 625// int totalBlks = fs.f_blocks;
651 int availBlks = fss.f_bavail; 626 int availBlks = fss.f_bavail;
652 627
653 long mult = blkSize / 1024; 628 long mult = blkSize / 1024;
654 long div = 1024 / blkSize; 629 long div = 1024 / blkSize;
655 if ( !mult ) mult = 1; 630 if ( !mult ) mult = 1;
656 if ( !div ) div = 1; 631 if ( !div ) div = 1;
657 632
658 633
659 return QString::number(availBlks * mult / div); 634 return QString::number(availBlks * mult / div);
660 } 635 }
661 return ""; 636 return "";
662} 637}
663 638
664void AdvancedFm::addToDocs() 639void AdvancedFm::addToDocs() {
665{ 640 QStringList strListPaths = getPath();
666 QStringList strListPaths = getPath(); 641 QDir *thisDir = CurrentDir();
667 QDir *thisDir = CurrentDir();
668 642
669 if( strListPaths.count() > 0) { 643 if( strListPaths.count() > 0) {
670 QString curFile; 644 QString curFile;
671 for ( QStringList::Iterator it = strListPaths.begin(); it != strListPaths.end(); ++it ) { 645 for ( QStringList::Iterator it = strListPaths.begin(); it != strListPaths.end(); ++it ) {
672 curFile = thisDir->canonicalPath()+"/"+(*it); 646 curFile = thisDir->canonicalPath()+"/"+(*it);
673// qDebug(curFile); 647// qDebug(curFile);
674 QFileInfo fi(curFile); 648 QFileInfo fi(curFile);
675 DocLnk f; 649 DocLnk f;
676// curFile.replace(QRegExp("\\..*"),""); 650// curFile.replace(QRegExp("\\..*"),"");
677 f.setName(fi.baseName() ); 651 f.setName(fi.baseName() );
678 f.setFile( curFile); 652 f.setFile( curFile);
679 f.writeLink(); 653 f.writeLink();
680 } 654 }
681 } 655 }
682} 656}
683 657
684 658
685void AdvancedFm::customDirsToMenu() 659void AdvancedFm::customDirsToMenu() {
686{
687 660
688 Config cfg("AdvancedFm"); 661 Config cfg("AdvancedFm");
689 cfg.setGroup("Menu"); 662 cfg.setGroup("Menu");
690 663
691 QStringList list = cfg.readListEntry( "CustomDir", ','); 664 QStringList list = cfg.readListEntry( "CustomDir", ',');
692 menuButton->insertItems(list ); 665 menuButton->insertItems(list );
693 666
694// for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 667// for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
695// { 668// {
696// customDirMenu->insertItem(*it ); 669// customDirMenu->insertItem(*it );
697// } 670// }
698} 671}
699 672
700void AdvancedFm::dirMenuSelected(int item) 673void AdvancedFm::dirMenuSelected(int item) {
701{ 674 switch(item)
702 qDebug("menu item %d", item); 675 {
703 switch(item)
704 {
705 676
706 case -21: 677 case -21:
707 case 0: 678 case 0:
708 addCustomDir(); 679 addCustomDir();
709 break; 680 break;
710 case -22: 681 case -22:
711 case 1: 682 case 1:
712 removeCustomDir(); 683 removeCustomDir();
713 break; 684 break;
714 default: 685 default:
715 { 686 {
716// gotoCustomDir( menuButton->text(item)); 687// gotoCustomDir( menuButton->text(item));
717// gotoCustomDir( customDirMenu->text(item)); 688// gotoCustomDir( customDirMenu->text(item));
718 } 689 }
719 break; 690 break;
720 691
721 }; 692 };
722} 693}
723 694
724void AdvancedFm::addCustomDir() 695void AdvancedFm::addCustomDir() {
725{ 696 Config cfg("AdvancedFm");
726 Config cfg("AdvancedFm"); 697 cfg.setGroup("Menu");
727 cfg.setGroup("Menu"); 698 QString dir;
728 QString dir; 699 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)',');
729 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)','); 700
730 701 dir = CurrentDir()->canonicalPath();
731 dir = CurrentDir()->canonicalPath(); 702
732 703 bool addIt=true;
733 bool addIt=true; 704 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
734 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 705 if( dir == (*it)) {
735 { 706 addIt=false;
736 if( dir == (*it)) 707 }
737 { 708 }
738 addIt=false; 709 if(addIt) {
739 }
740 }
741 if(addIt)
742 {
743 menuButton->insertItem(dir); 710 menuButton->insertItem(dir);
744// customDirMenu->insertItem(dir); 711// customDirMenu->insertItem(dir);
745 list << dir; 712 list << dir;
746 } 713 }
747 714
748 cfg.writeEntry("CustomDir", list, ','); 715 cfg.writeEntry("CustomDir", list, ',');
749 cfg.write(); 716 cfg.write();
750} 717}
751 718
752void AdvancedFm::removeCustomDir() 719void AdvancedFm::removeCustomDir() {
753{
754// qDebug("remove custom dir"); 720// qDebug("remove custom dir");
755 Config cfg("AdvancedFm"); 721 Config cfg("AdvancedFm");
756 cfg.setGroup("Menu"); 722 cfg.setGroup("Menu");
757 QString dir; 723 QString dir;
758 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)','); 724 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)',');
759 QStringList list2; 725 QStringList list2;
760 dir = CurrentDir()->canonicalPath(); 726 dir = CurrentDir()->canonicalPath();
761 int ramble=2; 727 int ramble=2;
762// int ramble=-24; 728// int ramble=-24;
763//first remove list 729//first remove list
764 if(list.grep(dir,true).isEmpty()) 730 if(list.grep(dir,true).isEmpty()) {
765 {
766 QMessageBox::message(tr( "AdvancedFm" ), 731 QMessageBox::message(tr( "AdvancedFm" ),
767 tr("Cannot remove current directory\nfrom bookmarks.\nIt is not bookmarked!")); 732 tr("Cannot remove current directory\nfrom bookmarks.\nIt is not bookmarked!"));
768 } 733 } else {
769 else 734 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
770 { 735 if((*it) != dir) {
771 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 736//current item is not our current dir, so add it to temp list
772 { 737 list2 <<(*it);
773 if((*it) != dir)//current item is not our current dir, so add it to temp list 738 } else {
774 {
775 list2 <<(*it);
776 }
777 else
778 {
779// customDirMenu->removeItem( ramble); 739// customDirMenu->removeItem( ramble);
780 menuButton->remove( ramble); 740 menuButton->remove( ramble);
781 741
782 } 742 }
783 ramble++; 743 ramble++;
784// ramble--; 744// ramble--;
785 } 745 }
786 746
787 cfg.writeEntry("CustomDir", list2, ','); 747 cfg.writeEntry("CustomDir", list2, ',');
788 cfg.write(); 748 cfg.write();
789 } 749 }
790// customDirsToMenu(); 750// customDirsToMenu();
791 751
792} 752}
793 753
794void AdvancedFm::gotoCustomDir(const QString &dir) 754void AdvancedFm::gotoCustomDir(const QString &dir) {
795{
796// qDebug("gotoCustomDir(const QString &dir) " +dir ); 755// qDebug("gotoCustomDir(const QString &dir) " +dir );
797// QString curDir = dir; 756// QString curDir = dir;
798// QDir *thisDir = CurrentDir(); 757// QDir *thisDir = CurrentDir();
799// if( curDir.isEmpty()) { 758// if( curDir.isEmpty()) {
800// } 759// }
801 if( dir == s_addBookmark) 760 if( dir == s_addBookmark) {
802 {
803 addCustomDir(); 761 addCustomDir();
804 } 762 }
805 if( dir == s_removeBookmark) 763 if( dir == s_removeBookmark) {
806 {
807 removeCustomDir( ); 764 removeCustomDir( );
808 } 765 } else {
809 else 766 gotoDirectory( dir);
810 {
811 gotoDirectory( dir);
812// if(QDir( curDir).exists() ) 767// if(QDir( curDir).exists() )
813// { 768// {
814// thisDir->setPath( curDir ); 769// thisDir->setPath( curDir );
815// chdir( curDir.latin1() ); 770// chdir( curDir.latin1() );
816// thisDir->cd( curDir, TRUE); 771// thisDir->cd( curDir, TRUE);
817// populateView(); 772// populateView();
818// } 773// }
819 } 774 }
820} 775}
821 776
822QDir *AdvancedFm::CurrentDir() 777QDir *AdvancedFm::CurrentDir() {
823{ 778
824 if ( whichTab == 1) 779 if ( whichTab == 1) {
825 { 780 return &currentDir;
826 return &currentDir; 781 } else {
827 } 782 return &currentRemoteDir;
828 else 783 }
829 {
830 return &currentRemoteDir;
831 }
832} 784}
833 785
834QDir *AdvancedFm::OtherDir() 786QDir *AdvancedFm::OtherDir() {
835{ 787 if ( whichTab == 1) {
836 if ( whichTab == 1) 788 return &currentRemoteDir;
837 { 789 } else {
838 return &currentRemoteDir; 790 return &currentDir;
839 } 791 }
840 else
841 {
842 return &currentDir;
843 }
844} 792}
845 793
846QListView * AdvancedFm::CurrentView() 794QListView * AdvancedFm::CurrentView() {
847{ 795 if ( whichTab == 1) {
848 if ( whichTab == 1) 796// qWarning("CurrentView Tab 1");
849 return Local_View; 797 return Local_View;
850 else 798 } else {
851 return Remote_View; 799// qWarning("CurrentView Tab 2");
800 return Remote_View;
801 }
852} 802}
853 803
854QListView * AdvancedFm::OtherView() 804QListView * AdvancedFm::OtherView() {
855{ 805 if ( whichTab == 1)
856 if ( whichTab == 1) 806 return Remote_View;
857 return Remote_View; 807 else
858 else 808 return Local_View;
859 return Local_View;
860} 809}
861 810
862void AdvancedFm::setOtherTabCurrent() 811void AdvancedFm::setOtherTabCurrent() {
863{ 812// qWarning("setOtherTabCurrent()");
864 if ( whichTab == 1) 813 if ( whichTab == 1) {
865 TabWidget->setCurrentWidget(1); 814 TabWidget->setCurrentWidget(1);
866 else 815 } else {
867 TabWidget->setCurrentWidget(0); 816 TabWidget->setCurrentWidget(0);
817 }
818 OtherView()->setFocus();
819 OtherView()->setSelected( CurrentView()->firstChild(), true);
868} 820}
869 821
870void AdvancedFm::qcopReceive(const QCString &msg, const QByteArray &data) { 822void AdvancedFm::qcopReceive(const QCString &msg, const QByteArray &data) {
871 qDebug("qcop message "+msg ); 823// qDebug("qcop message "+msg );
872 QDataStream stream ( data, IO_ReadOnly ); 824 QDataStream stream ( data, IO_ReadOnly );
873 if ( msg == "openDirectory(QString)" ) { 825 if ( msg == "openDirectory(QString)" ) {
874 qDebug("received"); 826// qDebug("received");
875 QString file; 827 QString file;
876 stream >> file; 828 stream >> file;
877 gotoDirectory( (const QString &) file); 829 gotoDirectory( (const QString &) file);
878 } 830 }
879} 831}
880 832
881 void AdvancedFm::setDocument(const QString &file) { 833void AdvancedFm::setDocument(const QString &file) {
882 gotoDirectory( file); 834 gotoDirectory( file);
883 835
884 } 836}
885 837
886void AdvancedFm::gotoDirectory(const QString &file) { 838void AdvancedFm::gotoDirectory(const QString &file) {
887 839// qWarning("goto dir "+file);
888 QString curDir = file; 840 QString curDir = file;
889 QDir *thisDir = CurrentDir(); 841 QDir *thisDir = CurrentDir();
890 if(QDir( curDir).exists() ) { 842 if(QDir( curDir).exists() ) {
891 thisDir->setPath( curDir ); 843 thisDir->setPath( curDir );
892 chdir( curDir.latin1() ); 844 chdir( curDir.latin1() );
893 thisDir->cd( curDir, TRUE); 845 thisDir->cd( curDir, TRUE);
894 populateView(); 846 populateView();
895 } 847 }
896 else if(QFileInfo(curDir).exists()) { 848 else if(QFileInfo(curDir).exists()) {
897 QFileInfo fileInfo(curDir); 849 QFileInfo fileInfo(curDir);
898 curDir=fileInfo.dirPath(); 850 curDir=fileInfo.dirPath();
899 if(QDir( curDir).exists() ) { 851 if(QDir( curDir).exists() ) {
900 thisDir->setPath( curDir ); 852 thisDir->setPath( curDir );
901 chdir( curDir.latin1() ); 853 chdir( curDir.latin1() );
902 thisDir->cd( curDir, TRUE); 854 thisDir->cd( curDir, TRUE);
903 populateView(); 855 populateView();
904 } 856 }
905 findFile(file); 857 findFile(file);
906 } 858 }
907 859
908} 860}
909 861
910void AdvancedFm::findFile(const QString &fileName) { 862void AdvancedFm::findFile(const QString &fileName) {
911 QFileInfo fi(fileName); 863 QFileInfo fi(fileName);
912 QListView *thisView = CurrentView(); 864 QListView *thisView = CurrentView();
913 QListViewItemIterator it( thisView ); 865 QListViewItemIterator it( thisView );
914 for ( ; it.current(); ++it ) { 866 for ( ; it.current(); ++it ) {
915 if(it.current()->text(0) == fi.fileName()) { 867 if(it.current()->text(0) == fi.fileName()) {
916 it.current()->setSelected(true); 868 it.current()->setSelected(true);
917 thisView->ensureItemVisible(it.current()); 869 thisView->ensureItemVisible(it.current());
918 } 870 }
919 } 871 }
920} 872}
873
874void AdvancedFm::slotSwitchMenu(int ) {
875// qDebug("Switch %d", item);
876 // viewMenu->setItemChecked(item, true);
877}
878
879void AdvancedFm::dealWithSchmooSchmaa(QWidget *w) {
880 tabChanged( w);
881 if( w == Local_View) {
882 Remote_View->clearFocus();
883 } else {
884 Local_View->clearFocus();
885 }
886}
887
888void AdvancedFm::navigateToSelected() {
889 if( !CurrentView()->currentItem()) return;
890 doDirChange();
891}
diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h
index 5e2c769..5f6eabb 100644
--- a/noncore/apps/advancedfm/advancedfm.h
+++ b/noncore/apps/advancedfm/advancedfm.h
@@ -53,16 +53,17 @@ class Ir;
53 53
54class AdvancedFm : public QMainWindow 54class AdvancedFm : public QMainWindow
55{ 55{
56 Q_OBJECT 56 Q_OBJECT
57public: 57public:
58 AdvancedFm(); 58 AdvancedFm();
59 ~AdvancedFm(); 59 ~AdvancedFm();
60protected slots: 60protected slots:
61 void slotSwitchMenu(int);
61 void selectAll(); 62 void selectAll();
62 void addToDocs(); 63 void addToDocs();
63 void doDirChange(); 64 void doDirChange();
64 void mkDir(); 65 void mkDir();
65 void del(); 66 void del();
66 void rn(); 67 void rn();
67 void populateView(); 68 void populateView();
68 void rePopulate(); 69 void rePopulate();
@@ -123,18 +124,20 @@ protected:
123 void parsetab(const QString &fileName); 124 void parsetab(const QString &fileName);
124 QString checkDiskSpace(const QString &); 125 QString checkDiskSpace(const QString &);
125 QString dealWithSymName(const QString &); 126 QString dealWithSymName(const QString &);
126 QDir *CurrentDir(); 127 QDir *CurrentDir();
127 QDir *OtherDir(); 128 QDir *OtherDir();
128 QListView *CurrentView(); 129 QListView *CurrentView();
129 QListView *OtherView(); 130 QListView *OtherView();
130 void setOtherTabCurrent(); 131 void setOtherTabCurrent();
132 void dealWithSchmooSchmaa(QWidget *);
131 133
132protected slots: 134protected slots:
135 void openSearch();
133 void dirMenuSelected(int); 136 void dirMenuSelected(int);
134 void showFileMenu(); 137 void showFileMenu();
135 void cancelMenuTimer(); 138 void cancelMenuTimer();
136 void homeButtonPushed(); 139 void homeButtonPushed();
137 void docButtonPushed(); 140 void docButtonPushed();
138 void SDButtonPushed(); 141 void SDButtonPushed();
139 void CFButtonPushed(); 142 void CFButtonPushed();
140 void QPEButtonPushed(); 143 void QPEButtonPushed();
@@ -147,30 +150,32 @@ protected slots:
147 void fillCombo(const QString &); 150 void fillCombo(const QString &);
148 bool copyFile( const QString & , const QString & ); 151 bool copyFile( const QString & , const QString & );
149 void move(); 152 void move();
150 void fileStatus(); 153 void fileStatus();
151 void doAbout(); 154 void doAbout();
152 void doBeam(); 155 void doBeam();
153 void fileBeamFinished( Ir *); 156 void fileBeamFinished( Ir *);
154 157
158// void slotSwitchtoLocal(int);
159
155private: 160private:
156 MenuButton *menuButton; 161 MenuButton *menuButton;
157 QString oldName; 162 QString oldName;
158 QTimer menuTimer; 163 QTimer menuTimer;
159 void startProcess(const QString &); 164 void startProcess(const QString &);
160 bool eventFilter( QObject * , QEvent * ); 165 bool eventFilter( QObject * , QEvent * );
161 void cancelRename(); 166 void cancelRename();
162 void doRename(QListView *); 167 void doRename(QListView *);
163 void okRename(); 168 void okRename();
164 void customDirsToMenu(); 169 void customDirsToMenu();
165 void addCustomDir(); 170 void addCustomDir();
166 void removeCustomDir(); 171 void removeCustomDir();
167 void gotoDirectory(const QString &); 172 void gotoDirectory(const QString &);
168 void openSearch(); 173 void navigateToSelected();
169 void findFile(const QString &); 174 void findFile(const QString &);
170 175
171private slots: 176private slots:
172 void processEnded(OProcess *); 177 void processEnded(OProcess *);
173 void oprocessStderr(OProcess *, char *, int); 178 void oprocessStderr(OProcess *, char *, int);
174 void gotoCustomDir(const QString &); 179 void gotoCustomDir(const QString &);
175 void qcopReceive(const QCString&, const QByteArray&); 180 void qcopReceive(const QCString&, const QByteArray&);
176 void setDocument(const QString &); 181 void setDocument(const QString &);
diff --git a/noncore/apps/advancedfm/advancedfmData.cpp b/noncore/apps/advancedfm/advancedfmData.cpp
index 463b202..ddaa39a 100644
--- a/noncore/apps/advancedfm/advancedfmData.cpp
+++ b/noncore/apps/advancedfm/advancedfmData.cpp
@@ -93,21 +93,23 @@ void AdvancedFm::init() {
93 fileMenu->insertItem( tr( "Run Command with Output" ), this, SLOT( runCommand() )); 93 fileMenu->insertItem( tr( "Run Command with Output" ), this, SLOT( runCommand() ));
94 fileMenu->insertSeparator(); 94 fileMenu->insertSeparator();
95 fileMenu->insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() )); 95 fileMenu->insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() ));
96 fileMenu->insertItem( tr( "Select All" ), this, SLOT( selectAll() )); 96 fileMenu->insertItem( tr( "Select All" ), this, SLOT( selectAll() ));
97 fileMenu->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() )); 97 fileMenu->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() ));
98 fileMenu->insertItem( tr( "Delete" ), this, SLOT( del() )); 98 fileMenu->insertItem( tr( "Delete" ), this, SLOT( del() ));
99 fileMenu->setCheckable(TRUE); 99 fileMenu->setCheckable(TRUE);
100 100
101 viewMenu->insertItem( tr( "Switch to Local" ), this, SLOT( switchToLocalTab() )); 101 viewMenu->insertItem( tr( "Switch to View 1" ), this, SLOT( switchToLocalTab()));
102 viewMenu->insertItem( tr( "Switch to Remote" ), this, SLOT( switchToRemoteTab() )); 102 viewMenu->insertItem( tr( "Switch to View 2" ), this, SLOT( switchToRemoteTab()));
103// viewMenu->insertSeparator(); 103// viewMenu->insertSeparator();
104// viewMenu->insertItem( tr( "About" ), this, SLOT( doAbout() )); 104// viewMenu->insertItem( tr( "About" ), this, SLOT( doAbout() ));
105 viewMenu->setCheckable(TRUE); 105 viewMenu->setCheckable(true);
106 viewMenu->setItemChecked( viewMenu->idAt(0), true);
107 viewMenu->setItemChecked( viewMenu->idAt(1), false);
106 108
107 s_addBookmark = tr("Bookmark Directory"); 109 s_addBookmark = tr("Bookmark Directory");
108 s_removeBookmark = tr("Remove Current Directory from Bookmarks"); 110 s_removeBookmark = tr("Remove Current Directory from Bookmarks");
109 111
110// menuButton->insertItem(""); 112// menuButton->insertItem("");
111 113
112// customDirMenu->insertItem(tr("Add This Directory")); 114// customDirMenu->insertItem(tr("Add This Directory"));
113// customDirMenu->insertItem(tr("Remove This Directory")); 115// customDirMenu->insertItem(tr("Remove This Directory"));
@@ -115,23 +117,24 @@ void AdvancedFm::init() {
115 117
116 menuButton = new MenuButton( lineBox ); 118 menuButton = new MenuButton( lineBox );
117 119
118 menuButton->setUseLabel(false); 120 menuButton->setUseLabel(false);
119 menuButton->setMaximumWidth( 20 ); 121 menuButton->setMaximumWidth( 20 );
120 menuButton->insertItem( s_addBookmark); 122 menuButton->insertItem( s_addBookmark);
121 menuButton->insertItem( s_removeBookmark); 123 menuButton->insertItem( s_removeBookmark);
122 menuButton->insertSeparator(); 124 menuButton->insertSeparator();
125 menuButton->setFocusPolicy(NoFocus);
123 126
124 customDirsToMenu(); 127 customDirsToMenu();
125 128
126 currentPathCombo = new QComboBox( FALSE, lineBox, "currentPathCombo" ); 129 currentPathCombo = new QComboBox( FALSE, lineBox, "currentPathCombo" );
127 currentPathCombo->setEditable(TRUE); 130 currentPathCombo->setEditable(TRUE);
128 currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); 131 currentPathCombo->lineEdit()->setText( currentDir.canonicalPath());
129 132 currentPathCombo->setFocusPolicy(NoFocus);
130 layout->addWidget( lineBox ); 133 layout->addWidget( lineBox );
131 134
132 135
133 TabWidget = new OSplitter( Horizontal, this, "TabWidget" ); 136 TabWidget = new OSplitter( Horizontal, this, "TabWidget" );
134// TabWidget = new QTabWidget( this, "TabWidget" ); 137// TabWidget = new QTabWidget( this, "TabWidget" );
135 layout->addWidget( TabWidget, 4 ); 138 layout->addWidget( TabWidget, 4 );
136 139
137 tab = new QWidget( TabWidget, "tab" ); 140 tab = new QWidget( TabWidget, "tab" );
@@ -143,17 +146,19 @@ void AdvancedFm::init() {
143 Local_View->addColumn( tr("File"),130); 146 Local_View->addColumn( tr("File"),130);
144 Local_View->addColumn( tr("Size"),-1); 147 Local_View->addColumn( tr("Size"),-1);
145 Local_View->setColumnAlignment(1,QListView::AlignRight); 148 Local_View->setColumnAlignment(1,QListView::AlignRight);
146 Local_View->addColumn( tr("Date"),-1); 149 Local_View->addColumn( tr("Date"),-1);
147 Local_View->setColumnAlignment(2,QListView::AlignRight); 150 Local_View->setColumnAlignment(2,QListView::AlignRight);
148 Local_View->setAllColumnsShowFocus(TRUE); 151 Local_View->setAllColumnsShowFocus(TRUE);
149 Local_View->setMultiSelection( TRUE ); 152 Local_View->setMultiSelection( TRUE );
150 Local_View->setSelectionMode(QListView::Extended); 153 Local_View->setSelectionMode(QListView::Extended);
151 154 Local_View->setFocusPolicy(StrongFocus);
155 Local_View->installEventFilter( this );
156
152 QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); 157 QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold);
153 158
154 tabLayout->addWidget( Local_View, 0, 0 ); 159 tabLayout->addWidget( Local_View, 0, 0 );
155 160
156 TabWidget->addWidget( tab,"advancedfm/smFileBrowser.png", tr("1")); 161 TabWidget->addWidget( tab,"advancedfm/smFileBrowser.png", tr("1"));
157// TabWidget->insertTab( tab, tr("1")); 162// TabWidget->insertTab( tab, tr("1"));
158 163
159 tab_2 = new QWidget( TabWidget, "tab_2" ); 164 tab_2 = new QWidget( TabWidget, "tab_2" );
@@ -165,18 +170,19 @@ void AdvancedFm::init() {
165 Remote_View->addColumn( tr("File"),130); 170 Remote_View->addColumn( tr("File"),130);
166 Remote_View->addColumn( tr("Size"),-1); 171 Remote_View->addColumn( tr("Size"),-1);
167 Remote_View->setColumnAlignment(1,QListView::AlignRight); 172 Remote_View->setColumnAlignment(1,QListView::AlignRight);
168 Remote_View->addColumn( tr("Date"),-1); 173 Remote_View->addColumn( tr("Date"),-1);
169 Remote_View->setColumnAlignment(2,QListView::AlignRight); 174 Remote_View->setColumnAlignment(2,QListView::AlignRight);
170 Remote_View->setAllColumnsShowFocus(TRUE); 175 Remote_View->setAllColumnsShowFocus(TRUE);
171 Remote_View->setMultiSelection( TRUE ); 176 Remote_View->setMultiSelection( TRUE );
172 Remote_View->setSelectionMode(QListView::Extended); 177 Remote_View->setSelectionMode(QListView::Extended);
173 178 Remote_View->setFocusPolicy(StrongFocus);
174 179 Remote_View->installEventFilter( this );
180
175 QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold); 181 QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold);
176 182
177 tabLayout_2->addWidget( Remote_View, 0, 0 ); 183 tabLayout_2->addWidget( Remote_View, 0, 0 );
178 184
179 TabWidget->addWidget( tab_2, "advancedfm/smFileBrowser.png",tr( "2")); 185 TabWidget->addWidget( tab_2, "advancedfm/smFileBrowser.png",tr( "2"));
180 TabWidget->setSizeChange( 370 ); 186 TabWidget->setSizeChange( 370 );
181// TabWidget->insertTab( tab_2, tr( "2")); 187// TabWidget->insertTab( tab_2, tr( "2"));
182 188
@@ -198,26 +204,21 @@ void AdvancedFm::init() {
198 204
199 tabLayout_3->addMultiCellWidget( fileTree, 0, 0, 0, 3 ); 205 tabLayout_3->addMultiCellWidget( fileTree, 0, 0, 0, 3 );
200 206
201 TabWidget->insertTab( tab_3, tr( "Remote" ) ); 207 TabWidget->insertTab( tab_3, tr( "Remote" ) );
202 */ 208 */
203 209
204 /////////////// 210 ///////////////
205 211
206 212 if ( QFile::exists ( "/dev/sharp_buz" ) || QFile::exists ( "/dev/sharp_led" ))
207 struct utsname name; /* check for embedix kernel running on the zaurus*/
208 if (uname(&name) != -1) {
209 QString release=name.release;
210 if(release.find("embedix",0,TRUE) !=-1) {
211 zaurusDevice=TRUE; 213 zaurusDevice=TRUE;
212 } else { 214 else
213 zaurusDevice=FALSE; 215 zaurusDevice=FALSE;
214 } 216
215 }
216 217
217 if( !StorageInfo::hasSd() || !StorageInfo::hasMmc()) { 218 if( !StorageInfo::hasSd() || !StorageInfo::hasMmc()) {
218 qDebug("not have sd"); 219 qDebug("not have sd");
219 sdButton->hide(); 220 sdButton->hide();
220 } 221 }
221 if( !StorageInfo::hasCf() ) { 222 if( !StorageInfo::hasCf() ) {
222 qDebug("not have cf"); 223 qDebug("not have cf");
223 cfButton->hide(); 224 cfButton->hide();
@@ -275,12 +276,13 @@ void AdvancedFm::initConnections()
275 276
276 connect( TabWidget,SIGNAL(currentChanged(QWidget *)), 277 connect( TabWidget,SIGNAL(currentChanged(QWidget *)),
277 this,SLOT(tabChanged(QWidget*))); 278 this,SLOT(tabChanged(QWidget*)));
278 279
279 connect( &menuTimer, SIGNAL( timeout() ), SLOT( showFileMenu() ) ); 280 connect( &menuTimer, SIGNAL( timeout() ), SLOT( showFileMenu() ) );
280 281
281 connect( menuButton, SIGNAL( selected(const QString &)), SLOT(gotoCustomDir(const QString&))); 282 connect( menuButton, SIGNAL( selected(const QString &)), SLOT(gotoCustomDir(const QString&)));
282// connect( menuButton, SIGNAL( selected( int)), SLOT( dirMenuSelected(int))); 283// connect( menuButton, SIGNAL( selected( int)), SLOT( dirMenuSelected(int)));
283 284 connect( viewMenu, SIGNAL( activated(int )), this, SLOT(slotSwitchMenu(int )));
284// connect( customDirMenu, SIGNAL( activated(int)), this, SLOT( dirMenuSelected(int))); 285// connect( customDirMenu, SIGNAL( activated(int)), this, SLOT( dirMenuSelected(int)));
285 286
286} 287}
288
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp
index 544350c..c0be948 100644
--- a/noncore/apps/advancedfm/advancedfmMenu.cpp
+++ b/noncore/apps/advancedfm/advancedfmMenu.cpp
@@ -41,141 +41,120 @@
41#include <stdlib.h> 41#include <stdlib.h>
42#include <unistd.h> 42#include <unistd.h>
43#include <sys/stat.h> 43#include <sys/stat.h>
44#include <dirent.h> 44#include <dirent.h>
45#include <sys/sendfile.h> 45#include <sys/sendfile.h>
46#include <fcntl.h> 46#include <fcntl.h>
47 47
48 48
49void AdvancedFm::doDirChange() 49void AdvancedFm::doDirChange() {
50{ 50 QString pathItem = CurrentView()->currentItem()->text(0);
51 ListClicked( CurrentView()->currentItem()); 51 if( pathItem == "../") {
52 ListClicked( CurrentView()->currentItem());
53 } else {
54 if( pathItem.find(" -> ",0,TRUE) != -1)
55 pathItem = dealWithSymName((const QString&)pathItem)+"/";
56// qWarning(pathItem);
57 gotoDirectory( CurrentDir()->path()+"/"+pathItem.left( pathItem.length() - 1) );
58 }
52} 59}
53 60
54void AdvancedFm::showMenuHidden() 61void AdvancedFm::showMenuHidden() {
55{ 62 if (b) {
56 if (b)
57 {
58 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 63 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
59 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 64 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
60 fileMenu->setItemChecked( fileMenu->idAt(0),TRUE); 65 fileMenu->setItemChecked( fileMenu->idAt(0),TRUE);
61// b=FALSE; 66 } else {
62
63 }
64 else
65 {
66 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 67 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
67 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 68 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
68 fileMenu->setItemChecked( fileMenu->idAt(0),FALSE); 69 fileMenu->setItemChecked( fileMenu->idAt(0),FALSE);
69// b=TRUE;
70 } 70 }
71 rePopulate(); 71 rePopulate();
72// if(b) qDebug("<<<<<<<<<<<<<<<<<<<<<<<<<<<< true");
73 b = !b; 72 b = !b;
74} 73}
75 74
76void AdvancedFm::showHidden() 75void AdvancedFm::showHidden() {
77{ 76 if (b) {
78 if (b)
79 {
80 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 77 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
81 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 78 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
82// fileMenu->setItemChecked( fileMenu->idAt(0),TRUE); 79 } else {
83// b=FALSE;
84
85 }
86 else
87 {
88 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 80 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
89 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 81 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
90// fileMenu->setItemChecked( fileMenu->idAt(0),FALSE);
91// b=TRUE;
92 } 82 }
93 rePopulate(); 83 rePopulate();
94} 84}
95 85
96QString AdvancedFm::dealWithSymName(const QString &fileName) 86QString AdvancedFm::dealWithSymName(const QString &fileName) {
97{ 87 QString strItem = fileName;
98 QString strItem = fileName; 88 return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4);
99 return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4);
100} 89}
101 90
102void AdvancedFm::runThis() 91void AdvancedFm::runThis() {
103{ 92 if( !CurrentView()->currentItem()) return;
104 QString fs; 93 QString fs;
105 QDir *thisDir = CurrentDir(); 94 QDir *thisDir = CurrentDir();
106 95
107 QString curFile = CurrentView()->currentItem()->text(0); 96 QString curFile = CurrentView()->currentItem()->text(0);
108 QString path = thisDir->canonicalPath(); 97 QString path = thisDir->canonicalPath();
109 98
110 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink 99 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
111 100
112 curFile = dealWithSymName((const QString&)curFile); 101 curFile = dealWithSymName((const QString&)curFile);
113 102
114 if(curFile != "../") 103 if(curFile != "../") {
115 {
116 104
117 fs = getFileSystemType((const QString &) path); 105 fs = getFileSystemType((const QString &) path);
118 QFileInfo fileInfo( path + "/" + curFile); 106 QFileInfo fileInfo( path + "/" + curFile);
119 qDebug( fileInfo.owner()); 107// qDebug( fileInfo.owner());
120 108
121 if( (fileInfo.permission( QFileInfo::ExeUser) 109 if( (fileInfo.permission( QFileInfo::ExeUser)
122 | fileInfo.permission( QFileInfo::ExeGroup) 110 | fileInfo.permission( QFileInfo::ExeGroup)
123 | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { 111 | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) {
124 | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { 112 | fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
125 QCopEnvelope e("QPE/System", "execute(QString)" ); 113 QCopEnvelope e("QPE/System", "execute(QString)" );
126 e << curFile; 114 e << curFile;
127 } 115 } else {
128 else
129 {
130 curFile = path + "/" + curFile; 116 curFile = path + "/" + curFile;
131 DocLnk nf(curFile); 117 DocLnk nf(curFile);
132 QString execStr = nf.exec(); 118 QString execStr = nf.exec();
133 qDebug( execStr); 119// qDebug( execStr);
134 if( execStr.isEmpty() ) 120 if( execStr.isEmpty() ) {
135 { 121 } else {
136 }
137 else
138 {
139 nf.execute(); 122 nf.execute();
140 } 123 }
141 } 124 }
142 } 125 }
143} 126}
144 127
145void AdvancedFm::runText() 128void AdvancedFm::runText() {
146{ 129 if( !CurrentView()->currentItem()) return;
147 QString curFile = CurrentView()->currentItem()->text(0); 130 QString curFile = CurrentView()->currentItem()->text(0);
148 if(curFile != "../") 131 if(curFile != "../") {
149 {
150 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink 132 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
151 curFile = dealWithSymName((const QString&)curFile); 133 curFile = dealWithSymName((const QString&)curFile);
152 curFile = CurrentDir()->canonicalPath()+"/"+curFile; 134 curFile = CurrentDir()->canonicalPath()+"/"+curFile;
153 QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); 135 QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" );
154 e << curFile; 136 e << curFile;
155 } 137 }
156} 138}
157 139
158void AdvancedFm::makeDir() 140void AdvancedFm::makeDir() {
159{
160 InputDialog *fileDlg; 141 InputDialog *fileDlg;
161 fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); 142 fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0);
162 fileDlg->exec(); 143 fileDlg->exec();
163 if( fileDlg->result() == 1 ) 144 if( fileDlg->result() == 1 ) {
164 {
165 QDir *thisDir = CurrentDir(); 145 QDir *thisDir = CurrentDir();
166 QString filename = fileDlg->LineEdit1->text(); 146 QString filename = fileDlg->LineEdit1->text();
167 thisDir->mkdir( thisDir->canonicalPath()+"/"+filename); 147 thisDir->mkdir( thisDir->canonicalPath()+"/"+filename);
168 } 148 }
169 populateView(); 149 populateView();
170} 150}
171 151
172void AdvancedFm::doDelete() 152void AdvancedFm::doDelete() {
173{
174 QStringList curFileList = getPath(); 153 QStringList curFileList = getPath();
175 bool doMsg=true; 154 bool doMsg=true;
176 int count = curFileList.count(); 155 int count = curFileList.count();
177 if( count > 0) { 156 if( count > 0) {
178 if(count > 1 ) { 157 if(count > 1 ) {
179 QString msg; 158 QString msg;
180 msg=tr("Really delete\n%1 files?").arg(count); 159 msg=tr("Really delete\n%1 files?").arg(count);
181 switch ( QMessageBox::warning(this,tr("Delete"),msg 160 switch ( QMessageBox::warning(this,tr("Delete"),msg
@@ -230,237 +209,218 @@ void AdvancedFm::doDelete()
230 break; 209 break;
231 }; 210 };
232 } 211 }
233 212
234 QString cmd="rm "+f; 213 QString cmd="rm "+f;
235 QFile file(f); 214 QFile file(f);
236 QFileInfo fi(myFile); 215 QFileInfo fi(myFile);
237 if( fi.fileName().find("../",0,TRUE)==-1) { 216 if( fi.fileName().find("../",0,TRUE)==-1) {
238 qDebug("remove link files "+myFile); 217// qDebug("remove link files "+myFile);
239 218
240// DocLnk lnk(f); 219// DocLnk lnk(f);
241 DocLnk *lnk; 220 DocLnk *lnk;
242 lnk = new DocLnk(f); 221 lnk = new DocLnk(f);
243 qDebug("Deleting doclnk " + lnk->linkFile()); 222// qDebug("Deleting doclnk " + lnk->linkFile());
244 if(lnk->isValid()) 223 if(lnk->isValid())
245 lnk->removeLinkFile(); 224 lnk->removeLinkFile();
246 // delete lnk; 225 // delete lnk;
247 file.remove(); 226 file.remove();
248 } 227 }
249 } 228 }
250 } 229 }
251 } 230 }
252 populateView(); 231 populateView();
253} 232}
254 233
255void AdvancedFm::filePerms() 234void AdvancedFm::filePerms() {
256{ 235 QStringList curFileList = getPath();
257 QStringList curFileList = getPath(); 236 QString filePath;
258 QString filePath;
259 237
260 filePath = CurrentDir()->canonicalPath()+"/"; 238 filePath = CurrentDir()->canonicalPath()+"/";
261 239
262 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) 240 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
263 {
264 filePermissions *filePerm; 241 filePermissions *filePerm;
265 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it)); 242 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it));
266 filePerm->showMaximized(); 243 filePerm->showMaximized();
267 filePerm->exec(); 244 filePerm->exec();
268 if( filePerm) 245 if( filePerm)
269 delete filePerm; 246 delete filePerm;
270 } 247 }
271 populateView(); 248 populateView();
272} 249}
273 250
274void AdvancedFm::doProperties() 251void AdvancedFm::doProperties() {
275{
276#if defined(QT_QWS_OPIE) 252#if defined(QT_QWS_OPIE)
277 253
278 QStringList curFileList = getPath(); 254 QStringList curFileList = getPath();
279 255
280 QString filePath; 256 QString filePath;
281 filePath = CurrentDir()->canonicalPath()+"/"; 257 filePath = CurrentDir()->canonicalPath()+"/";
282 258
283 qDebug("%d",curFileList.count()); 259// qDebug("%d",curFileList.count());
284 260
285 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) 261 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
286 { 262// qDebug((filePath+*it));
287 qDebug((filePath+*it)); 263 DocLnk lnk( (filePath+*it));
288 DocLnk lnk( (filePath+*it)); 264 LnkProperties prop( &lnk );
289 LnkProperties prop( &lnk ); 265 prop.showMaximized();
290 prop.showMaximized(); 266 prop.exec();
291 prop.exec(); 267 }
292 }
293#endif 268#endif
294 269
295} 270}
296 271
297void AdvancedFm::upDir() 272void AdvancedFm::upDir() {
298{
299 QDir *thisDir = CurrentDir(); 273 QDir *thisDir = CurrentDir();
300 QString current = thisDir->canonicalPath(); 274 QString current = thisDir->canonicalPath();
301 QDir dir(current); 275 QDir dir(current);
302 dir.cdUp(); 276 dir.cdUp();
303 current = dir.canonicalPath(); 277 current = dir.canonicalPath();
304 chdir( current.latin1() ); 278 chdir( current.latin1() );
305 thisDir->cd( current, TRUE); 279 thisDir->cd( current, TRUE);
306 280
307 populateView(); 281 populateView();
308 update(); 282 update();
309} 283}
310 284
311void AdvancedFm::copy() 285void AdvancedFm::copy() {
312{ 286 qApp->processEvents();
313 qApp->processEvents(); 287 QStringList curFileList = getPath();
314 QStringList curFileList = getPath();
315 288
316 QDir *thisDir = CurrentDir(); 289 QDir *thisDir = CurrentDir();
317 QDir *thatDir = OtherDir(); 290 QDir *thatDir = OtherDir();
318
319 bool doMsg=true;
320 int count=curFileList.count();
321 if( count > 0) {
322 if(count > 1 ){
323 QString msg;
324 msg=tr("Really copy\n%1 files?").arg(count);
325 switch ( QMessageBox::warning(this,tr("Copy"),msg
326 ,tr("Yes"),tr("No"),0,0,1) )
327 {
328 case 0:
329 doMsg=false;
330 break;
331 case 1:
332 return;
333 break;
334 };
335 }
336 291
337 QString curFile, item, destFile; 292 bool doMsg=true;
338 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) 293 int count=curFileList.count();
339 { 294 if( count > 0) {
340 item=(*it); 295 if(count > 1 ){
341 if(item.find("->",0,TRUE)) //symlink 296 QString msg;
342 item = item.left(item.find("->",0,TRUE)); 297 msg=tr("Really copy\n%1 files?").arg(count);
343 298 switch ( QMessageBox::warning(this,tr("Copy"),msg
344 curFile = thisDir->canonicalPath()+"/"+ item; 299 ,tr("Yes"),tr("No"),0,0,1) )
345 destFile = thatDir->canonicalPath()+"/"+ item; 300 {
346 301 case 0:
347 qDebug("Destination file is "+destFile); 302 doMsg=false;
348 qDebug("CurrentFile file is " + curFile); 303 break;
349 304 case 1:
350 QFile f(destFile); 305 return;
351 if( f.exists()) 306 break;
352 { 307 };
353 if(doMsg) 308 }
354 { 309
355 switch ( QMessageBox::warning(this,tr("File Exists!"), 310 QString curFile, item, destFile;
356 tr("%1 exists. Ok to overwrite?").arg( item ), 311 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
357 tr("Yes"),tr("No"),0,0,1) ) 312 item=(*it);
358 { 313 if(item.find("->",0,TRUE)) //symlink
359 case 1: 314 item = item.left(item.find("->",0,TRUE));
360 return; 315
361 break; 316 curFile = thisDir->canonicalPath()+"/"+ item;
362 }; 317 destFile = thatDir->canonicalPath()+"/"+ item;
363 } 318
319// qDebug("Destination file is "+destFile);
320// qDebug("CurrentFile file is " + curFile);
321
322 QFile f(destFile);
323 if( f.exists()) {
324 if(doMsg) {
325 switch ( QMessageBox::warning(this,tr("File Exists!"),
326 tr("%1 exists. Ok to overwrite?").arg( item ),
327 tr("Yes"),tr("No"),0,0,1) ) {
328 case 1:
329 return;
330 break;
331 };
332 }
364 f.remove(); 333 f.remove();
365 } 334 }
366 335
367 if( !copyFile( curFile, destFile) ) { 336 if( !copyFile( curFile, destFile) ) {
368 QMessageBox::message("AdvancedFm", 337 QMessageBox::message("AdvancedFm",
369 tr( "Could not copy %1 to %2").arg( curFile ).arg( destFile ) ); 338 tr( "Could not copy %1 to %2").arg( curFile ).arg( destFile ) );
370 return; 339 return;
371 } 340 }
372 } 341 }
373 setOtherTabCurrent(); 342 rePopulate();
374 populateView(); 343 setOtherTabCurrent();
375 } 344 }
376} 345}
377 346
378void AdvancedFm::copyAs() 347void AdvancedFm::copyAs() {
379{ 348 qApp->processEvents();
380 qApp->processEvents();
381 349
382 QStringList curFileList = getPath(); 350 QStringList curFileList = getPath();
383 QString curFile, item; 351 QString curFile, item;
384 InputDialog *fileDlg; 352 InputDialog *fileDlg;
385 353
386 QDir *thisDir = CurrentDir(); 354 QDir *thisDir = CurrentDir();
387 QDir *thatDir = OtherDir(); 355 QDir *thatDir = OtherDir();
388 356
389 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) 357 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
390 {
391 QString destFile; 358 QString destFile;
392 item=(*it); 359 item=(*it);
393 curFile = thisDir->canonicalPath()+"/"+(*it); 360 curFile = thisDir->canonicalPath()+"/"+(*it);
394 fileDlg = new InputDialog( this, tr("Copy "+curFile+" As"), TRUE, 0); 361 fileDlg = new InputDialog( this, tr("Copy "+curFile+" As"), TRUE, 0);
395 362
396 fileDlg->setInputText((const QString &) destFile ); 363 fileDlg->setInputText((const QString &) destFile );
397 fileDlg->exec(); 364 fileDlg->exec();
398 365
399 if( fileDlg->result() == 1 ) 366 if( fileDlg->result() == 1 ) {
400 { 367 QString filename = fileDlg->LineEdit1->text();
401 QString filename = fileDlg->LineEdit1->text(); 368 destFile = thatDir->canonicalPath()+"/"+filename;
402 destFile = thatDir->canonicalPath()+"/"+filename;
403 369
404 QFile f( destFile); 370 QFile f( destFile);
405 if( f.exists()) 371 if( f.exists()) {
406 { 372 switch (QMessageBox::warning(this,tr("File Exists!"),
407 switch (QMessageBox::warning(this,tr("File Exists!"), 373 item+tr("\nexists. Ok to overwrite?"),
408 item+tr("\nexists. Ok to overwrite?"), 374 tr("Yes"),tr("No"),0,0,1) ) {
409 tr("Yes"),tr("No"),0,0,1) ) 375 case 0:
410 { 376 f.remove();
411 case 0: 377 break;
412 f.remove(); 378 case 1:
413 break; 379 return;
414 case 1: 380 break;
415 return; 381 };
416 break; 382 }
417 }; 383 if( !copyFile( curFile, destFile) ) {
418 } 384 QMessageBox::message("AdvancedFm",tr("Could not copy\n")
419 if( !copyFile( curFile, destFile) ) { 385 +curFile +tr("to\n")+destFile);
420 QMessageBox::message("AdvancedFm",tr("Could not copy\n") 386 return;
421 +curFile +tr("to\n")+destFile); 387 }
422 return; 388 }
423 }
424 }
425 delete fileDlg; 389 delete fileDlg;
426 390
427 } 391 }
428 setOtherTabCurrent(); 392 rePopulate();
429 populateView(); 393 setOtherTabCurrent();
430} 394}
431 395
432void AdvancedFm::copySameDir() 396void AdvancedFm::copySameDir() {
433{
434 qApp->processEvents(); 397 qApp->processEvents();
435 QStringList curFileList = getPath(); 398 QStringList curFileList = getPath();
436 QString curFile, item, destFile; 399 QString curFile, item, destFile;
437 InputDialog *fileDlg; 400 InputDialog *fileDlg;
438 401
439 QDir *thisDir = CurrentDir(); 402 QDir *thisDir = CurrentDir();
440 403
441 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) 404 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
442 {
443 item=(*it); 405 item=(*it);
444 curFile = thisDir->canonicalPath()+"/"+ item; 406 curFile = thisDir->canonicalPath()+"/"+ item;
445 407
446 fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0); 408 fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0);
447 fileDlg->setInputText((const QString &) destFile ); 409 fileDlg->setInputText((const QString &) destFile );
448 fileDlg->exec(); 410 fileDlg->exec();
449 411
450 if( fileDlg->result() == 1 ) 412 if( fileDlg->result() == 1 ) {
451 {
452 413
453 QString filename = fileDlg->LineEdit1->text(); 414 QString filename = fileDlg->LineEdit1->text();
454 destFile = thisDir->canonicalPath()+"/"+filename; 415 destFile = thisDir->canonicalPath()+"/"+filename;
455 416
456 QFile f(destFile); 417 QFile f(destFile);
457 if( f.exists()) 418 if( f.exists()) {
458 {
459 switch (QMessageBox::warning(this,tr("Delete"), 419 switch (QMessageBox::warning(this,tr("Delete"),
460 destFile+tr(" already exists.\nDo you really want to delete it?"), 420 destFile+tr(" already exists.\nDo you really want to delete it?"),
461 tr("Yes"),tr("No"),0,0,1) ) { 421 tr("Yes"),tr("No"),0,0,1) ) {
462 case 0: 422 case 0:
463 423
464 f.remove(); 424 f.remove();
465 break; 425 break;
466 case 1: 426 case 1:
@@ -469,101 +429,96 @@ void AdvancedFm::copySameDir()
469 }; 429 };
470 } 430 }
471 if(!copyFile( curFile,destFile) ) { 431 if(!copyFile( curFile,destFile) ) {
472 QMessageBox::message("AdvancedFm",tr("Could not copy\n") 432 QMessageBox::message("AdvancedFm",tr("Could not copy\n")
473 +curFile +tr("to\n")+destFile); 433 +curFile +tr("to\n")+destFile);
474 return; 434 return;
475 } 435 }
476 436
477 qDebug("copy "+curFile+" as "+destFile); 437// qDebug("copy "+curFile+" as "+destFile);
478 } 438 }
479 delete fileDlg; 439 delete fileDlg;
480 } 440 }
481 populateView(); 441 populateView();
482} 442}
483 443
484void AdvancedFm::move() 444void AdvancedFm::move() {
485{
486 qApp->processEvents(); 445 qApp->processEvents();
487 446
488 QStringList curFileList = getPath(); 447 QStringList curFileList = getPath();
489 if( curFileList.count() > 0) 448 if( curFileList.count() > 0) {
490 {
491 QString curFile, destFile, item; 449 QString curFile, destFile, item;
492 450
493 QDir *thisDir = CurrentDir(); 451 QDir *thisDir = CurrentDir();
494 QDir *thatDir = OtherDir(); 452 QDir *thatDir = OtherDir();
495 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) 453 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
496 {
497 item=(*it); 454 item=(*it);
498 QString destFile = thatDir->canonicalPath(); 455 QString destFile = thatDir->canonicalPath();
499 456
500 if(destFile.right(1).find("/",0,TRUE) == -1) 457 if(destFile.right(1).find("/",0,TRUE) == -1)
501 destFile+="/"; 458 destFile+="/";
502 destFile += item; 459 destFile += item;
503 qDebug("Destination file is "+destFile); 460// qDebug("Destination file is "+destFile);
504 461
505 curFile = thisDir->canonicalPath(); 462 curFile = thisDir->canonicalPath();
506 if(curFile.right(1).find("/",0,TRUE) == -1) 463 if(curFile.right(1).find("/",0,TRUE) == -1)
507 curFile +="/"; 464 curFile +="/";
508 curFile+= item; 465 curFile+= item;
509 qDebug("CurrentFile file is " + curFile); 466// qDebug("CurrentFile file is " + curFile);
510 467
511 QFile f( curFile); 468 QFile f( curFile);
512 if( f.exists()) { 469 if( f.exists()) {
513 if( !copyFile( curFile, destFile) ) { 470 if( !copyFile( curFile, destFile) ) {
514 QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile); 471 QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile);
515 return; 472 return;
516 } else 473 } else
517 QFile::remove(curFile); 474 QFile::remove(curFile);
518 } 475 }
519 } 476 }
520 477
521 } 478 }
522 populateView(); 479 rePopulate();
523 setOtherTabCurrent(); 480 setOtherTabCurrent();
524 populateView();
525} 481}
526 482
527bool AdvancedFm::copyFile( const QString & src, const QString & dest ) 483bool AdvancedFm::copyFile( const QString & src, const QString & dest ) {
528{
529 bool success = true; 484 bool success = true;
530 struct stat status; 485 struct stat status;
531 QFile srcFile(src); 486 QFile srcFile(src);
532 QFile destFile(dest); 487 QFile destFile(dest);
533 int err=0; 488 int err=0;
534 int read_fd=0; 489 int read_fd=0;
535 int write_fd=0; 490 int write_fd=0;
536 struct stat stat_buf; 491 struct stat stat_buf;
537 off_t offset = 0; 492 off_t offset = 0;
538 if(!srcFile.open( IO_ReadOnly|IO_Raw)) { 493 if(!srcFile.open( IO_ReadOnly|IO_Raw)) {
539 qWarning("open failed"); 494// qWarning("open failed");
540 return success = false; 495 return success = false;
541 } 496 }
542 read_fd = srcFile.handle(); 497 read_fd = srcFile.handle();
543 if(read_fd != -1) { 498 if(read_fd != -1) {
544 fstat (read_fd, &stat_buf); 499 fstat (read_fd, &stat_buf);
545 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) { 500 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) {
546 qWarning("destfile open failed"); 501// qWarning("destfile open failed");
547 return success = false; 502 return success = false;
548 } 503 }
549 write_fd = destFile.handle(); 504 write_fd = destFile.handle();
550 if(write_fd != -1) { 505 if(write_fd != -1) {
551 err =sendfile(write_fd, read_fd, &offset, stat_buf.st_size); 506 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
552 if( err == -1) { 507 if( err == -1) {
553 QString msg; 508 QString msg;
554 switch(err) { 509 switch(err) {
555 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; 510 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. ";
556 case EINVAL: msg = "Descriptor is not valid or locked. "; 511 case EINVAL: msg = "Descriptor is not valid or locked. ";
557 case ENOMEM: msg = "Insufficient memory to read from in_fd."; 512 case ENOMEM: msg = "Insufficient memory to read from in_fd.";
558 case EIO: msg = "Unspecified error while reading from in_fd."; 513 case EIO: msg = "Unspecified error while reading from in_fd.";
559 }; 514 };
560 success = false; 515 success = false;
561 qWarning(msg); 516// qWarning(msg);
562 } 517 }
563 } else { 518 } else {
564 success = false; 519 success = false;
565 } 520 }
566 } else { 521 } else {
567 success = false; 522 success = false;
568 } 523 }
569 srcFile.close(); 524 srcFile.close();
@@ -571,135 +526,124 @@ bool AdvancedFm::copyFile( const QString & src, const QString & dest )
571 // Set file permissions 526 // Set file permissions
572 if( stat( (const char *) src, &status ) == 0 ) { 527 if( stat( (const char *) src, &status ) == 0 ) {
573 chmod( (const char *) dest, status.st_mode ); 528 chmod( (const char *) dest, status.st_mode );
574 } 529 }
575 530
576 return success; 531 return success;
577} 532}
578 533
579void AdvancedFm::runCommand() 534void AdvancedFm::runCommand() {
580{ 535 if( !CurrentView()->currentItem()) return;
581 QDir *thisDir = CurrentDir(); 536 QDir *thisDir = CurrentDir();
582 537
583 QString curFile; 538 QString curFile;
584 curFile = thisDir->canonicalPath() +"/"+ CurrentView()->currentItem()->text(0); 539 curFile = thisDir->canonicalPath() +"/"+ CurrentView()->currentItem()->text(0);
585 540
586 InputDialog *fileDlg; 541 InputDialog *fileDlg;
587 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); 542 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0);
588 fileDlg->setInputText(curFile); 543 fileDlg->setInputText(curFile);
589 fileDlg->exec(); 544 fileDlg->exec();
590 //QString command; 545 //QString command;
591 546
592 if( fileDlg->result() == 1 ) 547 if( fileDlg->result() == 1 ) {
593 { 548// qDebug(fileDlg->LineEdit1->text());
594 qDebug(fileDlg->LineEdit1->text());
595 QStringList command; 549 QStringList command;
596 550
597 command << "/bin/sh"; 551 command << "/bin/sh";
598 command << "-c"; 552 command << "-c";
599 command << fileDlg->LineEdit1->text(); 553 command << fileDlg->LineEdit1->text();
600 Output *outDlg; 554 Output *outDlg;
601 outDlg = new Output( command, this, tr("AdvancedFm Output"), true); 555 outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
602 outDlg->showMaximized(); 556 outDlg->showMaximized();
603 outDlg->exec(); 557 outDlg->exec();
604 qApp->processEvents(); 558 qApp->processEvents();
605 559
606 } 560 }
607} 561}
608 562
609void AdvancedFm::runCommandStd() 563void AdvancedFm::runCommandStd() {
610{ 564 if( !CurrentView()->currentItem()) return;
611 QString curFile; 565 QString curFile;
612 QDir *thisDir = CurrentDir(); 566 QDir *thisDir = CurrentDir();
613 QListView *thisView = CurrentView(); 567 QListView *thisView = CurrentView();
614 if( thisView->currentItem()) 568 if( thisView->currentItem())
615 curFile = thisDir->canonicalPath() +"/"+ thisView->currentItem()->text(0); 569 curFile = thisDir->canonicalPath() +"/"+ thisView->currentItem()->text(0);
616 570
617 InputDialog *fileDlg; 571 InputDialog *fileDlg;
618 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); 572 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0);
619 fileDlg->setInputText(curFile); 573 fileDlg->setInputText(curFile);
620 fileDlg->exec(); 574 fileDlg->exec();
621 575
622 if( fileDlg->result() == 1 ) 576 if( fileDlg->result() == 1 ) {
623 {
624 qApp->processEvents(); 577 qApp->processEvents();
625 startProcess( (const QString)fileDlg->LineEdit1->text().latin1()); 578 startProcess( (const QString)fileDlg->LineEdit1->text().latin1());
626 } 579 }
627} 580}
628 581
629void AdvancedFm::fileStatus() 582void AdvancedFm::fileStatus() {
630{ 583 if( !CurrentView()->currentItem()) return;
631 QString curFile; 584 QString curFile;
632 curFile = CurrentView()->currentItem()->text(0); 585 curFile = CurrentView()->currentItem()->text(0);
633 586
634 QStringList command; 587 QStringList command;
635 command << "/bin/sh"; 588 command << "/bin/sh";
636 command << "-c"; 589 command << "-c";
637 command << "stat -l "+ curFile; 590 command << "stat -l "+ curFile;
638 591
639 Output *outDlg; 592 Output *outDlg;
640 outDlg = new Output( command, this, tr("AdvancedFm Output"), true); 593 outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
641 outDlg->showMaximized(); 594 outDlg->showMaximized();
642 outDlg->exec(); 595 outDlg->exec();
643 qApp->processEvents(); 596 qApp->processEvents();
644} 597}
645 598
646 599
647void AdvancedFm::mkDir() 600void AdvancedFm::mkDir() {
648{
649 makeDir(); 601 makeDir();
650} 602}
651 603
652void AdvancedFm::rn() 604void AdvancedFm::rn() {
653{
654 renameIt(); 605 renameIt();
655} 606}
656 607
657void AdvancedFm::del() 608void AdvancedFm::del() {
658{
659 doDelete(); 609 doDelete();
660} 610}
661 611
662void AdvancedFm::mkSym() 612void AdvancedFm::mkSym() {
663{
664 QString cmd; 613 QString cmd;
665 QStringList curFileList = getPath(); 614 QStringList curFileList = getPath();
666 if( curFileList.count() > 0) 615 if( curFileList.count() > 0) {
667 {
668 QDir *thisDir = CurrentDir(); 616 QDir *thisDir = CurrentDir();
669 QDir * thatDir = OtherDir(); 617 QDir * thatDir = OtherDir();
670 618
671 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) 619 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
672 {
673 620
674 QString destName = thatDir->canonicalPath()+"/"+(*it); 621 QString destName = thatDir->canonicalPath()+"/"+(*it);
675 if(destName.right(1) == "/") 622 if(destName.right(1) == "/") {
676 {
677 destName = destName.left( destName.length() -1); 623 destName = destName.left( destName.length() -1);
678 } 624 }
679 625
680 QString curFile = thisDir->canonicalPath()+"/"+(*it); 626 QString curFile = thisDir->canonicalPath()+"/"+(*it);
681 627
682 if( curFile.right(1) == "/") 628 if( curFile.right(1) == "/") {
683 {
684 curFile = curFile.left( curFile.length() -1); 629 curFile = curFile.left( curFile.length() -1);
685 } 630 }
686 631
687 cmd = "ln -s "+curFile+" "+destName; 632 cmd = "ln -s "+curFile+" "+destName;
688 qDebug(cmd); 633// qDebug(cmd);
689 startProcess( (const QString)cmd ); 634 startProcess( (const QString)cmd );
690 } 635 }
636 rePopulate();
691 setOtherTabCurrent(); 637 setOtherTabCurrent();
692 populateView();
693 } 638 }
694} 639}
695 640
696void AdvancedFm::doBeam() 641void AdvancedFm::doBeam() {
697{
698 Ir ir; 642 Ir ir;
699 if(!ir.supported()) { 643 if(!ir.supported()) {
700 } else { 644 } else {
701 QStringList curFileList = getPath(); 645 QStringList curFileList = getPath();
702 if( curFileList.count() > 0) { 646 if( curFileList.count() > 0) {
703 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 647 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
704 QString curFile = (*it); 648 QString curFile = (*it);
705 QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile; 649 QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile;
@@ -709,35 +653,27 @@ void AdvancedFm::doBeam()
709 Ir *file = new Ir(this, "IR"); 653 Ir *file = new Ir(this, "IR");
710 connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); 654 connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * )));
711 file->send( curFilePath, curFile ); 655 file->send( curFilePath, curFile );
712 } 656 }
713 } 657 }
714 } 658 }
715} 659}
716 660
717void AdvancedFm::fileBeamFinished( Ir *) 661void AdvancedFm::fileBeamFinished( Ir *) {
718{
719 QMessageBox::message( tr("Advancedfm Beam out"), tr("Ir sent.") ,tr("Ok") ); 662 QMessageBox::message( tr("Advancedfm Beam out"), tr("Ir sent.") ,tr("Ok") );
720} 663}
721 664
722void AdvancedFm::selectAll() 665void AdvancedFm::selectAll() {
723{
724// if (TabWidget->currentTab() == 0) {
725 QListView *thisView = CurrentView(); 666 QListView *thisView = CurrentView();
726 thisView->selectAll(true); 667 thisView->selectAll(true);
727 thisView->setSelected( thisView->firstChild(),false); 668 thisView->setSelected( thisView->firstChild(),false);
728// } else {
729// Remote_View->selectAll(true);
730// Remote_View->setSelected( Remote_View->firstChild(),false);
731// }
732} 669}
733 670
734void AdvancedFm::startProcess(const QString & cmd) 671void AdvancedFm::startProcess(const QString & cmd) {
735{
736 QStringList command; 672 QStringList command;
737 OProcess *process; 673 OProcess *process;
738 process = new OProcess(); 674 process = new OProcess();
739 connect(process, SIGNAL(processExited(OProcess *)), 675 connect(process, SIGNAL(processExited(OProcess *)),
740 this, SLOT( processEnded(OProcess *))); 676 this, SLOT( processEnded(OProcess *)));
741 677
742 connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)), 678 connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)),
743 this, SLOT( oprocessStderr(OProcess *, char *, int))); 679 this, SLOT( oprocessStderr(OProcess *, char *, int)));
@@ -745,89 +681,78 @@ void AdvancedFm::startProcess(const QString & cmd)
745 command << "/bin/sh"; 681 command << "/bin/sh";
746 command << "-c"; 682 command << "-c";
747 command << cmd.latin1(); 683 command << cmd.latin1();
748 *process << command; 684 *process << command;
749 if(!process->start(OProcess::NotifyOnExit, OProcess::All) ) 685 if(!process->start(OProcess::NotifyOnExit, OProcess::All) )
750 qDebug("could not start process"); 686 qDebug("could not start process");
751} 687}
752 688
753void AdvancedFm::processEnded(OProcess *) 689void AdvancedFm::processEnded(OProcess *) {
754{
755// populateLocalView();
756 populateView(); 690 populateView();
757} 691}
758 692
759void AdvancedFm::oprocessStderr(OProcess*, char *buffer, int buflen) { 693void AdvancedFm::oprocessStderr(OProcess*, char *buffer, int ) {
760 qWarning("received stderrt %d bytes", buflen); 694// qWarning("received stderrt %d bytes", buflen);
761 695
762 QString lineStr = buffer; 696 QString lineStr = buffer;
763// lineStr=lineStr.left(lineStr.length()-1);
764 QMessageBox::warning( this, tr("Error"), lineStr ,tr("Ok") ); 697 QMessageBox::warning( this, tr("Error"), lineStr ,tr("Ok") );
765
766// OutputEdit->append(lineStr);
767// OutputEdit->setCursorPosition( OutputEdit->numLines() + 1,0,FALSE);
768} 698}
769 699
770bool AdvancedFm::eventFilter( QObject * o, QEvent * e ) 700bool AdvancedFm::eventFilter( QObject * o, QEvent * e ) {
771{ 701 if ( o->inherits( "QLineEdit" ) ) {
772 if ( o->inherits( "QLineEdit" ) ) 702 if ( e->type() == QEvent::KeyPress ) {
773 {
774 if ( e->type() == QEvent::KeyPress )
775 {
776 QKeyEvent *ke = (QKeyEvent*)e; 703 QKeyEvent *ke = (QKeyEvent*)e;
777 if ( ke->key() == Key_Return || 704 if ( ke->key() == Key_Return ||
778 ke->key() == Key_Enter ) 705 ke->key() == Key_Enter ) {
779 {
780 okRename(); 706 okRename();
781 return true; 707 return true;
782 } 708 }
783 else if ( ke->key() == Key_Escape ) 709 else if ( ke->key() == Key_Escape ) {
784 {
785 cancelRename(); 710 cancelRename();
786 return true; 711 return true;
787 } 712 }
788 } 713 }
789 else if ( e->type() == QEvent::FocusOut ) 714 else if ( e->type() == QEvent::FocusOut ) {
790 {
791 cancelRename(); 715 cancelRename();
792 return true; 716 return true;
793 } 717 }
794 } 718 }
795 if ( o->inherits( "QListView" ) ) 719 if ( o->inherits( "QListView" ) ) {
796 { 720 if ( e->type() == QEvent::FocusIn ) {
797 if ( e->type() == QEvent::FocusOut ) 721 if( o == Local_View) { //keep track of which view
798 { 722 whichTab=1;
799 printf("focusIn\n"); 723 }
800 724 else {
801 } 725 whichTab=2;
802 } 726 }
727 }
728 OtherView()->setSelected( OtherView()->currentItem(), FALSE );//make sure there's correct selection
729 }
803 730
804 return QWidget::eventFilter( o, e ); 731 return QWidget::eventFilter( o, e );
805} 732}
806 733
807 734
808void AdvancedFm::cancelRename() 735void AdvancedFm::cancelRename() {
809{ 736// qDebug("cancel rename");
810 qDebug("cancel rename");
811 QListView * view; 737 QListView * view;
812 view = CurrentView(); 738 view = CurrentView();
813 739
814 bool resetFocus = view->viewport()->focusProxy() == renameBox; 740 bool resetFocus = view->viewport()->focusProxy() == renameBox;
815 delete renameBox; 741 delete renameBox;
816 renameBox = 0; 742 renameBox = 0;
817 if ( resetFocus ) 743 if ( resetFocus ) {
818 {
819 view->viewport()->setFocusProxy( view); 744 view->viewport()->setFocusProxy( view);
820 view->setFocus(); 745 view->setFocus();
821 } 746 }
822} 747}
823 748
824void AdvancedFm::doRename(QListView * view) 749void AdvancedFm::doRename(QListView * view) {
825{ 750 if( !CurrentView()->currentItem()) return;
826 751
827 QRect r = view->itemRect( view->currentItem( )); 752 QRect r = view->itemRect( view->currentItem( ));
828 r = QRect( view->viewportToContents( r.topLeft() ), r.size() ); 753 r = QRect( view->viewportToContents( r.topLeft() ), r.size() );
829 r.setX( view->contentsX() ); 754 r.setX( view->contentsX() );
830 if ( r.width() > view->visibleWidth() ) 755 if ( r.width() > view->visibleWidth() )
831 r.setWidth( view->visibleWidth() ); 756 r.setWidth( view->visibleWidth() );
832 757
833 renameBox = new QLineEdit( view->viewport(), "qt_renamebox" ); 758 renameBox = new QLineEdit( view->viewport(), "qt_renamebox" );
@@ -837,45 +762,41 @@ void AdvancedFm::doRename(QListView * view)
837 762
838 renameBox->selectAll(); 763 renameBox->selectAll();
839 renameBox->installEventFilter( this ); 764 renameBox->installEventFilter( this );
840 view->addChild( renameBox, r.x(), r.y() ); 765 view->addChild( renameBox, r.x(), r.y() );
841 renameBox->resize( r.size() ); 766 renameBox->resize( r.size() );
842 view->viewport()->setFocusProxy( renameBox ); 767 view->viewport()->setFocusProxy( renameBox );
843 renameBox->setFocus(); 768 renameBox->setFocus();
844 renameBox->show(); 769 renameBox->show();
845
846} 770}
847 771
848 772
849void AdvancedFm::renameIt() 773void AdvancedFm::renameIt() {
850{ 774 if( !CurrentView()->currentItem()) return;
851 QListView *thisView = CurrentView(); 775 QListView *thisView = CurrentView();
852 oldName = thisView->currentItem()->text(0); 776 oldName = thisView->currentItem()->text(0);
853 doRename( thisView ); 777 doRename( thisView );
854 populateView(); 778 populateView();
855} 779}
856 780
857void AdvancedFm::okRename() 781void AdvancedFm::okRename() {
858{ 782 if( !CurrentView()->currentItem()) return;
859 QString newName = renameBox->text(); 783 QString newName = renameBox->text();
860 cancelRename(); 784 cancelRename();
861// int tabs=0; 785 QListView * view = CurrentView();
862 QListView * view = CurrentView(); 786 QString path = CurrentDir()->canonicalPath() + "/";
863 QString path = CurrentDir()->canonicalPath() + "/"; 787 oldName = path + oldName;
864 oldName = path + oldName; 788 newName = path + newName;
865 newName = path + newName; 789
866 790 if( rename( oldName.latin1(), newName.latin1())== -1)
867 if( view->currentItem() == NULL) 791 QMessageBox::message(tr("Note"),tr("Could not rename"));
868 return; 792 else
869 if( rename( oldName.latin1(), newName.latin1())== -1) 793 oldName = "";
870 QMessageBox::message(tr("Note"),tr("Could not rename")); 794
871 else 795 view->takeItem( view->currentItem() );
872 oldName = ""; 796 delete view->currentItem();
873 797 populateView();
874 view->takeItem( view->currentItem() );
875 delete view->currentItem();
876 populateView();
877} 798}
878 799
879void AdvancedFm::openSearch() { 800void AdvancedFm::openSearch() {
880 801 QMessageBox::message(tr("Note"),tr("Not Yet Implemented"));
881} 802}
diff --git a/noncore/apps/advancedfm/filePermissions.cpp b/noncore/apps/advancedfm/filePermissions.cpp
index 4de6d12..9698de7 100644
--- a/noncore/apps/advancedfm/filePermissions.cpp
+++ b/noncore/apps/advancedfm/filePermissions.cpp
@@ -26,17 +26,17 @@
26#include <sys/types.h> 26#include <sys/types.h>
27#include <pwd.h> 27#include <pwd.h>
28#include <grp.h> 28#include <grp.h>
29 29
30filePermissions::filePermissions( QWidget* parent, const char* name, bool modal, WFlags fl, const QString &fileName ) 30filePermissions::filePermissions( QWidget* parent, const char* name, bool modal, WFlags fl, const QString &fileName )
31 : QDialog( parent, name, modal, fl ) 31 : QDialog( parent, name, modal, fl )
32{ 32{
33 if ( !name ) 33 if ( !name )
34 setName( "filePermissions" ); 34 setName( tr("filePermissions") );
35// qDebug("FilePermissions "+fileName); 35// qDebug("FilePermissions "+fileName);
36/* resize( 236, 210 ); 36/* resize( 236, 210 );
37 setMaximumSize( QSize( 236, 210 ) ); 37 setMaximumSize( QSize( 236, 210 ) );
38*/ setCaption( tr( "Set File Permissions" ) ); 38*/ setCaption( tr( "Set File Permissions" ) );
39 39
40 TextLabel1 = new QLabel( this, "TextLabel1" ); 40 TextLabel1 = new QLabel( this, "TextLabel1" );
41 TextLabel1->setGeometry( QRect( 25, 5, 175, 20 ) ); 41 TextLabel1->setGeometry( QRect( 25, 5, 175, 20 ) );
42 TextLabel1->setText( tr( "Set file permissions for:" ) ); 42 TextLabel1->setText( tr( "Set file permissions for:" ) );