summaryrefslogtreecommitdiff
path: root/noncore/apps/advancedfm/advancedfm.cpp
authorllornkcor <llornkcor>2004-09-25 08:22:22 (UTC)
committer llornkcor <llornkcor>2004-09-25 08:22:22 (UTC)
commitff6c55833c0cba33469f668ca158e96b409b4967 (patch) (unidiff)
tree63299a67e6f9bf1a06c8668775f95f96366efce0 /noncore/apps/advancedfm/advancedfm.cpp
parent946445e87ce74b8b28817ea63854054dbf165003 (diff)
downloadopie-ff6c55833c0cba33469f668ca158e96b409b4967.zip
opie-ff6c55833c0cba33469f668ca158e96b409b4967.tar.gz
opie-ff6c55833c0cba33469f668ca158e96b409b4967.tar.bz2
fix
Diffstat (limited to 'noncore/apps/advancedfm/advancedfm.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfm.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp
index f1be471..0dc822d 100644
--- a/noncore/apps/advancedfm/advancedfm.cpp
+++ b/noncore/apps/advancedfm/advancedfm.cpp
@@ -1,170 +1,168 @@
1/*************************************************************************** 1/***************************************************************************
2 AdvancedFm.cpp 2 AdvancedFm.cpp
3 ------------------- 3 -------------------
4 ** Created: Sat Mar 9 23:33:09 2002 4 ** Created: Sat Mar 9 23:33:09 2002
5 copyright : (C) 2002 by ljp 5 copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com 6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 ***************************************************************************/ 11 ***************************************************************************/
12#define DEVELOPERS_VERSION 12#define DEVELOPERS_VERSION
13#include "advancedfm.h" 13#include "advancedfm.h"
14 14
15#include <opie2/odebug.h> 15#include <opie2/odebug.h>
16 16
17#include <opie2/ostorageinfo.h> 17#include <opie2/ostorageinfo.h>
18 18
19#include <qpe/qpeapplication.h> 19#include <qpe/qpeapplication.h>
20#include <qpe/config.h> 20#include <qpe/config.h>
21#include <qpe/mimetype.h> 21#include <qpe/mimetype.h>
22#include <qpe/applnk.h> 22#include <qpe/applnk.h>
23#include <qpe/resource.h> 23#include <qpe/resource.h>
24#include <qpe/menubutton.h> 24#include <qpe/menubutton.h>
25 25
26#include <qcombobox.h> 26#include <qcombobox.h>
27#include <qpopupmenu.h> 27#include <qpopupmenu.h>
28#include <qlistview.h> 28#include <qlistview.h>
29#include <qmessagebox.h> 29#include <qmessagebox.h>
30#include <qlineedit.h> 30#include <qlineedit.h>
31 31
32 32
33#include <sys/stat.h> 33#include <sys/stat.h>
34#include <time.h> 34#include <time.h>
35#include <dirent.h> 35#include <dirent.h>
36#include <fcntl.h> 36#include <fcntl.h>
37#include <sys/vfs.h> 37#include <sys/vfs.h>
38#include <mntent.h> 38#include <mntent.h>
39 39
40using namespace Opie::Ui; 40using namespace Opie::Ui;
41 41
42AdvancedFm::AdvancedFm(QWidget *,const char*, WFlags ) 42AdvancedFm::AdvancedFm(QWidget *,const char*, WFlags )
43 : QMainWindow( ) { 43 : QMainWindow( ) {
44 init(); 44 init();
45 renameBox = 0; 45 renameBox = 0;
46 46 whichTab = 1;
47 unknownXpm = Resource::loadImage("UnknownDocument").smoothScale(AppLnk::smallIconSize(),AppLnk::smallIconSize() ); 47 unknownXpm = Resource::loadImage("UnknownDocument").smoothScale(AppLnk::smallIconSize(),AppLnk::smallIconSize() );
48 48
49 initConnections(); 49 initConnections();
50 rePopulate(); 50 rePopulate();
51 channel = new QCopChannel( "QPE/Application/advancedfm", this ); 51 channel = new QCopChannel( "QPE/Application/advancedfm", this );
52 connect(channel,SIGNAL(received(const QCString&,const QByteArray&)),this,SLOT(qcopReceive(const QCString&,const QByteArray&))); 52 connect(channel,SIGNAL(received(const QCString&,const QByteArray&)),this,SLOT(qcopReceive(const QCString&,const QByteArray&)));
53 switchToLocalTab(); 53 switchToLocalTab();
54} 54}
55 55
56AdvancedFm::~AdvancedFm() { 56AdvancedFm::~AdvancedFm() {
57} 57}
58 58
59 59
60void AdvancedFm::cleanUp() { 60void AdvancedFm::cleanUp() {
61 QString sfile=QDir::homeDirPath(); 61 QString sfile=QDir::homeDirPath();
62 if(sfile.right(1) != "/") 62 if(sfile.right(1) != "/")
63 sfile+="/._temp"; 63 sfile+="/._temp";
64 else 64 else
65 sfile+="._temp"; 65 sfile+="._temp";
66 QFile file( sfile); 66 QFile file( sfile);
67 if(file.exists()) 67 if(file.exists())
68 file.remove(); 68 file.remove();
69} 69}
70 70
71void AdvancedFm::tabChanged(QWidget *wd) { 71void AdvancedFm::tabChanged(QWidget *wd) {
72 // qDebug("tabChanged"); 72 // qDebug("tabChanged");
73 if(wd == tab) { 73 if(wd == tab) {
74 whichTab = 1; 74 whichTab = 1;
75 // qDebug("tabchanged: LOCAL VIEW SHOWN"); 75 // qDebug("tabchanged: LOCAL VIEW SHOWN");
76 } 76 }
77 else if(wd == tab_2) { 77 else if(wd == tab_2) {
78 whichTab = 2; 78 whichTab = 2;
79 // qDebug("tabchanged: REMOTE VIEW SHOWN"); 79 // qDebug("tabchanged: REMOTE VIEW SHOWN");
80 } 80 }
81 qApp->processEvents(); 81 qApp->processEvents();
82 QString path = CurrentDir()->canonicalPath(); 82 QString path = CurrentDir()->canonicalPath();
83 // qDebug(path); 83 // qDebug(path);
84 if ( TabWidget->currentWidget() == tab) { 84 if ( TabWidget->currentWidget() == tab) {
85 viewMenu->setItemChecked(viewMenu->idAt(0), true); 85 viewMenu->setItemChecked(viewMenu->idAt(0), true);
86 viewMenu->setItemChecked(viewMenu->idAt(1), false); 86 viewMenu->setItemChecked(viewMenu->idAt(1), false);
87 } else { 87 } else {
88 viewMenu->setItemChecked(viewMenu->idAt(0), false); 88 viewMenu->setItemChecked(viewMenu->idAt(0), false);
89 viewMenu->setItemChecked(viewMenu->idAt(1), true); 89 viewMenu->setItemChecked(viewMenu->idAt(1), true);
90 } 90 }
91 91
92 QString fs= getFileSystemType( (const QString &) path);
93
94 setCaption(tr("AdvancedFm :: ")+fs+" :: "
95 +checkDiskSpace( (const QString &) path )+ tr(" kB free") );
96 chdir( path.latin1()); 92 chdir( path.latin1());
97 currentPathCombo->lineEdit()->setText(path); 93 currentPathCombo->lineEdit()->setText(path);
98} 94}
99 95
100 96
101void AdvancedFm::populateView() { 97void AdvancedFm::populateView() {
102 98
103 QPixmap pm; 99 QPixmap pm;
104 QListView *thisView = CurrentView(); 100 QListView *thisView = CurrentView();
105 QDir *thisDir = CurrentDir(); 101 QDir *thisDir = CurrentDir();
106 QString path = thisDir->canonicalPath(); 102 QString path = thisDir->canonicalPath();
107 103
108 thisView->clear(); 104 thisView->clear();
109 thisDir->setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); 105 thisDir->setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
110 thisDir->setMatchAllDirs(TRUE); 106 thisDir->setMatchAllDirs(TRUE);
111 thisDir->setNameFilter(filterStr); 107 thisDir->setNameFilter(filterStr);
112 QString fileL, fileS, fileDate; 108 QString fileL, fileS, fileDate;
113 QString fs= getFileSystemType((const QString &) path); 109
110 QString fs = getFileSystemType((const QString &) path);
114 setCaption(tr("AdvancedFm :: ")+fs+" :: " 111 setCaption(tr("AdvancedFm :: ")+fs+" :: "
115 +checkDiskSpace((const QString &) path)+ tr(" kB free") ); 112 +checkDiskSpace((const QString &) path)+ tr(" kB free") );
116 bool isDir=FALSE; 113 bool isDir = FALSE;
114
117 const QFileInfoList *list = thisDir->entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); 115 const QFileInfoList *list = thisDir->entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/);
118 QFileInfoListIterator it(*list); 116 QFileInfoListIterator it(*list);
119 QFileInfo *fi; 117 QFileInfo *fi;
120 while ( (fi=it.current()) ) { 118 while ( (fi=it.current()) ) {
121 if (fi->isSymLink() ) { 119 if (fi->isSymLink() ) {
122 QString symLink=fi->readLink(); 120 QString symLink = fi->readLink();
123 QFileInfo sym( symLink); 121 QFileInfo sym( symLink);
124 fileS.sprintf( "%10i", sym.size() ); 122 fileS.sprintf( "%10i", sym.size() );
125 fileL = fi->fileName() +" -> " + sym.filePath().data(); 123 fileL = fi->fileName() +" -> " + sym.filePath().data();
126 fileDate = sym.lastModified().toString(); 124 fileDate = sym.lastModified().toString();
127 } else { 125 } else {
128 fileS.sprintf( "%10i", fi->size() ); 126 fileS.sprintf( "%10i", fi->size() );
129 fileL = fi->fileName(); 127 fileL = fi->fileName();
130 fileDate= fi->lastModified().toString(); 128 fileDate= fi->lastModified().toString();
131 if( QDir(QDir::cleanDirPath( path +"/"+fileL)).exists() ) { 129 if( QDir(QDir::cleanDirPath( path +"/"+fileL)).exists() ) {
132// if(fileL == "..") 130// if(fileL == "..")
133 fileL += "/"; 131 fileL += "/";
134 isDir=TRUE; 132 isDir=TRUE;
135 } 133 }
136 } 134 }
137 QFileInfo fileInfo( path + "/" + fileL); 135 QFileInfo fileInfo( path + "/" + fileL);
138 136
139 if(fileL !="./" && fi->exists()) { 137 if(fileL !="./" && fi->exists()) {
140 item = new QListViewItem( thisView, fileL, fileS , fileDate); 138 item = new QListViewItem( thisView, fileL, fileS , fileDate);
141 139
142 if(isDir || fileL.find("/",0,TRUE) != -1) { 140 if(isDir || fileL.find("/",0,TRUE) != -1) {
143 141
144 if( !QDir( fi->filePath() ).isReadable()) //is directory 142 if( !QDir( fi->filePath() ).isReadable()) //is directory
145 pm = Resource::loadPixmap( "lockedfolder" ); 143 pm = Resource::loadPixmap( "lockedfolder" );
146 else 144 else
147 pm= Resource::loadPixmap( "folder" ); 145 pm= Resource::loadPixmap( "folder" );
148 } 146 }
149 else if ( fs == "vfat" && fileInfo.filePath().contains("/bin") ) { 147 else if ( fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
150 pm = Resource::loadPixmap( "exec"); 148 pm = Resource::loadPixmap( "exec");
151 } 149 }
152 else if( (fileInfo.permission( QFileInfo::ExeUser) 150 else if( (fileInfo.permission( QFileInfo::ExeUser)
153 | fileInfo.permission( QFileInfo::ExeGroup) 151 | fileInfo.permission( QFileInfo::ExeGroup)
154 | fileInfo.permission( QFileInfo::ExeOther)) && fs != "vfat" ) { 152 | fileInfo.permission( QFileInfo::ExeOther)) && fs != "vfat" ) {
155 pm = Resource::loadPixmap( "exec"); 153 pm = Resource::loadPixmap( "exec");
156 } 154 }
157 else if( !fi->isReadable() ) { 155 else if( !fi->isReadable() ) {
158 pm = Resource::loadPixmap( "locked" ); 156 pm = Resource::loadPixmap( "locked" );
159 } 157 }
160 else { //everything else goes by mimetype 158 else { //everything else goes by mimetype
161 MimeType mt(fi->filePath()); 159 MimeType mt(fi->filePath());
162 pm=mt.pixmap(); //sets the correct pixmap for mimetype 160 pm=mt.pixmap(); //sets the correct pixmap for mimetype
163 if(pm.isNull()) { 161 if(pm.isNull()) {
164 pm = unknownXpm; 162 pm = unknownXpm;
165 } 163 }
166 } 164 }
167 if( fi->isSymLink() || fileL.find("->",0,TRUE) != -1) { 165 if( fi->isSymLink() || fileL.find("->",0,TRUE) != -1) {
168 // odebug << " overlay link image" << oendl; 166 // odebug << " overlay link image" << oendl;
169 pm= Resource::loadPixmap( "advancedfm/symlink" ); 167 pm= Resource::loadPixmap( "advancedfm/symlink" );
170 // pm= Resource::loadPixmap( "folder" ); 168 // pm= Resource::loadPixmap( "folder" );
@@ -278,119 +276,119 @@ void AdvancedFm::switchToRemoteTab() {
278 // Remote_View->setFocus(); 276 // Remote_View->setFocus();
279 whichTab = 2; 277 whichTab = 2;
280} 278}
281 279
282void AdvancedFm::currentPathComboChanged() { 280void AdvancedFm::currentPathComboChanged() {
283 QString pDir = currentPathCombo->lineEdit()->text(); 281 QString pDir = currentPathCombo->lineEdit()->text();
284 if(QDir(pDir).exists()) { 282 if(QDir(pDir).exists()) {
285 CurrentDir()->setPath(pDir ); 283 CurrentDir()->setPath(pDir );
286 populateView(); 284 populateView();
287 } else { 285 } else {
288 QMessageBox::message(tr("Note"),tr("<p>%1 does not exist</p>").arg(pDir)); 286 QMessageBox::message(tr("Note"),tr("<p>%1 does not exist</p>").arg(pDir));
289 } 287 }
290} 288}
291 289
292void AdvancedFm::fillCombo(const QString &currentPath) { 290void AdvancedFm::fillCombo(const QString &currentPath) {
293 291
294 if ( TabWidget->currentWidget() == tab) { 292 if ( TabWidget->currentWidget() == tab) {
295// if ( whichTab == 1) { 293// if ( whichTab == 1) {
296 currentPathCombo->lineEdit()->setText( currentPath); 294 currentPathCombo->lineEdit()->setText( currentPath);
297 if( localDirPathStringList.grep( currentPath,TRUE).isEmpty() ) { 295 if( localDirPathStringList.grep( currentPath,TRUE).isEmpty() ) {
298 currentPathCombo->clear(); 296 currentPathCombo->clear();
299 localDirPathStringList.prepend( currentPath ); 297 localDirPathStringList.prepend( currentPath );
300 currentPathCombo->insertStringList( localDirPathStringList,-1); 298 currentPathCombo->insertStringList( localDirPathStringList,-1);
301 } 299 }
302 } else { 300 } else {
303 currentPathCombo->lineEdit()->setText( currentPath); 301 currentPathCombo->lineEdit()->setText( currentPath);
304 if( remoteDirPathStringList.grep( currentPath,TRUE).isEmpty() ) { 302 if( remoteDirPathStringList.grep( currentPath,TRUE).isEmpty() ) {
305 currentPathCombo->clear(); 303 currentPathCombo->clear();
306 remoteDirPathStringList.prepend( currentPath ); 304 remoteDirPathStringList.prepend( currentPath );
307 currentPathCombo->insertStringList( remoteDirPathStringList,-1); 305 currentPathCombo->insertStringList( remoteDirPathStringList,-1);
308 } 306 }
309 } 307 }
310} 308}
311 309
312QStringList AdvancedFm::getPath() { 310QStringList AdvancedFm::getPath() {
313 QStringList strList; 311 QStringList strList;
314 QListView *thisView=CurrentView(); 312 QListView *thisView=CurrentView();
315 QList<QListViewItem> * getSelectedItems( QListView * thisView ); 313 QList<QListViewItem> * getSelectedItems( QListView * thisView );
316 QListViewItemIterator it( thisView ); 314 QListViewItemIterator it( thisView );
317 for ( ; it.current(); ++it ) { 315 for ( ; it.current(); ++it ) {
318 if ( it.current()->isSelected() ) { 316 if ( it.current()->isSelected() ) {
319 strList << it.current()->text(0); 317 strList << it.current()->text(0);
320// odebug << it.current()->text(0) << oendl; 318// odebug << it.current()->text(0) << oendl;
321 } 319 }
322 } 320 }
323 return strList; 321 return strList;
324} 322}
325 323
326void AdvancedFm::changeTo(const QString dir) { 324void AdvancedFm::changeTo(const QString &dir) {
327 chdir( dir.latin1()); 325 chdir( dir.latin1());
328 CurrentDir()->cd(dir, TRUE); 326 CurrentDir()->cd(dir, TRUE);
329 populateView(); 327 populateView();
330 update(); 328 update();
331} 329}
332 330
333void AdvancedFm::homeButtonPushed() { 331void AdvancedFm::homeButtonPushed() {
334 changeTo(QDir::homeDirPath()); 332 changeTo(QDir::homeDirPath());
335} 333}
336 334
337void AdvancedFm::docButtonPushed() { 335void AdvancedFm::docButtonPushed() {
338 changeTo(QPEApplication::documentDir()); 336 changeTo(QPEApplication::documentDir());
339} 337}
340 338
341void AdvancedFm::SDButtonPushed() { 339void AdvancedFm::SDButtonPushed() {
342 Opie::Core::OStorageInfo info; 340 Opie::Core::OStorageInfo info;
343 changeTo(info.sdPath()); 341 changeTo(info.sdPath());
344} 342}
345 343
346void AdvancedFm::CFButtonPushed() { 344void AdvancedFm::CFButtonPushed() {
347 Opie::Core::OStorageInfo info; 345 Opie::Core::OStorageInfo info;
348 changeTo(info.cfPath()); 346 changeTo(info.cfPath());
349} 347}
350 348
351void AdvancedFm::QPEButtonPushed() { 349void AdvancedFm::QPEButtonPushed() {
352 changeTo(QPEApplication::qpeDir()); 350 changeTo(QPEApplication::qpeDir());
353} 351}
354 352
355void AdvancedFm::doAbout() { 353void AdvancedFm::doAbout() {
356 QMessageBox::message("AdvancedFm",tr("<P>Advanced FileManager is copyright 2002-2003 by L.J.Potter<llornkcor@handhelds.org> and is licensed by the GPL</P>")); 354 QMessageBox::message("AdvancedFm",tr("<P>Advanced FileManager is copyright 2002-2003 by L.J.Potter<llornkcor@handhelds.org> and is licensed by the GPL</P>"));
357} 355}
358 356
359void AdvancedFm::keyPressEvent( QKeyEvent *e) { 357void AdvancedFm::keyPressEvent( QKeyEvent *e) {
360 Q_UNUSED(e); 358 Q_UNUSED(e);
361} 359}
362 360
363void AdvancedFm::keyReleaseEvent( QKeyEvent *e) { 361void AdvancedFm::keyReleaseEvent( QKeyEvent *e) {
364// if( CurrentView()->hasFocus() ) 362// if( CurrentView()->hasFocus() )
365// e->ignore(); 363// e->ignore();
366 if( currentPathCombo->lineEdit()->hasFocus()) { 364 if( currentPathCombo->lineEdit()->hasFocus()) {
367 // qDebug("shout!"); 365 // qDebug("shout!");
368 } 366 }
369 367
370 else if( e->key() == Key_Left ) 368 else if( e->key() == Key_Left )
371 upDir(); 369 upDir();
372 else if( e->key() == Key_Return || e->key() == Key_Enter) 370 else if( e->key() == Key_Return || e->key() == Key_Enter)
373 navigateToSelected(); 371 navigateToSelected();
374 else if( e->key() == Key_Tab) 372 else if( e->key() == Key_Tab)
375 setOtherTabCurrent(); 373 setOtherTabCurrent();
376 else if( e->key() == Key_Delete ) 374 else if( e->key() == Key_Delete )
377 del(); 375 del();
378 else if( e->key() == Key_A) 376 else if( e->key() == Key_A)
379 copyAs(); 377 copyAs();
380 else if( e->key() == Key_C) 378 else if( e->key() == Key_C)
381 copy(); 379 copy();
382 else if( e->key() == Key_E) 380 else if( e->key() == Key_E)
383 runThis(); 381 runThis();
384 else if( e->key() == Key_G) 382 else if( e->key() == Key_G)
385 currentPathCombo->lineEdit()->setFocus(); 383 currentPathCombo->lineEdit()->setFocus();
386 else if( e->key() == Key_H ) 384 else if( e->key() == Key_H )
387 showHidden(); 385 showHidden();
388 else if( e->key() == Key_I) 386 else if( e->key() == Key_I)
389 fileStatus(); 387 fileStatus();
390 else if( e->key() == Key_M) 388 else if( e->key() == Key_M)
391 move(); 389 move();
392 else if( e->key() == Key_N ) 390 else if( e->key() == Key_N )
393 mkDir(); 391 mkDir();
394 else if( e->key() == Key_P) 392 else if( e->key() == Key_P)
395 filePerms(); 393 filePerms();
396 else if( e->key() == Key_R ) 394 else if( e->key() == Key_R )