summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofiledialog.cc18
-rw-r--r--libopie/ofiledialog.h18
-rw-r--r--libopie/ofileselector.cc160
-rw-r--r--libopie/ofileselector.h77
4 files changed, 192 insertions, 81 deletions
diff --git a/libopie/ofiledialog.cc b/libopie/ofiledialog.cc
index 164fadd..4783004 100644
--- a/libopie/ofiledialog.cc
+++ b/libopie/ofiledialog.cc
@@ -1,116 +1,116 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 <> 3             .=l. Copyright (c) 2002 <>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This library is free software; you can 5 _;:,     .>    :=|. This library is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 7:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This library is distributed in the hope that 12    .i_,=:_.      -<s. This library is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
17..}^=.=       =       ; Library General Public License for more 17..}^=.=       =       ; Library General Public License for more
18++=   -.     .`     .: details. 18++=   -.     .`     .: details.
19 :     =  ...= . :.=- 19 :     =  ...= . :.=-
20 -.   .:....=;==+<; You should have received a copy of the GNU 20 -.   .:....=;==+<; You should have received a copy of the GNU
21  -_. . .   )=.  = Library General Public License along with 21  -_. . .   )=.  = Library General Public License along with
22    --        :-=` this library; see the file COPYING.LIB. 22    --        :-=` this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation, 23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, 24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29#include <qpe/applnk.h> 29#include <qpe/applnk.h>
30#include <qstring.h> 30#include <qstring.h>
31#include <qapplication.h> 31#include <qapplication.h>
32#include <qlayout.h> 32#include <qlayout.h>
33 33
34#include "ofiledialog.h" 34#include "ofiledialog.h"
35 35
36OFileDialog::OFileDialog(const QString &caption, 36OFileDialog::OFileDialog(const QString &caption,
37 QWidget *wid, int mode, int selector, 37 QWidget *wid, int mode, int selector,
38 const QString &dirName, 38 const QString &dirName,
39 const QString &fileName, 39 const QString &fileName,
40 const QStringList &mimetypes ) 40 const QMap<QString,QStringList>& mimetypes )
41 : QDialog( wid, "OFileDialog", true ) 41 : QDialog( wid, "OFileDialog", true )
42{ 42{
43 // QVBoxLayout *lay = new QVBoxLayout(this); 43 // QVBoxLayout *lay = new QVBoxLayout(this);
44 //showMaximized(); 44 //showMaximized();
45 QVBoxLayout *lay = new QVBoxLayout(this ); 45 QVBoxLayout *lay = new QVBoxLayout(this );
46 file = new OFileSelector(this , mode, selector, 46 file = new OFileSelector(this , mode, selector,
47 dirName, fileName, 47 dirName, fileName,
48 mimetypes ); 48 mimetypes );
49 lay->addWidget( file ); 49 lay->addWidget( file );
50 50
51 //lay->addWidget( file ); 51 //lay->addWidget( file );
52 //showFullScreen(); 52 //showFullScreen();
53 setCaption( caption.isEmpty() ? tr("FileDialog") : caption ); 53 setCaption( caption.isEmpty() ? tr("FileDialog") : caption );
54 connect(file, SIGNAL(fileSelected(const QString&) ), 54 connect(file, SIGNAL(fileSelected(const QString&) ),
55 this, SLOT(slotFileSelected(const QString&) ) ); 55 this, SLOT(slotFileSelected(const QString&) ) );
56 56
57 connect(file, SIGNAL(dirSelected(const QString &) ), 57 connect(file, SIGNAL(dirSelected(const QString &) ),
58 this, SLOT(slotDirSelected(const QString &) ) ); 58 this, SLOT(slotDirSelected(const QString &) ) );
59 59
60 60
61 file->setYesCancelVisible( false ); // relayout 61 file->setYesCancelVisible( false ); // relayout
62} 62}
63QString OFileDialog::mimetype()const 63QString OFileDialog::mimetype()const
64{ 64{
65 return QString::null; 65 return QString::null;
66} 66}
67QString OFileDialog::fileName()const 67QString OFileDialog::fileName()const
68{ 68{
69 return file->selectedName(); 69 return file->selectedName();
70} 70}
71DocLnk OFileDialog::selectedDocument()const 71DocLnk OFileDialog::selectedDocument()const
72{ 72{
73 return file->selectedDocument(); 73 return file->selectedDocument();
74} 74}
75QString OFileDialog::getOpenFileName(int selector, 75QString OFileDialog::getOpenFileName(int selector,
76 const QString &startDir, 76 const QString &startDir,
77 const QString &file, 77 const QString &file,
78 const QStringList &mimes, 78 const MimeTypes &mimes,
79 QWidget *wid, 79 QWidget *wid,
80 const QString &caption ) 80 const QString &caption )
81{ 81{
82 QString ret; 82 QString ret;
83 OFileDialog dlg( caption.isEmpty() ? tr("Open") : caption, 83 OFileDialog dlg( caption.isEmpty() ? tr("Open") : caption,
84 wid, OFileSelector::OPEN, selector, startDir, file, mimes); 84 wid, OFileSelector::OPEN, selector, startDir, file, mimes);
85 dlg.showMaximized(); 85 dlg.showMaximized();
86 if( dlg.exec() ) 86 if( dlg.exec() )
87 ret = dlg.fileName(); 87 ret = dlg.fileName();
88 88
89 return ret; 89 return ret;
90} 90}
91QString OFileDialog::getSaveFileName(int selector, 91QString OFileDialog::getSaveFileName(int selector,
92 const QString &startDir, 92 const QString &startDir,
93 const QString &file, 93 const QString &file,
94 const QStringList &mimes, 94 const MimeTypes &mimes,
95 QWidget *wid, 95 QWidget *wid,
96 const QString &caption ) 96 const QString &caption )
97{ 97{
98 QString ret; 98 QString ret;
99 OFileDialog dlg( caption.isEmpty() ? tr("Save") : caption, 99 OFileDialog dlg( caption.isEmpty() ? tr("Save") : caption,
100 wid, OFileSelector::SAVE, selector, startDir, file, mimes); 100 wid, OFileSelector::SAVE, selector, startDir, file, mimes);
101 dlg.showMaximized(); 101 dlg.showMaximized();
102 if( dlg.exec() ) 102 if( dlg.exec() )
103 ret = dlg.fileName(); 103 ret = dlg.fileName();
104 104
105 return ret; 105 return ret;
106} 106}
107 107
108void OFileDialog::slotFileSelected(const QString & ) 108void OFileDialog::slotFileSelected(const QString & )
109{ 109{
110 accept(); 110 accept();
111} 111}
112void OFileDialog::slotDirSelected(const QString & ) 112void OFileDialog::slotDirSelected(const QString & )
113{ 113{
114 // if mode 114 // if mode
115 //accept(); 115 //accept();
116} 116}
diff --git a/libopie/ofiledialog.h b/libopie/ofiledialog.h
index 40d147e..e14253c 100644
--- a/libopie/ofiledialog.h
+++ b/libopie/ofiledialog.h
@@ -1,77 +1,77 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 zecke <zecke@handhelds.org> 3             .=l. Copyright (c) 2002 zecke <zecke@handhelds.org>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This library is free software; you can 5 _;:,     .>    :=|. This library is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 7:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This library is distributed in the hope that 12    .i_,=:_.      -<s. This library is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
17..}^=.=       =       ; Library General Public License for more 17..}^=.=       =       ; Library General Public License for more
18++=   -.     .`     .: details. 18++=   -.     .`     .: details.
19 :     =  ...= . :.=- 19 :     =  ...= . :.=-
20 -.   .:....=;==+<; You should have received a copy of the GNU 20 -.   .:....=;==+<; You should have received a copy of the GNU
21  -_. . .   )=.  = Library General Public License along with 21  -_. . .   )=.  = Library General Public License along with
22    --        :-=` this library; see the file COPYING.LIB. 22    --        :-=` this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation, 23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, 24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29 29
30#ifndef OpieFileDialog_h 30#ifndef OpieFileDialog_h
31#define OpieFileDialog_h 31#define OpieFileDialog_h
32 32
33#include <qdialog.h> 33#include <qdialog.h>
34 34
35#include <opie/ofileselector.h> 35#include <opie/ofileselector.h>
36 36
37class OFileDialog : public QDialog { 37class OFileDialog : public QDialog {
38 Q_OBJECT 38 Q_OBJECT
39 public: 39 public:
40 OFileDialog(const QString &caption, 40 OFileDialog(const QString &caption,
41 QWidget *, int mode, int selector, 41 QWidget *, int mode, int selector,
42 const QString &dirName, 42 const QString &dirName,
43 const QString &fileName = QString::null, 43 const QString &fileName = QString::null,
44 const QStringList &mimetypes = QStringList() ); 44 const MimeTypes &mimetypes = MimeTypes() );
45 QString mimetype() const; 45 QString mimetype() const;
46 QString fileName() const; 46 QString fileName() const;
47 DocLnk selectedDocument()const; 47 DocLnk selectedDocument()const;
48 48
49 // static methods 49 // static methods
50 static QString getOpenFileName(int selector, 50 static QString getOpenFileName(int selector,
51 const QString& startDir = QString::null, 51 const QString& startDir = QString::null,
52 const QString &fileName = QString::null, 52 const QString &fileName = QString::null,
53 const QStringList& mimefilter = QStringList(), 53 const MimeTypes& mime = MimeTypes(),
54 QWidget *wid = 0, 54 QWidget *wid = 0,
55 const QString &caption = QString::null ); 55 const QString &caption = QString::null );
56 56
57 static QString getSaveFileName(int selector, 57 static QString getSaveFileName(int selector,
58 const QString& startDir = QString::null, 58 const QString& startDir = QString::null,
59 const QString& fileName = QString::null, 59 const QString& fileName = QString::null,
60 const QStringList& mimefilter = QStringList(), 60 const MimeTypes& mimefilter = MimeTypes(),
61 QWidget *wid = 0, 61 QWidget *wid = 0,
62 const QString &caption = QString::null ); 62 const QString &caption = QString::null );
63 63
64 //let's OFileSelector catch up first 64 //let's OFileSelector catch up first
65 //static QString getExistingDirectory(const QString& startDir = QString::null, 65 //static QString getExistingDirectory(const QString& startDir = QString::null,
66 // QWidget *parent = 0, 66 // QWidget *parent = 0,
67 // const QString& caption = QString::null ); 67 // const QString& caption = QString::null );
68 private: 68 private:
69 class OFileDialogPrivate; 69 class OFileDialogPrivate;
70 OFileDialogPrivate *d; 70 OFileDialogPrivate *d;
71 OFileSelector *file; 71 OFileSelector *file;
72 72
73 private slots: 73 private slots:
74 void slotFileSelected( const QString & ); 74 void slotFileSelected( const QString & );
75 void slotDirSelected(const QString & ); 75 void slotDirSelected(const QString & );
76}; 76};
77#endif 77#endif
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index 7a67ab2..6c59f89 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -78,94 +78,100 @@ namespace {
78 if( dir ){ 78 if( dir ){
79 ke.append("0" ); 79 ke.append("0" );
80 ke.append( text(1) ); 80 ke.append( text(1) );
81 }else{ 81 }else{
82 ke.append("1" ); 82 ke.append("1" );
83 ke.append( text(1) ); 83 ke.append( text(1) );
84 } 84 }
85 }else if( id == 2 ){ // size 85 }else if( id == 2 ){ // size
86 return text(2); 86 return text(2);
87 }else if( id == 3 ){ // date 87 }else if( id == 3 ){ // date
88 return text(3); 88 return text(3);
89 } 89 }
90 return ke; 90 return ke;
91 }; 91 };
92 private: 92 private:
93 bool mLocked:1; 93 bool mLocked:1;
94 bool dir:1; 94 bool dir:1;
95 QString m_dir; 95 QString m_dir;
96 }; 96 };
97}; 97};
98 98
99 99
100OFileSelector::OFileSelector( QWidget *wid, int mode, int selector, 100OFileSelector::OFileSelector( QWidget *wid, int mode, int selector,
101 const QString &dirName, 101 const QString &dirName,
102 const QString &fileName, 102 const QString &fileName,
103 const QStringList &mimeTypes ) 103 const QMap<QString,QStringList>& mimeTypes)
104 : QWidget( wid, "OFileSelector") 104 : QWidget( wid, "OFileSelector")
105{ 105{
106 m_mimetypes = mimeTypes; 106 m_mimetypes = mimeTypes;
107 if (mode == SAVE )
108 m_name = fileName;
107 initVars(); 109 initVars();
108 m_mode = mode; 110 m_mode = mode;
109 m_selector = selector; 111 m_selector = selector;
110 m_currentDir = dirName; 112 m_currentDir = dirName;
111 init(); 113 init();
112QTimer::singleShot(6*1000, this, SLOT( slotTest() ) ); 114 //QTimer::singleShot(6*1000, this, SLOT( slotTest() ) );
113} 115}
114 116
115OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent, 117OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
116 const char *name, bool newVisible, 118 const char *name, bool newVisible,
117 bool closeVisible ) 119 bool closeVisible )
118 : QWidget( parent, name ) 120 : QWidget( parent, name )
119{ 121{
120 m_mimetypes = QStringList::split(";", mimeFilter ); 122 if (!mimeFilter.isEmpty() ) {
123 QStringList list = QStringList::split(";", mimeFilter );
124 m_mimetypes.insert(mimeFilter, list );
125 }
121 initVars(); 126 initVars();
122 m_currentDir = QPEApplication::documentDir(); 127 m_currentDir = QPEApplication::documentDir();
123 m_mode = OPEN; 128 m_mode = OPEN;
124 m_selector = NORMAL; 129 m_selector = NORMAL;
125 m_shClose = closeVisible; 130 m_shClose = closeVisible;
126 m_shNew = newVisible; 131 m_shNew = newVisible;
127 m_shLne = false; 132 m_shLne = false;
128 m_shPerm = false; 133 m_shPerm = false;
129 m_shYesNo = false; 134 m_shYesNo = false;
130 init(); 135 init();
131 136
132 137
133} 138}
134 139
135OFileSelector::~OFileSelector() 140OFileSelector::~OFileSelector()
136{ 141{
137 142
143
138} 144}
139 145
140void OFileSelector::setNewVisible( bool visible ) 146void OFileSelector::setNewVisible( bool visible )
141{ 147{
142 m_shNew = visible; 148 m_shNew = visible;
143 if( m_selector == NORMAL ){ 149 if( m_selector == NORMAL ){
144 delete m_select; 150 delete m_select;
145 // we need to initialize but keep the selected mimetype 151 // we need to initialize but keep the selected mimetype
146 QString mime = m_mimeCheck == 0 ? QString::null : m_mimeCheck->currentText() ; 152 QString mime = currentMimeType();
147 m_select = new FileSelector( m_autoMime ? mime : m_mimetypes.join(";") , 153 m_select = new FileSelector( mime ,
148 m_stack, "fileselector", 154 m_stack, "fileselector",
149 m_shNew, m_shClose); 155 m_shNew, m_shClose);
150 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ), 156 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
151 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) ); 157 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
152 //connect to close me and other signals as well 158 //connect to close me and other signals as well
153 m_stack->addWidget( m_select, NORMAL ); 159 m_stack->addWidget( m_select, NORMAL );
154 }else{ 160 }else{
155 m_new->show(); 161 m_new->show();
156 } 162 }
157} 163}
158void OFileSelector::setCloseVisible( bool visible ) 164void OFileSelector::setCloseVisible( bool visible )
159{ 165{
160 m_shClose = visible; 166 m_shClose = visible;
161 if( m_selector == NORMAL ){ 167 if( m_selector == NORMAL ){
162 setNewVisible( m_shNew ); // yeah baby 168 setNewVisible( m_shNew ); // yeah baby
163 }else{ 169 }else{
164 m_close->show(); 170 m_close->show();
165 } 171 }
166} 172}
167void OFileSelector::reread() 173void OFileSelector::reread()
168{ 174{
169 if( m_selector == NORMAL ){ 175 if( m_selector == NORMAL ){
170 setNewVisible( m_shNew ); // make it a initializeSelector 176 setNewVisible( m_shNew ); // make it a initializeSelector
171 }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 177 }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
@@ -320,72 +326,72 @@ QString OFileSelector::selectedName() const
320 if( m_selector == NORMAL ){ 326 if( m_selector == NORMAL ){
321 const DocLnk *lnk = m_select->selected(); 327 const DocLnk *lnk = m_select->selected();
322 name = lnk->file(); 328 name = lnk->file();
323 delete lnk; 329 delete lnk;
324 }else if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 330 }else if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
325 QListViewItem *item = m_View->currentItem(); 331 QListViewItem *item = m_View->currentItem();
326 if( item != 0 ) 332 if( item != 0 )
327 name = m_currentDir + "/" + item->text( 1 ); 333 name = m_currentDir + "/" + item->text( 1 );
328 }else { // installed view 334 }else { // installed view
329 ; 335 ;
330 } 336 }
331 return name; 337 return name;
332} 338}
333QStringList OFileSelector::selectedNames()const 339QStringList OFileSelector::selectedNames()const
334{ 340{
335 QStringList list; 341 QStringList list;
336 if( m_selector == NORMAL ){ 342 if( m_selector == NORMAL ){
337 list << selectedName(); 343 list << selectedName();
338 }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { 344 }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
339 list << selectedName(); // FIXME implement multiple Selections 345 list << selectedName(); // FIXME implement multiple Selections
340 } 346 }
341 return list; 347 return list;
342} 348}
343/** If mode is set to the Dir selection this will return the selected path. 349/** If mode is set to the Dir selection this will return the selected path.
344 * 350 *
345 * 351 *
346 */ 352 */
347QString OFileSelector::selectedPath()const 353QString OFileSelector::selectedPath()const
348{ 354{
349 QString path; 355 QString path;
350 if( m_selector == NORMAL ){ 356 if( m_selector == NORMAL ){
351 path = QPEApplication::documentDir(); 357 path = QPEApplication::documentDir();
352 }else if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 358 }else if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
353 ; 359 ;
354 } 360 }
355 return path; 361 return path;
356} 362}
357QStringList OFileSelector::selectedPaths() const 363QStringList OFileSelector::selectedPaths() const
358{ 364{
359 QStringList list; 365 QStringList list;
360 list << selectedPath(); 366 list << selectedPath();
361 return list; 367 return list;
362} 368}
363QString OFileSelector::directory()const 369QString OFileSelector::directory()const
364{ 370{
365 if( m_selector == NORMAL ) 371 if( m_selector == NORMAL )
366 return QPEApplication::documentDir(); 372 return QPEApplication::documentDir();
367 373
368 return QDir(m_currentDir).absPath(); 374 return QDir(m_currentDir).absPath();
369} 375}
370 376
371int OFileSelector::fileCount() 377int OFileSelector::fileCount()
372{ 378{
373 int count; 379 int count;
374 switch( m_selector ){ 380 switch( m_selector ){
375 case NORMAL: 381 case NORMAL:
376 count = m_select->fileCount(); 382 count = m_select->fileCount();
377 break; 383 break;
378 //case CUSTOM: 384 //case CUSTOM:
379 case EXTENDED: 385 case EXTENDED:
380 case EXTENDED_ALL: 386 case EXTENDED_ALL:
381 default: 387 default:
382 count = m_View->childCount(); 388 count = m_View->childCount();
383 break; 389 break;
384 } 390 }
385 return count; 391 return count;
386} 392}
387DocLnk OFileSelector::selectedDocument() const 393DocLnk OFileSelector::selectedDocument() const
388{ 394{
389 DocLnk lnk; 395 DocLnk lnk;
390 switch( m_selector ){ 396 switch( m_selector ){
391 case NORMAL:{ 397 case NORMAL:{
@@ -404,176 +410,216 @@ DocLnk OFileSelector::selectedDocument() const
404} 410}
405QValueList<DocLnk> OFileSelector::selectedDocuments() const 411QValueList<DocLnk> OFileSelector::selectedDocuments() const
406{ 412{
407 QValueList<DocLnk> docs; 413 QValueList<DocLnk> docs;
408 docs.append( selectedDocument() ); 414 docs.append( selectedDocument() );
409 return docs; 415 return docs;
410} 416}
411 417
412 418
413// slots internal 419// slots internal
414 420
415void OFileSelector::slotOk() 421void OFileSelector::slotOk()
416{ 422{
417 emit ok(); 423 emit ok();
418} 424}
419void OFileSelector::slotCancel() 425void OFileSelector::slotCancel()
420{ 426{
421 emit cancel(); 427 emit cancel();
422} 428}
423void OFileSelector::slotViewCheck(const QString &sel) 429void OFileSelector::slotViewCheck(const QString &sel)
424{ 430{
425 if( sel == tr("Documents" ) ){ 431 if( sel == tr("Documents" ) ){
426 if( m_select == 0 ){ 432 if( m_select == 0 ){
427 // autMime? fix cause now we use All and not the current 433 // autMime? fix cause now we use All and not the current
428 m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"), 434 // yes currentMime fixes that for us
435 QString mime = currentMimeType();
436 m_select = new FileSelector(mime,
429 m_stack, "fileselector", 437 m_stack, "fileselector",
430 FALSE, FALSE); 438 FALSE, FALSE);
431 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ), 439 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
432 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) ); 440 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
433 //connect to close me and other signals as well 441 //connect to close me and other signals as well
434 442
435 m_stack->addWidget( m_select, NORMAL ); 443 m_stack->addWidget( m_select, NORMAL );
436 } 444 }
437 m_stack->raiseWidget( NORMAL ); 445 m_stack->raiseWidget( NORMAL );
438 m_selector = NORMAL; 446 m_selector = NORMAL;
439 }else if( sel == tr("Files") ){ 447 }else if( sel == tr("Files") ){
440 m_selector = EXTENDED; 448 m_selector = EXTENDED;
441 initializeListView(); 449 initializeListView();
442 reparse(); 450 reparse();
443 m_stack->raiseWidget( EXTENDED ); 451 m_stack->raiseWidget( EXTENDED );
444 }else if( sel == tr("All Files") ){ 452 }else if( sel == tr("All Files") ){
445 m_selector = EXTENDED_ALL; 453 m_selector = EXTENDED_ALL;
446 initializeListView(); 454 initializeListView();
447 reparse(); 455 reparse();
448 m_stack->raiseWidget( EXTENDED ); // same widget other QFileFilter 456 m_stack->raiseWidget( EXTENDED ); // same widget other QFileFilter
449 } 457 }
450} 458}
459// not yet finished.....
460QString OFileSelector::currentMimeType() const{
461 QString mime;
462 QString currentText;
463 if (m_shChooser )
464 currentText = m_mimeCheck->currentText();
465
466 if (tr("All") == currentText ) return QString::null;
467 else if (currentText.isEmpty() ) {
468 ;
469 }else {
470 QMap<QString, QStringList>::ConstIterator it;
471 it = m_mimetypes.find( currentText );
472 if ( it == m_mimetypes.end() ) {
473 mime = it.data().join(";");
474 }else{
475 mime = currentText;
476 }
477 }
478 return mime;
479}
451void OFileSelector::slotMimeCheck(const QString &mime) 480void OFileSelector::slotMimeCheck(const QString &mime)
452{ 481{
453 if( m_selector == NORMAL ){ 482 if( m_selector == NORMAL ){
454 if( m_autoMime ){ 483 //if( m_autoMime ){
484 QString newMimeType;
485 if (mime != tr("All") ) {
486 QMap<QString, QStringList>::Iterator it;
487 it = m_mimetypes.find(mime);
488 if ( it != m_mimetypes.end() ) {
489 newMimeType = it.data().join(";");
490 }else{
491 newMimeType = mime;
492 }
493 }
455 delete m_select; 494 delete m_select;
456 m_select = new FileSelector( mime == tr("All") ? QString::null : mime, 495 m_select = new FileSelector( newMimeType,
457 m_stack, "fileselector", 496 m_stack, "fileselector",
458 FALSE, FALSE); 497 FALSE, FALSE);
459 498
460 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ), 499 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
461 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) ); 500 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
462 //connect to close me and other signals as well 501 //connect to close me and other signals as well
463 m_stack->addWidget( m_select, NORMAL ); 502 m_stack->addWidget( m_select, NORMAL );
464 m_stack->raiseWidget( NORMAL ); 503 m_stack->raiseWidget( NORMAL );
465 updateMimes(); 504 updateMimes();
466 m_mimeCheck->clear(); 505 updateMimeCheck();
467 m_mimeCheck->insertStringList(m_mimetypes );
468 m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); 506 m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
469 } 507 //}
470 }else{ // others 508 }else{ // others
471 qWarning("Mime %s", mime.latin1() ); 509 qWarning("Mime %s", mime.latin1() );
472 if(m_shChooser ){ 510 if(m_shChooser ){
473 qWarning("Current Text %s", m_mimeCheck->currentText().latin1() ); 511 qWarning("Current Text %s", m_mimeCheck->currentText().latin1() );
474 //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); 512 //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
475 } 513 }
476 reparse(); 514 reparse();
477 } 515 }
478 516
479} 517}
480void OFileSelector::slotLocationActivated(const QString &file) 518void OFileSelector::slotLocationActivated(const QString &file)
481{ 519{
482 cd(file.left(file.find("<-",0,TRUE))); 520 cd(file.left(file.find("<-",0,TRUE)));
483 reparse(); 521 reparse();
484} 522}
485void OFileSelector::slotInsertLocationPath(const QString &currentPath, int count) 523void OFileSelector::slotInsertLocationPath(const QString &currentPath, int count)
486{ 524{
487 QStringList pathList; 525 QStringList pathList;
488 bool underDog = FALSE; 526 bool underDog = FALSE;
489 for(int i=0;i<count;i++) { 527 for(int i=0;i<count;i++) {
490 pathList << m_location->text(i); 528 pathList << m_location->text(i);
491 if( m_location->text(i) == currentPath) 529 if( m_location->text(i) == currentPath)
492 underDog = TRUE; 530 underDog = TRUE;
493 } 531 }
494 if( !underDog) { 532 if( !underDog) {
495 m_location->clear(); 533 m_location->clear();
496 if( currentPath.left(2)=="//") 534 if( currentPath.left(2)=="//")
497 pathList.append( currentPath.right(currentPath.length()-1) ); 535 pathList.append( currentPath.right(currentPath.length()-1) );
498 else 536 else
499 pathList.append( currentPath ); 537 pathList.append( currentPath );
500 m_location->insertStringList( pathList,-1); 538 m_location->insertStringList( pathList,-1);
501 } 539 }
502} 540}
503void OFileSelector::locationComboChanged() 541void OFileSelector::locationComboChanged()
504{ 542{
505 cd( m_location->lineEdit()->text()); 543 cd( m_location->lineEdit()->text());
506 reparse(); 544 reparse();
507} 545}
508void OFileSelector::init() 546void OFileSelector::init()
509{ 547{
510 m_lay = new QVBoxLayout( this ); 548 m_lay = new QVBoxLayout( this );
511 m_lay->setSpacing(0 ); 549 m_lay->setSpacing(0 );
512 550
513 m_stack = new QWidgetStack( this ); 551 m_stack = new QWidgetStack( this );
514 if( m_selector == NORMAL ){ 552 if( m_selector == NORMAL ){
515 m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"), 553 QString mime;
554 if (!m_autoMime) {
555 if (!m_mimetypes.isEmpty() ) {
556 QMap<QString, QStringList>::Iterator it;
557 it = m_mimetypes.begin(); // cause we're in the init
558 mime = it.data().join(";");
559 }
560 }
561 m_select = new FileSelector(mime,
516 m_stack, "fileselector", 562 m_stack, "fileselector",
517 FALSE, FALSE); 563 FALSE, FALSE);
518 564
519 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ), 565 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
520 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) ); 566 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
521 //connect to close me and other signals as well 567 //connect to close me and other signals as well
522 568
523 m_stack->addWidget( m_select, NORMAL ); 569 m_stack->addWidget( m_select, NORMAL );
524 m_stack->raiseWidget( NORMAL ); 570 m_stack->raiseWidget( NORMAL );
525 }else{ // we're in init so it will be EXTENDED or EXTENDED_ALL 571 }else{ // we're in init so it will be EXTENDED or EXTENDED_ALL
526 // and initializeListview will take care of those 572 // and initializeListview will take care of those
527 // toolbar get's generade in initializeListView 573 // toolbar get's generade in initializeListView
528 initializeListView( ); // will raise the widget as well 574 initializeListView( ); // will raise the widget as well
529 } 575 }
530 m_lay->addWidget( m_stack, 100 ); // add to the layout 10 = stretch 576 m_lay->addWidget( m_stack, 100 ); // add to the layout 10 = stretch
531 577
532 if( m_shLne ) // the LineEdit with the current FileName 578 if( m_shLne ) // the LineEdit with the current FileName
533 initializeName(); 579 initializeName();
534 580
535 if( m_shPerm ) // the Permission QCheckBox 581 if( m_shPerm ) // the Permission QCheckBox
536 initializePerm(); 582 initializePerm();
537 583
538 if( m_shChooser ) // the Chooser for the view and Mimetypes 584 if( m_shChooser ) // the Chooser for the view and Mimetypes
539 initializeChooser(); 585 initializeChooser();
540 586
541 if( m_shYesNo ) // the Yes No button row 587 if( m_shYesNo ) // the Yes No button row
542 initializeYes( ); 588 initializeYes( );
543} 589}
544void OFileSelector::updateMimes() 590void OFileSelector::updateMimes()
545{ 591{
546 if( m_autoMime ){ 592 if( m_autoMime ){
547 m_mimetypes.clear(); 593 m_mimetypes.clear();
548 m_mimetypes.append( tr("All") ); 594 m_mimetypes.insert( tr("All"), QString::null );
549 if( m_selector == NORMAL ){ 595 if( m_selector == NORMAL ){
550 DocLnkSet set; 596 DocLnkSet set;
551 Global::findDocuments(&set, QString::null ); 597 Global::findDocuments(&set, QString::null );
552 QListIterator<DocLnk> dit( set.children() ); 598 QListIterator<DocLnk> dit( set.children() );
553 for( ; dit.current(); ++dit ){ 599 for( ; dit.current(); ++dit ){
554 if( !m_mimetypes.contains( (*dit)->type() ) ) 600 if( !m_mimetypes.contains( (*dit)->type() ) )
555 m_mimetypes.append( (*dit)->type() ); 601 m_mimetypes.insert( (*dit)->type(), (*dit)->type() );
556 } 602 }
557 }// else done in reparse 603 }// else done in reparse
558 } 604 }
559} 605}
560void OFileSelector::initVars() 606void OFileSelector::initVars()
561{ 607{
562 if( m_mimetypes.isEmpty() ) 608 if( m_mimetypes.isEmpty() )
563 m_autoMime = true; 609 m_autoMime = true;
564 else 610 else
565 m_autoMime = false; 611 m_autoMime = false;
566 m_shClose = false; 612 m_shClose = false;
567 m_shNew = false; 613 m_shNew = false;
568 m_shTool = true; 614 m_shTool = true;
569 m_shPerm = false; 615 m_shPerm = false;
570 m_shLne = true; 616 m_shLne = true;
571 m_shChooser = true; 617 m_shChooser = true;
572 m_shYesNo = true; 618 m_shYesNo = true;
573 m_case = false; 619 m_case = false;
574 m_dir = true; 620 m_dir = true;
575 m_files = true; 621 m_files = true;
576 m_showPopup = false; 622 m_showPopup = false;
577 if(m_pixmaps == 0 ) // init the pixmaps 623 if(m_pixmaps == 0 ) // init the pixmaps
578 initPics(); 624 initPics();
579 625
@@ -607,171 +653,186 @@ void OFileSelector::initVars()
607 m_close = 0; 653 m_close = 0;
608} 654}
609void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink) 655void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink)
610{ 656{
611 if(!m_files) 657 if(!m_files)
612 return; 658 return;
613 // if( !compliesMime(info->absFilePath(), mime ) ) 659 // if( !compliesMime(info->absFilePath(), mime ) )
614 // return; 660 // return;
615 MimeType type( info->absFilePath() ); 661 MimeType type( info->absFilePath() );
616 if( mime != tr("All") && type.id() != mime ) 662 if( mime != tr("All") && type.id() != mime )
617 return; 663 return;
618 QPixmap pix = type.pixmap(); 664 QPixmap pix = type.pixmap();
619 QString dir; 665 QString dir;
620 QString name; 666 QString name;
621 bool locked; 667 bool locked;
622 if( pix.isNull() ) 668 if( pix.isNull() )
623 pix = Resource::loadPixmap( "UnknownDocument-14"); 669 pix = Resource::loadPixmap( "UnknownDocument-14");
624 dir = info->dirPath( true ); 670 dir = info->dirPath( true );
625 if( symlink ) 671 if( symlink )
626 name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink(); 672 name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink();
627 else { 673 else {
628 name = info->fileName(); 674 name = info->fileName();
629 if( ( m_mode == OPEN && !info->isReadable() )|| 675 if( ( m_mode == OPEN && !info->isReadable() )||
630 ( m_mode == SAVE && !info->isWritable() ) ){ 676 ( m_mode == SAVE && !info->isWritable() ) ){
631 677
632 locked = true; pix = Resource::loadPixmap("locked"); 678 locked = true; pix = Resource::loadPixmap("locked");
633 } 679 }
634 } 680 }
635 new OFileSelectorItem( m_View, pix, name, 681 new OFileSelectorItem( m_View, pix, name,
636 info->lastModified().toString(), 682 info->lastModified().toString(),
637 QString::number( info->size() ), 683 QString::number( info->size() ),
638 dir, locked ); 684 dir, locked );
639} 685}
640void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink ) 686void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink )
641{ 687{
642 if(!m_dir) 688 if(!m_dir)
643 return; 689 return;
644 if( m_selector == EXTENDED_ALL || m_selector == EXTENDED ){ 690 if( m_selector == EXTENDED_ALL || m_selector == EXTENDED ){
645 bool locked = false; 691 bool locked = false;
646 QString name; 692 QString name;
647 QPixmap pix; 693 QPixmap pix;
648 if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){ 694 if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){
649 locked = true; 695 locked = true;
650 if( symlink ) 696 if( symlink )
651 pix = (*m_pixmaps)["symlinkedlocked"]; 697 pix = (*m_pixmaps)["symlinkedlocked"];
652 else 698 else
653 pix = Resource::loadPixmap("lockedfolder"); 699 pix = Resource::loadPixmap("lockedfolder");
654 }else { // readable 700 }else { // readable
655 pix = symlink ? (*m_pixmaps)["dirsymlink"] : Resource::loadPixmap("folder") ; 701 pix = symlink ? (*m_pixmaps)["dirsymlink"] : Resource::loadPixmap("folder") ;
656 } 702 }
657 name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ; 703 name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ;
658 new OFileSelectorItem( m_View, pix, name, 704 new OFileSelectorItem( m_View, pix, name,
659 info->lastModified().toString(), 705 info->lastModified().toString(),
660 QString::number( info->size() ), 706 QString::number( info->size() ),
661 info->dirPath( true ), locked, 707 info->dirPath( true ), locked,
662 true ); 708 true );
663 709
664 }// else CUSTOM View 710 }// else CUSTOM View
665} 711}
666void OFileSelector::delItems() 712void OFileSelector::delItems()
667{ 713{
668 714
669} 715}
670void OFileSelector::initializeName() 716void OFileSelector::initializeName()
671{ 717{
672 /** Name Layout Line 718 /** Name Layout Line
673 * This is the Layout line arranged in 719 * This is the Layout line arranged in
674 * horizontal way each components 720 * horizontal way each components
675 * are next to each other 721 * are next to each other
676 * but we will only do this if 722 * but we will only do this if
677 * we didn't initialize a while ago. 723 * we didn't initialize a while ago.
678 */ 724 */
679 if( m_boxName == 0 ){ 725 if( m_boxName == 0 ){
680 m_boxName = new QHBox( this ); // remove this this? or use a QHBox 726 m_boxName = new QHBox( this ); // remove this this? or use a QHBox
681 m_fnLabel = new QLabel( m_boxName ); 727 m_fnLabel = new QLabel( m_boxName );
682 m_fnLabel->setText( tr("Name:") ); 728 m_fnLabel->setText( tr("Name:") );
683 m_edit = new QLineEdit( m_boxName ); 729 m_edit = new QLineEdit( m_boxName );
730 m_edit->setText( m_name );
684 //m_boxName->addWidget( m_fnLabel ); 731 //m_boxName->addWidget( m_fnLabel );
685 m_boxName->setMargin( 5 ); 732 m_boxName->setMargin( 5 );
686 m_boxName->setSpacing( 8 ); 733 m_boxName->setSpacing( 8 );
687 //m_boxName->setStretchFactor(m_edit, 100 ); // 100 is stretch factor 734 //m_boxName->setStretchFactor(m_edit, 100 ); // 100 is stretch factor
688 735
689 m_lay->addWidget( m_boxName, 0 ); // add it to the topLevel layout 736 m_lay->addWidget( m_boxName, 0 ); // add it to the topLevel layout
690 }// else we already initialized 737 }// else we already initialized
691 // maybe show the components? 738 // maybe show the components?
692 // 739 //
693} 740}
694void OFileSelector::initializeYes() 741void OFileSelector::initializeYes()
695{ 742{
696 /** The Save Cancel bar 743 /** The Save Cancel bar
697 * 744 *
698 */ 745 */
699 if( m_boxOk == 0 ){ 746 if( m_boxOk == 0 ){
700 m_boxOk = new QHBox( this ); 747 m_boxOk = new QHBox( this );
701 m_ok = new QPushButton( tr("&Save"),m_boxOk , "save" ); 748 m_ok = new QPushButton( tr("&Save"),m_boxOk , "save" );
702 m_cancel = new QPushButton( tr("C&ancel"), m_boxOk, "cancel" ); 749 m_cancel = new QPushButton( tr("C&ancel"), m_boxOk, "cancel" );
703 750
704 //m_boxOk->addWidget( m_ok ); 751 //m_boxOk->addWidget( m_ok );
705 //m_boxOk->addWidget( m_cancel ); 752 //m_boxOk->addWidget( m_cancel );
706 m_boxOk->setMargin( 5 ); 753 m_boxOk->setMargin( 5 );
707 m_boxOk->setSpacing( 10 ); 754 m_boxOk->setSpacing( 10 );
708 m_lay->addWidget( m_boxOk, 0 ); 755 m_lay->addWidget( m_boxOk, 0 );
709 756
710 connect( m_ok, SIGNAL( clicked() ), 757 connect( m_ok, SIGNAL( clicked() ),
711 this, SLOT(slotOk() ) ); 758 this, SLOT(slotOk() ) );
712 connect( m_cancel, SIGNAL( clicked() ), 759 connect( m_cancel, SIGNAL( clicked() ),
713 this, SLOT( slotCancel() ) ); 760 this, SLOT( slotCancel() ) );
714 } 761 }
715} 762}
763/*
764 * OK m_mimeCheck is a QComboBox we now want to fill
765 * out that combobox
766 * if automime we need to update the mimetypes
767 */
768void OFileSelector::updateMimeCheck() {
769 m_mimeCheck->clear();
770 if (m_autoMime ) {
771 //m_mimeCheck->insertItem( tr("All") );
772 updateMimes();
773 }
774
775 QMap<QString, QStringList>::Iterator it;
776 for (it = m_mimetypes.begin(); it != m_mimetypes.end(); ++it ) {
777 m_mimeCheck->insertItem( it.key() );
778 }
779}
780
716void OFileSelector::initializeChooser() 781void OFileSelector::initializeChooser()
717{ 782{
718 if( m_boxView == 0 ){ 783 if( m_boxView == 0 ){
719 m_boxView = new QHBox( this ); 784 m_boxView = new QHBox( this );
720 m_viewCheck = new QComboBox( m_boxView, "view check"); 785 m_viewCheck = new QComboBox( m_boxView, "view check");
721 m_mimeCheck = new QComboBox( m_boxView, "mime check"); 786 m_mimeCheck = new QComboBox( m_boxView, "mime check");
722 m_boxView->setSpacing( 8 ); 787 m_boxView->setSpacing( 8 );
723 m_lay->addWidget(m_boxView, 0 ); 788 m_lay->addWidget(m_boxView, 0 );
724 789
725 m_viewCheck->insertItem( tr("Documents") ); 790 m_viewCheck->insertItem( tr("Documents") );
726 m_viewCheck->insertItem( tr("Files") ); 791 m_viewCheck->insertItem( tr("Files") );
727 m_viewCheck->insertItem( tr("All Files") ); 792 m_viewCheck->insertItem( tr("All Files") );
728 if(!m_autoMime ) 793 updateMimeCheck();
729 m_mimeCheck->insertItem(m_mimetypes.join(",") ); 794
730 else{
731 updateMimes();
732 m_mimeCheck->insertStringList( m_mimetypes );
733 }
734 connect( m_viewCheck, SIGNAL( activated(const QString & ) ), 795 connect( m_viewCheck, SIGNAL( activated(const QString & ) ),
735 this, SLOT( slotViewCheck(const QString & ) ) ); 796 this, SLOT( slotViewCheck(const QString & ) ) );
736 connect( m_mimeCheck, SIGNAL( activated(const QString & ) ), 797 connect( m_mimeCheck, SIGNAL( activated(const QString & ) ),
737 this, SLOT( slotMimeCheck( const QString & ) ) ); 798 this, SLOT( slotMimeCheck( const QString & ) ) );
738 } 799 }
739} 800}
740void OFileSelector::initializeListView() 801void OFileSelector::initializeListView()
741{ 802{
742 if( m_pseudo == 0 ){ 803 if( m_pseudo == 0 ){
743 m_pseudo = new QWidget( m_stack, "Pseudo Widget"); 804 m_pseudo = new QWidget( m_stack, "Pseudo Widget");
744 m_pseudoLayout = new QVBoxLayout( m_pseudo ); 805 m_pseudoLayout = new QVBoxLayout( m_pseudo );
745 // toolbar 806 // toolbar
746 m_boxToolbar = new QHBox( m_pseudo ); 807 m_boxToolbar = new QHBox( m_pseudo );
747 m_boxToolbar->setSpacing(0 ); // next to each other please 808 m_boxToolbar->setSpacing(0 ); // next to each other please
748 809
749 // toolbar members 810 // toolbar members
750 { 811 {
751 // location QComboBox 812 // location QComboBox
752 m_location = new QComboBox( m_boxToolbar ); 813 m_location = new QComboBox( m_boxToolbar );
753 m_location->setEditable( TRUE ); 814 m_location->setEditable( TRUE );
754 m_location->setDuplicatesEnabled( FALSE ); 815 m_location->setDuplicatesEnabled( FALSE );
755 connect( m_location, SIGNAL(activated(const QString &) ), 816 connect( m_location, SIGNAL(activated(const QString &) ),
756 this, SLOT( slotLocationActivated(const QString &) ) ); 817 this, SLOT( slotLocationActivated(const QString &) ) );
757 connect( m_location->lineEdit(), SIGNAL(returnPressed() ), 818 connect( m_location->lineEdit(), SIGNAL(returnPressed() ),
758 this, SLOT(locationComboChanged() ) ); 819 this, SLOT(locationComboChanged() ) );
759 // UP Button 820 // UP Button
760 m_up = new QPushButton(Resource::loadIconSet("up"),"", 821 m_up = new QPushButton(Resource::loadIconSet("up"),"",
761 m_boxToolbar,"cdUpButton"); 822 m_boxToolbar,"cdUpButton");
762 m_up->setFixedSize( QSize( 20, 20 ) ); 823 m_up->setFixedSize( QSize( 20, 20 ) );
763 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) ); 824 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) );
764 m_up->setFlat(TRUE); 825 m_up->setFlat(TRUE);
765 826
766 // Home Button 827 // Home Button
767 m_homeButton = new QPushButton(Resource::loadIconSet("home") , 828 m_homeButton = new QPushButton(Resource::loadIconSet("home") ,
768 "", m_boxToolbar); 829 "", m_boxToolbar);
769 m_homeButton->setFixedSize( QSize( 20, 20 ) ); 830 m_homeButton->setFixedSize( QSize( 20, 20 ) );
770 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) ); 831 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) );
771 m_homeButton->setFlat(TRUE); 832 m_homeButton->setFlat(TRUE);
772 // Documents Button 833 // Documents Button
773 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", 834 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"",
774 m_boxToolbar,"docsButton"); 835 m_boxToolbar,"docsButton");
775 m_docButton->setFixedSize( QSize( 20, 20 ) ); 836 m_docButton->setFixedSize( QSize( 20, 20 ) );
776 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) ); 837 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) );
777 m_docButton->setFlat(TRUE); 838 m_docButton->setFlat(TRUE);
@@ -810,94 +871,99 @@ void OFileSelector::initializeListView()
810 m_close->hide(); 871 m_close->hide();
811 872
812 } // off toolbar 873 } // off toolbar
813 // the Main ListView 874 // the Main ListView
814 // make a QWidgetStack first so Views can share the Toolbar 875 // make a QWidgetStack first so Views can share the Toolbar
815 m_View = new QListView( m_pseudo, "Extended view"); 876 m_View = new QListView( m_pseudo, "Extended view");
816 QPEApplication::setStylusOperation( m_View->viewport(), 877 QPEApplication::setStylusOperation( m_View->viewport(),
817 QPEApplication::RightOnHold); 878 QPEApplication::RightOnHold);
818 m_View->addColumn(" " ); 879 m_View->addColumn(" " );
819 m_View->addColumn(tr("Name"), 135 ); 880 m_View->addColumn(tr("Name"), 135 );
820 m_View->addColumn(tr("Size"), -1 ); 881 m_View->addColumn(tr("Size"), -1 );
821 m_View->addColumn(tr("Date"), 60 ); 882 m_View->addColumn(tr("Date"), 60 );
822 m_View->addColumn(tr("Mime Type"), -1 ); 883 m_View->addColumn(tr("Mime Type"), -1 );
823 QHeader *header = m_View->header(); 884 QHeader *header = m_View->header();
824 header->hide(); 885 header->hide();
825 m_View->setSorting( 1 ); 886 m_View->setSorting( 1 );
826 m_View->setAllColumnsShowFocus( TRUE ); 887 m_View->setAllColumnsShowFocus( TRUE );
827 888
828 connect(m_View, SIGNAL(selectionChanged() ), 889 connect(m_View, SIGNAL(selectionChanged() ),
829 this, SLOT(slotSelectionChanged() ) ); 890 this, SLOT(slotSelectionChanged() ) );
830 891
831 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), 892 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ),
832 this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); 893 this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
833 894
834 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), 895 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
835 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); 896 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
836 897
837 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), 898 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
838 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); 899 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
839 900
840 m_pseudoLayout->addWidget( m_View, 288 ); 901 m_pseudoLayout->addWidget( m_View, 288 );
841 m_stack->addWidget( m_pseudo, EXTENDED ); 902 m_stack->addWidget( m_pseudo, EXTENDED );
842 } 903 }
843} 904}
844void OFileSelector::initializePerm() 905void OFileSelector::initializePerm()
845{ 906{
846 if( m_checkPerm == 0 ){ 907 if( m_checkPerm == 0 ){
847 m_checkPerm = new QCheckBox(tr("Ser Permission"), this, "perm"); 908 m_checkPerm = new QCheckBox(tr("Ser Permission"), this, "perm");
848 m_checkPerm->setChecked( false ); 909 m_checkPerm->setChecked( false );
849 m_lay->addWidget( m_checkPerm ); 910 m_lay->addWidget( m_checkPerm );
850 911
851 } 912 }
852} 913}
853void OFileSelector::initPics() 914void OFileSelector::initPics()
854{ 915{
855 m_pixmaps = new QMap<QString,QPixmap>; 916 m_pixmaps = new QMap<QString,QPixmap>;
856 QPixmap pm = Resource::loadPixmap( "folder" ); 917 QPixmap pm = Resource::loadPixmap( "folder" );
857 QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); 918 QPixmap lnk = Resource::loadPixmap( "opie/symlink" );
858 QPainter painter( &pm ); 919 QPainter painter( &pm );
859 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); 920 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
860 pm.setMask( pm.createHeuristicMask( FALSE ) ); 921 pm.setMask( pm.createHeuristicMask( FALSE ) );
861 m_pixmaps->insert("dirsymlink", pm ); 922 m_pixmaps->insert("dirsymlink", pm );
862 923
863 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" ); 924 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" );
864 QPainter pen(&pm2 ); 925 QPainter pen(&pm2 );
865 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk ); 926 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk );
866 pm2.setMask( pm2.createHeuristicMask( FALSE ) ); 927 pm2.setMask( pm2.createHeuristicMask( FALSE ) );
867 m_pixmaps->insert("symlinkedlocked", pm2 ); 928 m_pixmaps->insert("symlinkedlocked", pm2 );
868} 929}
869// if a mime complies with the m_mimeCheck->currentItem 930// if a mime complies with the m_mimeCheck->currentItem
870bool OFileSelector::compliesMime( const QString &path, const QString &mime ) 931bool OFileSelector::compliesMime( const QString &path, const QString &mime )
871{ 932{
872 if( mime == "All" ) 933 if( mime == "All" )
873 return true; 934 return true;
874 MimeType type( path ); 935 MimeType type( path );
875 if( type.id() == mime ) 936 if( type.id() == mime )
876 return true; 937 return true;
877 return false; 938 return false;
878} 939}
940/* check if the mimetype in mime
941 * complies with the one which is current
942 */
943bool OFileSelector::compliesMime( const QString& mime ) {
879 944
945}
880void OFileSelector::slotFileSelected( const QString &string ) 946void OFileSelector::slotFileSelected( const QString &string )
881{ 947{
882 if( m_shLne ) 948 if( m_shLne )
883 m_edit->setText( string ); 949 m_edit->setText( string );
884 emit fileSelected( string ); 950 emit fileSelected( string );
885} 951}
886void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) 952void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk )
887{ 953{
888 slotFileSelected( lnk.name() ); 954 slotFileSelected( lnk.name() );
889 // emit fileSelected( lnk ); 955 // emit fileSelected( lnk );
890} 956}
891void OFileSelector::slotSelectionChanged() 957void OFileSelector::slotSelectionChanged()
892{ 958{
893 959
894} 960}
895void OFileSelector::slotCurrentChanged(QListViewItem* item ) 961void OFileSelector::slotCurrentChanged(QListViewItem* item )
896{ 962{
897 if( item == 0 ) 963 if( item == 0 )
898 return; 964 return;
899 if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { 965 if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
900 OFileSelectorItem *sel = (OFileSelectorItem*) item; // start to use the C++ casts ;) 966 OFileSelectorItem *sel = (OFileSelectorItem*) item; // start to use the C++ casts ;)
901 if(!sel->isDir() ){ 967 if(!sel->isDir() ){
902 if( m_shLne ) 968 if( m_shLne )
903 m_edit->setText( sel->text(1) ); 969 m_edit->setText( sel->text(1) );
@@ -1029,74 +1095,74 @@ void OFileSelector::reparse()
1029 QString currentMimeType; 1095 QString currentMimeType;
1030 // let's update the mimetype 1096 // let's update the mimetype
1031 if( m_autoMime ){ 1097 if( m_autoMime ){
1032 m_mimetypes.clear(); 1098 m_mimetypes.clear();
1033 // ok we can change mimetype so we need to be able to give a selection 1099 // ok we can change mimetype so we need to be able to give a selection
1034 if( m_shChooser ) { 1100 if( m_shChooser ) {
1035 currentMimeType = m_mimeCheck->currentText(); 1101 currentMimeType = m_mimeCheck->currentText();
1036 m_mimeCheck->clear(); 1102 m_mimeCheck->clear();
1037 1103
1038 // let's find possible mimetypes 1104 // let's find possible mimetypes
1039 QDir dir( m_currentDir ); 1105 QDir dir( m_currentDir );
1040 dir.setFilter( QDir::Files | QDir::Readable ); 1106 dir.setFilter( QDir::Files | QDir::Readable );
1041 dir.setSorting( QDir::Size ); 1107 dir.setSorting( QDir::Size );
1042 const QFileInfoList *list = dir.entryInfoList(); 1108 const QFileInfoList *list = dir.entryInfoList();
1043 QFileInfoListIterator it( *list ); 1109 QFileInfoListIterator it( *list );
1044 QFileInfo *fi; 1110 QFileInfo *fi;
1045 while( (fi=it.current() ) ) { 1111 while( (fi=it.current() ) ) {
1046 if( fi->extension() == QString::fromLatin1("desktop") ){ 1112 if( fi->extension() == QString::fromLatin1("desktop") ){
1047 ++it; 1113 ++it;
1048 continue; 1114 continue;
1049 } 1115 }
1050 MimeType type( fi->absFilePath() ); 1116 MimeType type( fi->absFilePath() );
1051 if( !m_mimetypes.contains( type.id() ) ){ 1117 if( !m_mimetypes.contains( type.id() ) ){
1052 //qWarning("Type %s", type.id().latin1() ); 1118 //qWarning("Type %s", type.id().latin1() );
1053 m_mimetypes.append( type.id() ); 1119 m_mimetypes.insert( type.id(), type.id() );
1054 } 1120 }
1055 1121
1056 ++it; 1122 ++it;
1057 } 1123 }
1058 // add them to the chooser 1124 // add them to the chooser
1059 m_mimeCheck->insertItem( tr("All") ); 1125 updateMimeCheck();
1060 m_mimeCheck->insertStringList( m_mimetypes );
1061 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) ); 1126 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) );
1062 currentMimeType = m_mimeCheck->currentText(); 1127 currentMimeType = m_mimeCheck->currentText();
1063 } 1128 }
1064 }else { // no autoMime 1129 }else { // no autoMime
1065 currentMimeType = m_mimetypes.join(";"); 1130 // let the mimetype be set from out side the m_mimeCheck FEATURE
1131
1066 if( m_shChooser ){ 1132 if( m_shChooser ){
1067 m_mimeCheck->clear(); 1133 currentMimeType = m_mimeCheck->currentText();
1068 m_mimeCheck->insertItem(m_mimetypes.join(",") ); 1134 updateMimeCheck();
1069 } 1135 }
1070 } 1136 }
1071 // now we got our mimetypes we can add the files 1137 // now we got our mimetypes we can add the files
1072 1138
1073 QDir dir( m_currentDir ); 1139 QDir dir( m_currentDir );
1074 1140
1075 int sort; 1141 int sort;
1076 if ( m_case ) 1142 if ( m_case )
1077 sort = (QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed); 1143 sort = (QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed);
1078 else 1144 else
1079 sort = (QDir::Name | QDir::DirsFirst | QDir::Reversed); 1145 sort = (QDir::Name | QDir::DirsFirst | QDir::Reversed);
1080 dir.setSorting( sort ); 1146 dir.setSorting( sort );
1081 1147
1082 int filter; 1148 int filter;
1083 if( m_selector == EXTENDED_ALL /*|| m_selector ==CUSTOM_ALL */ ){ 1149 if( m_selector == EXTENDED_ALL /*|| m_selector ==CUSTOM_ALL */ ){
1084 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; 1150 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
1085 }else 1151 }else
1086 filter = QDir::Files | QDir::Dirs | QDir::All; 1152 filter = QDir::Files | QDir::Dirs | QDir::All;
1087 dir.setFilter( filter ); 1153 dir.setFilter( filter );
1088 1154
1089 // now go through all files 1155 // now go through all files
1090 const QFileInfoList *list = dir.entryInfoList(); 1156 const QFileInfoList *list = dir.entryInfoList();
1091 QFileInfoListIterator it( *list ); 1157 QFileInfoListIterator it( *list );
1092 QFileInfo *fi; 1158 QFileInfo *fi;
1093 while( (fi=it.current() ) ){ 1159 while( (fi=it.current() ) ){
1094 //qWarning("True and only" ); 1160 //qWarning("True and only" );
1095 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){ 1161 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){
1096 //qWarning(".. or ." ); 1162 //qWarning(".. or ." );
1097 ++it; 1163 ++it;
1098 continue; 1164 continue;
1099 } 1165 }
1100 if( fi->isSymLink() ){ 1166 if( fi->isSymLink() ){
1101 QString file = fi->dirPath( true ) + "/" + fi->readLink(); 1167 QString file = fi->dirPath( true ) + "/" + fi->readLink();
1102 for( int i = 0; i<=4; i++) { // 5 tries to prevent dos 1168 for( int i = 0; i<=4; i++) { // 5 tries to prevent dos
@@ -1104,31 +1170,31 @@ void OFileSelector::reparse()
1104 if( !info.exists() ){ 1170 if( !info.exists() ){
1105 addSymlink( currentMimeType, fi, TRUE ); 1171 addSymlink( currentMimeType, fi, TRUE );
1106 break; 1172 break;
1107 }else if( info.isDir() ){ 1173 }else if( info.isDir() ){
1108 addDir( currentMimeType, fi, TRUE ); 1174 addDir( currentMimeType, fi, TRUE );
1109 break; 1175 break;
1110 }else if( info.isFile() ){ 1176 }else if( info.isFile() ){
1111 addFile( currentMimeType, fi, TRUE ); 1177 addFile( currentMimeType, fi, TRUE );
1112 break; 1178 break;
1113 }else if( info.isSymLink() ){ 1179 }else if( info.isSymLink() ){
1114 file = info.dirPath(true ) + "/" + info.readLink() ; 1180 file = info.dirPath(true ) + "/" + info.readLink() ;
1115 break; 1181 break;
1116 }else if( i == 4){ 1182 }else if( i == 4){
1117 addSymlink( currentMimeType, fi ); 1183 addSymlink( currentMimeType, fi );
1118 } 1184 }
1119 } // off for loop 1185 } // off for loop
1120 }else if( fi->isDir() ){ 1186 }else if( fi->isDir() ){
1121 addDir( currentMimeType, fi ); 1187 addDir( currentMimeType, fi );
1122 }else if( fi->isFile() ){ 1188 }else if( fi->isFile() ){
1123 addFile( currentMimeType, fi ); 1189 addFile( currentMimeType, fi );
1124 } 1190 }
1125 //qWarning( "%s", fi->fileName().latin1() ); 1191 //qWarning( "%s", fi->fileName().latin1() );
1126 ++it; 1192 ++it;
1127 } // of while loop 1193 } // of while loop
1128 m_View->sort(); 1194 m_View->sort();
1129 if( m_shTool ){ 1195 if( m_shTool ){
1130 m_location->insertItem( m_currentDir ); 1196 m_location->insertItem( m_currentDir );
1131 1197
1132 } 1198 }
1133 // reenable painting and updates 1199 // reenable painting and updates
1134} 1200}
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index 47697b9..f2d5f84 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -1,106 +1,140 @@
1/* 1/*
2 This is based on code and idea of 2 This is based on code and ideas of
3 L. J. Potter ljp@llornkcor.com 3 L. J. Potter ljp@llornkcor.com
4 Thanks a lot 4 Thanks a lot
5 5
6 6
7               =. This file is part of the OPIE Project 7               =. This file is part of the OPIE Project
8             .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 8             .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This library is free software; you can 10 _;:,     .>    :=|. This library is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 12:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This library is distributed in the hope that 17    .i_,=:_.      -<s. This library is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#ifndef opiefileselector_h 34#ifndef opiefileselector_h
35#define opiefileselector_h 35#define opiefileselector_h
36 36
37#include <qwidget.h> 37#include <qwidget.h>
38#include <qstring.h> 38#include <qstring.h>
39#include <qpixmap.h> 39#include <qpixmap.h>
40#include <qstringlist.h> 40#include <qstringlist.h>
41#include <qmap.h> 41#include <qmap.h>
42#include <qvaluelist.h> 42#include <qvaluelist.h>
43 43
44#include <qpe/applnk.h> 44#include <qpe/applnk.h>
45#include <qlistview.h> 45#include <qlistview.h>
46
46/** This is OPIEs FileDialog Widget. You can use it 47/** This is OPIEs FileDialog Widget. You can use it
47 * as a dropin replacement of the fileselector and 48 * as a dropin replacement of the fileselector and
48 * or use any of the new features. 49 * or use any of the new features.
49 * This is also a complete FileSave and FileLoad widget 50 * This is also a complete FileSave and FileLoad widget
50 * If you look for a Dialog check OFileDialog 51 * If you look for a Dialog check OFileDialog
51 * 52 *
52 */ 53 */
53class DocLnk; 54class DocLnk;
54class QCheckBox; 55class QCheckBox;
55class QComboBox; 56class QComboBox;
56class QPushButton; 57class QPushButton;
57class FileSelector; 58class FileSelector;
58class QGridLayout; 59class QGridLayout;
59class QLineEdit; 60class QLineEdit;
60class QLabel; 61class QLabel;
61class QWidgetStack; 62class QWidgetStack;
62class QHBoxLayout; 63class QHBoxLayout;
63class QVBoxLayout; 64class QVBoxLayout;
64class QPopupMenu; 65class QPopupMenu;
65class QFileInfo; 66class QFileInfo;
66class QHBox; 67class QHBox;
67// 68//
68 69
70typedef QMap< QString, QStringList> MimeTypes;
69 71
70class OFileSelector : public QWidget { 72class OFileSelector : public QWidget {
71 Q_OBJECT 73 Q_OBJECT
72 public: 74 public:
75 /**
76 * The mode of the file selector
77 * Either open, save, fileselector or dir browsing mode
78 *
79 */
73 enum Mode {OPEN=1, SAVE=2, FILESELECTOR=4, DIR=8 }; 80 enum Mode {OPEN=1, SAVE=2, FILESELECTOR=4, DIR=8 };
81
82 /**
83 * Selector. Either NORMAL for the one shipped with
84 * libqpe or EXTENDED. for the EXTENDED
85 * EXTENDED_ALL also shows 'hidden' files
86 */
74 enum Selector{NORMAL=0, EXTENDED = 1, EXTENDED_ALL =2 }; 87 enum Selector{NORMAL=0, EXTENDED = 1, EXTENDED_ALL =2 };
88
89 /**
90 * This is reserved for futrue views
91 */
75 enum View { DIRS = 1, FILES = 2, TREE = 4, ICON = 8 }; 92 enum View { DIRS = 1, FILES = 2, TREE = 4, ICON = 8 };
76 93
77 OFileSelector(QWidget *wid, int mode, int selector, 94 /**
95 * A c'tor which should be used for advanced mode
96 * @param wid the parent
97 * @param mode the Mode of the Selector
98 * @param selector the current View of the Selector
99 * @param dirName in which dir to start
100 * @param fileName a proposed filename
101 * @param mimetypes A list of mimetypes \
102 * QString is for a identifier name like "Text files"
103 * the coresponding QStringList is used for the mimetypes
104 * if empty it'll fill the list of mimetypes depending
105 * on the content of the current directory
106 */
107
108 OFileSelector(QWidget *wid, int mode, int selector,
78 const QString &dirName, 109 const QString &dirName,
79 const QString &fileName = QString::null, 110 const QString &fileName = QString::null,
80 const QStringList &mimetypes = QStringList() ); 111 const MimeTypes &mimetypes = MimeTypes() );
81 112
82 113
114 /**
115 * This is a QPE compatible c'tor
116 */
83 OFileSelector(const QString &mimeFilter, QWidget *parent, 117 OFileSelector(const QString &mimeFilter, QWidget *parent,
84 const char *name, bool newVisible = TRUE, 118 const char *name, bool newVisible = TRUE,
85 bool closeVisible = FALSE ); 119 bool closeVisible = FALSE );
86 120
87 ~OFileSelector(); 121 ~OFileSelector();
88 122
89 // currently only for the FILESELECTOR Mode 123 // currently only for the FILESELECTOR Mode
90 void setNewVisible( bool /*b*/ ); 124 void setNewVisible( bool /*b*/ );
91 void setCloseVisible(bool /*b*/ ); 125 void setCloseVisible(bool /*b*/ );
92 126
93 // end file selector mode 127 // end file selector mode
94 // deprecated 128 // deprecated
95 void reread(); 129 void reread();
96 // make sure not to leak please 130 // make sure not to leak please
97 const DocLnk *selected(); 131 const DocLnk *selected();
98 // end deprecated 132 // end deprecated
99 133
100 bool isToolbarVisible() const { return m_shTool; }; 134 bool isToolbarVisible() const { return m_shTool; };
101 bool isPermissionBarVisible() const { return m_shPerm; }; 135 bool isPermissionBarVisible() const { return m_shPerm; };
102 bool isLineEditVisible()const { return m_shLne; }; 136 bool isLineEditVisible()const { return m_shLne; };
103 bool isChooserVisible( )const { return m_shChooser; }; 137 bool isChooserVisible( )const { return m_shChooser; };
104 bool isYesCancelVisible()const { return m_shYesNo; }; 138 bool isYesCancelVisible()const { return m_shYesNo; };
105 void setYesCancelVisible( bool show ); 139 void setYesCancelVisible( bool show );
106 void setToolbarVisible( bool show ); 140 void setToolbarVisible( bool show );
@@ -109,156 +143,167 @@ class OFileSelector : public QWidget {
109 void setChooserVisible( bool chooser ); 143 void setChooserVisible( bool chooser );
110 144
111 QCheckBox* permissionCheckbox(); 145 QCheckBox* permissionCheckbox();
112 bool setPermission() const; 146 bool setPermission() const;
113 void setPermissionChecked( bool check ); 147 void setPermissionChecked( bool check );
114 148
115 void setMode( int ); 149 void setMode( int );
116 150
117 bool showDirs()const { return m_dir; } 151 bool showDirs()const { return m_dir; }
118 void setShowDirs(bool ); 152 void setShowDirs(bool );
119 153
120 const QListView* listView() { return m_View; }; 154 const QListView* listView() { return m_View; };
121 155
122 bool isCaseSensetive()const { return m_case; } 156 bool isCaseSensetive()const { return m_case; }
123 void setCaseSensetive(bool caSe ); 157 void setCaseSensetive(bool caSe );
124 158
125 bool showFiles()const { return m_files; }; 159 bool showFiles()const { return m_files; };
126 void setShowFiles(bool ); 160 void setShowFiles(bool );
127 bool cd(const QString &path ); 161 bool cd(const QString &path );
128 162
129 163
130 int mode()const { return m_mode; }; 164 int mode()const { return m_mode; };
131 int selector()const { return m_selector; }; 165 int selector()const { return m_selector; };
132 void setSelector( int ); 166 void setSelector( int );
133 167
134 bool showPopup()const { return m_showPopup; }; 168 bool showPopup()const { return m_showPopup; };
135 void setShowPopup( bool pop ) { m_showPopup = pop; }; 169 void setShowPopup( bool pop ) { m_showPopup = pop; };
136 void setPopupMenu( QPopupMenu * ); 170 void setPopupMenu( QPopupMenu * );
137 171
138 // void updateLay(); 172 // void updateLay();
139 173
140 void reparse(); // re reads the dir 174 void reparse(); // re reads the dir
141 175
142 QString selectedName( )const; 176 QString selectedName( )const;
143 QStringList selectedNames()const; 177 QStringList selectedNames()const;
144 178
145 QString selectedPath() const; 179 QString selectedPath() const;
146 QStringList selectedPaths() const; 180 QStringList selectedPaths() const;
147 181
148 QString directory()const; 182 QString directory()const;
149 int fileCount(); 183 int fileCount();
150 184
151 /* the user needs to delete it */ 185 /* the user needs to delete it */
152 DocLnk selectedDocument()const; 186 DocLnk selectedDocument()const;
153 /* the user needs to delete it */ 187 /* the user needs to delete it */
154 QValueList<DocLnk> selectedDocuments()const; 188 QValueList<DocLnk> selectedDocuments()const;
155 189
156 signals: 190 signals:
157 void fileSelected( const DocLnk & ); 191 void fileSelected( const DocLnk & );
158 void fileSelected( const QString & ); 192 void fileSelected( const QString & );
159 void dirSelected(const QString &dir ); 193 void dirSelected(const QString &dir );
160 void closeMe(); 194 void closeMe();
161 void ok(); 195 void ok();
162 void cancel(); 196 void cancel();
163 void contextMenu(); 197 void contextMenu();
164 198
165 private slots: 199 private slots:
166 void slotTest() { qWarning("slotTest" ); setLineEditVisible(false ); }; 200 void slotTest() { qWarning("slotTest" ); setLineEditVisible(false ); };
167 void slotOk(); 201 void slotOk();
168 void slotCancel(); 202 void slotCancel();
169 void slotViewCheck(const QString & ); 203 void slotViewCheck(const QString & );
170 void slotMimeCheck(const QString & ); 204 void slotMimeCheck(const QString & );
171 void slotLocationActivated(const QString & ); 205 void slotLocationActivated(const QString & );
172 void slotInsertLocationPath(const QString &, int); 206 void slotInsertLocationPath(const QString &, int);
173 void locationComboChanged(); 207 void locationComboChanged();
174 208
175 private: 209 private:
176 void init(); 210 void init();
177 void updateMimes(); 211 void updateMimes();
178 212
179 protected: 213 protected:
180 214
181 private: 215 private:
182 int m_mode, m_selector; 216 int m_mode, m_selector;
183 QComboBox *m_location, *m_mimeCheck, *m_viewCheck; 217 QComboBox *m_location, *m_mimeCheck, *m_viewCheck;
184 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; 218 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel;
185 QPushButton *m_reread, *m_up, *m_new, *m_close; 219 QPushButton *m_reread, *m_up, *m_new, *m_close;
186 QListView *m_View; 220 QListView *m_View;
187 QCheckBox *m_checkPerm; 221 QCheckBox *m_checkPerm;
188 QWidget *m_pseudo; 222 QWidget *m_pseudo;
189 QVBoxLayout *m_pseudoLayout; 223 QVBoxLayout *m_pseudoLayout;
190 224
191 QString m_currentDir; 225 QString m_currentDir;
192 QString m_name; 226 QString m_name;
193 QStringList m_mimetypes; 227// QStringList m_mimetypes;
228 QMap<QString, QStringList> m_mimetypes;
194 229
195 FileSelector *m_select; 230 FileSelector *m_select;
196 QWidgetStack *m_stack; 231 QWidgetStack *m_stack;
197 QVBoxLayout *m_lay; 232 QVBoxLayout *m_lay;
198 QGridLayout *m_Oselector; 233 QGridLayout *m_Oselector;
199 234
200 QHBox *m_boxToolbar; 235 QHBox *m_boxToolbar;
201 QHBox *m_boxOk; // (no layout anymore) wait 236 QHBox *m_boxOk; // (no layout anymore) wait
202 QHBox *m_boxName; // (no Layout anymore) wait 237 QHBox *m_boxName; // (no Layout anymore) wait
203 QHBox *m_boxView; 238 QHBox *m_boxView;
204 239
205 QPopupMenu *m_custom; 240 QPopupMenu *m_custom;
206 241
207 QLineEdit *m_edit; 242 QLineEdit *m_edit;
208 QLabel *m_fnLabel; 243 QLabel *m_fnLabel;
209 244
210 bool m_shClose : 1; 245 bool m_shClose : 1;
211 bool m_shNew : 1; 246 bool m_shNew : 1;
212 bool m_shTool : 1; 247 bool m_shTool : 1;
213 bool m_shPerm : 1; 248 bool m_shPerm : 1;
214 bool m_shLne : 1; 249 bool m_shLne : 1;
215 bool m_shChooser : 1; 250 bool m_shChooser : 1;
216 bool m_shYesNo : 1; 251 bool m_shYesNo : 1;
217 bool m_boCheckPerm : 1; 252 bool m_boCheckPerm : 1;
218 bool m_autoMime : 1; 253 bool m_autoMime : 1;
219 bool m_case : 1; 254 bool m_case : 1;
220 bool m_dir : 1; 255 bool m_dir : 1;
221 bool m_files : 1; 256 bool m_files : 1;
222 bool m_showPopup : 1; 257 bool m_showPopup : 1;
223 258
224 void initVars(); 259 void initVars();
225 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE ); 260 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE );
226 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); 261 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE );
227 virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){}; 262 virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){};
228 void delItems(); 263 void delItems();
229 void initializeName(); 264 void initializeName();
230 void initializeYes(); 265 void initializeYes();
231 void initializeChooser(); 266 void initializeChooser();
232 void initializeListView(); 267 void initializeListView();
233 void initializePerm(); 268 void initializePerm();
234 void initPics(); 269 void initPics();
235 bool compliesMime(const QString &path, const QString &mime); 270 bool compliesMime(const QString &path,
236 271 const QString &mime);
272 bool compliesMime(const QString& mime );
273 /**
274 * Updates the QComboBox with the current mimetypes
275 */
276 void updateMimeCheck();
277
278 /**
279 * Returns the current mimetype
280 */
281 QString currentMimeType()const;
237 class OFileSelectorPrivate; 282 class OFileSelectorPrivate;
238 OFileSelectorPrivate *d; 283 OFileSelectorPrivate *d;
239 static QMap<QString,QPixmap> *m_pixmaps; 284 static QMap<QString,QPixmap> *m_pixmaps;
240 285
241private slots: 286private slots:
242 void slotFileSelected(const QString & ); // not really meant to be a slot 287 void slotFileSelected(const QString & ); // not really meant to be a slot
243 void slotFileBridgeSelected( const DocLnk & ); 288 void slotFileBridgeSelected( const DocLnk & );
244 virtual void slotSelectionChanged(); 289 virtual void slotSelectionChanged();
245 virtual void slotCurrentChanged(QListViewItem* ); 290 virtual void slotCurrentChanged(QListViewItem* );
246 virtual void slotClicked( int, QListViewItem *item, const QPoint &, int); 291 virtual void slotClicked( int, QListViewItem *item, const QPoint &, int);
247 virtual void slotRightButton(int, QListViewItem *, const QPoint &, int ); 292 virtual void slotRightButton(int, QListViewItem *, const QPoint &, int );
248 virtual void slotContextMenu( QListViewItem *item); 293 virtual void slotContextMenu( QListViewItem *item);
249 // listview above 294 // listview above
250 // popup below 295 // popup below
251 virtual void slotChangedDir(); 296 virtual void slotChangedDir();
252 virtual void slotOpen(); 297 virtual void slotOpen();
253 virtual void slotRescan(); 298 virtual void slotRescan();
254 virtual void slotRename(); 299 virtual void slotRename();
255 virtual void slotDelete(); 300 virtual void slotDelete();
256 virtual void cdUP(); 301 virtual void cdUP();
257 virtual void slotHome(); 302 virtual void slotHome();
258 virtual void slotDoc(); 303 virtual void slotDoc();
259 virtual void slotNavigate( ); 304 virtual void slotNavigate( );
260}; 305};
261 306
262 307
263#endif 308#endif
264 309