From: Pino Toscano Date: Sat, 17 Feb 2007 21:04:02 +0000 (+0000) Subject: move the 'folded' attribute glossary-specific instead of dialog-wise X-Git-Tag: v3.80.3~20 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=2dcac6324dfa21217887142fe8dd2deed018e358;p=libqmvoc.git move the 'folded' attribute glossary-specific instead of dialog-wise svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=634619 --- diff --git a/kdeeduui/kdeeduglossary.cpp b/kdeeduui/kdeeduglossary.cpp index 557d718..088192a 100644 --- a/kdeeduui/kdeeduglossary.cpp +++ b/kdeeduui/kdeeduglossary.cpp @@ -17,6 +17,7 @@ * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ + #include "kdeeduglossary.h" #include @@ -66,6 +67,18 @@ class GlossaryTreeItem : public QTreeWidgetItem }; +struct GlossaryInfo +{ + GlossaryInfo( Glossary* g ) + : glossary( g ), folded( true ) + { + } + + Glossary *glossary; + bool folded; +}; + + class GlossaryDialog::Private { public: @@ -76,11 +89,15 @@ class GlossaryDialog::Private ~Private() { - qDeleteAll( m_glossaries ); + QList< GlossaryInfo >::ConstIterator it = m_glossaries.begin(), itEnd = m_glossaries.end(); + for ( ; it != itEnd; ++it ) + { + delete (*it).glossary; + } } void rebuildTree(); - QTreeWidgetItem* createItem( Glossary* glossary ) const; + QTreeWidgetItem* createItem( const GlossaryInfo& gi ) const; QTreeWidgetItem* findTreeWithLetter( const QChar& l, QTreeWidgetItem* item ) const; // slots @@ -90,10 +107,7 @@ class GlossaryDialog::Private GlossaryDialog *q; - QList m_glossaries; - - // if true the items will be displayed folded - bool m_folded; + QList< GlossaryInfo > m_glossaries; KHTMLPart *m_htmlpart; QTreeWidget *m_glosstree; @@ -262,7 +276,7 @@ QList Glossary::readItems( QDomDocument &itemDocument ) return list; } -GlossaryDialog::GlossaryDialog( QWidget *parent, bool folded ) +GlossaryDialog::GlossaryDialog( QWidget *parent ) : KDialog( parent ), d( new Private( this ) ) { setCaption( i18n( "Glossary" ) ); @@ -273,8 +287,6 @@ GlossaryDialog::GlossaryDialog( QWidget *parent, bool folded ) //be used call Glossary::setBackgroundPicture(). d->m_htmlbasestring = "" ; - d->m_folded = folded; - QWidget *main = new QWidget( this ); setMainWidget( main ); QVBoxLayout *vbox = new QVBoxLayout( main ); @@ -349,20 +361,23 @@ void GlossaryDialog::Private::rebuildTree() { m_glosstree->clear(); - foreach ( Glossary * glossary, m_glossaries ) + QList< GlossaryInfo >::ConstIterator it = m_glossaries.begin(), itEnd = m_glossaries.end(); + for ( ; it != itEnd; ++it ) { - m_glosstree->addTopLevelItem( createItem( glossary ) ); + m_glosstree->addTopLevelItem( createItem( *it ) ); } } -QTreeWidgetItem* GlossaryDialog::Private::createItem( Glossary* glossary ) const +QTreeWidgetItem* GlossaryDialog::Private::createItem( const GlossaryInfo& gi ) const { + Glossary *glossary = gi.glossary; + bool folded = gi.folded; QTreeWidgetItem *main = new QTreeWidgetItem(); main->setText( 0, glossary->name() ); main->setFlags( Qt::ItemIsEnabled ); foreach ( GlossaryItem * item, glossary->itemlist() ) { - if ( m_folded ) + if ( folded ) { QChar thisletter = item->name().toUpper().at(0); QTreeWidgetItem *thisletteritem = findTreeWithLetter( thisletter, main ); @@ -385,14 +400,16 @@ QTreeWidgetItem* GlossaryDialog::Private::createItem( Glossary* glossary ) const return main; } -void GlossaryDialog::addGlossary( Glossary* newgloss ) +void GlossaryDialog::addGlossary( Glossary* newgloss, bool folded ) { if ( !newgloss || newgloss->isEmpty() ) return; - d->m_glossaries.append( newgloss ); + GlossaryInfo gi( newgloss ); + gi.folded = folded; + d->m_glossaries.append( gi ); - d->m_glosstree->addTopLevelItem( d->createItem( newgloss ) ); + d->m_glosstree->addTopLevelItem( d->createItem( gi ) ); } QTreeWidgetItem* GlossaryDialog::Private::findTreeWithLetter( const QChar& l, QTreeWidgetItem* item ) const diff --git a/kdeeduui/kdeeduglossary.h b/kdeeduui/kdeeduglossary.h index 31f4ad4..2cf009e 100644 --- a/kdeeduui/kdeeduglossary.h +++ b/kdeeduui/kdeeduglossary.h @@ -241,10 +241,8 @@ class KDEEDUUI_EXPORT GlossaryDialog : public KDialog * Creates a new dialog for a glossary. * * @param parent the parent of the new dialog - * @param folded whether to fold the various items in subtrees depending on the - * first letter of every item */ - explicit GlossaryDialog( QWidget *parent = 0, bool folded = true ); + explicit GlossaryDialog( QWidget *parent = 0 ); virtual ~GlossaryDialog(); @@ -252,8 +250,10 @@ class KDEEDUUI_EXPORT GlossaryDialog : public KDialog * Add a new glossary. * * @param newgloss the new glossary to add + * @param folded whether to fold the various items in subtrees depending on the + * first letter of every item */ - void addGlossary( Glossary* newgloss ); + void addGlossary( Glossary* newgloss, bool folded = true ); protected: void keyPressEvent(QKeyEvent*);