-rw-r--r-- | libopie/ofileselector.cc | 62 | ||||
-rw-r--r-- | libopie/ofileselector.h | 6 |
2 files changed, 66 insertions, 2 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index 53616f7..c9abde1 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc | |||
@@ -38,6 +38,8 @@ | |||
38 | #include <qlabel.h> | 38 | #include <qlabel.h> |
39 | 39 | ||
40 | #include <qpe/fileselector.h> | 40 | #include <qpe/fileselector.h> |
41 | #include <qpe/applnk.h> | ||
42 | #include <qpe/global.h> | ||
41 | 43 | ||
42 | #include "ofileselector.h" | 44 | #include "ofileselector.h" |
43 | 45 | ||
@@ -49,6 +51,9 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString | |||
49 | m_currentDir = dirName; | 51 | m_currentDir = dirName; |
50 | m_name = fileName; | 52 | m_name = fileName; |
51 | m_mimetypes = mimetypes; | 53 | m_mimetypes = mimetypes; |
54 | if( mimetypes.isEmpty() ) | ||
55 | m_autoMime = true; | ||
56 | |||
52 | m_mode = mode; | 57 | m_mode = mode; |
53 | m_shTool = true; | 58 | m_shTool = true; |
54 | m_shPerm = true; | 59 | m_shPerm = true; |
@@ -82,6 +87,7 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString | |||
82 | 87 | ||
83 | m_lay = new QVBoxLayout(this); | 88 | m_lay = new QVBoxLayout(this); |
84 | init(); | 89 | init(); |
90 | m_edit->setText( fileName ); | ||
85 | } | 91 | } |
86 | 92 | ||
87 | // let's initialize the gui | 93 | // let's initialize the gui |
@@ -326,28 +332,82 @@ void OFileSelector::initializeChooser() | |||
326 | m_viewCheck->insertItem(tr("Files") ); | 332 | m_viewCheck->insertItem(tr("Files") ); |
327 | m_viewCheck->insertItem(tr("All Files") ); | 333 | m_viewCheck->insertItem(tr("All Files") ); |
328 | 334 | ||
335 | if(!m_autoMime ) | ||
336 | m_mimeCheck->insertItem(m_mimetypes.join("," ) ); | ||
337 | else{ // check | ||
338 | updateMimes(); | ||
339 | m_mimeCheck->insertStringList( m_mimetypes ); | ||
340 | } | ||
341 | |||
329 | connect( m_viewCheck, SIGNAL(activated(const QString &) ), | 342 | connect( m_viewCheck, SIGNAL(activated(const QString &) ), |
330 | this, SLOT(slotViewCheck(const QString & ) ) ); | 343 | this, SLOT(slotViewCheck(const QString & ) ) ); |
331 | 344 | ||
345 | connect( m_mimeCheck, SIGNAL(activated(const QString &) ), | ||
346 | this, SLOT(slotMimeCheck(const QString & ) ) ); | ||
332 | } | 347 | } |
348 | void OFileSelector::slotMimeCheck(const QString &view ){ | ||
349 | if(m_selector == NORMAL ){ | ||
350 | delete m_select; | ||
351 | m_select = new FileSelector(view == "All" ? QString::null : view | ||
352 | , m_stack, "fileselector", FALSE, FALSE ); | ||
353 | m_stack->addWidget( m_select, NORMAL ); | ||
354 | m_stack->raiseWidget( NORMAL ); | ||
355 | }else{ | ||
333 | 356 | ||
334 | 357 | ||
358 | } | ||
359 | } | ||
360 | |||
335 | void OFileSelector::slotViewCheck(const QString &view ){ | 361 | void OFileSelector::slotViewCheck(const QString &view ){ |
336 | qWarning("changed: show %s", view.latin1() ); | 362 | qWarning("changed: show %s", view.latin1() ); |
337 | // if the current view is the one | 363 | // if the current view is the one |
338 | 364 | QString currMime = m_mimeCheck->currentText(); | |
339 | if( view == QString::fromLatin1("Documents") ){ | 365 | if( view == QString::fromLatin1("Documents") ){ |
340 | // get the mimetype now | 366 | // get the mimetype now |
341 | // check if we're the current widget and return | 367 | // check if we're the current widget and return |
368 | delete m_select; | ||
369 | m_select = new FileSelector( currMime == "All" ? QString::null : currMime, | ||
370 | m_stack,"fileselector", FALSE, FALSE ); | ||
371 | m_stack->addWidget( m_select, NORMAL ); | ||
372 | m_stack->raiseWidget( NORMAL ); | ||
373 | m_selector = NORMAL; | ||
374 | |||
342 | }else if(view == QString::fromLatin1("Files") ){ | 375 | }else if(view == QString::fromLatin1("Files") ){ |
343 | if( m_select != 0 ){ | 376 | if( m_select != 0 ){ |
344 | // remove from the stack | 377 | // remove from the stack |
345 | delete m_select; | 378 | delete m_select; |
346 | m_select = 0; | 379 | m_select = 0; |
380 | m_selector = EXTENDED; | ||
381 | // create the ListView or IconView | ||
382 | |||
383 | reparse(); | ||
347 | } | 384 | } |
348 | }else if(view == QString::fromLatin1("All Files") ) { | 385 | }else if(view == QString::fromLatin1("All Files") ) { |
349 | // remove from the stack | 386 | // remove from the stack |
350 | delete m_select; | 387 | delete m_select; |
351 | m_select = 0; | 388 | m_select = 0; |
389 | m_selector = EXTENDED_ALL; | ||
390 | |||
391 | reparse(); | ||
352 | }; | 392 | }; |
353 | }; | 393 | }; |
394 | |||
395 | |||
396 | void OFileSelector::updateMimes() // lets check which mode is active | ||
397 | // check the current dir for items then | ||
398 | { | ||
399 | m_mimetypes.clear(); | ||
400 | m_mimetypes.append("All" ); | ||
401 | if( m_selector == NORMAL ){ | ||
402 | DocLnkSet set; | ||
403 | Global::findDocuments(&set, QString::null ); | ||
404 | QListIterator<DocLnk> dit( set.children() ); | ||
405 | for ( ; dit.current(); ++dit ) { | ||
406 | if( !m_mimetypes.contains((*dit)->type() ) ) | ||
407 | m_mimetypes.append( (*dit)->type() ); | ||
408 | } | ||
409 | }else{ | ||
410 | |||
411 | |||
412 | } | ||
413 | }; | ||
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h index 3f53fa9..757a960 100644 --- a/libopie/ofileselector.h +++ b/libopie/ofileselector.h | |||
@@ -84,7 +84,8 @@ class OFileSelector : public QWidget { | |||
84 | Q_OBJECT | 84 | Q_OBJECT |
85 | public: | 85 | public: |
86 | enum Mode {OPEN=1, SAVE, FILESELECTOR }; | 86 | enum Mode {OPEN=1, SAVE, FILESELECTOR }; |
87 | enum Selector{NORMAL=1, EXTENDED }; | 87 | enum Selector{NORMAL=1, EXTENDED = 2, EXTENDED_ALL =4 }; |
88 | enum View { DIRS = 1, FILES = 2, TREE = 4, ICON = 8 }; | ||
88 | OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, const QString &fileName = QString::null, const QStringList mimetypes = QStringList() ); | 89 | OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, const QString &fileName = QString::null, const QStringList mimetypes = QStringList() ); |
89 | 90 | ||
90 | bool showToolbar() const { return m_shTool; }; | 91 | bool showToolbar() const { return m_shTool; }; |
@@ -123,8 +124,10 @@ class OFileSelector : public QWidget { | |||
123 | void slotOk(); | 124 | void slotOk(); |
124 | void slotCancel(); | 125 | void slotCancel(); |
125 | void slotViewCheck(const QString & ); | 126 | void slotViewCheck(const QString & ); |
127 | void slotMimeCheck(const QString & ); | ||
126 | protected: | 128 | protected: |
127 | void init(); | 129 | void init(); |
130 | void updateMimes(); | ||
128 | int m_mode, m_selector; | 131 | int m_mode, m_selector; |
129 | QComboBox *m_location, *m_mimeCheck, *m_viewCheck; | 132 | QComboBox *m_location, *m_mimeCheck, *m_viewCheck; |
130 | QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; | 133 | QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; |
@@ -154,6 +157,7 @@ class OFileSelector : public QWidget { | |||
154 | bool m_shChooser:1; | 157 | bool m_shChooser:1; |
155 | bool m_shYesNo:1; | 158 | bool m_shYesNo:1; |
156 | bool m_boCheckPerm:1; | 159 | bool m_boCheckPerm:1; |
160 | bool m_autoMime:1; | ||
157 | 161 | ||
158 | protected: | 162 | protected: |
159 | 163 | ||