summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfm.cpp176
-rw-r--r--noncore/apps/advancedfm/advancedfm.h4
2 files changed, 120 insertions, 60 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp
index b5fcccf..ee3f736 100644
--- a/noncore/apps/advancedfm/advancedfm.cpp
+++ b/noncore/apps/advancedfm/advancedfm.cpp
@@ -64,2 +64,5 @@
64#include <fcntl.h> 64#include <fcntl.h>
65#include <mntent.h>
66#include <string.h>
67#include <errno.h>
65 68
@@ -273,11 +276,2 @@ void AdvancedFm::populateLocalView()
273{ 276{
274// QList<QListViewItem> * getSelectedItems( QListView * Local_View );
275// QListViewItemIterator it( Local_View );
276// for ( ; it.current(); ++it ) {
277// if ( it.current()->isSelected() ) {
278// QString strItem = it.current()->text(0);
279// QString localFile = currentDir.canonicalPath()+"/"+strItem;
280// QFileInfo fi(localFile);
281// }
282// }
283 QPixmap pm; 277 QPixmap pm;
@@ -289,3 +283,6 @@ void AdvancedFm::populateLocalView()
289// qDebug(currentDir.canonicalPath()); 283// qDebug(currentDir.canonicalPath());
290 284// struct stat buf;
285// mode_t mode;
286 QString fs= getFileSystemType((const QString &) currentDir.canonicalPath());
287 setCaption("AdvancedFm :: "+fs);
291 bool isDir=FALSE; 288 bool isDir=FALSE;
@@ -312,6 +309,9 @@ void AdvancedFm::populateLocalView()
312 } 309 }
310 QFileInfo fileInfo( currentDir.canonicalPath()+"/"+fileL);
313 if(fileL !="./" && fi->exists()) { 311 if(fileL !="./" && fi->exists()) {
314 item= new QListViewItem( Local_View, fileL, fileS , fileDate); 312 item= new QListViewItem( Local_View, fileL, fileS , fileDate);
313
315 if(isDir || fileL.find("/",0,TRUE) != -1) { 314 if(isDir || fileL.find("/",0,TRUE) != -1) {
316 if( !QDir( fi->filePath() ).isReadable()) 315
316 if( !QDir( fi->filePath() ).isReadable()) //is directory
317 pm = Resource::loadPixmap( "lockedfolder" ); 317 pm = Resource::loadPixmap( "lockedfolder" );
@@ -319,14 +319,10 @@ void AdvancedFm::populateLocalView()
319 pm= Resource::loadPixmap( "folder" ); 319 pm= Resource::loadPixmap( "folder" );
320 item->setPixmap( 0,pm );
321 } else {
322// if(fi->isExecutable()) {
323// pm = Resource::loadPixmap( "exec");
324// item->setPixmap( 0,pm); 320// item->setPixmap( 0,pm);
325// } 321 } else if( fileInfo.isExecutable() || fs == "vfat" && fi->filePath().contains("/bin") ) { //is exec
326 if( !fi->isReadable() ) { 322 pm = Resource::loadPixmap( "exec");
323// item->setPixmap( 0,pm);
324 } else if( !fi->isReadable() ) {
327 pm = Resource::loadPixmap( "locked" ); 325 pm = Resource::loadPixmap( "locked" );
328 item->setPixmap( 0,pm); 326// item->setPixmap( 0,pm);
329 327 } else { //everything else goes by mimetype
330 }
331 else {
332 MimeType mt(fi->filePath()); 328 MimeType mt(fi->filePath());
@@ -335,6 +331,6 @@ void AdvancedFm::populateLocalView()
335 pm = Resource::loadPixmap( "UnknownDocument-14" ); 331 pm = Resource::loadPixmap( "UnknownDocument-14" );
336 item->setPixmap( 0,pm); 332// item->setPixmap( 0,pm);
337 }
338 } 333 }
339 if( fileL.find("->",0,TRUE) != -1) { 334 item->setPixmap( 0,pm);
335 if( fi->isSymLink() &&fileL.find("->",0,TRUE) != -1) {
340 // overlay link image 336 // overlay link image
@@ -347,3 +343,4 @@ void AdvancedFm::populateLocalView()
347 } 343 }
348 } isDir=FALSE; 344 }
345 isDir=FALSE;
349 ++it; 346 ++it;
@@ -353,9 +350,9 @@ void AdvancedFm::populateLocalView()
353 struct stat buf; 350 struct stat buf;
354 struct stat st; 351// struct stat st;
355 dev_t devT; 352 dev_t devT;
356 mode_t mode; 353// mode_t mode;
357 DIR *dir; 354 DIR *dir;
358 int fd = 0; 355// int fd = 0;
359 struct dirent *mydirent; 356 struct dirent *mydirent;
360 int i = 1; 357// int i = 1;
361 if((dir = opendir( currentDir.canonicalPath().latin1())) != NULL) 358 if((dir = opendir( currentDir.canonicalPath().latin1())) != NULL)
@@ -403,2 +400,5 @@ void AdvancedFm::populateRemoteView()
403 QString fileL, fileS, fileDate; 400 QString fileL, fileS, fileDate;
401
402 QString fs= getFileSystemType((const QString &) currentRemoteDir.canonicalPath());
403 setCaption("AdvancedFm :: "+fs);
404 bool isDir=FALSE; 404 bool isDir=FALSE;
@@ -435,11 +435,9 @@ void AdvancedFm::populateRemoteView()
435 pm= Resource::loadPixmap( "folder" ); 435 pm= Resource::loadPixmap( "folder" );
436 item->setPixmap( 0,pm );
437 } else {
438// if(fi->isExecutable()) {
439// pm = Resource::loadPixmap( "exec");
440// item->setPixmap( 0,pm); 436// item->setPixmap( 0,pm);
441// } 437 } else if( fi->isExecutable() || fs == "vfat" && fi->filePath().contains("/bin") ) {
442 if( !fi->isReadable() ) { 438 pm = Resource::loadPixmap( "exec");
439// item->setPixmap( 0,pm);
440 } else if( !fi->isReadable() ) {
443 pm = Resource::loadPixmap( "locked" ); 441 pm = Resource::loadPixmap( "locked" );
444 item->setPixmap( 0,pm); 442// item->setPixmap( 0,pm);
445 } else { 443 } else {
@@ -449,6 +447,5 @@ void AdvancedFm::populateRemoteView()
449 pm = Resource::loadPixmap( "UnknownDocument-14" ); 447 pm = Resource::loadPixmap( "UnknownDocument-14" );
450 item->setPixmap( 0,pm); 448// item->setPixmap( 0,pm);
451 }
452 } 449 }
453 if( fileL.find("->",0,TRUE) != -1) { 450 if( fi->isSymLink() && fileL.find("->",0,TRUE) != -1) {
454 // overlay link image 451 // overlay link image
@@ -459,5 +456,7 @@ void AdvancedFm::populateRemoteView()
459 pm.setMask( pm.createHeuristicMask( FALSE ) ); 456 pm.setMask( pm.createHeuristicMask( FALSE ) );
457// item->setPixmap( 0, pm);
458 }
460 item->setPixmap( 0, pm); 459 item->setPixmap( 0, pm);
461 } 460 }
462 } isDir=FALSE; 461 isDir=FALSE;
463 ++it; 462 ++it;
@@ -467,8 +466,8 @@ void AdvancedFm::populateRemoteView()
467 struct stat buf; 466 struct stat buf;
468 struct stat st; 467// struct stat st;
469 mode_t mode; 468// mode_t mode;
470 DIR *dir; 469 DIR *dir;
471 int fd = 0; 470// int fd = 0;
472 struct dirent *mydirent; 471 struct dirent *mydirent;
473 int i = 1; 472// int i = 1;
474 if((dir = opendir( currentRemoteDir.canonicalPath().latin1())) != NULL) 473 if((dir = opendir( currentRemoteDir.canonicalPath().latin1())) != NULL)
@@ -662,2 +661,3 @@ void AdvancedFm::showLocalMenu(QListViewItem * item)
662 m.insertSeparator(); 661 m.insertSeparator();
662 m.insertItem( tr( "Rescan" ), this, SLOT( populateLocalView() ));
663 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); 663 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() ));
@@ -697,2 +697,3 @@ void AdvancedFm::showRemoteMenu(QListViewItem * item)
697 m.insertSeparator(); 697 m.insertSeparator();
698 m.insertItem( tr( "Rescan" ), this, SLOT( populateRemoteView() ));
698 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); 699 m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() ));
@@ -715,9 +716,13 @@ void AdvancedFm::runThis() {
715// QFileInfo *fi; 716// QFileInfo *fi;
717QString fs;
716 if (TabWidget->currentPageIndex() == 0) { 718 if (TabWidget->currentPageIndex() == 0) {
717 QString curFile = Local_View->currentItem()->text(0); 719 QString curFile = Local_View->currentItem()->text(0);
720
721 fs= getFileSystemType((const QString &) currentDir.canonicalPath());
718 QFileInfo fileInfo( currentDir.canonicalPath()+"/"+curFile); 722 QFileInfo fileInfo( currentDir.canonicalPath()+"/"+curFile);
719// if(fileInfo.isExecutable()) { 723 qDebug( fileInfo.owner());
720// QCopEnvelope e("QPE/System", "execute(QString)" ); 724 if( fileInfo.isExecutable() || fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
721// e << curFile; 725 QCopEnvelope e("QPE/System", "execute(QString)" );
722// } else { 726 e << curFile;
727 } else {
723 curFile = currentDir.canonicalPath()+"/"+curFile; 728 curFile = currentDir.canonicalPath()+"/"+curFile;
@@ -730,3 +735,3 @@ void AdvancedFm::runThis() {
730 } 735 }
731// } 736 }
732// MimeType mt( curFile); 737// MimeType mt( curFile);
@@ -734,7 +739,9 @@ void AdvancedFm::runThis() {
734 QString curFile = Remote_View->currentItem()->text(0); 739 QString curFile = Remote_View->currentItem()->text(0);
740 fs= getFileSystemType((const QString &) currentRemoteDir.canonicalPath());
741 qDebug("Filesystemtype is "+fs);
735 QFileInfo fileInfo( currentRemoteDir.canonicalPath()+"/"+curFile); 742 QFileInfo fileInfo( currentRemoteDir.canonicalPath()+"/"+curFile);
736// if(fileInfo.isExecutable()) { 743 if(fileInfo.isExecutable() || fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
737// QCopEnvelope e("QPE/System", "execute(QString)" ); 744 QCopEnvelope e("QPE/System", "execute(QString)" );
738// e << curFile; 745 e << curFile;
739// } else { 746 } else {
740 curFile = currentRemoteDir.canonicalPath()+"/"+curFile; 747 curFile = currentRemoteDir.canonicalPath()+"/"+curFile;
@@ -747,3 +754,3 @@ void AdvancedFm::runThis() {
747 } 754 }
748// } 755 }
749// MimeType mt( curFile); 756// MimeType mt( curFile);
@@ -1346,3 +1353,3 @@ void AdvancedFm::runCommand() {
1346 1353
1347 int err=0; 1354// int err=0;
1348 Output *outDlg; 1355 Output *outDlg;
@@ -1404,3 +1411,3 @@ void AdvancedFm::fileStatus() {
1404 QString command = " stat -l "+ curFile +" 2>&1"; 1411 QString command = " stat -l "+ curFile +" 2>&1";
1405 int err=0; 1412// int err=0;
1406 Output *outDlg; 1413 Output *outDlg;
@@ -1521,7 +1528,3 @@ void AdvancedFm::keyReleaseEvent( QKeyEvent *e)
1521 break; 1528 break;
1522
1523
1524
1525 } 1529 }
1526
1527} 1530}
@@ -1569,3 +1572,56 @@ void AdvancedFm::QPEButtonPushed() {
1569 update(); 1572 update();
1573}
1570 1574
1575void AdvancedFm::parsetab(const QString &fileName) {
1576
1577 fileSystemTypeList.clear();
1578 fsList.clear();
1579 struct mntent *me;
1580// if(fileName == "/etc/mtab") {
1581 FILE *mntfp = setmntent( fileName.latin1(), "r" );
1582 if ( mntfp ) {
1583 while ( (me = getmntent( mntfp )) != 0 ) {
1584 QString deviceName = me->mnt_fsname;
1585 QString filesystemType = me->mnt_type;
1586 QString mountDir = me->mnt_dir;
1587 if(deviceName != "none") {
1588 if( fsList.contains(filesystemType) == 0
1589 & filesystemType.find("proc",0,TRUE) == -1
1590 & filesystemType.find("cramfs",0,TRUE) == -1
1591 & filesystemType.find("auto",0,TRUE) == -1)
1592 fsList << filesystemType;
1593// deviceList << deviceName;
1594// qDebug(mountDir+"::"+filesystemType);
1595 fileSystemTypeList << mountDir+"::"+filesystemType;
1596 }
1571} 1597}
1598 }
1599 endmntent( mntfp );
1600}
1601
1602QString AdvancedFm::getFileSystemType(const QString &currentText) {
1603 parsetab("/etc/mtab"); //why did TT forget filesystem type?
1604 QString current = currentText;//.right( currentText.length()-1);
1605 QString baseFs;
1606 for ( QStringList::Iterator it = fileSystemTypeList.begin(); it != fileSystemTypeList.end(); ++it ) {
1607 QString temp = (*it);
1608 QString path = temp.left(temp.find("::",0,TRUE) );
1609 path = path.right( path.length()-1);
1610 if(path.isEmpty()) baseFs = temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
1611 if( current.find( path,0,TRUE) != -1 && !path.isEmpty()) {
1612 return temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
1613 }
1614 }
1615 return baseFs;
1616}
1617
1618
1619// QList<QListViewItem> * getSelectedItems( QListView * Local_View );
1620// QListViewItemIterator it( Local_View );
1621// for ( ; it.current(); ++it ) {
1622// if ( it.current()->isSelected() ) {
1623// QString strItem = it.current()->text(0);
1624// QString localFile = currentDir.canonicalPath()+"/"+strItem;
1625// QFileInfo fi(localFile);
1626// }
1627// }
diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h
index 5c2719e..90619ba 100644
--- a/noncore/apps/advancedfm/advancedfm.h
+++ b/noncore/apps/advancedfm/advancedfm.h
@@ -60,2 +60,3 @@ public:
60 bool b; 60 bool b;
61 QStringList fileSystemTypeList, fsList;
61 int currentServerConfig; 62 int currentServerConfig;
@@ -105,2 +106,5 @@ protected:
105 void keyReleaseEvent( QKeyEvent *); 106 void keyReleaseEvent( QKeyEvent *);
107 QString getFileSystemType(const QString &);
108 void parsetab(const QString &fileName);
109
106protected slots: 110protected slots: