author | zecke <zecke> | 2004-07-24 13:16:26 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-07-24 13:16:26 (UTC) |
commit | 144d91fee9e0ec0cb672508637c639cfbbf4e750 (patch) (unidiff) | |
tree | 802d12ac283361e3d5d710a6b8387dc22b88c462 | |
parent | 1efb57a4cffc8a19a0dadbd008ff205d3d61d216 (diff) | |
download | opie-144d91fee9e0ec0cb672508637c639cfbbf4e750.zip opie-144d91fee9e0ec0cb672508637c639cfbbf4e750.tar.gz opie-144d91fee9e0ec0cb672508637c639cfbbf4e750.tar.bz2 |
Delete the Views which are created in the OFileSelector
Add a new member and one method to register the view.
The views themselves (baseclass) call this function.
Simply going over the viewMap wouldn't work as we can
have the same instance contained twice under a different name
-rw-r--r-- | libopie2/opieui/fileselector/ofileselector.cpp | 19 | ||||
-rw-r--r-- | libopie2/opieui/fileselector/ofileselector.h | 10 |
2 files changed, 24 insertions, 5 deletions
diff --git a/libopie2/opieui/fileselector/ofileselector.cpp b/libopie2/opieui/fileselector/ofileselector.cpp index 5528aed..b06defd 100644 --- a/libopie2/opieui/fileselector/ofileselector.cpp +++ b/libopie2/opieui/fileselector/ofileselector.cpp | |||
@@ -1,195 +1,197 @@ | |||
1 | 1 | ||
2 | /* | 2 | /* |
3 | =. This file is part of the OPIE Project | 3 | =. This file is part of the OPIE Project |
4 | .=l. Copyright (C) 2002,2003 Holger Freyther <zecke@handhelds.org> | 4 | .=l. Copyright (C) 2002,2003 Holger Freyther <zecke@handhelds.org> |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This library is free software; you can | 6 | _;:, .> :=|. This library is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; either version 2 of the License, |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : or (at your option) any later version. |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This library is distributed in the hope that | 13 | .i_,=:_. -<s. This library is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
18 | ..}^=.= = ; Library General Public License for more | 18 | ..}^=.= = ; Library General Public License for more |
19 | ++= -. .` .: details. | 19 | ++= -. .` .: details. |
20 | : = ...= . :.=- | 20 | : = ...= . :.=- |
21 | -. .:....=;==+<; You should have received a copy of the GNU | 21 | -. .:....=;==+<; You should have received a copy of the GNU |
22 | -_. . . )=. = Library General Public License along with | 22 | -_. . . )=. = Library General Public License along with |
23 | -- :-=` this library; see the file COPYING.LIB. | 23 | -- :-=` this library; see the file COPYING.LIB. |
24 | If not, write to the Free Software Foundation, | 24 | If not, write to the Free Software Foundation, |
25 | Inc., 59 Temple Place - Suite 330, | 25 | Inc., 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | 27 | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | /* hacky but we need to get FileSelector::filter */ | 30 | /* hacky but we need to get FileSelector::filter */ |
31 | #define private public | 31 | #define private public |
32 | #include <qpe/fileselector.h> | 32 | #include <qpe/fileselector.h> |
33 | #undef private | 33 | #undef private |
34 | 34 | ||
35 | #include "ofileselector_p.h" | 35 | #include "ofileselector_p.h" |
36 | 36 | ||
37 | /* OPIE */ | 37 | /* OPIE */ |
38 | #include <opie2/ofileselector.h> | 38 | #include <opie2/ofileselector.h> |
39 | #include <opie2/odebug.h> | 39 | #include <opie2/odebug.h> |
40 | 40 | ||
41 | #include <qpe/qpeapplication.h> | 41 | #include <qpe/qpeapplication.h> |
42 | #include <qpe/mimetype.h> | 42 | #include <qpe/mimetype.h> |
43 | #include <qpe/resource.h> | 43 | #include <qpe/resource.h> |
44 | #include <qpe/storage.h> | 44 | #include <qpe/storage.h> |
45 | 45 | ||
46 | /* QT */ | 46 | /* QT */ |
47 | #include <qcombobox.h> | 47 | #include <qcombobox.h> |
48 | #include <qdir.h> | 48 | #include <qdir.h> |
49 | #include <qhbox.h> | 49 | #include <qhbox.h> |
50 | #include <qheader.h> | 50 | #include <qheader.h> |
51 | #include <qlabel.h> | 51 | #include <qlabel.h> |
52 | #include <qlayout.h> | 52 | #include <qlayout.h> |
53 | #include <qlineedit.h> | 53 | #include <qlineedit.h> |
54 | #include <qlistview.h> | 54 | #include <qlistview.h> |
55 | #include <qpopupmenu.h> | 55 | #include <qpopupmenu.h> |
56 | #include <qwidgetstack.h> | 56 | #include <qwidgetstack.h> |
57 | #include <qregexp.h> | 57 | #include <qregexp.h> |
58 | #include <qobjectlist.h> | 58 | #include <qobjectlist.h> |
59 | 59 | ||
60 | using namespace Opie::Ui::Internal; | 60 | using namespace Opie::Ui::Internal; |
61 | 61 | ||
62 | namespace Opie { | 62 | namespace Opie { |
63 | namespace Ui { | 63 | namespace Ui { |
64 | namespace Internal { | 64 | namespace Internal { |
65 | OFileViewInterface::OFileViewInterface( OFileSelector* selector ) | 65 | OFileViewInterface::OFileViewInterface( OFileSelector* _selector ) |
66 | : m_selector( selector ) | 66 | : m_selector( _selector ) |
67 | {} | 67 | { |
68 | selector()->registerView( this ); | ||
69 | } | ||
68 | 70 | ||
69 | OFileViewInterface::~OFileViewInterface() | 71 | OFileViewInterface::~OFileViewInterface() |
70 | {} | 72 | {} |
71 | 73 | ||
72 | QString OFileViewInterface::name()const | 74 | QString OFileViewInterface::name()const |
73 | { | 75 | { |
74 | return m_name; | 76 | return m_name; |
75 | } | 77 | } |
76 | 78 | ||
77 | void OFileViewInterface::setName( const QString& name ) | 79 | void OFileViewInterface::setName( const QString& name ) |
78 | { | 80 | { |
79 | m_name = name; | 81 | m_name = name; |
80 | } | 82 | } |
81 | 83 | ||
82 | OFileSelector* OFileViewInterface::selector()const | 84 | OFileSelector* OFileViewInterface::selector()const |
83 | { | 85 | { |
84 | return m_selector; | 86 | return m_selector; |
85 | } | 87 | } |
86 | 88 | ||
87 | DocLnk OFileViewInterface::selectedDocument()const | 89 | DocLnk OFileViewInterface::selectedDocument()const |
88 | { | 90 | { |
89 | return DocLnk( selectedName() ); | 91 | return DocLnk( selectedName() ); |
90 | } | 92 | } |
91 | 93 | ||
92 | bool OFileViewInterface::showNew()const | 94 | bool OFileViewInterface::showNew()const |
93 | { | 95 | { |
94 | return selector()->showNew(); | 96 | return selector()->showNew(); |
95 | } | 97 | } |
96 | 98 | ||
97 | bool OFileViewInterface::showClose()const | 99 | bool OFileViewInterface::showClose()const |
98 | { | 100 | { |
99 | return selector()->showClose(); | 101 | return selector()->showClose(); |
100 | } | 102 | } |
101 | 103 | ||
102 | MimeTypes OFileViewInterface::mimeTypes()const | 104 | MimeTypes OFileViewInterface::mimeTypes()const |
103 | { | 105 | { |
104 | return selector()->mimeTypes(); | 106 | return selector()->mimeTypes(); |
105 | } | 107 | } |
106 | 108 | ||
107 | QStringList OFileViewInterface::currentMimeType()const | 109 | QStringList OFileViewInterface::currentMimeType()const |
108 | { | 110 | { |
109 | return selector()->currentMimeType(); | 111 | return selector()->currentMimeType(); |
110 | } | 112 | } |
111 | 113 | ||
112 | void OFileViewInterface::activate( const QString& ) | 114 | void OFileViewInterface::activate( const QString& ) |
113 | { | 115 | { |
114 | // not implemented here | 116 | // not implemented here |
115 | } | 117 | } |
116 | 118 | ||
117 | void OFileViewInterface::ok() | 119 | void OFileViewInterface::ok() |
118 | { | 120 | { |
119 | emit selector()->ok(); | 121 | emit selector()->ok(); |
120 | } | 122 | } |
121 | 123 | ||
122 | void OFileViewInterface::cancel() | 124 | void OFileViewInterface::cancel() |
123 | { | 125 | { |
124 | emit selector()->cancel(); | 126 | emit selector()->cancel(); |
125 | } | 127 | } |
126 | 128 | ||
127 | void OFileViewInterface::closeMe() | 129 | void OFileViewInterface::closeMe() |
128 | { | 130 | { |
129 | emit selector()->closeMe(); | 131 | emit selector()->closeMe(); |
130 | } | 132 | } |
131 | 133 | ||
132 | void OFileViewInterface::fileSelected( const QString& str) | 134 | void OFileViewInterface::fileSelected( const QString& str) |
133 | { | 135 | { |
134 | emit selector()->fileSelected( str); | 136 | emit selector()->fileSelected( str); |
135 | } | 137 | } |
136 | 138 | ||
137 | void OFileViewInterface::fileSelected( const DocLnk& lnk) | 139 | void OFileViewInterface::fileSelected( const DocLnk& lnk) |
138 | { | 140 | { |
139 | emit selector()->fileSelected( lnk ); | 141 | emit selector()->fileSelected( lnk ); |
140 | } | 142 | } |
141 | 143 | ||
142 | void OFileViewInterface::setCurrentFileName( const QString& str ) | 144 | void OFileViewInterface::setCurrentFileName( const QString& str ) |
143 | { | 145 | { |
144 | selector()->m_lneEdit->setText( str ); | 146 | selector()->m_lneEdit->setText( str ); |
145 | } | 147 | } |
146 | 148 | ||
147 | QString OFileViewInterface::currentFileName()const | 149 | QString OFileViewInterface::currentFileName()const |
148 | { | 150 | { |
149 | return selector()->m_lneEdit->text(); | 151 | return selector()->m_lneEdit->text(); |
150 | } | 152 | } |
151 | 153 | ||
152 | QString OFileViewInterface::startDirectory()const | 154 | QString OFileViewInterface::startDirectory()const |
153 | { | 155 | { |
154 | return selector()->m_startDir; | 156 | return selector()->m_startDir; |
155 | } | 157 | } |
156 | 158 | ||
157 | ODocumentFileView::ODocumentFileView( OFileSelector* selector ) | 159 | ODocumentFileView::ODocumentFileView( OFileSelector* selector ) |
158 | :OFileViewInterface( selector ) | 160 | :OFileViewInterface( selector ) |
159 | { | 161 | { |
160 | m_selector = 0; | 162 | m_selector = 0; |
161 | setName( QObject::tr("Documents") ); | 163 | setName( QObject::tr("Documents") ); |
162 | } | 164 | } |
163 | 165 | ||
164 | ODocumentFileView::~ODocumentFileView() | 166 | ODocumentFileView::~ODocumentFileView() |
165 | { | 167 | { |
166 | } | 168 | } |
167 | 169 | ||
168 | QString ODocumentFileView::selectedName()const | 170 | QString ODocumentFileView::selectedName()const |
169 | { | 171 | { |
170 | if (!m_selector) | 172 | if (!m_selector) |
171 | return QString::null; | 173 | return QString::null; |
172 | 174 | ||
173 | return m_selector->selectedDocument().file(); | 175 | return m_selector->selectedDocument().file(); |
174 | } | 176 | } |
175 | 177 | ||
176 | QString ODocumentFileView::selectedPath()const | 178 | QString ODocumentFileView::selectedPath()const |
177 | { | 179 | { |
178 | return QPEApplication::documentDir(); | 180 | return QPEApplication::documentDir(); |
179 | } | 181 | } |
180 | 182 | ||
181 | QString ODocumentFileView::directory()const | 183 | QString ODocumentFileView::directory()const |
182 | { | 184 | { |
183 | return selectedPath(); | 185 | return selectedPath(); |
184 | } | 186 | } |
185 | 187 | ||
186 | void ODocumentFileView::reread() | 188 | void ODocumentFileView::reread() |
187 | { | 189 | { |
188 | if (!m_selector) | 190 | if (!m_selector) |
189 | return; | 191 | return; |
190 | 192 | ||
191 | m_selector->setNewVisible( showNew() ); | 193 | m_selector->setNewVisible( showNew() ); |
192 | m_selector->setCloseVisible( showClose() ); | 194 | m_selector->setCloseVisible( showClose() ); |
193 | m_selector->filter = currentMimeType().join(";"); | 195 | m_selector->filter = currentMimeType().join(";"); |
194 | m_selector->reread(); | 196 | m_selector->reread(); |
195 | } | 197 | } |
@@ -386,257 +388,257 @@ OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& st | |||
386 | 388 | ||
387 | OFileViewFileListView::~OFileViewFileListView() | 389 | OFileViewFileListView::~OFileViewFileListView() |
388 | { | 390 | { |
389 | } | 391 | } |
390 | 392 | ||
391 | void OFileViewFileListView::slotNew() | 393 | void OFileViewFileListView::slotNew() |
392 | { | 394 | { |
393 | DocLnk lnk; | 395 | DocLnk lnk; |
394 | emit selector()->newSelected( lnk ); | 396 | emit selector()->newSelected( lnk ); |
395 | } | 397 | } |
396 | 398 | ||
397 | OFileSelectorItem* OFileViewFileListView::currentItem()const | 399 | OFileSelectorItem* OFileViewFileListView::currentItem()const |
398 | { | 400 | { |
399 | QListViewItem* item = m_view->currentItem(); | 401 | QListViewItem* item = m_view->currentItem(); |
400 | if (!item ) | 402 | if (!item ) |
401 | return 0l; | 403 | return 0l; |
402 | 404 | ||
403 | return static_cast<OFileSelectorItem*>(item); | 405 | return static_cast<OFileSelectorItem*>(item); |
404 | } | 406 | } |
405 | 407 | ||
406 | void OFileViewFileListView::reread( bool all ) | 408 | void OFileViewFileListView::reread( bool all ) |
407 | { | 409 | { |
408 | m_view->clear(); | 410 | m_view->clear(); |
409 | 411 | ||
410 | if (selector()->showClose() ) | 412 | if (selector()->showClose() ) |
411 | m_btnClose->show(); | 413 | m_btnClose->show(); |
412 | else | 414 | else |
413 | m_btnClose->hide(); | 415 | m_btnClose->hide(); |
414 | 416 | ||
415 | if (selector()->showNew() ) | 417 | if (selector()->showNew() ) |
416 | m_btnNew->show(); | 418 | m_btnNew->show(); |
417 | else | 419 | else |
418 | m_btnNew->hide(); | 420 | m_btnNew->hide(); |
419 | 421 | ||
420 | m_mimes = selector()->currentMimeType(); | 422 | m_mimes = selector()->currentMimeType(); |
421 | m_all = all; | 423 | m_all = all; |
422 | 424 | ||
423 | QDir dir( m_currentDir ); | 425 | QDir dir( m_currentDir ); |
424 | if (!dir.exists() ) | 426 | if (!dir.exists() ) |
425 | return; | 427 | return; |
426 | 428 | ||
427 | dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); | 429 | dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); |
428 | int filter; | 430 | int filter; |
429 | if (m_all ) | 431 | if (m_all ) |
430 | filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; | 432 | filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; |
431 | else | 433 | else |
432 | filter = QDir::Files | QDir::Dirs | QDir::All; | 434 | filter = QDir::Files | QDir::Dirs | QDir::All; |
433 | dir.setFilter( filter ); | 435 | dir.setFilter( filter ); |
434 | 436 | ||
435 | // now go through all files | 437 | // now go through all files |
436 | const QFileInfoList *list = dir.entryInfoList(); | 438 | const QFileInfoList *list = dir.entryInfoList(); |
437 | if (!list) | 439 | if (!list) |
438 | { | 440 | { |
439 | cdUP(); | 441 | cdUP(); |
440 | return; | 442 | return; |
441 | } | 443 | } |
442 | 444 | ||
443 | QFileInfoListIterator it( *list ); | 445 | QFileInfoListIterator it( *list ); |
444 | QFileInfo *fi; | 446 | QFileInfo *fi; |
445 | while( (fi=it.current() ) ) | 447 | while( (fi=it.current() ) ) |
446 | { | 448 | { |
447 | if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ) | 449 | if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ) |
448 | { | 450 | { |
449 | ++it; | 451 | ++it; |
450 | continue; | 452 | continue; |
451 | } | 453 | } |
452 | 454 | ||
453 | /* | 455 | /* |
454 | * It is a symlink we try to resolve it now but don't let us attack by DOS | 456 | * It is a symlink we try to resolve it now but don't let us attack by DOS |
455 | * | 457 | * |
456 | */ | 458 | */ |
457 | if( fi->isSymLink() ) | 459 | if( fi->isSymLink() ) |
458 | { | 460 | { |
459 | QString file = fi->dirPath( true ) + "/" + fi->readLink(); | 461 | QString file = fi->dirPath( true ) + "/" + fi->readLink(); |
460 | for( int i = 0; i<=4; i++) | 462 | for( int i = 0; i<=4; i++) |
461 | { // 5 tries to prevent dos | 463 | { // 5 tries to prevent dos |
462 | QFileInfo info( file ); | 464 | QFileInfo info( file ); |
463 | if( !info.exists() ) | 465 | if( !info.exists() ) |
464 | { | 466 | { |
465 | addSymlink( fi, TRUE ); | 467 | addSymlink( fi, TRUE ); |
466 | break; | 468 | break; |
467 | } | 469 | } |
468 | else if( info.isDir() ) | 470 | else if( info.isDir() ) |
469 | { | 471 | { |
470 | addDir( fi, TRUE ); | 472 | addDir( fi, TRUE ); |
471 | break; | 473 | break; |
472 | } | 474 | } |
473 | else if( info.isFile() ) | 475 | else if( info.isFile() ) |
474 | { | 476 | { |
475 | addFile( fi, TRUE ); | 477 | addFile( fi, TRUE ); |
476 | break; | 478 | break; |
477 | } | 479 | } |
478 | else if( info.isSymLink() ) | 480 | else if( info.isSymLink() ) |
479 | { | 481 | { |
480 | file = info.dirPath(true ) + "/" + info.readLink() ; | 482 | file = info.dirPath(true ) + "/" + info.readLink() ; |
481 | break; | 483 | break; |
482 | } | 484 | } |
483 | else if( i == 4) | 485 | else if( i == 4) |
484 | { // couldn't resolve symlink add it as symlink | 486 | { // couldn't resolve symlink add it as symlink |
485 | addSymlink( fi ); | 487 | addSymlink( fi ); |
486 | } | 488 | } |
487 | } // off for loop for symlink resolving | 489 | } // off for loop for symlink resolving |
488 | } | 490 | } |
489 | else if( fi->isDir() ) | 491 | else if( fi->isDir() ) |
490 | addDir( fi ); | 492 | addDir( fi ); |
491 | else if( fi->isFile() ) | 493 | else if( fi->isFile() ) |
492 | addFile( fi ); | 494 | addFile( fi ); |
493 | 495 | ||
494 | ++it; | 496 | ++it; |
495 | } // of while loop | 497 | } // of while loop |
496 | m_view->sort(); | 498 | m_view->sort(); |
497 | 499 | ||
498 | } | 500 | } |
499 | int OFileViewFileListView::fileCount()const | 501 | int OFileViewFileListView::fileCount()const |
500 | { | 502 | { |
501 | return m_view->childCount(); | 503 | return m_view->childCount(); |
502 | } | 504 | } |
503 | 505 | ||
504 | QString OFileViewFileListView::currentDir()const | 506 | QString OFileViewFileListView::currentDir()const |
505 | { | 507 | { |
506 | return m_currentDir; | 508 | return m_currentDir; |
507 | } | 509 | } |
508 | 510 | ||
509 | OFileSelector* OFileViewFileListView::selector() | 511 | OFileSelector* OFileViewFileListView::selector() |
510 | { | 512 | { |
511 | return m_sel; | 513 | return m_sel; |
512 | } | 514 | } |
513 | 515 | ||
514 | bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) | 516 | bool OFileViewFileListView::eventFilter (QObject *, QEvent *e) |
515 | { | 517 | { |
516 | if ( e->type() == QEvent::KeyPress ) | 518 | if ( e->type() == QEvent::KeyPress ) |
517 | { | 519 | { |
518 | QKeyEvent *k = (QKeyEvent *)e; | 520 | QKeyEvent *k = (QKeyEvent *)e; |
519 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) | 521 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) |
520 | { | 522 | { |
521 | slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); | 523 | slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); |
522 | return true; | 524 | return true; |
523 | } | 525 | } |
524 | } | 526 | } |
525 | return false; | 527 | return false; |
526 | } | 528 | } |
527 | 529 | ||
528 | void OFileViewFileListView::connectSlots() | 530 | void OFileViewFileListView::connectSlots() |
529 | { | 531 | { |
530 | connect(m_view, SIGNAL(clicked(QListViewItem*) ), | 532 | connect(m_view, SIGNAL(clicked(QListViewItem*) ), |
531 | this, SLOT(slotCurrentChanged(QListViewItem*) ) ); | 533 | this, SLOT(slotCurrentChanged(QListViewItem*) ) ); |
532 | connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ), | 534 | connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ), |
533 | this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) ); | 535 | this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) ); |
534 | } | 536 | } |
535 | 537 | ||
536 | void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) | 538 | void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) |
537 | { | 539 | { |
538 | if (!item) | 540 | if (!item) |
539 | return; | 541 | return; |
540 | #if 0 | 542 | #if 0 |
541 | 543 | ||
542 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); | 544 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); |
543 | 545 | ||
544 | if (!sel->isDir() ) | 546 | if (!sel->isDir() ) |
545 | { | 547 | { |
546 | selector()->m_lneEdit->setText( sel->text(1) ); | 548 | selector()->m_lneEdit->setText( sel->text(1) ); |
547 | // if in fileselector mode we will emit selected | 549 | // if in fileselector mode we will emit selected |
548 | if ( selector()->mode() == OFileSelector::FileSelector ) | 550 | if ( selector()->mode() == OFileSelector::FileSelector ) |
549 | { | 551 | { |
550 | odebug << "slot Current Changed" << oendl; | 552 | odebug << "slot Current Changed" << oendl; |
551 | QStringList str = QStringList::split("->", sel->text(1) ); | 553 | QStringList str = QStringList::split("->", sel->text(1) ); |
552 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); | 554 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); |
553 | emit selector()->fileSelected( path ); | 555 | emit selector()->fileSelected( path ); |
554 | DocLnk lnk( path ); | 556 | DocLnk lnk( path ); |
555 | emit selector()->fileSelected( lnk ); | 557 | emit selector()->fileSelected( lnk ); |
556 | } | 558 | } |
557 | } | 559 | } |
558 | #endif | 560 | #endif |
559 | } | 561 | } |
560 | 562 | ||
561 | void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) | 563 | void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) |
562 | { | 564 | { |
563 | if (!item || ( button != Qt::LeftButton) ) | 565 | if (!item || ( button != Qt::LeftButton) ) |
564 | return; | 566 | return; |
565 | 567 | ||
566 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); | 568 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); |
567 | if (!sel->isLocked() ) | 569 | if (!sel->isLocked() ) |
568 | { | 570 | { |
569 | QStringList str = QStringList::split("->", sel->text(1) ); | 571 | QStringList str = QStringList::split("->", sel->text(1) ); |
570 | if (sel->isDir() ) | 572 | if (sel->isDir() ) |
571 | { | 573 | { |
572 | m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); | 574 | m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); |
573 | emit selector()->dirSelected( m_currentDir ); | 575 | emit selector()->dirSelected( m_currentDir ); |
574 | reread( m_all ); | 576 | reread( m_all ); |
575 | } | 577 | } |
576 | else | 578 | else |
577 | { // file | 579 | { // file |
578 | odebug << "slot Clicked" << oendl; | 580 | odebug << "slot Clicked" << oendl; |
579 | selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); | 581 | selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); |
580 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); | 582 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); |
581 | emit selector()->fileSelected( path ); | 583 | emit selector()->fileSelected( path ); |
582 | DocLnk lnk( path ); | 584 | DocLnk lnk( path ); |
583 | emit selector()->fileSelected( lnk ); | 585 | emit selector()->fileSelected( lnk ); |
584 | } | 586 | } |
585 | } // not locked | 587 | } // not locked |
586 | } | 588 | } |
587 | 589 | ||
588 | void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) | 590 | void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) |
589 | { | 591 | { |
590 | MimeType type( info->absFilePath() ); | 592 | MimeType type( info->absFilePath() ); |
591 | if (!compliesMime( type.id() ) ) | 593 | if (!compliesMime( type.id() ) ) |
592 | return; | 594 | return; |
593 | 595 | ||
594 | QPixmap pix = type.pixmap(); | 596 | QPixmap pix = type.pixmap(); |
595 | QString dir, name; bool locked; | 597 | QString dir, name; bool locked; |
596 | if ( pix.isNull() ) | 598 | if ( pix.isNull() ) |
597 | { | 599 | { |
598 | QWMatrix matrix; | 600 | QWMatrix matrix; |
599 | QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); | 601 | QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); |
600 | matrix.scale( .4, .4 ); | 602 | matrix.scale( .4, .4 ); |
601 | pix = pixer.xForm( matrix ); | 603 | pix = pixer.xForm( matrix ); |
602 | } | 604 | } |
603 | dir = info->dirPath( true ); | 605 | dir = info->dirPath( true ); |
604 | locked = false; | 606 | locked = false; |
605 | if ( symlink ) | 607 | if ( symlink ) |
606 | name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); | 608 | name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); |
607 | else | 609 | else |
608 | { | 610 | { |
609 | name = info->fileName(); | 611 | name = info->fileName(); |
610 | if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || | 612 | if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || |
611 | ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) | 613 | ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) |
612 | { | 614 | { |
613 | locked = true; pix = Resource::loadPixmap("locked"); | 615 | locked = true; pix = Resource::loadPixmap("locked"); |
614 | } | 616 | } |
615 | } | 617 | } |
616 | (void)new OFileSelectorItem( m_view, pix, name, | 618 | (void)new OFileSelectorItem( m_view, pix, name, |
617 | info->lastModified().toString(), QString::number( info->size() ), | 619 | info->lastModified().toString(), QString::number( info->size() ), |
618 | dir, locked ); | 620 | dir, locked ); |
619 | } | 621 | } |
620 | 622 | ||
621 | void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) | 623 | void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) |
622 | { | 624 | { |
623 | bool locked = false; QString name; QPixmap pix; | 625 | bool locked = false; QString name; QPixmap pix; |
624 | 626 | ||
625 | if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || | 627 | if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || |
626 | ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) | 628 | ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) |
627 | { | 629 | { |
628 | locked = true; | 630 | locked = true; |
629 | if ( symlink ) | 631 | if ( symlink ) |
630 | pix = Resource::loadPixmap( "opie/symlink" ); | 632 | pix = Resource::loadPixmap( "opie/symlink" ); |
631 | else | 633 | else |
632 | pix = Resource::loadPixmap( "lockedfolder" ); | 634 | pix = Resource::loadPixmap( "lockedfolder" ); |
633 | } | 635 | } |
634 | else | 636 | else |
635 | pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder"); | 637 | pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder"); |
636 | 638 | ||
637 | name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() : | 639 | name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() : |
638 | info->fileName(); | 640 | info->fileName(); |
639 | 641 | ||
640 | (void)new OFileSelectorItem( m_view, pix, name, | 642 | (void)new OFileSelectorItem( m_view, pix, name, |
641 | info->lastModified().toString(), | 643 | info->lastModified().toString(), |
642 | QString::number( info->size() ), | 644 | QString::number( info->size() ), |
@@ -822,312 +824,319 @@ void OFileViewFileSystem::activate( const QString& str) | |||
822 | * @short new and complete c'tor | 824 | * @short new and complete c'tor |
823 | * | 825 | * |
824 | * Create a OFileSelector to let the user select a file. It can | 826 | * Create a OFileSelector to let the user select a file. It can |
825 | * either be used to open a file, select a save name in a dir or | 827 | * either be used to open a file, select a save name in a dir or |
826 | * as a dropin for the FileSelector. | 828 | * as a dropin for the FileSelector. |
827 | * | 829 | * |
828 | * <pre> | 830 | * <pre> |
829 | * QMap<QString, QStringList> mimeTypes; | 831 | * QMap<QString, QStringList> mimeTypes; |
830 | * QStringList types; | 832 | * QStringList types; |
831 | * types << "text@slash* "; | 833 | * types << "text@slash* "; |
832 | * types << "audio@slash*"; | 834 | * types << "audio@slash*"; |
833 | * mimeTypes.insert( tr("Audio and Text"), types ); | 835 | * mimeTypes.insert( tr("Audio and Text"), types ); |
834 | * mimeTypes.insert( tr("All"), "*@slash*); | 836 | * mimeTypes.insert( tr("All"), "*@slash*); |
835 | * | 837 | * |
836 | * now you could create your fileselector | 838 | * now you could create your fileselector |
837 | * </pre> | 839 | * </pre> |
838 | * | 840 | * |
839 | * | 841 | * |
840 | * @param parent the parent of this widget | 842 | * @param parent the parent of this widget |
841 | * @param mode The mode from the enum Mode (Open,Save,FILESELECTOR) | 843 | * @param mode The mode from the enum Mode (Open,Save,FILESELECTOR) |
842 | * @param sel The selector to be used | 844 | * @param sel The selector to be used |
843 | * @param dirName The name of the dir to start int | 845 | * @param dirName The name of the dir to start int |
844 | * @param fileName The fileName placed in the fileselector lineedit | 846 | * @param fileName The fileName placed in the fileselector lineedit |
845 | * @param mimetypes The MimeType map of used mimetypes | 847 | * @param mimetypes The MimeType map of used mimetypes |
846 | * @param showNew Show a New Button. Most likely to be used in the FileSelector view. | 848 | * @param showNew Show a New Button. Most likely to be used in the FileSelector view. |
847 | * @param showClose Show a Close Button. Most likely to be used in FileSelector view. | 849 | * @param showClose Show a Close Button. Most likely to be used in FileSelector view. |
848 | * | 850 | * |
849 | */ | 851 | */ |
850 | OFileSelector::OFileSelector( QWidget* parent, int mode, int sel, | 852 | OFileSelector::OFileSelector( QWidget* parent, int mode, int sel, |
851 | const QString& dirName, const QString& fileName, | 853 | const QString& dirName, const QString& fileName, |
852 | const MimeTypes& mimetypes, | 854 | const MimeTypes& mimetypes, |
853 | bool showNew, bool showClose) | 855 | bool showNew, bool showClose) |
854 | :QWidget( parent, "OFileSelector" ) | 856 | :QWidget( parent, "OFileSelector" ) |
855 | { | 857 | { |
856 | m_current = 0; | 858 | m_current = 0; |
857 | m_shNew = showNew; | 859 | m_shNew = showNew; |
858 | m_shClose = showClose; | 860 | m_shClose = showClose; |
859 | m_mimeType = mimetypes; | 861 | m_mimeType = mimetypes; |
860 | m_startDir = dirName; | 862 | m_startDir = dirName; |
861 | 863 | ||
862 | m_mode = mode; | 864 | m_mode = mode; |
863 | m_selector = sel; | 865 | m_selector = sel; |
864 | 866 | ||
865 | initUI(); | 867 | initUI(); |
866 | m_lneEdit->setText( fileName ); | 868 | m_lneEdit->setText( fileName ); |
867 | initMime(); | 869 | initMime(); |
868 | initViews(); | 870 | initViews(); |
869 | 871 | ||
870 | QString str; | 872 | QString str; |
871 | switch ( m_selector ) | 873 | switch ( m_selector ) |
872 | { | 874 | { |
873 | default: | 875 | default: |
874 | case Normal: | 876 | case Normal: |
875 | str = QObject::tr("Documents"); | 877 | str = QObject::tr("Documents"); |
876 | m_cmbView->setCurrentItem( 0 ); | 878 | m_cmbView->setCurrentItem( 0 ); |
877 | break; | 879 | break; |
878 | case Extended: | 880 | case Extended: |
879 | str = QObject::tr("Files"); | 881 | str = QObject::tr("Files"); |
880 | m_cmbView->setCurrentItem( 1 ); | 882 | m_cmbView->setCurrentItem( 1 ); |
881 | break; | 883 | break; |
882 | case ExtendedAll: | 884 | case ExtendedAll: |
883 | str = QObject::tr("All Files"); | 885 | str = QObject::tr("All Files"); |
884 | m_cmbView->setCurrentItem( 2 ); | 886 | m_cmbView->setCurrentItem( 2 ); |
885 | break; | 887 | break; |
886 | } | 888 | } |
887 | slotViewChange( str ); | 889 | slotViewChange( str ); |
888 | 890 | ||
889 | } | 891 | } |
890 | 892 | ||
891 | 893 | ||
892 | /** | 894 | /** |
893 | * This a convience c'tor to just substitute the use of FileSelector | 895 | * This a convience c'tor to just substitute the use of FileSelector |
894 | */ | 896 | */ |
895 | OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, | 897 | OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, |
896 | bool showNew, bool showClose ) | 898 | bool showNew, bool showClose ) |
897 | : QWidget( parent, name ) | 899 | : QWidget( parent, name ) |
898 | { | 900 | { |
899 | m_current = 0; | 901 | m_current = 0; |
900 | m_shNew = showNew; | 902 | m_shNew = showNew; |
901 | m_shClose = showClose; | 903 | m_shClose = showClose; |
902 | m_startDir = QPEApplication::documentDir(); | 904 | m_startDir = QPEApplication::documentDir(); |
903 | 905 | ||
904 | if (!mimeFilter.isEmpty() ) | 906 | if (!mimeFilter.isEmpty() ) |
905 | m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); | 907 | m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); |
906 | 908 | ||
907 | m_mode = OFileSelector::FileSelector; | 909 | m_mode = OFileSelector::FileSelector; |
908 | m_selector = OFileSelector::Normal; | 910 | m_selector = OFileSelector::Normal; |
909 | 911 | ||
910 | initUI(); | 912 | initUI(); |
911 | initMime(); | 913 | initMime(); |
912 | initViews(); | 914 | initViews(); |
913 | m_cmbView->setCurrentItem( 0 ); | 915 | m_cmbView->setCurrentItem( 0 ); |
914 | slotViewChange( QObject::tr("Documents") ); | 916 | slotViewChange( QObject::tr("Documents") ); |
915 | } | 917 | } |
916 | 918 | ||
917 | /* | 919 | /* |
918 | * INIT UI will set up the basic GUI | 920 | * INIT UI will set up the basic GUI |
919 | * Layout: Simple VBoxLayout | 921 | * Layout: Simple VBoxLayout |
920 | * On top a WidgetStack containing the Views... | 922 | * On top a WidgetStack containing the Views... |
921 | * - List View | 923 | * - List View |
922 | * - Document View | 924 | * - Document View |
923 | * Below we will have a Label + LineEdit | 925 | * Below we will have a Label + LineEdit |
924 | * Below we will have two ComoBoxes one for choosing the view one for | 926 | * Below we will have two ComoBoxes one for choosing the view one for |
925 | * choosing the mimetype | 927 | * choosing the mimetype |
926 | */ | 928 | */ |
927 | void OFileSelector::initUI() | 929 | void OFileSelector::initUI() |
928 | { | 930 | { |
929 | QVBoxLayout* lay = new QVBoxLayout( this ); | 931 | QVBoxLayout* lay = new QVBoxLayout( this ); |
930 | 932 | ||
931 | m_stack = new QWidgetStack( this ); | 933 | m_stack = new QWidgetStack( this ); |
932 | lay->addWidget( m_stack, 1000 ); | 934 | lay->addWidget( m_stack, 1000 ); |
933 | 935 | ||
934 | m_nameBox = new QHBox( this ); | 936 | m_nameBox = new QHBox( this ); |
935 | (void)new QLabel( tr("Name:"), m_nameBox ); | 937 | (void)new QLabel( tr("Name:"), m_nameBox ); |
936 | m_lneEdit = new QLineEdit( m_nameBox ); | 938 | m_lneEdit = new QLineEdit( m_nameBox ); |
937 | m_lneEdit ->installEventFilter(this); | 939 | m_lneEdit ->installEventFilter(this); |
938 | lay->addWidget( m_nameBox ); | 940 | lay->addWidget( m_nameBox ); |
939 | 941 | ||
940 | m_cmbBox = new QHBox( this ); | 942 | m_cmbBox = new QHBox( this ); |
941 | m_cmbView = new QComboBox( m_cmbBox ); | 943 | m_cmbView = new QComboBox( m_cmbBox ); |
942 | m_cmbMime = new QComboBox( m_cmbBox ); | 944 | m_cmbMime = new QComboBox( m_cmbBox ); |
943 | lay->addWidget( m_cmbBox ); | 945 | lay->addWidget( m_cmbBox ); |
944 | } | 946 | } |
945 | 947 | ||
946 | /* | 948 | /* |
947 | * This will make sure that the return key in the name edit causes dialogs to close | 949 | * This will make sure that the return key in the name edit causes dialogs to close |
948 | */ | 950 | */ |
949 | 951 | ||
950 | bool OFileSelector::eventFilter (QObject *o, QEvent *e) | 952 | bool OFileSelector::eventFilter (QObject *, QEvent *e) |
951 | { | 953 | { |
952 | if ( e->type() == QEvent::KeyPress ) | 954 | if ( e->type() == QEvent::KeyPress ) |
953 | { | 955 | { |
954 | QKeyEvent *k = (QKeyEvent *)e; | 956 | QKeyEvent *k = (QKeyEvent *)e; |
955 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) | 957 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) |
956 | { | 958 | { |
957 | emit ok(); | 959 | emit ok(); |
958 | return true; | 960 | return true; |
959 | } | 961 | } |
960 | } | 962 | } |
961 | return false; | 963 | return false; |
962 | } | 964 | } |
963 | 965 | ||
964 | /* | 966 | /* |
965 | * This will insert the MimeTypes into the Combo Box | 967 | * This will insert the MimeTypes into the Combo Box |
966 | * And also connect the changed signal | 968 | * And also connect the changed signal |
967 | * | 969 | * |
968 | * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes | 970 | * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes |
969 | */ | 971 | */ |
970 | void OFileSelector::initMime() | 972 | void OFileSelector::initMime() |
971 | { | 973 | { |
972 | MimeTypes::Iterator it; | 974 | MimeTypes::Iterator it; |
973 | for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) | 975 | for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) |
974 | { | 976 | { |
975 | m_cmbMime->insertItem( it.key() ); | 977 | m_cmbMime->insertItem( it.key() ); |
976 | } | 978 | } |
977 | m_cmbMime->setCurrentItem( 0 ); | 979 | m_cmbMime->setCurrentItem( 0 ); |
978 | 980 | ||
979 | connect( m_cmbMime, SIGNAL(activated(int) ), | 981 | connect( m_cmbMime, SIGNAL(activated(int) ), |
980 | this, SLOT(slotMimeTypeChanged() ) ); | 982 | this, SLOT(slotMimeTypeChanged() ) ); |
981 | 983 | ||
982 | } | 984 | } |
983 | 985 | ||
984 | void OFileSelector::initViews() | 986 | void OFileSelector::initViews() |
985 | { | 987 | { |
986 | m_cmbView->insertItem( QObject::tr("Documents") ); | 988 | m_cmbView->insertItem( QObject::tr("Documents") ); |
987 | m_cmbView->insertItem( QObject::tr("Files") ); | 989 | m_cmbView->insertItem( QObject::tr("Files") ); |
988 | m_cmbView->insertItem( QObject::tr("All Files") ); | 990 | m_cmbView->insertItem( QObject::tr("All Files") ); |
989 | connect(m_cmbView, SIGNAL(activated(const QString&) ), | 991 | connect(m_cmbView, SIGNAL(activated(const QString&) ), |
990 | this, SLOT(slotViewChange(const QString&) ) ); | 992 | this, SLOT(slotViewChange(const QString&) ) ); |
991 | 993 | ||
992 | 994 | ||
993 | m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); | 995 | m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); |
994 | 996 | ||
995 | /* see above why add both */ | 997 | /* see above why add both */ |
996 | OFileViewInterface* in = new OFileViewFileSystem( this ); | 998 | OFileViewInterface* in = new OFileViewFileSystem( this ); |
997 | m_views.insert( QObject::tr("Files"), in ); | 999 | m_views.insert( QObject::tr("Files"), in ); |
998 | m_views.insert( QObject::tr("All Files"), in ); | 1000 | m_views.insert( QObject::tr("All Files"), in ); |
999 | } | 1001 | } |
1000 | 1002 | ||
1003 | void OFileSelector::registerView( const Internal::OFileViewInterface* iface ) { | ||
1004 | m_viewsPtr.append( iface ); | ||
1005 | } | ||
1006 | |||
1007 | |||
1001 | /** | 1008 | /** |
1002 | * d'tor | 1009 | * d'tor |
1003 | */ | 1010 | */ |
1004 | OFileSelector::~OFileSelector() | 1011 | OFileSelector::~OFileSelector() |
1005 | { | 1012 | { |
1013 | m_viewsPtr.setAutoDelete( true ); | ||
1014 | m_viewsPtr.clear(); | ||
1006 | } | 1015 | } |
1007 | 1016 | ||
1008 | 1017 | ||
1009 | 1018 | ||
1010 | /** | 1019 | /** |
1011 | * Convience function for the fileselector | 1020 | * Convience function for the fileselector |
1012 | * make sure to delete the DocLnk | 1021 | * make sure to delete the DocLnk |
1013 | * | 1022 | * |
1014 | * @see DocLnk | 1023 | * @see DocLnk |
1015 | * @todo remove in ODP | 1024 | * @todo remove in ODP |
1016 | */ | 1025 | */ |
1017 | const DocLnk* OFileSelector::selected() | 1026 | const DocLnk* OFileSelector::selected() |
1018 | { | 1027 | { |
1019 | DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); | 1028 | DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); |
1020 | return lnk; | 1029 | return lnk; |
1021 | } | 1030 | } |
1022 | 1031 | ||
1023 | /** | 1032 | /** |
1024 | * | 1033 | * |
1025 | * @return the name of the selected file | 1034 | * @return the name of the selected file |
1026 | */ | 1035 | */ |
1027 | QString OFileSelector::selectedName()const | 1036 | QString OFileSelector::selectedName()const |
1028 | { | 1037 | { |
1029 | return currentView()->selectedName(); | 1038 | return currentView()->selectedName(); |
1030 | } | 1039 | } |
1031 | 1040 | ||
1032 | 1041 | ||
1033 | /** | 1042 | /** |
1034 | * @return the selected path | 1043 | * @return the selected path |
1035 | */ | 1044 | */ |
1036 | QString OFileSelector::selectedPath()const | 1045 | QString OFileSelector::selectedPath()const |
1037 | { | 1046 | { |
1038 | return currentView()->selectedPath(); | 1047 | return currentView()->selectedPath(); |
1039 | } | 1048 | } |
1040 | 1049 | ||
1041 | /** | 1050 | /** |
1042 | * @return the directory name | 1051 | * @return the directory name |
1043 | */ | 1052 | */ |
1044 | QString OFileSelector::directory()const | 1053 | QString OFileSelector::directory()const |
1045 | { | 1054 | { |
1046 | return currentView()->directory(); | 1055 | return currentView()->directory(); |
1047 | } | 1056 | } |
1048 | 1057 | ||
1049 | /** | 1058 | /** |
1050 | * @return a DocLnk for the selected document | 1059 | * @return a DocLnk for the selected document |
1051 | */ | 1060 | */ |
1052 | DocLnk OFileSelector::selectedDocument()const | 1061 | DocLnk OFileSelector::selectedDocument()const |
1053 | { | 1062 | { |
1054 | return currentView()->selectedDocument(); | 1063 | return currentView()->selectedDocument(); |
1055 | } | 1064 | } |
1056 | 1065 | ||
1057 | /** | 1066 | /** |
1058 | * @return the number of items for the current view | 1067 | * @return the number of items for the current view |
1059 | */ | 1068 | */ |
1060 | int OFileSelector::fileCount()const | 1069 | int OFileSelector::fileCount()const |
1061 | { | 1070 | { |
1062 | return currentView()->fileCount(); | 1071 | return currentView()->fileCount(); |
1063 | } | 1072 | } |
1064 | 1073 | ||
1065 | /** | 1074 | /** |
1066 | * @return reparse the file content | 1075 | * @return reparse the file content |
1067 | */ | 1076 | */ |
1068 | void OFileSelector::reread() | 1077 | void OFileSelector::reread() |
1069 | { | 1078 | { |
1070 | return currentView()->reread(); | 1079 | return currentView()->reread(); |
1071 | } | 1080 | } |
1072 | 1081 | ||
1073 | OFileViewInterface* OFileSelector::currentView()const | 1082 | OFileViewInterface* OFileSelector::currentView()const |
1074 | { | 1083 | { |
1075 | return m_current; | 1084 | return m_current; |
1076 | } | 1085 | } |
1077 | 1086 | ||
1078 | bool OFileSelector::showNew()const | 1087 | bool OFileSelector::showNew()const |
1079 | { | 1088 | { |
1080 | return m_shNew; | 1089 | return m_shNew; |
1081 | } | 1090 | } |
1082 | 1091 | ||
1083 | bool OFileSelector::showClose()const | 1092 | bool OFileSelector::showClose()const |
1084 | { | 1093 | { |
1085 | return m_shClose; | 1094 | return m_shClose; |
1086 | } | 1095 | } |
1087 | 1096 | ||
1088 | MimeTypes OFileSelector::mimeTypes()const | 1097 | MimeTypes OFileSelector::mimeTypes()const |
1089 | { | 1098 | { |
1090 | return m_mimeType; | 1099 | return m_mimeType; |
1091 | } | 1100 | } |
1092 | 1101 | ||
1093 | /** | 1102 | /** |
1094 | * @return the Mode of the OFileSelector | 1103 | * @return the Mode of the OFileSelector |
1095 | */ | 1104 | */ |
1096 | int OFileSelector::mode()const | 1105 | int OFileSelector::mode()const |
1097 | { | 1106 | { |
1098 | return m_mode; | 1107 | return m_mode; |
1099 | } | 1108 | } |
1100 | 1109 | ||
1101 | 1110 | ||
1102 | /** | 1111 | /** |
1103 | * @return the Selector of the OFileSelector | 1112 | * @return the Selector of the OFileSelector |
1104 | */ | 1113 | */ |
1105 | int OFileSelector::selector()const | 1114 | int OFileSelector::selector()const |
1106 | { | 1115 | { |
1107 | return m_selector; | 1116 | return m_selector; |
1108 | } | 1117 | } |
1109 | 1118 | ||
1110 | QStringList OFileSelector::currentMimeType()const | 1119 | QStringList OFileSelector::currentMimeType()const |
1111 | { | 1120 | { |
1112 | return m_mimeType[m_cmbMime->currentText()]; | 1121 | return m_mimeType[m_cmbMime->currentText()]; |
1113 | } | 1122 | } |
1114 | 1123 | ||
1115 | void OFileSelector::slotMimeTypeChanged() | 1124 | void OFileSelector::slotMimeTypeChanged() |
1116 | { | 1125 | { |
1117 | reread(); | 1126 | reread(); |
1118 | } | 1127 | } |
1119 | 1128 | ||
1120 | void OFileSelector::slotDocLnkBridge( const DocLnk& lnk) | 1129 | void OFileSelector::slotDocLnkBridge( const DocLnk& lnk) |
1121 | { | 1130 | { |
1122 | m_lneEdit->setText( lnk.name() ); | 1131 | m_lneEdit->setText( lnk.name() ); |
1123 | emit fileSelected( lnk ); | 1132 | emit fileSelected( lnk ); |
1124 | emit fileSelected( lnk.name() ); | 1133 | emit fileSelected( lnk.name() ); |
1125 | } | 1134 | } |
1126 | 1135 | ||
1127 | void OFileSelector::slotFileBridge( const QString& str) | 1136 | void OFileSelector::slotFileBridge( const QString& str) |
1128 | { | 1137 | { |
1129 | DocLnk lnk( str ); | 1138 | DocLnk lnk( str ); |
1130 | emit fileSelected( lnk ); | 1139 | emit fileSelected( lnk ); |
1131 | } | 1140 | } |
1132 | 1141 | ||
1133 | void OFileSelector::slotViewChange( const QString& view ) | 1142 | void OFileSelector::slotViewChange( const QString& view ) |
diff --git a/libopie2/opieui/fileselector/ofileselector.h b/libopie2/opieui/fileselector/ofileselector.h index 8bcd9ee..de2b98a 100644 --- a/libopie2/opieui/fileselector/ofileselector.h +++ b/libopie2/opieui/fileselector/ofileselector.h | |||
@@ -1,222 +1,232 @@ | |||
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,2003 Holger Freyther <zecke@handhelds.org> | 3 | .=l. Copyright (C) 2002,2003 Holger Freyther <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 | This is based on code and ideas of | 30 | This is based on code and ideas of |
31 | L. J. Potter ljp@llornkcor.com | 31 | L. J. Potter ljp@llornkcor.com |
32 | Thanks a lot | 32 | Thanks a lot |
33 | */ | 33 | */ |
34 | 34 | ||
35 | #ifndef OFILESELECTOR_H | 35 | #ifndef OFILESELECTOR_H |
36 | #define OFILESELECTOR_H | 36 | #define OFILESELECTOR_H |
37 | 37 | ||
38 | /* OPIE */ | 38 | /* OPIE */ |
39 | #include <qpe/applnk.h> | 39 | #include <qpe/applnk.h> |
40 | 40 | ||
41 | /* QT */ | 41 | /* QT */ |
42 | #include <qlist.h> | 42 | #include <qlist.h> |
43 | #include <qwidget.h> | 43 | #include <qwidget.h> |
44 | #include <qmap.h> | 44 | #include <qmap.h> |
45 | #include <qvaluelist.h> | 45 | #include <qvaluelist.h> |
46 | #include <qstringlist.h> | 46 | #include <qstringlist.h> |
47 | #include <qlist.h> | ||
47 | 48 | ||
48 | class QLineEdit; | 49 | class QLineEdit; |
49 | class QComboBox; | 50 | class QComboBox; |
50 | class QWidgetStack; | 51 | class QWidgetStack; |
51 | class QHBox; | 52 | class QHBox; |
52 | 53 | ||
53 | typedef QMap<QString, QStringList> MimeTypes; | 54 | typedef QMap<QString, QStringList> MimeTypes; |
54 | 55 | ||
55 | namespace Opie { | 56 | namespace Opie { |
56 | namespace Ui { | 57 | namespace Ui { |
57 | 58 | ||
58 | namespace Internal { | 59 | namespace Internal { |
59 | class OFileViewInterface; | 60 | class OFileViewInterface; |
60 | class OFileViewFileListView; | 61 | class OFileViewFileListView; |
61 | } | 62 | } |
62 | 63 | ||
63 | 64 | ||
64 | /** | 65 | /** |
65 | * @short a dropin replacement for the FileSelector | 66 | * @short a dropin replacement for the FileSelector |
66 | * | 67 | * |
67 | * This class is first used insert the OFileDialog. | 68 | * This class is first used insert the OFileDialog. |
68 | * It supports multiple view and mimetype filtering for now. | 69 | * It supports multiple view and mimetype filtering for now. |
69 | * | 70 | * |
70 | * @see OFileDialog | 71 | * @see OFileDialog |
71 | * @see FileSelector | 72 | * @see FileSelector |
72 | * @author zecke | 73 | * @author zecke |
73 | * @version 0.1 | 74 | * @version 0.1 |
74 | */ | 75 | */ |
75 | class OFileSelector : public QWidget | 76 | class OFileSelector : public QWidget |
76 | { | 77 | { |
77 | Q_OBJECT | 78 | Q_OBJECT |
78 | friend class Internal::OFileViewInterface; | 79 | friend class Internal::OFileViewInterface; |
79 | friend class Internal::OFileViewFileListView; | 80 | friend class Internal::OFileViewFileListView; |
80 | 81 | ||
81 | public: | 82 | public: |
82 | /** | 83 | /** |
83 | * The Mode of the Fileselector | 84 | * The Mode of the Fileselector |
84 | * Open = Open A File | 85 | * Open = Open A File |
85 | * Save = Save a File | 86 | * Save = Save a File |
86 | * FILESELECTOR = As A GUI in a screen to select a file | 87 | * FILESELECTOR = As A GUI in a screen to select a file |
87 | */ | 88 | */ |
88 | enum Mode { Open=1, Save=2, FileSelector=4, OPEN=1, SAVE=2, FILESELECTOR=4 }; | 89 | enum Mode { Open=1, Save=2, FileSelector=4, OPEN=1, SAVE=2, FILESELECTOR=4 }; |
89 | // enum OldMode { OPEN=1, SAVE=2, FILESELECTOR = 4 }; | 90 | // enum OldMode { OPEN=1, SAVE=2, FILESELECTOR = 4 }; |
90 | /** | 91 | /** |
91 | * Normal = The old FileSelector | 92 | * Normal = The old FileSelector |
92 | * Extended = Dir View | 93 | * Extended = Dir View |
93 | * ExtendedAll = Dir View with all hidden files | 94 | * ExtendedAll = Dir View with all hidden files |
94 | * Default = What the vendor considers best | 95 | * Default = What the vendor considers best |
95 | */ | 96 | */ |
96 | enum Selector { Normal = 0, Extended=1, ExtendedAll =2, Default=3, NORMAL=0,EXTENDED=1, EXTENDED_ALL =2, DEFAULT=3 }; | 97 | enum Selector { Normal = 0, Extended=1, ExtendedAll =2, Default=3, NORMAL=0,EXTENDED=1, EXTENDED_ALL =2, DEFAULT=3 }; |
97 | // enum OldSelector { NORMAL = 0, EXTENDED =1, EXTENDED_ALL = 2}; | 98 | // enum OldSelector { NORMAL = 0, EXTENDED =1, EXTENDED_ALL = 2}; |
98 | 99 | ||
99 | OFileSelector(QWidget* parent, int mode, int selector, | 100 | OFileSelector(QWidget* parent, int mode, int selector, |
100 | const QString& dirName, | 101 | const QString& dirName, |
101 | const QString& fileName, | 102 | const QString& fileName, |
102 | const MimeTypes& mimetypes = MimeTypes(), | 103 | const MimeTypes& mimetypes = MimeTypes(), |
103 | bool newVisible = FALSE, bool closeVisible = FALSE ); | 104 | bool newVisible = FALSE, bool closeVisible = FALSE ); |
104 | 105 | ||
105 | OFileSelector(const QString& mimeFilter, QWidget* parent, | 106 | OFileSelector(const QString& mimeFilter, QWidget* parent, |
106 | const char* name = 0, bool newVisible = TRUE, bool closeVisible = FALSE ); | 107 | const char* name = 0, bool newVisible = TRUE, bool closeVisible = FALSE ); |
107 | ~OFileSelector(); | 108 | ~OFileSelector(); |
108 | 109 | ||
109 | const DocLnk* selected(); | 110 | const DocLnk* selected(); |
110 | 111 | ||
111 | QString selectedName()const; | 112 | QString selectedName()const; |
112 | QString selectedPath()const; | 113 | QString selectedPath()const; |
113 | QString directory()const; | 114 | QString directory()const; |
114 | 115 | ||
115 | DocLnk selectedDocument()const; | 116 | DocLnk selectedDocument()const; |
116 | 117 | ||
117 | int fileCount()const; | 118 | int fileCount()const; |
118 | void reread(); | 119 | void reread(); |
119 | 120 | ||
120 | int mode()const; | 121 | int mode()const; |
121 | int selector()const; | 122 | int selector()const; |
122 | 123 | ||
123 | /** | 124 | /** |
124 | * Set the Icon visible | 125 | * Set the Icon visible |
125 | * @param b Show or Hide the New Button | 126 | * @param b Show or Hide the New Button |
126 | */ | 127 | */ |
127 | void setNewVisible( bool b ); | 128 | void setNewVisible( bool b ); |
128 | 129 | ||
129 | /** | 130 | /** |
130 | * Set the Icon visible | 131 | * Set the Icon visible |
131 | */ | 132 | */ |
132 | void setCloseVisible( bool b ); | 133 | void setCloseVisible( bool b ); |
133 | 134 | ||
134 | /** | 135 | /** |
135 | * Set the Name Line visible | 136 | * Set the Name Line visible |
136 | */ | 137 | */ |
137 | void setNameVisible( bool b ); | 138 | void setNameVisible( bool b ); |
138 | 139 | ||
139 | signals: | 140 | signals: |
140 | /** | 141 | /** |
141 | * dirSelected is emitted whenever changed into a different dir | 142 | * dirSelected is emitted whenever changed into a different dir |
142 | */ | 143 | */ |
143 | void dirSelected( const QString& ); | 144 | void dirSelected( const QString& ); |
144 | 145 | ||
145 | /** | 146 | /** |
146 | * fileSelected is emitted when a file is selected | 147 | * fileSelected is emitted when a file is selected |
147 | * it uses a DocLnk as parameter | 148 | * it uses a DocLnk as parameter |
148 | */ | 149 | */ |
149 | void fileSelected( const DocLnk& ); | 150 | void fileSelected( const DocLnk& ); |
150 | 151 | ||
151 | /** | 152 | /** |
152 | * fileSelected is emitted when a file is selected | 153 | * fileSelected is emitted when a file is selected |
153 | * the complete path is a parameter | 154 | * the complete path is a parameter |
154 | */ | 155 | */ |
155 | void fileSelected( const QString& ); | 156 | void fileSelected( const QString& ); |
156 | 157 | ||
157 | /** | 158 | /** |
158 | * Create a new File with a DocLnk | 159 | * Create a new File with a DocLnk |
159 | */ | 160 | */ |
160 | void newSelected( const DocLnk& ); | 161 | void newSelected( const DocLnk& ); |
161 | 162 | ||
162 | void closeMe(); | 163 | void closeMe(); |
163 | 164 | ||
164 | /** | 165 | /** |
165 | * Ok is emitted on a Qt::Key_Return or Q::Key_Enter | 166 | * Ok is emitted on a Qt::Key_Return or Q::Key_Enter |
166 | * in the line edit | 167 | * in the line edit |
167 | */ | 168 | */ |
168 | void ok(); | 169 | void ok(); |
169 | void cancel(); | 170 | void cancel(); |
170 | 171 | ||
171 | /* used by the ViewInterface */ | 172 | /* used by the ViewInterface */ |
172 | private: | 173 | private: |
173 | bool showNew()const; | 174 | bool showNew()const; |
174 | bool showClose()const; | 175 | bool showClose()const; |
175 | MimeTypes mimeTypes()const; | 176 | MimeTypes mimeTypes()const; |
176 | QStringList currentMimeType()const; | 177 | QStringList currentMimeType()const; |
177 | 178 | ||
178 | private: | 179 | private: |
179 | /* inits the Widgets */ | 180 | /* inits the Widgets */ |
180 | void initUI(); | 181 | void initUI(); |
181 | /* inits the MimeType ComboBox content + connects signals and slots */ | 182 | /* inits the MimeType ComboBox content + connects signals and slots */ |
182 | void initMime(); | 183 | void initMime(); |
183 | /* init the Views :) */ | 184 | /* init the Views :) */ |
184 | void initViews(); | 185 | void initViews(); |
185 | 186 | ||
187 | |||
188 | /* | ||
189 | * register a view for deletion. | ||
190 | * This happens on creation of a OFileViewInterface | ||
191 | */ | ||
192 | void registerView( const Internal::OFileViewInterface* ); | ||
193 | |||
186 | private: | 194 | private: |
187 | QLineEdit* m_lneEdit; // the LineEdit for the Name | 195 | QLineEdit* m_lneEdit; // the LineEdit for the Name |
188 | QComboBox *m_cmbView, *m_cmbMime; // two ComboBoxes to select the View and MimeType | 196 | QComboBox *m_cmbView, *m_cmbMime; // two ComboBoxes to select the View and MimeType |
189 | QWidgetStack* m_stack; // our widget stack which will contain the views | 197 | QWidgetStack* m_stack; // our widget stack which will contain the views |
190 | Internal::OFileViewInterface* currentView() const; // returns the currentView | 198 | Internal::OFileViewInterface* currentView() const; // returns the currentView |
191 | Internal::OFileViewInterface* m_current; // here is the view saved | 199 | Internal::OFileViewInterface* m_current; // here is the view saved |
192 | bool m_shNew : 1; // should we show New? | 200 | bool m_shNew : 1; // should we show New? |
193 | bool m_shClose : 1; // should we show Close? | 201 | bool m_shClose : 1; // should we show Close? |
194 | MimeTypes m_mimeType; // list of mimetypes | 202 | MimeTypes m_mimeType; // list of mimetypes |
195 | 203 | ||
196 | QMap<QString, Internal::OFileViewInterface*> m_views; // QString translated view name + ViewInterface Ptr | 204 | QMap<QString, Internal::OFileViewInterface*> m_views; // QString translated view name + ViewInterface Ptr |
205 | /* views register themselves automatically */ | ||
206 | QList<Internal::OFileViewInterface> m_viewsPtr; | ||
197 | QHBox* m_nameBox; // the LineEdit + Label is hold here | 207 | QHBox* m_nameBox; // the LineEdit + Label is hold here |
198 | QHBox* m_cmbBox; // this holds the two combo boxes | 208 | QHBox* m_cmbBox; // this holds the two combo boxes |
199 | 209 | ||
200 | QString m_startDir; | 210 | QString m_startDir; |
201 | int m_mode; | 211 | int m_mode; |
202 | int m_selector; | 212 | int m_selector; |
203 | 213 | ||
204 | struct Data; // used for future versions | 214 | struct Data; // used for future versions |
205 | Data *d; | 215 | Data *d; |
206 | 216 | ||
207 | private slots: | 217 | private slots: |
208 | void slotMimeTypeChanged(); | 218 | void slotMimeTypeChanged(); |
209 | 219 | ||
210 | /* will set the text of the lineedit and emit a fileChanged signal */ | 220 | /* will set the text of the lineedit and emit a fileChanged signal */ |
211 | void slotDocLnkBridge( const DocLnk& ); | 221 | void slotDocLnkBridge( const DocLnk& ); |
212 | void slotFileBridge( const QString& ); | 222 | void slotFileBridge( const QString& ); |
213 | void slotViewChange( const QString& ); | 223 | void slotViewChange( const QString& ); |
214 | 224 | ||
215 | bool eventFilter (QObject *o, QEvent *e); | 225 | bool eventFilter (QObject *o, QEvent *e); |
216 | 226 | ||
217 | }; | 227 | }; |
218 | 228 | ||
219 | } | 229 | } |
220 | } | 230 | } |
221 | 231 | ||
222 | #endif | 232 | #endif |