-rw-r--r-- | libopie/ofiledialog.cc | 18 | ||||
-rw-r--r-- | libopie/ofiledialog.h | 18 | ||||
-rw-r--r-- | libopie/ofileselector.cc | 160 | ||||
-rw-r--r-- | libopie/ofileselector.h | 77 |
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 | |||
@@ -3,5 +3,5 @@ | |||
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 |
@@ -9,6 +9,6 @@ | |||
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 |
@@ -17,8 +17,8 @@ | |||
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, |
@@ -38,5 +38,5 @@ OFileDialog::OFileDialog(const QString &caption, | |||
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 | { |
@@ -58,5 +58,5 @@ OFileDialog::OFileDialog(const QString &caption, | |||
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 | } |
@@ -76,5 +76,5 @@ QString 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 ) |
@@ -92,5 +92,5 @@ QString 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 ) |
diff --git a/libopie/ofiledialog.h b/libopie/ofiledialog.h index 40d147e..e14253c 100644 --- a/libopie/ofiledialog.h +++ b/libopie/ofiledialog.h | |||
@@ -3,5 +3,5 @@ | |||
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 |
@@ -9,6 +9,6 @@ | |||
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 |
@@ -17,8 +17,8 @@ | |||
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, |
@@ -40,7 +40,7 @@ class OFileDialog : public QDialog { | |||
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; |
@@ -51,5 +51,5 @@ class OFileDialog : public QDialog { | |||
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 ); |
@@ -58,5 +58,5 @@ class OFileDialog : public QDialog { | |||
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 ); |
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index 7a67ab2..6c59f89 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc | |||
@@ -100,9 +100,11 @@ namespace { | |||
100 | OFileSelector::OFileSelector( QWidget *wid, int mode, int selector, | 100 | OFileSelector::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; |
@@ -110,5 +112,5 @@ OFileSelector::OFileSelector( QWidget *wid, int mode, int selector, | |||
110 | m_currentDir = dirName; | 112 | m_currentDir = dirName; |
111 | init(); | 113 | init(); |
112 | QTimer::singleShot(6*1000, this, SLOT( slotTest() ) ); | 114 | //QTimer::singleShot(6*1000, this, SLOT( slotTest() ) ); |
113 | } | 115 | } |
114 | 116 | ||
@@ -118,7 +120,10 @@ OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent, | |||
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; |
@@ -130,5 +135,5 @@ OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent, | |||
130 | init(); | 135 | init(); |
131 | 136 | ||
132 | 137 | ||
133 | } | 138 | } |
134 | 139 | ||
@@ -136,4 +141,5 @@ OFileSelector::~OFileSelector() | |||
136 | { | 141 | { |
137 | 142 | ||
143 | |||
138 | } | 144 | } |
139 | 145 | ||
@@ -144,6 +150,6 @@ void OFileSelector::setNewVisible( bool visible ) | |||
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); |
@@ -342,5 +348,5 @@ QStringList OFileSelector::selectedNames()const | |||
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 | */ |
@@ -365,5 +371,5 @@ QString OFileSelector::directory()const | |||
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 | } |
@@ -426,5 +432,7 @@ void OFileSelector::slotViewCheck(const QString &sel) | |||
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); |
@@ -432,5 +440,5 @@ void OFileSelector::slotViewCheck(const QString &sel) | |||
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 | } |
@@ -446,15 +454,46 @@ void OFileSelector::slotViewCheck(const QString &sel) | |||
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..... | ||
460 | QString 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 | } | ||
451 | void OFileSelector::slotMimeCheck(const QString &mime) | 480 | void 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 & ) ), |
@@ -464,8 +503,7 @@ void OFileSelector::slotMimeCheck(const QString &mime) | |||
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() ); |
@@ -513,5 +551,13 @@ void OFileSelector::init() | |||
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); |
@@ -546,5 +592,5 @@ void OFileSelector::updateMimes() | |||
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; |
@@ -553,5 +599,5 @@ void OFileSelector::updateMimes() | |||
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 |
@@ -629,5 +675,5 @@ void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink) | |||
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 | } |
@@ -658,5 +704,5 @@ void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink ) | |||
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 ); |
@@ -671,6 +717,6 @@ void 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 |
@@ -682,4 +728,5 @@ void OFileSelector::initializeName() | |||
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 ); |
@@ -689,5 +736,5 @@ void OFileSelector::initializeName() | |||
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 | } |
@@ -714,4 +761,22 @@ void OFileSelector::initializeYes() | |||
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 | */ | ||
768 | void 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 | |||
716 | void OFileSelector::initializeChooser() | 781 | void OFileSelector::initializeChooser() |
717 | { | 782 | { |
@@ -726,10 +791,6 @@ void OFileSelector::initializeChooser() | |||
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 & ) ) ); |
@@ -747,9 +808,9 @@ void OFileSelector::initializeListView() | |||
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 &) ), |
@@ -832,11 +893,11 @@ void OFileSelector::initializeListView() | |||
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 | } |
@@ -877,5 +938,10 @@ bool OFileSelector::compliesMime( const QString &path, const QString &mime ) | |||
877 | return false; | 938 | return false; |
878 | } | 939 | } |
940 | /* check if the mimetype in mime | ||
941 | * complies with the one which is current | ||
942 | */ | ||
943 | bool OFileSelector::compliesMime( const QString& mime ) { | ||
879 | 944 | ||
945 | } | ||
880 | void OFileSelector::slotFileSelected( const QString &string ) | 946 | void OFileSelector::slotFileSelected( const QString &string ) |
881 | { | 947 | { |
@@ -1051,5 +1117,5 @@ void OFileSelector::reparse() | |||
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 | ||
@@ -1057,14 +1123,14 @@ void OFileSelector::reparse() | |||
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 | } |
@@ -1076,5 +1142,5 @@ void OFileSelector::reparse() | |||
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 ); |
@@ -1126,5 +1192,5 @@ void OFileSelector::reparse() | |||
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 ); |
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h index 47697b9..f2d5f84 100644 --- a/libopie/ofileselector.h +++ b/libopie/ofileselector.h | |||
@@ -1,4 +1,4 @@ | |||
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 |
@@ -8,5 +8,5 @@ | |||
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 |
@@ -14,6 +14,6 @@ | |||
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 |
@@ -22,8 +22,8 @@ | |||
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, |
@@ -44,9 +44,10 @@ | |||
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 | */ |
@@ -65,20 +66,53 @@ class QPopupMenu; | |||
65 | class QFileInfo; | 66 | class QFileInfo; |
66 | class QHBox; | 67 | class QHBox; |
67 | // | 68 | // |
68 | 69 | ||
70 | typedef QMap< QString, QStringList> MimeTypes; | ||
69 | 71 | ||
70 | class OFileSelector : public QWidget { | 72 | class 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, |
@@ -131,5 +165,5 @@ class OFileSelector : public QWidget { | |||
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; }; |
@@ -176,5 +210,5 @@ class OFileSelector : public QWidget { | |||
176 | void init(); | 210 | void init(); |
177 | void updateMimes(); | 211 | void updateMimes(); |
178 | 212 | ||
179 | protected: | 213 | protected: |
180 | 214 | ||
@@ -191,5 +225,6 @@ class OFileSelector : public QWidget { | |||
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; |
@@ -233,10 +268,20 @@ class OFileSelector : public QWidget { | |||
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 | ||
241 | private slots: | 286 | private 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 |