summaryrefslogtreecommitdiff
authorzecke <zecke>2002-04-01 01:24:44 (UTC)
committer zecke <zecke>2002-04-01 01:24:44 (UTC)
commit84850cd8811fc29aa39ecd2452884bf48ea27e92 (patch) (unidiff)
tree339584aec050e0084560e05d2460477354619d8f
parent66357a57409435e5967887af026bc1cf1d725f56 (diff)
downloadopie-84850cd8811fc29aa39ecd2452884bf48ea27e92.zip
opie-84850cd8811fc29aa39ecd2452884bf48ea27e92.tar.gz
opie-84850cd8811fc29aa39ecd2452884bf48ea27e92.tar.bz2
Almost done
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/TODO4
-rw-r--r--libopie/ofileselector.cc187
-rw-r--r--libopie/ofileselector.h9
3 files changed, 183 insertions, 17 deletions
diff --git a/libopie/TODO b/libopie/TODO
index c1bf6d1..a4e1ada 100644
--- a/libopie/TODO
+++ b/libopie/TODO
@@ -1,17 +1,19 @@
1- xmltree done 1- xmltree done
2 2
3- tododb 3- tododb
4 - set Alarms 4 - set Alarms
5 - multiple categories 5 - multiple categories
6 - Attendees 6 - Attendees
7 7
8- OFileSelector 8- OFileSelector
9 - DocLnk when not in Document Mode 9 - DocLnk when not in Document Mode ( and vice versa )
10 - MultipleDocuments
10 - TreeView have a own OFileSelectorItem for this 11 - TreeView have a own OFileSelectorItem for this
11 - IconView add a QIconView to the widgetstack 12 - IconView add a QIconView to the widgetstack
12 - Move OFileSelectorItem to it's own files 13 - Move OFileSelectorItem to it's own files
13 - add functions to access the member variables 14 - add functions to access the member variables
14 - debug 15 - debug
16 - new Dirs created inside the listview
15 17
16- Clickable labels? 18- Clickable labels?
17 Harlekin you wanted them in the libs? \ No newline at end of file 19 Harlekin you wanted them in the libs? \ No newline at end of file
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index b583125..14f035e 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -28,48 +28,49 @@
28 28
29#include <qnamespace.h> 29#include <qnamespace.h>
30#include <qpushbutton.h> 30#include <qpushbutton.h>
31#include <qcombobox.h> 31#include <qcombobox.h>
32#include <qhbox.h> 32#include <qhbox.h>
33#include <qvbox.h> 33#include <qvbox.h>
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qwidgetstack.h> 35#include <qwidgetstack.h>
36#include <qlineedit.h> 36#include <qlineedit.h>
37#include <qcheckbox.h> 37#include <qcheckbox.h>
38#include <qlabel.h> 38#include <qlabel.h>
39#include <qheader.h> 39#include <qheader.h>
40#include <qdir.h> 40#include <qdir.h>
41#include <qpainter.h> 41#include <qpainter.h>
42#include <qaction.h> 42#include <qaction.h>
43#include <qpopupmenu.h> 43#include <qpopupmenu.h>
44#include <qcursor.h> 44#include <qcursor.h>
45 45
46#include <qpe/qpeapplication.h> 46#include <qpe/qpeapplication.h>
47#include <qpe/fileselector.h> 47#include <qpe/fileselector.h>
48#include <qpe/applnk.h> 48#include <qpe/applnk.h>
49#include <qpe/global.h> 49#include <qpe/global.h>
50#include <qpe/mimetype.h> 50#include <qpe/mimetype.h>
51#include <qpe/resource.h> 51#include <qpe/resource.h>
52#include <qpe/storage.h>
52 53
53#include <unistd.h> 54#include <unistd.h>
54#include <stdlib.h> 55#include <stdlib.h>
55#include <sys/stat.h> 56#include <sys/stat.h>
56 57
57#include "ofileselector.h" 58#include "ofileselector.h"
58 59
59QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0; 60QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0;
60 61
61namespace { 62namespace {
62 63
63 int indexByString( const QComboBox *box, const QString &str ){ 64 int indexByString( const QComboBox *box, const QString &str ){
64 int index= -1; 65 int index= -1;
65 for(int i= 0; i < box->count(); i++ ){ 66 for(int i= 0; i < box->count(); i++ ){
66 qWarning("str T%sT boxT%sT", str.latin1(), box->text(i).latin1() ); 67 qWarning("str T%sT boxT%sT", str.latin1(), box->text(i).latin1() );
67 if( str == box->text(i ) ){ 68 if( str == box->text(i ) ){
68 index= i; 69 index= i;
69 break; 70 break;
70 } 71 }
71 } 72 }
72 return index; 73 return index;
73 } 74 }
74 75
75}; 76};
@@ -95,51 +96,55 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString
95 m_location = 0; 96 m_location = 0;
96 m_homeButton = 0; 97 m_homeButton = 0;
97 m_docButton = 0; 98 m_docButton = 0;
98 m_hideButton = 0; 99 m_hideButton = 0;
99 m_ok = 0; 100 m_ok = 0;
100 m_cancel = 0; 101 m_cancel = 0;
101 m_reread = 0; 102 m_reread = 0;
102 m_up = 0; 103 m_up = 0;
103 m_View = 0; 104 m_View = 0;
104 m_select = 0; 105 m_select = 0;
105 m_stack = 0; 106 m_stack = 0;
106 107
107 m_select = 0; 108 m_select = 0;
108 m_stack = 0; 109 m_stack = 0;
109 m_lay = 0; 110 m_lay = 0;
110 m_boxToolbar = 0; 111 m_boxToolbar = 0;
111 m_boxOk = 0; 112 m_boxOk = 0;
112 m_edit = 0; 113 m_edit = 0;
113 114
114 m_fnLabel = 0; 115 m_fnLabel = 0;
115 m_checkPerm = 0; 116 m_checkPerm = 0;
116 m_mimeCheck = 0; 117 m_mimeCheck = 0;
117 m_viewCheck = 0; 118 m_viewCheck = 0;
118 119
120 m_pseudo = 0;
121 m_pseudoLayout = 0;
122
119 m_dir = true; 123 m_dir = true;
120 m_files = true; 124 m_files = true;
121 m_custom = 0; 125 m_custom = 0;
126 m_showPopup = true;
122 127
123 if(m_pixmaps == 0 ) // init the pixmaps 128 if(m_pixmaps == 0 ) // init the pixmaps
124 initPics(); 129 initPics();
125 130
126 m_lay = new QVBoxLayout(this); 131 m_lay = new QVBoxLayout(this);
127 init(); 132 init();
128 m_edit->setText( fileName ); 133 m_edit->setText( fileName );
129} 134}
130void OFileSelector::initPics() 135void OFileSelector::initPics()
131{ 136{
132 qWarning("init pics" ); 137 qWarning("init pics" );
133 m_pixmaps = new QMap<QString,QPixmap>; 138 m_pixmaps = new QMap<QString,QPixmap>;
134 QPixmap pm = Resource::loadPixmap( "folder" ); 139 QPixmap pm = Resource::loadPixmap( "folder" );
135 QPixmap lnk = Resource::loadPixmap( "symlink" ); 140 QPixmap lnk = Resource::loadPixmap( "symlink" );
136 QPainter painter( &pm ); 141 QPainter painter( &pm );
137 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); 142 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
138 pm.setMask( pm.createHeuristicMask( FALSE ) ); 143 pm.setMask( pm.createHeuristicMask( FALSE ) );
139 m_pixmaps->insert("dirsymlink", pm ); 144 m_pixmaps->insert("dirsymlink", pm );
140 145
141 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" ); 146 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" );
142 QPainter pen(&pm2 ); 147 QPainter pen(&pm2 );
143 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk ); 148 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk );
144 pm2.setMask( pm2.createHeuristicMask( FALSE ) ); 149 pm2.setMask( pm2.createHeuristicMask( FALSE ) );
145 m_pixmaps->insert("symlinkedlocked", pm2 ); 150 m_pixmaps->insert("symlinkedlocked", pm2 );
@@ -208,53 +213,61 @@ void OFileSelector::init()
208 initializeYes(); 213 initializeYes();
209 214
210 215
211}; 216};
212 217
213void OFileSelector::setYesCancelVisible( bool show ) 218void OFileSelector::setYesCancelVisible( bool show )
214{ 219{
215 if ( show == m_shYesNo ) 220 if ( show == m_shYesNo )
216 return; 221 return;
217 m_shYesNo = show; 222 m_shYesNo = show;
218 if( !show ){ 223 if( !show ){
219 delete m_ok; 224 delete m_ok;
220 delete m_cancel; 225 delete m_cancel;
221 m_ok = 0; 226 m_ok = 0;
222 m_cancel = 0; 227 m_cancel = 0;
223 // delete m_boxOk; all ready deleted in delItems 228 // delete m_boxOk; all ready deleted in delItems
224 } 229 }
225 updateLay(); // recreate it and save the other states 230 updateLay(); // recreate it and save the other states
226} 231}
227 232
228void OFileSelector::setToolbarVisible( bool show ) 233void OFileSelector::setToolbarVisible( bool show )
229{ 234{
230 if ( m_shTool == show ) 235 if ( m_shTool == show )
231 return; 236 return;
232 /* if( show ){ 237 if(!m_shTool ){
233 238 delete m_boxToolbar;
234 }else { 239 delete m_homeButton;
235 240 delete m_docButton;
236 }*/ 241 delete m_location;
242 delete m_up;
243 m_boxToolbar = 0;
244 m_homeButton = 0;
245 m_docButton = 0;
246 m_location = 0;
247 m_up = 0;
248 };
249 updateLay();// overkill fix it
237} 250}
238 251
239void OFileSelector::setPermissionBarVisible( bool show ) 252void OFileSelector::setPermissionBarVisible( bool show )
240{ 253{
241 if( show == m_shPerm ) 254 if( show == m_shPerm )
242 return; 255 return;
243 256
244 m_shPerm = show; 257 m_shPerm = show;
245 258
246 updateLay(); 259 updateLay();
247} 260}
248void OFileSelector::setLineEditVisible( bool show ) 261void OFileSelector::setLineEditVisible( bool show )
249{ 262{
250 if( show == m_shLne ) 263 if( show == m_shLne )
251 return; 264 return;
252 265
253 m_shLne = show; 266 m_shLne = show;
254 if( !show ){ 267 if( !show ){
255 delete m_edit; 268 delete m_edit;
256 delete m_fnLabel; 269 delete m_fnLabel;
257 m_edit = 0; 270 m_edit = 0;
258 m_fnLabel = 0; 271 m_fnLabel = 0;
259 //delete m_boxName; will be deleted 272 //delete m_boxName; will be deleted
260 } 273 }
@@ -397,49 +410,67 @@ void OFileSelector::reparse()
397 m_mimeCheck->clear(); 410 m_mimeCheck->clear();
398 dir.setFilter( QDir::Files | QDir::Readable ); 411 dir.setFilter( QDir::Files | QDir::Readable );
399 dir.setSorting(QDir::Size ); 412 dir.setSorting(QDir::Size );
400 const QFileInfoList *list = dir.entryInfoList(); 413 const QFileInfoList *list = dir.entryInfoList();
401 QFileInfoListIterator it( *list ); 414 QFileInfoListIterator it( *list );
402 QFileInfo *fi; 415 QFileInfo *fi;
403 while( (fi=it.current()) ){ 416 while( (fi=it.current()) ){
404 if(fi->extension() == QString::fromLatin1("desktop") ){ 417 if(fi->extension() == QString::fromLatin1("desktop") ){
405 ++it; 418 ++it;
406 continue; 419 continue;
407 } 420 }
408 MimeType type(fi->filePath() ); 421 MimeType type(fi->filePath() );
409 if( !m_mimetypes.contains( type.id() ) ) 422 if( !m_mimetypes.contains( type.id() ) )
410 m_mimetypes.append( type.id() ); 423 m_mimetypes.append( type.id() );
411 424
412 ++it; 425 ++it;
413 } 426 }
414 m_mimetypes.prepend("All" ); 427 m_mimetypes.prepend("All" );
415 m_mimeCheck->insertStringList(m_mimetypes ); 428 m_mimeCheck->insertStringList(m_mimetypes );
416 // set it to the current mimetype 429 // set it to the current mimetype
417 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) ); 430 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) );
418 }; 431 };
419 QDir dir( m_currentDir ); 432 QDir dir( m_currentDir );
420 //dir.setFilter(-1 ); 433 //dir.setFilter(-1 );
421 dir.setSorting(QDir::Name | QDir::DirsFirst | QDir::Reversed | QDir::IgnoreCase ); 434 int sort = QDir::Name | QDir::DirsFirst | QDir::Reversed;
435 if( m_case )
436 sort = QDir::IgnoreCase;
437 dir.setSorting( sort );
438
439 int filter;
440 /* if( m_dir && !m_files)
441 filter |= QDir::Dirs;
442 else if( !m_dir && m_files )
443 filter |= QDir::Files;
444 else
445 filter |= QDir::All;
446 */
447 if( m_selector == EXTENDED_ALL )
448 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
449 else
450 filter = QDir::Files | QDir::Dirs | QDir::All;
451 dir.setFilter( filter );
452
422 const QFileInfoList *list = dir.entryInfoList(); 453 const QFileInfoList *list = dir.entryInfoList();
423 QFileInfoListIterator it( *list ); 454 QFileInfoListIterator it( *list );
424 QFileInfo *fi; 455 QFileInfo *fi;
425 while( (fi=it.current()) ){ 456 while( (fi=it.current()) ){
426 if(fi->fileName() == ".." || fi->fileName() == "." ){ 457 if(fi->fileName() == ".." || fi->fileName() == "." ){
427 ++it; 458 ++it;
428 continue; 459 continue;
429 } 460 }
430 qWarning("Test: %s", fi->fileName().latin1() ); 461 qWarning("Test: %s", fi->fileName().latin1() );
431 if(fi->isSymLink() ){ 462 if(fi->isSymLink() ){
432 qWarning("Symlink %s", fi->fileName().latin1() ); 463 qWarning("Symlink %s", fi->fileName().latin1() );
433 QString file = fi->dirPath(true)+"/"+ fi->readLink(); 464 QString file = fi->dirPath(true)+"/"+ fi->readLink();
434 qWarning("File ->%s", file.latin1() ); 465 qWarning("File ->%s", file.latin1() );
435 for(int i=0; i<=4; i++ ){ // prepend from dos 466 for(int i=0; i<=4; i++ ){ // prepend from dos
436 QFileInfo info( file ); 467 QFileInfo info( file );
437 if( !info.exists() ){ 468 if( !info.exists() ){
438 qWarning("does not exist" ); 469 qWarning("does not exist" );
439 addSymlink(currMime, fi, TRUE ); 470 addSymlink(currMime, fi, TRUE );
440 break; 471 break;
441 }else if( info.isDir() ){ 472 }else if( info.isDir() ){
442 qWarning("isDir" ); 473 qWarning("isDir" );
443 addDir(currMime, fi, TRUE ); 474 addDir(currMime, fi, TRUE );
444 break; 475 break;
445 }else if( info.isFile() ){ 476 }else if( info.isFile() ){
@@ -533,129 +564,237 @@ void OFileSelector::initializeChooser()
533 this, SLOT(slotViewCheck(const QString & ) ) ); 564 this, SLOT(slotViewCheck(const QString & ) ) );
534 565
535 connect( m_mimeCheck, SIGNAL(activated(const QString &) ), 566 connect( m_mimeCheck, SIGNAL(activated(const QString &) ),
536 this, SLOT(slotMimeCheck(const QString & ) ) ); 567 this, SLOT(slotMimeCheck(const QString & ) ) );
537} 568}
538void OFileSelector::slotMimeCheck(const QString &view ){ 569void OFileSelector::slotMimeCheck(const QString &view ){
539 if(m_selector == NORMAL ){ 570 if(m_selector == NORMAL ){
540 delete m_select; 571 delete m_select;
541 m_select = new FileSelector(view == "All" ? QString::null : view 572 m_select = new FileSelector(view == "All" ? QString::null : view
542 , m_stack, "fileselector", FALSE, FALSE ); 573 , m_stack, "fileselector", FALSE, FALSE );
543 m_stack->addWidget( m_select, NORMAL ); 574 m_stack->addWidget( m_select, NORMAL );
544 m_stack->raiseWidget( NORMAL ); 575 m_stack->raiseWidget( NORMAL );
545 }else{ 576 }else{
546 reparse(); 577 reparse();
547 } 578 }
548} 579}
549 580
550void OFileSelector::slotViewCheck(const QString &view ){ 581void OFileSelector::slotViewCheck(const QString &view ){
551 qWarning("changed: show %s", view.latin1() ); 582 qWarning("changed: show %s", view.latin1() );
552 // if the current view is the one 583 // if the current view is the one
553 QString currMime = m_mimeCheck->currentText(); 584 QString currMime = m_mimeCheck->currentText();
554 if( view == QString::fromLatin1("Documents") ){ 585 if( view == QString::fromLatin1("Documents") ){
555 // get the mimetype now 586 // get the mimetype now
556 // check if we're the current widget and return 587 // check if we're the current widget and return
557 if( m_View != 0) // delete 0 shouldn't crash but it did :( 588 if( m_View != 0) { // delete 0 shouldn't crash but it did :(
558 delete m_View; 589 delete m_View;
590 delete m_boxToolbar;
591 delete m_homeButton;
592 delete m_docButton;
593 delete m_location;
594 delete m_up;
595 delete m_pseudo;
596 delete m_pseudoLayout;
597 }
559 m_View = 0; 598 m_View = 0;
599 m_boxToolbar = 0;
600 m_homeButton = 0;
601 m_docButton = 0;
602 m_location = 0;
603 m_up = 0;
604 m_pseudo = 0;
605 m_pseudoLayout = 0;
606
560 delete m_select; 607 delete m_select;
561 m_select = new FileSelector( currMime == "All" ? QString::null : currMime, 608 m_select = new FileSelector( currMime == "All" ? QString::null : currMime,
562 m_stack,"fileselector", FALSE, FALSE ); 609 m_stack,"fileselector", FALSE, FALSE );
563 m_stack->addWidget( m_select, NORMAL ); 610 m_stack->addWidget( m_select, NORMAL );
564 m_mimeCheck->clear(); 611 m_mimeCheck->clear();
565 m_selector = NORMAL; 612 m_selector = NORMAL;
566 updateMimes(); 613 updateMimes();
567 m_mimeCheck->insertStringList( m_mimetypes ); 614 m_mimeCheck->insertStringList( m_mimetypes );
568 m_stack->raiseWidget( NORMAL ); 615 m_stack->raiseWidget( NORMAL );
569 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); 616 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) );
570 617
571 }else if(view == QString::fromLatin1("Files") ){ 618 }else if(view == QString::fromLatin1("Files") ){
572 // remove from the stack 619 // remove from the stack
573 delete m_select; 620 delete m_select;
574 m_select = 0; 621 m_select = 0;
575 delete m_View; 622 delete m_View;
576 m_View = 0; 623 m_View = 0;
624
625 delete m_boxToolbar;
626 delete m_homeButton;
627 delete m_docButton;
628 delete m_location;
629 delete m_up;
630 delete m_pseudo;
631 delete m_pseudoLayout;
632 m_boxToolbar = 0;
633 m_homeButton = 0;
634 m_docButton = 0;
635 m_location = 0;
636 m_up = 0;
637 m_pseudo = 0;
638 m_pseudoLayout = 0;
639
577 m_selector = EXTENDED; 640 m_selector = EXTENDED;
578 // create the ListView or IconView 641 // create the ListView or IconView
579 initializeListView(); 642 initializeListView();
580 643
581 reparse(); 644 reparse();
582 }else if(view == QString::fromLatin1("All Files") ) { 645 }else if(view == QString::fromLatin1("All Files") ) {
583 // remove from the stack 646 // remove from the stack
584 delete m_select; 647 delete m_select;
585 m_select = 0; 648 m_select = 0;
586 delete m_View; 649 delete m_View;
587 m_View = 0; 650 m_View = 0;
651 delete m_boxToolbar;
652 delete m_homeButton;
653 delete m_docButton;
654 delete m_location;
655 delete m_up;
656 delete m_pseudo;
657 delete m_pseudoLayout;
658 m_boxToolbar = 0;
659 m_homeButton = 0;
660 m_docButton = 0;
661 m_location = 0;
662 m_up = 0;
663 m_pseudo = 0;
664 m_pseudoLayout = 0;
665
588 m_selector = EXTENDED_ALL; 666 m_selector = EXTENDED_ALL;
589 initializeListView(); 667 initializeListView();
590 reparse(); 668 reparse();
591 }; 669 };
592}; 670};
593 671
594 672
595void OFileSelector::updateMimes() // lets check which mode is active 673void OFileSelector::updateMimes() // lets check which mode is active
596 // check the current dir for items then 674 // check the current dir for items then
597{ 675{
598 m_mimetypes.clear(); 676 m_mimetypes.clear();
599 m_mimetypes.append("All" ); 677 m_mimetypes.append("All" );
600 if( m_selector == NORMAL ){ 678 if( m_selector == NORMAL ){
601 DocLnkSet set; 679 DocLnkSet set;
602 Global::findDocuments(&set, QString::null ); 680 Global::findDocuments(&set, QString::null );
603 QListIterator<DocLnk> dit( set.children() ); 681 QListIterator<DocLnk> dit( set.children() );
604 for ( ; dit.current(); ++dit ) { 682 for ( ; dit.current(); ++dit ) {
605 if( !m_mimetypes.contains((*dit)->type() ) ) 683 if( !m_mimetypes.contains((*dit)->type() ) )
606 m_mimetypes.append( (*dit)->type() ); 684 m_mimetypes.append( (*dit)->type() );
607 } 685 }
608 }else{ 686 }else{
609 // should be allreday updatet 687 // should be allreday updatet
610 ; 688 ;
611 } 689 }
612}; 690};
613void OFileSelector::initializeListView() 691void OFileSelector::initializeListView()
614{ 692{
615 m_View = new QListView(m_stack, "Extended view" ); 693 // just to make sure but clean it up better FIXME
616 m_stack->addWidget( m_View, EXTENDED ); 694 delete m_View;
695 m_View = 0;
696 delete m_boxToolbar;
697 delete m_homeButton;
698 delete m_docButton;
699 delete m_location;
700 delete m_up;
701 delete m_pseudo;
702 delete m_pseudoLayout;
703 m_boxToolbar = 0;
704 m_homeButton = 0;
705 m_docButton = 0;
706 m_location = 0;
707 m_up = 0;
708 m_pseudo = 0;
709 m_pseudoLayout = 0;
710 // time for the toolbar
711 m_pseudo = new QWidget(m_stack, "Pseudo Widget");
712 m_pseudoLayout = new QVBoxLayout(m_pseudo );
713 if(m_shTool ){
714 m_boxToolbar = new QHBoxLayout( );
715 m_boxToolbar->setAutoAdd( true );
716 m_location = new QComboBox(m_pseudo );
717
718 m_up = new QPushButton(Resource::loadIconSet("up"),"", m_pseudo,"cdUpButton");
719 m_up->setMinimumSize( QSize( 20, 20 ) );
720 m_up->setMaximumSize( QSize( 20, 20 ) );
721 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) );
722 m_up->setFlat(TRUE);
723
724 m_homeButton = new QPushButton(Resource::loadIconSet("home") , "", m_pseudo);
725 m_homeButton->setMinimumSize( QSize( 20, 20 ) );
726 m_homeButton->setMaximumSize( QSize( 20, 20 ) );
727 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) );
728 m_homeButton->setFlat(TRUE);
729
730 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", m_pseudo,"docsButton");
731 m_docButton->setMinimumSize( QSize( 20, 20 ) );
732 m_docButton->setMaximumSize( QSize( 20, 20 ) );
733 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) );
734 m_docButton->setFlat(TRUE);
735
736 m_boxToolbar->addWidget(m_location );
737 m_boxToolbar->addWidget(m_up );
738 m_boxToolbar->addWidget(m_homeButton );
739 m_boxToolbar->addWidget(m_docButton );
740 m_pseudoLayout->addLayout(m_boxToolbar );
741 // lets fill the combobox
742 StorageInfo storage;
743 const QList<FileSystem> &fs = storage.fileSystems();
744 QListIterator<FileSystem> it ( fs );
745 for( ; it.current(); ++it ){
746 const QString disk = (*it)->name();
747 const QString path = (*it)->path();
748 m_location->insertItem(path+ "<-"+disk );
749 }
750 };
751 m_View = new QListView(m_pseudo, "Extended view" );
752 m_stack->addWidget( m_pseudo, EXTENDED );
617 m_stack->raiseWidget( EXTENDED ); 753 m_stack->raiseWidget( EXTENDED );
754 m_pseudoLayout->addWidget(m_View );
618 QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold); 755 QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold);
619 // set up the stuff 756 // set up the stuff
620 // Pixmap Name Date Size mime 757 // Pixmap Name Date Size mime
621 //(m_View->header() )->hide(); 758 //(m_View->header() )->hide();
622 //m_View->setRootIsDecorated(false); 759 //m_View->setRootIsDecorated(false);
623 m_View->addColumn(" "); 760 m_View->addColumn(" ");
624 m_View->addColumn(tr("Name") ); 761 m_View->addColumn(tr("Name") );
625 m_View->addColumn(tr("Size") ); 762 m_View->addColumn(tr("Size") );
626 m_View->addColumn(tr("Date"), 60 ); 763 m_View->addColumn(tr("Date"), 60 );
627 m_View->addColumn(tr("Mime Type") ); 764 m_View->addColumn(tr("Mime Type") );
628 QHeader *header = m_View->header(); 765 QHeader *header = m_View->header();
629 header->hide(); 766 header->hide();
630 m_View->setSorting(1 ); 767 m_View->setSorting(1 );
631 // connect now 768 // connect now
632 connect(m_View, SIGNAL(selectionChanged() ), this, SLOT(slotSelectionChanged() ) ); 769 connect(m_View, SIGNAL(selectionChanged() ), this, SLOT(slotSelectionChanged() ) );
633 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); 770 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
634 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), 771 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
635 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); 772 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
636 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), 773 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
637 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); 774 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
775
776
638}; 777};
639/* If a item is locked depends on the mode 778/* If a item is locked depends on the mode
640 if we're in OPEN !isReadable is locked 779 if we're in OPEN !isReadable is locked
641 if we're in SAVE !isWriteable is locked 780 if we're in SAVE !isWriteable is locked
642 781
643 782
644 */ 783 */
645 784
646 785
647void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){ 786void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){
648 qWarning("Add Files" ); 787 qWarning("Add Files" );
649 if( !m_files ){ 788 if( !m_files ){
650 qWarning("not mfiles" ); 789 qWarning("not mfiles" );
651 return; 790 return;
652 } 791 }
653 792
654 MimeType type( info->filePath() ); 793 MimeType type( info->filePath() );
655 QString name; 794 QString name;
656 QString dir; 795 QString dir;
657 bool locked= false; 796 bool locked= false;
658 if(mime == "All" ){ 797 if(mime == "All" ){
659 ; 798 ;
660 }else if( type.id() != mime ) { 799 }else if( type.id() != mime ) {
661 return; 800 return;
@@ -776,90 +915,102 @@ void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &
776 return; 915 return;
777 916
778 qWarning("clicked" ); 917 qWarning("clicked" );
779 if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 918 if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
780 qWarning("inside" ); 919 qWarning("inside" );
781 OFileSelectorItem *sel = (OFileSelectorItem*)item; 920 OFileSelectorItem *sel = (OFileSelectorItem*)item;
782 if(!sel->isLocked() ){ // not locked either changedir or open 921 if(!sel->isLocked() ){ // not locked either changedir or open
783 QStringList str = QStringList::split("->", sel->text(1) ); 922 QStringList str = QStringList::split("->", sel->text(1) );
784 if(sel->isDir() ){ 923 if(sel->isDir() ){
785 cd( sel->directory() + "/" + str[0] ); 924 cd( sel->directory() + "/" + str[0] );
786 }else{ 925 }else{
787 qWarning("file" ); 926 qWarning("file" );
788 if(m_shLne ) 927 if(m_shLne )
789 m_edit->setText(str[0] ); 928 m_edit->setText(str[0] );
790 emit fileSelected(str[0] ); 929 emit fileSelected(str[0] );
791 // emit DocLnk need to do it 930 // emit DocLnk need to do it
792 } 931 }
793 }else{ 932 }else{
794 qWarning( "locked" ); 933 qWarning( "locked" );
795 } 934 }
796 }; 935 };
797} 936}
798void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) 937void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int )
799{ 938{
939 if (item == 0 )
940 return;
941
800 if( button != Qt::RightButton ) 942 if( button != Qt::RightButton )
801 return; 943 return;
802 qWarning("right button" ); 944 qWarning("right button" );
803 slotContextMenu(item); 945 slotContextMenu(item);
804} 946}
805void OFileSelector::slotContextMenu(QListViewItem *item) 947void OFileSelector::slotContextMenu(QListViewItem *item)
806{ 948{
807 qWarning("context menu" ); 949 qWarning("context menu" );
950 if( item ==0 || !m_showPopup )
951 return;
952
808 if( m_custom !=0){ 953 if( m_custom !=0){
809 m_custom->exec(); 954 m_custom->exec();
810 }else{ 955 }else{
811 QPopupMenu menu; 956 QPopupMenu menu;
957 QAction up;
958 up.setText("cd up");
959 up.addTo( &menu );
960 connect(&up, SIGNAL(activated() ),
961 this, SLOT(cdUP() ) );
962
812 QAction act; 963 QAction act;
813 OFileSelectorItem *sel = (OFileSelectorItem*)item; 964 OFileSelectorItem *sel = (OFileSelectorItem*)item;
814 if(sel->isDir() ){ 965 if(sel->isDir() ){
815 act.setText( tr("Change Directory") ); 966 act.setText( tr("Change Directory") );
816 act.addTo(&menu ); 967 act.addTo(&menu );
817 connect(&act, SIGNAL(activated() ), 968 connect(&act, SIGNAL(activated() ),
818 this, SLOT(slotChangedDir() ) ); 969 this, SLOT(slotChangedDir() ) );
819 }else{ 970 }else{
820 act.setText( tr("Open file" ) ); 971 act.setText( tr("Open file" ) );
821 act.addTo( &menu ); 972 act.addTo( &menu );
822 connect(&act, SIGNAL(activated() ), 973 connect(&act, SIGNAL(activated() ),
823 this, SLOT(slotOpen() ) ); 974 this, SLOT(slotOpen() ) );
824 } 975 }
825 QAction rescan; 976 QAction rescan;
826 rescan.setText( tr("Rescan") ); 977 rescan.setText( tr("Rescan") );
827 rescan.addTo( &menu ); 978 rescan.addTo( &menu );
828 connect(&act, SIGNAL(activated() ), 979 connect(&rescan, SIGNAL(activated() ),
829 this, SLOT(slotRescan() ) ); 980 this, SLOT(slotRescan() ) );
830 981
831 QAction rename; 982 QAction rename;
832 rename.setText( tr("Rename") ); 983 rename.setText( tr("Rename") );
833 rename.addTo( &menu ); 984 rename.addTo( &menu );
834 connect(&act, SIGNAL(activated() ), 985 connect(&rename, SIGNAL(activated() ),
835 this, SLOT(slotRename() ) ); 986 this, SLOT(slotRename() ) );
836 987
837 menu.insertSeparator(); 988 menu.insertSeparator();
838 QAction delItem; 989 QAction delItem;
839 delItem.setText( tr("Delete") ); 990 delItem.setText( tr("Delete") );
840 delItem.addTo(&menu ); 991 delItem.addTo(&menu );
841 connect(&act, SIGNAL(activated() ), 992 connect(&delItem, SIGNAL(activated() ),
842 this, SLOT(slotDelete() ) ); 993 this, SLOT(slotDelete() ) );
843 994
844 menu.exec(QCursor::pos() ); 995 menu.exec(QCursor::pos() );
845 } 996 }
846} 997}
847bool OFileSelector::cd(const QString &str ) 998bool OFileSelector::cd(const QString &str )
848{ 999{
849 qWarning(" dir %s", str.latin1() ); 1000 qWarning(" dir %s", str.latin1() );
850 QDir dir( str); 1001 QDir dir( str);
851 if(dir.exists() ){ 1002 if(dir.exists() ){
852 m_currentDir = str; 1003 m_currentDir = str;
853 reparse(); 1004 reparse();
854 return true; 1005 return true;
855 } 1006 }
856 return false; 1007 return false;
857} 1008}
858 1009
859void OFileSelector::slotChangedDir() 1010void OFileSelector::slotChangedDir()
860{ 1011{
861 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 1012 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
862 if(sel->isDir() ){ 1013 if(sel->isDir() ){
863 QStringList str = QStringList::split("->", sel->text(1) ); 1014 QStringList str = QStringList::split("->", sel->text(1) );
864 cd( sel->directory() + "/" + str[0] ); 1015 cd( sel->directory() + "/" + str[0] );
865 } 1016 }
@@ -874,27 +1025,35 @@ void OFileSelector::slotOpen()
874} 1025}
875void OFileSelector::slotRescan() 1026void OFileSelector::slotRescan()
876{ 1027{
877 reparse(); 1028 reparse();
878} 1029}
879void OFileSelector::slotRename() 1030void OFileSelector::slotRename()
880{ 1031{
881 // rename inline 1032 // rename inline
882} 1033}
883void OFileSelector::slotDelete() 1034void OFileSelector::slotDelete()
884{ 1035{
885 qWarning("delete slot" ); 1036 qWarning("delete slot" );
886 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 1037 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
887 QStringList list = QStringList::split("->", sel->text(1) ); 1038 QStringList list = QStringList::split("->", sel->text(1) );
888 if( sel->isDir() ){ 1039 if( sel->isDir() ){
889 QString str = QString::fromLatin1("rm -rf ") + list[0]; 1040 QString str = QString::fromLatin1("rm -rf ") + list[0];
890 ::system(str.utf8().data() ); 1041 ::system(str.utf8().data() );
891 }else{ 1042 }else{
892 QFile::remove( list[0] ); 1043 QFile::remove( list[0] );
893 } 1044 }
894 m_View->takeItem( sel ); 1045 m_View->takeItem( sel );
895 delete sel; 1046 delete sel;
896} 1047}
897 1048
898 1049void OFileSelector::cdUP()
1050{
1051 QDir dir( m_currentDir );
1052 dir.cdUp();
1053 if(dir.exists() ){
1054 m_currentDir = dir.absPath();
1055 reparse();
1056 }
1057}
899 1058
900 1059
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index 458e552..b91c0ea 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -134,137 +134,142 @@ class OFileSelector : public QWidget {
134 134
135 QCheckBox* permissionCheckbox(); 135 QCheckBox* permissionCheckbox();
136 bool setPermission() const; 136 bool setPermission() const;
137 void setPermissionChecked( bool check ); 137 void setPermissionChecked( bool check );
138 138
139 void setMode( int ); 139 void setMode( int );
140 140
141 bool showDirs()const { return m_dir; } 141 bool showDirs()const { return m_dir; }
142 void setShowDirs(bool ); 142 void setShowDirs(bool );
143 143
144 const QListView* listView() { return m_View; }; 144 const QListView* listView() { return m_View; };
145 145
146 bool isCaseSensetive()const { return m_case; } 146 bool isCaseSensetive()const { return m_case; }
147 void setCaseSensetive(bool caSe ); 147 void setCaseSensetive(bool caSe );
148 148
149 bool showFiles()const { return m_files; }; 149 bool showFiles()const { return m_files; };
150 void setShowFiles(bool ); 150 void setShowFiles(bool );
151 bool cd(const QString &path ); 151 bool cd(const QString &path );
152 152
153 153
154 int mode()const { return m_mode; }; 154 int mode()const { return m_mode; };
155 int selector()const { return m_selector; }; 155 int selector()const { return m_selector; };
156 void setSelector( int ); 156 void setSelector( int );
157 157
158 158 bool showPopup()const { return m_showPopup; };
159 void setShowPopup( bool pop ) { m_showPopup = pop; };
159 void setPopupMenu( QPopupMenu * ); 160 void setPopupMenu( QPopupMenu * );
160 161
161 void updateLay(); 162 void updateLay();
162 163
163 void reparse(); // re reads the dir 164 void reparse(); // re reads the dir
164 165
165 QString selectedName( )const; 166 QString selectedName( )const;
166 QStringList selectedNames()const; 167 QStringList selectedNames()const;
167 168
168 QString selectedPath() const; 169 QString selectedPath() const;
169 QStringList selectedPaths() const; 170 QStringList selectedPaths() const;
170 171
171 QString directory()const; 172 QString directory()const;
172 int fileCount(); 173 int fileCount();
173 174
174 /* the user needs to delete it */ 175 /* the user needs to delete it */
175 DocLnk selectedDocument()const; 176 DocLnk selectedDocument()const;
176 /* the user needs to delete it */ 177 /* the user needs to delete it */
177 QValueList<DocLnk> selectedDocuments()const; 178 QValueList<DocLnk> selectedDocuments()const;
178 179
179 signals: 180 signals:
180 void fileSelected( const DocLnk & ); 181 void fileSelected( const DocLnk & );
181 void fileSelected( const QString & ); 182 void fileSelected( const QString & );
182 void closeMe(); 183 void closeMe();
183 void ok(); 184 void ok();
184 void cancel(); 185 void cancel();
185 186
186 protected slots: 187 protected slots:
187 void slotOk(); 188 void slotOk();
188 void slotCancel(); 189 void slotCancel();
189 void slotViewCheck(const QString & ); 190 void slotViewCheck(const QString & );
190 void slotMimeCheck(const QString & ); 191 void slotMimeCheck(const QString & );
191 protected: 192 protected:
192 void init(); 193 void init();
193 void updateMimes(); 194 void updateMimes();
194 195
195 protected: 196 protected:
196 197
197 private: 198 private:
198int m_mode, m_selector; 199 int m_mode, m_selector;
199 QComboBox *m_location, *m_mimeCheck, *m_viewCheck; 200 QComboBox *m_location, *m_mimeCheck, *m_viewCheck;
200 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; 201 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel;
201 QPushButton *m_reread, *m_up; 202 QPushButton *m_reread, *m_up;
202 QListView *m_View; 203 QListView *m_View;
203 QCheckBox *m_checkPerm; 204 QCheckBox *m_checkPerm;
205 QWidget *m_pseudo;
206 QVBoxLayout *m_pseudoLayout;
204 207
205 QString m_currentDir; 208 QString m_currentDir;
206 QString m_name; 209 QString m_name;
207 QStringList m_mimetypes; 210 QStringList m_mimetypes;
208 211
209 FileSelector *m_select; 212 FileSelector *m_select;
210 QWidgetStack *m_stack; 213 QWidgetStack *m_stack;
211 QVBoxLayout *m_lay; 214 QVBoxLayout *m_lay;
212 QGridLayout *m_Oselector; 215 QGridLayout *m_Oselector;
213 216
214 QHBoxLayout *m_boxToolbar; 217 QHBoxLayout *m_boxToolbar;
215 QHBoxLayout *m_boxOk; 218 QHBoxLayout *m_boxOk;
216 QHBoxLayout *m_boxName; 219 QHBoxLayout *m_boxName;
217 QHBoxLayout *m_boxView; 220 QHBoxLayout *m_boxView;
218 221
219 QPopupMenu *m_custom; 222 QPopupMenu *m_custom;
220 223
221 QLineEdit *m_edit; 224 QLineEdit *m_edit;
222 QLabel *m_fnLabel; 225 QLabel *m_fnLabel;
223 bool m_shTool:1; 226 bool m_shTool:1;
224 bool m_shPerm:1; 227 bool m_shPerm:1;
225 bool m_shLne:1; 228 bool m_shLne:1;
226 bool m_shChooser:1; 229 bool m_shChooser:1;
227 bool m_shYesNo:1; 230 bool m_shYesNo:1;
228 bool m_boCheckPerm:1; 231 bool m_boCheckPerm:1;
229 bool m_autoMime:1; 232 bool m_autoMime:1;
230 bool m_case:1; 233 bool m_case:1;
231 bool m_dir:1; 234 bool m_dir:1;
232 bool m_files:1; 235 bool m_files:1;
236 bool m_showPopup:1;
233 237
234 // implementation todo 238 // implementation todo
235 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE ); 239 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE );
236 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); 240 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE );
237 virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){}; 241 virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){};
238 void delItems(); 242 void delItems();
239 void initializeName(); 243 void initializeName();
240 void initializeYes(); 244 void initializeYes();
241 void initializeChooser(); 245 void initializeChooser();
242 void initializeListView(); 246 void initializeListView();
243 void initPics(); 247 void initPics();
244 bool compliesMime(const QString &path, const QString &mime); 248 bool compliesMime(const QString &path, const QString &mime);
245 249
246 class OFileSelectorPrivate; 250 class OFileSelectorPrivate;
247 OFileSelectorPrivate *d; 251 OFileSelectorPrivate *d;
248 static QMap<QString,QPixmap> *m_pixmaps; 252 static QMap<QString,QPixmap> *m_pixmaps;
249 253
250private slots: 254private slots:
251 void slotFileSelected(const QString & ); // not really meant to be a slot 255 void slotFileSelected(const QString & ); // not really meant to be a slot
252 void slotFileBridgeSelected( const DocLnk & ); 256 void slotFileBridgeSelected( const DocLnk & );
253 virtual void slotSelectionChanged(); 257 virtual void slotSelectionChanged();
254 virtual void slotCurrentChanged(QListViewItem* ); 258 virtual void slotCurrentChanged(QListViewItem* );
255 virtual void slotClicked( int, QListViewItem *item, const QPoint &, int); 259 virtual void slotClicked( int, QListViewItem *item, const QPoint &, int);
256 virtual void slotRightButton(int, QListViewItem *, const QPoint &, int ); 260 virtual void slotRightButton(int, QListViewItem *, const QPoint &, int );
257 virtual void slotContextMenu( QListViewItem *item); 261 virtual void slotContextMenu( QListViewItem *item);
258 // listview crap see above 262 // listview crap see above
259 // PopupMenu crap 263 // PopupMenu crap
260 virtual void slotChangedDir(); 264 virtual void slotChangedDir();
261 virtual void slotOpen(); 265 virtual void slotOpen();
262 virtual void slotRescan(); 266 virtual void slotRescan();
263 virtual void slotRename(); 267 virtual void slotRename();
264 virtual void slotDelete(); 268 virtual void slotDelete();
269 virtual void cdUP();
265 270
266}; 271};
267 272
268 273
269#endif 274#endif
270 275