summaryrefslogtreecommitdiff
authorzecke <zecke>2002-09-29 16:53:10 (UTC)
committer zecke <zecke>2002-09-29 16:53:10 (UTC)
commit33ebc68a530393697724428f0e0db3a4807f3a9e (patch) (unidiff)
treef13affe84a0a4fce01c642c18b6b3c3f42d68e6b
parent3e8ee39d31b43f01524670df6cb048efc2194b9a (diff)
downloadopie-33ebc68a530393697724428f0e0db3a4807f3a9e.zip
opie-33ebc68a530393697724428f0e0db3a4807f3a9e.tar.gz
opie-33ebc68a530393697724428f0e0db3a4807f3a9e.tar.bz2
Add the possibility to hide/show the TypeCombo/CategorySelect
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/fileselector.cpp20
-rw-r--r--library/fileselector.h2
2 files changed, 22 insertions, 0 deletions
diff --git a/library/fileselector.cpp b/library/fileselector.cpp
index 382012f..7ff09b4 100644
--- a/library/fileselector.cpp
+++ b/library/fileselector.cpp
@@ -275,96 +275,97 @@ public:
275 275
276 If \a newVisible is TRUE, the widget has a button to allow the user 276 If \a newVisible is TRUE, the widget has a button to allow the user
277 the create "new" documents; this is useful for applications that can 277 the create "new" documents; this is useful for applications that can
278 create and edit documents but not suitable for applications that 278 create and edit documents but not suitable for applications that
279 only provide viewing. 279 only provide viewing.
280 280
281 \a closeVisible is deprecated 281 \a closeVisible is deprecated
282 282
283 \sa DocLnkSet::DocLnkSet() 283 \sa DocLnkSet::DocLnkSet()
284*/ 284*/
285FileSelector::FileSelector( const QString &f, QWidget *parent, const char *name, bool newVisible, bool closeVisible ) 285FileSelector::FileSelector( const QString &f, QWidget *parent, const char *name, bool newVisible, bool closeVisible )
286 : QVBox( parent, name ), filter( f ) 286 : QVBox( parent, name ), filter( f )
287{ 287{
288 setMargin( 0 ); 288 setMargin( 0 );
289 setSpacing( 0 ); 289 setSpacing( 0 );
290 290
291 d = new FileSelectorPrivate(); 291 d = new FileSelectorPrivate();
292 d->newDocItem = 0; 292 d->newDocItem = 0;
293 d->showNew = newVisible; 293 d->showNew = newVisible;
294 d->catId = -2; // All files 294 d->catId = -2; // All files
295 295
296 d->toolbar = new QHBox( this ); 296 d->toolbar = new QHBox( this );
297 d->toolbar->setBackgroundMode( PaletteButton ); // same colour as toolbars 297 d->toolbar->setBackgroundMode( PaletteButton ); // same colour as toolbars
298 d->toolbar->setSpacing( 0 ); 298 d->toolbar->setSpacing( 0 );
299 d->toolbar->hide(); 299 d->toolbar->hide();
300 300
301 QWidget *spacer = new QWidget( d->toolbar ); 301 QWidget *spacer = new QWidget( d->toolbar );
302 spacer->setBackgroundMode( PaletteButton ); 302 spacer->setBackgroundMode( PaletteButton );
303 303
304 QToolButton *tb = new QToolButton( d->toolbar ); 304 QToolButton *tb = new QToolButton( d->toolbar );
305 tb->setPixmap( Resource::loadPixmap( "close" ) ); 305 tb->setPixmap( Resource::loadPixmap( "close" ) );
306 connect( tb, SIGNAL( clicked() ), this, SIGNAL( closeMe() ) ); 306 connect( tb, SIGNAL( clicked() ), this, SIGNAL( closeMe() ) );
307 buttonClose = tb; 307 buttonClose = tb;
308 tb->setFixedSize( 18, 20 ); // tb->sizeHint() ); 308 tb->setFixedSize( 18, 20 ); // tb->sizeHint() );
309 tb->setAutoRaise( TRUE ); 309 tb->setAutoRaise( TRUE );
310 QToolTip::add( tb, tr( "Close the File Selector" ) ); 310 QToolTip::add( tb, tr( "Close the File Selector" ) );
311 QPEMenuToolFocusManager::manager()->addWidget( tb ); 311 QPEMenuToolFocusManager::manager()->addWidget( tb );
312 312
313 view = new FileSelectorView( this, "fileview" ); 313 view = new FileSelectorView( this, "fileview" );
314 QPEApplication::setStylusOperation( view->viewport(), QPEApplication::RightOnHold ); 314 QPEApplication::setStylusOperation( view->viewport(), QPEApplication::RightOnHold );
315 connect( view, SIGNAL( mouseButtonClicked( int, QListViewItem *, const QPoint &, int ) ), 315 connect( view, SIGNAL( mouseButtonClicked( int, QListViewItem *, const QPoint &, int ) ),
316 this, SLOT( fileClicked( int, QListViewItem *, const QPoint &, int ) ) ); 316 this, SLOT( fileClicked( int, QListViewItem *, const QPoint &, int ) ) );
317 connect( view, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint &, int ) ), 317 connect( view, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint &, int ) ),
318 this, SLOT( filePressed( int, QListViewItem *, const QPoint &, int ) ) ); 318 this, SLOT( filePressed( int, QListViewItem *, const QPoint &, int ) ) );
319 connect( view, SIGNAL( returnPressed( QListViewItem * ) ), 319 connect( view, SIGNAL( returnPressed( QListViewItem * ) ),
320 this, SLOT( fileClicked( QListViewItem * ) ) ); 320 this, SLOT( fileClicked( QListViewItem * ) ) );
321 321
322 QHBox *hb = new QHBox( this ); 322 QHBox *hb = new QHBox( this );
323
323 d->typeCombo = new TypeCombo( hb ); 324 d->typeCombo = new TypeCombo( hb );
324 connect( d->typeCombo, SIGNAL(selected(const QString&)), 325 connect( d->typeCombo, SIGNAL(selected(const QString&)),
325 this, SLOT(typeSelected(const QString&)) ); 326 this, SLOT(typeSelected(const QString&)) );
326 QWhatsThis::add( d->typeCombo, tr("Show documents of this type") ); 327 QWhatsThis::add( d->typeCombo, tr("Show documents of this type") );
327 328
328 Categories c; 329 Categories c;
329 c.load(categoryFileName()); 330 c.load(categoryFileName());
330 QArray<int> vl( 0 ); 331 QArray<int> vl( 0 );
331 d->catSelect = new CategorySelect( hb ); 332 d->catSelect = new CategorySelect( hb );
332 d->catSelect->setRemoveCategoryEdit( TRUE ); 333 d->catSelect->setRemoveCategoryEdit( TRUE );
333 d->catSelect->setCategories( vl, "Document View", tr("Document View") ); 334 d->catSelect->setCategories( vl, "Document View", tr("Document View") );
334 d->catSelect->setAllCategories( TRUE ); 335 d->catSelect->setAllCategories( TRUE );
335 connect( d->catSelect, SIGNAL(signalSelected(int)), this, SLOT(catSelected(int)) ); 336 connect( d->catSelect, SIGNAL(signalSelected(int)), this, SLOT(catSelected(int)) );
336 QWhatsThis::add( d->catSelect, tr("Show documents in this category") ); 337 QWhatsThis::add( d->catSelect, tr("Show documents in this category") );
337 338
338 setCloseVisible( closeVisible ); 339 setCloseVisible( closeVisible );
339 340
340 QCopChannel *channel = new QCopChannel( "QPE/Card", this ); 341 QCopChannel *channel = new QCopChannel( "QPE/Card", this );
341 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)), 342 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)),
342 this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); 343 this, SLOT(cardMessage( const QCString &, const QByteArray &)) );
343 344
344 reread(); 345 reread();
345 updateWhatsThis(); 346 updateWhatsThis();
346} 347}
347 348
348/*! 349/*!
349 Destroys the widget. 350 Destroys the widget.
350*/ 351*/
351FileSelector::~FileSelector() 352FileSelector::~FileSelector()
352{ 353{
353 delete d; 354 delete d;
354} 355}
355 356
356/*! 357/*!
357 Returns the number of files in the view. If this is zero, an editor 358 Returns the number of files in the view. If this is zero, an editor
358 application might bypass the selector and immediately start with 359 application might bypass the selector and immediately start with
359 a "new" document. 360 a "new" document.
360*/ 361*/
361int FileSelector::fileCount() 362int FileSelector::fileCount()
362{ 363{
363 return d->files.children().count();; 364 return d->files.children().count();;
364} 365}
365 366
366/*! 367/*!
367 Calling this function is the programmatic equivalent of the user 368 Calling this function is the programmatic equivalent of the user
368 pressing the "new" button. 369 pressing the "new" button.
369 370
370 \sa newSelected(), closeMe() 371 \sa newSelected(), closeMe()
@@ -451,96 +452,115 @@ const DocLnk *FileSelector::selected()
451 \a f is the document. 452 \a f is the document.
452*/ 453*/
453 454
454/*! 455/*!
455 \fn void FileSelector::newSelected( const DocLnk &f ) 456 \fn void FileSelector::newSelected( const DocLnk &f )
456 457
457 This signal is emitted when the user selects a "new" document. 458 This signal is emitted when the user selects a "new" document.
458 \a f is a DocLnk for the document. You will need to set the type 459 \a f is a DocLnk for the document. You will need to set the type
459 of the document after copying it. 460 of the document after copying it.
460*/ 461*/
461 462
462/*! 463/*!
463 \fn void FileSelector::closeMe() 464 \fn void FileSelector::closeMe()
464 465
465 This signal is emitted when the user no longer needs to view the widget. 466 This signal is emitted when the user no longer needs to view the widget.
466*/ 467*/
467 468
468 469
469/*! 470/*!
470 If \a b is TRUE a "new document" entry is visible; if \a b is FALSE 471 If \a b is TRUE a "new document" entry is visible; if \a b is FALSE
471 this entry is not visible and the user is unable to create new 472 this entry is not visible and the user is unable to create new
472 documents from the dialog. 473 documents from the dialog.
473*/ 474*/
474void FileSelector::setNewVisible( bool b ) 475void FileSelector::setNewVisible( bool b )
475{ 476{
476 if ( d->showNew != b ) { 477 if ( d->showNew != b ) {
477 d->showNew = b; 478 d->showNew = b;
478 updateView(); 479 updateView();
479 updateWhatsThis(); 480 updateWhatsThis();
480 } 481 }
481} 482}
482 483
483/*! 484/*!
484 If \a b is TRUE a "close" or "no document" button is visible; if \a 485 If \a b is TRUE a "close" or "no document" button is visible; if \a
485 b is FALSE this button is not visible and the user is unable to 486 b is FALSE this button is not visible and the user is unable to
486 leave the dialog without creating or selecting a document. 487 leave the dialog without creating or selecting a document.
487 488
488 This function is deprecated. 489 This function is deprecated.
489*/ 490*/
490void FileSelector::setCloseVisible( bool b ) 491void FileSelector::setCloseVisible( bool b )
491{ 492{
492 if ( b ) 493 if ( b )
493 d->toolbar->show(); 494 d->toolbar->show();
494 else 495 else
495 d->toolbar->hide(); 496 d->toolbar->hide();
496} 497}
497 498
498/*! 499/*!
500
501*/
502void FileSelector::setTypeComboVisible( bool b ) {
503 if ( b )
504 d->typeCombo->show();
505 else
506 d->typeCombo->hide();
507}
508/*!
509
510*/
511void FileSelector::setCategorySelectVisible( bool b ) {
512 if ( b )
513 d->catSelect->show();
514 else
515 d->catSelect->hide();
516}
517
518/*!
499 Rereads the list of documents. 519 Rereads the list of documents.
500*/ 520*/
501void FileSelector::reread() 521void FileSelector::reread()
502{ 522{
503 d->files.clear(); 523 d->files.clear();
504 Global::findDocuments(&d->files, filter); 524 Global::findDocuments(&d->files, filter);
505 d->typeCombo->reread( d->files, filter ); 525 d->typeCombo->reread( d->files, filter );
506 updateView(); 526 updateView();
507} 527}
508 528
509void FileSelector::updateView() 529void FileSelector::updateView()
510{ 530{
511 FileSelectorItem *item = (FileSelectorItem *)view->selectedItem(); 531 FileSelectorItem *item = (FileSelectorItem *)view->selectedItem();
512 if ( item == d->newDocItem ) 532 if ( item == d->newDocItem )
513 item = 0; 533 item = 0;
514 QString oldFile; 534 QString oldFile;
515 if ( item ) 535 if ( item )
516 oldFile = item->file().file(); 536 oldFile = item->file().file();
517 view->clear(); 537 view->clear();
518 QListIterator<DocLnk> dit( d->files.children() ); 538 QListIterator<DocLnk> dit( d->files.children() );
519 for ( ; dit.current(); ++dit ) { 539 for ( ; dit.current(); ++dit ) {
520 bool mimeMatch = FALSE; 540 bool mimeMatch = FALSE;
521 if ( d->mimeFilters.count() ) { 541 if ( d->mimeFilters.count() ) {
522 QValueList<QRegExp>::Iterator it; 542 QValueList<QRegExp>::Iterator it;
523 for ( it = d->mimeFilters.begin(); it != d->mimeFilters.end(); ++it ) { 543 for ( it = d->mimeFilters.begin(); it != d->mimeFilters.end(); ++it ) {
524 if ( (*it).match((*dit)->type()) >= 0 ) { 544 if ( (*it).match((*dit)->type()) >= 0 ) {
525 mimeMatch = TRUE; 545 mimeMatch = TRUE;
526 break; 546 break;
527 } 547 }
528 } 548 }
529 } else { 549 } else {
530 mimeMatch = TRUE; 550 mimeMatch = TRUE;
531 } 551 }
532 if ( mimeMatch && 552 if ( mimeMatch &&
533 (d->catId == -2 || (*dit)->categories().contains(d->catId) || 553 (d->catId == -2 || (*dit)->categories().contains(d->catId) ||
534 (d->catId == -1 && (*dit)->categories().isEmpty())) ) { 554 (d->catId == -1 && (*dit)->categories().isEmpty())) ) {
535 item = new FileSelectorItem( view, **dit ); 555 item = new FileSelectorItem( view, **dit );
536 if ( item->file().file() == oldFile ) 556 if ( item->file().file() == oldFile )
537 view->setCurrentItem( item ); 557 view->setCurrentItem( item );
538 } 558 }
539 } 559 }
540 560
541 if ( d->showNew ) 561 if ( d->showNew )
542 d->newDocItem = new NewDocItem( view, DocLnk() ); 562 d->newDocItem = new NewDocItem( view, DocLnk() );
543 else 563 else
544 d->newDocItem = 0; 564 d->newDocItem = 0;
545 565
546 if ( !view->selectedItem() || view->childCount() == 1 ) { 566 if ( !view->selectedItem() || view->childCount() == 1 ) {
diff --git a/library/fileselector.h b/library/fileselector.h
index f1c9eb1..e3ae891 100644
--- a/library/fileselector.h
+++ b/library/fileselector.h
@@ -9,96 +9,98 @@
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef FILESELECTOR_H 20#ifndef FILESELECTOR_H
21#define FILESELECTOR_H 21#define FILESELECTOR_H
22 22
23#include <qhbox.h> 23#include <qhbox.h>
24#include <qvbox.h> 24#include <qvbox.h>
25#include <qtoolbutton.h> 25#include <qtoolbutton.h>
26#include <qlistview.h> 26#include <qlistview.h>
27 27
28#include "filemanager.h" 28#include "filemanager.h"
29#include "applnk.h" 29#include "applnk.h"
30 30
31class QPopupMenu; 31class QPopupMenu;
32class QPushButton; 32class QPushButton;
33class FileSelectorView; 33class FileSelectorView;
34 34
35class FileSelectorItem : public QListViewItem 35class FileSelectorItem : public QListViewItem
36{ 36{
37public: 37public:
38 FileSelectorItem( QListView *parent, const DocLnk& f ); 38 FileSelectorItem( QListView *parent, const DocLnk& f );
39 ~FileSelectorItem(); 39 ~FileSelectorItem();
40 40
41 DocLnk file() const { return fl; } 41 DocLnk file() const { return fl; }
42 42
43private: 43private:
44 DocLnk fl; 44 DocLnk fl;
45}; 45};
46 46
47class FileSelectorPrivate; 47class FileSelectorPrivate;
48class FileSelector : public QVBox 48class FileSelector : public QVBox
49{ 49{
50 Q_OBJECT 50 Q_OBJECT
51 51
52public: 52public:
53 FileSelector( const QString &mimefilter, QWidget *parent, const char *name=0, bool newVisible = TRUE, bool closeVisible = TRUE ); 53 FileSelector( const QString &mimefilter, QWidget *parent, const char *name=0, bool newVisible = TRUE, bool closeVisible = TRUE );
54 ~FileSelector(); 54 ~FileSelector();
55 void setNewVisible( bool b ); 55 void setNewVisible( bool b );
56 void setCloseVisible( bool b ); 56 void setCloseVisible( bool b );
57 void setTypeComboVisible( bool b = TRUE );
58 void setCategorySelectVisible( bool b = TRUE );
57 void reread(); 59 void reread();
58 int fileCount(); 60 int fileCount();
59 DocLnk selectedDocument() const 61 DocLnk selectedDocument() const
60 { 62 {
61 const DocLnk* rp = ((FileSelector*)this)->selected(); 63 const DocLnk* rp = ((FileSelector*)this)->selected();
62 if (!rp) { 64 if (!rp) {
63 DocLnk r; 65 DocLnk r;
64 return r; 66 return r;
65 } 67 }
66 DocLnk r(*rp); 68 DocLnk r(*rp);
67 delete rp; 69 delete rp;
68 return r; 70 return r;
69 } 71 }
70 72
71 QValueList<DocLnk> fileList() const 73 QValueList<DocLnk> fileList() const
72 { 74 {
73 ((FileSelector*)this)->fileCount(); // ensure all loaded when this is extended 75 ((FileSelector*)this)->fileCount(); // ensure all loaded when this is extended
74 76
75 QValueList<DocLnk> list; 77 QValueList<DocLnk> list;
76 FileSelectorItem *item = (FileSelectorItem *)((QListView*)view)->firstChild(); 78 FileSelectorItem *item = (FileSelectorItem *)((QListView*)view)->firstChild();
77 while (item) { 79 while (item) {
78 list.append(item->file()); 80 list.append(item->file());
79 item = (FileSelectorItem *)item->nextSibling(); 81 item = (FileSelectorItem *)item->nextSibling();
80 } 82 }
81 83
82 return list; 84 return list;
83 } 85 }
84 86
85signals: 87signals:
86 void fileSelected( const DocLnk & ); 88 void fileSelected( const DocLnk & );
87 void newSelected( const DocLnk & ); 89 void newSelected( const DocLnk & );
88 void closeMe(); 90 void closeMe();
89 91
90private slots: 92private slots:
91 void createNew(); 93 void createNew();
92 void fileClicked( int, QListViewItem *, const QPoint &, int ); 94 void fileClicked( int, QListViewItem *, const QPoint &, int );
93 // pressed to get 'right down' 95 // pressed to get 'right down'
94 void filePressed( int, QListViewItem *, const QPoint &, int ); 96 void filePressed( int, QListViewItem *, const QPoint &, int );
95 void fileClicked( QListViewItem *); 97 void fileClicked( QListViewItem *);
96 void typeSelected( const QString &type ); 98 void typeSelected( const QString &type );
97 void catSelected( int ); 99 void catSelected( int );
98 void cardMessage( const QCString &, const QByteArray &); 100 void cardMessage( const QCString &, const QByteArray &);
99 101
100private: 102private:
101 void updateView(); 103 void updateView();
102 void updateWhatsThis(); 104 void updateWhatsThis();
103 105
104private: 106private: