From 0ee89e2470872ec9c9cf825e041eae749b3db512 Mon Sep 17 00:00:00 2001 From: Larry Shaffer Date: Mon, 10 Sep 2012 02:08:12 -0600 Subject: [PATCH] Different approach, fixes several issues - Just set max height instead of hiding widgets - Default is to show expanded - Removed check in favor of just toggled signal - setCollapsed() now sets desired state for first show, if not visible - Added another test with Adv Labeling dialog (all grpbxs are now collapsible) - Wording cleanup --- src/app/qgslabelinggui.cpp | 5 +++ src/gui/qgscollapsiblegroupbox.cpp | 52 ++++++++---------------------- src/gui/qgscollapsiblegroupbox.h | 3 +- src/ui/qgslabelingguibase.ui | 30 ++++++++++------- 4 files changed, 38 insertions(+), 52 deletions(-) diff --git a/src/app/qgslabelinggui.cpp b/src/app/qgslabelinggui.cpp index 2c98984407e3..dbea377925b8 100644 --- a/src/app/qgslabelinggui.cpp +++ b/src/app/qgslabelinggui.cpp @@ -267,6 +267,11 @@ QgsLabelingGui::QgsLabelingGui( QgsPalLabeling* lbl, QgsVectorLayer* layer, QgsM { connect( quadrantRadios[i], SIGNAL( toggled( bool ) ), this, SLOT( updateQuadrant() ) ); } + + chkBuffer->setCollapsed( true ); + groupBox_2->setCollapsed( true ); + chkFormattedNumbers->setCollapsed( true ); + chkScaleBasedVisibility->setCollapsed( true ); } QgsLabelingGui::~QgsLabelingGui() diff --git a/src/gui/qgscollapsiblegroupbox.cpp b/src/gui/qgscollapsiblegroupbox.cpp index 2a038b7d69e7..d8b7922eb4d1 100644 --- a/src/gui/qgscollapsiblegroupbox.cpp +++ b/src/gui/qgscollapsiblegroupbox.cpp @@ -27,14 +27,14 @@ QIcon QgsCollapsibleGroupBox::mCollapseIcon; QIcon QgsCollapsibleGroupBox::mExpandIcon; QgsCollapsibleGroupBox::QgsCollapsibleGroupBox( QWidget *parent ) - : QGroupBox( parent ), mCollapsed( true ) + : QGroupBox( parent ), mCollapsed( false ) { init(); } QgsCollapsibleGroupBox::QgsCollapsibleGroupBox( const QString &title, QWidget *parent ) - : QGroupBox( title, parent ), mCollapsed( true ) + : QGroupBox( title, parent ), mCollapsed( false ) { init(); } @@ -65,7 +65,7 @@ void QgsCollapsibleGroupBox::init() mCollapseButton->setFixedSize( 16, 16 ); // TODO set size (as well as margins) depending on theme mCollapseButton->setIconSize( QSize( 12, 12 ) ); - mCollapseButton->setIcon( mExpandIcon ); + mCollapseButton->setIcon( mCollapseIcon ); // clear toolbutton default background and border // TODO: move to app stylesheet system, when appropriate @@ -76,41 +76,35 @@ void QgsCollapsibleGroupBox::init() mCollapseButton->setStyleSheet( ssd ); connect( mCollapseButton, SIGNAL( clicked() ), this, SLOT( toggleCollapsed() ) ); - connect( this, SIGNAL( clicked( bool ) ), this, SLOT( checkClicked() ) ); - connect( this, SIGNAL( toggled( bool ) ), this, SLOT( checkToggled() ) ); + connect( this, SIGNAL( toggled( bool ) ), this, SLOT( checkToggled( bool ) ) ); } void QgsCollapsibleGroupBox::showEvent( QShowEvent * event ) { QGroupBox::showEvent( event ); - // expand if needed - any calls to setCollapsed() before have no effect + // expand if needed - any calls to setCollapsed() before only set mCollapsed if ( mCollapsed ) { setCollapsed( mCollapsed ); } else { - /* manually uncollapsing (already default) on show may scroll scroll areas - still emit signal for connections using uncollapsed state */ + /* manually expanding (already default) on show may scroll scroll areas; + still emit signal for connections using expanded state */ emit collapsedStateChanged( this ); } } -void QgsCollapsibleGroupBox::checkClicked() +void QgsCollapsibleGroupBox::checkToggled( bool chkd ) { mCollapseButton->setEnabled( true ); // always keep enabled - // expand/collapse when clicked - if ( isChecked() && isCollapsed() ) + // expand/collapse when toggled + if ( chkd && isCollapsed() ) setCollapsed( false ); - else if ( ! isChecked() && ! isCollapsed() ) + else if ( ! chkd && ! isCollapsed() ) setCollapsed( true ); } -void QgsCollapsibleGroupBox::checkToggled() -{ - mCollapseButton->setEnabled( true ); // always keep enabled -} - void QgsCollapsibleGroupBox::toggleCollapsed() { setCollapsed( !mCollapsed ); @@ -118,40 +112,22 @@ void QgsCollapsibleGroupBox::toggleCollapsed() void QgsCollapsibleGroupBox::setCollapsed( bool collapse ) { + mCollapsed = collapse; + if ( !isVisible() ) return; - mCollapsed = collapse; - // for consistent look/spacing across platforms when collapsed setFlat( collapse ); setMaximumHeight( collapse ? 28 : 16777215 ); - // if we are collapsing, save hidden widgets in a list if ( collapse ) { mCollapseButton->setIcon( mExpandIcon ); - mHiddenWidgets.clear(); - foreach ( QWidget *widget, findChildren() ) - { - if ( widget->isHidden() && widget->objectName() != mCollapseButton->objectName() ) - mHiddenWidgets << widget; - } } - - // show/hide widgets - foreach ( QWidget *widget, findChildren() ) - if ( widget->objectName() != mCollapseButton->objectName() ) - widget->setHidden( collapse ); - - // if we are expanding, re-hide saved hidden widgets - if ( ! collapse ) + else { mCollapseButton->setIcon( mCollapseIcon ); - foreach ( QWidget *widget, mHiddenWidgets ) - { - widget->setHidden( true ); - } } emit collapsedStateChanged( this ); diff --git a/src/gui/qgscollapsiblegroupbox.h b/src/gui/qgscollapsiblegroupbox.h index 976e1f578eb9..40fab412cd3d 100644 --- a/src/gui/qgscollapsiblegroupbox.h +++ b/src/gui/qgscollapsiblegroupbox.h @@ -44,8 +44,7 @@ class GUI_EXPORT QgsCollapsibleGroupBox : public QGroupBox void collapsedStateChanged( QWidget* ); public slots: - void checkClicked(); - void checkToggled(); + void checkToggled( bool ckd ); void toggleCollapsed(); protected: diff --git a/src/ui/qgslabelingguibase.ui b/src/ui/qgslabelingguibase.ui index 845c4b02b47b..bfe4cf3fcfe0 100644 --- a/src/ui/qgslabelingguibase.ui +++ b/src/ui/qgslabelingguibase.ui @@ -438,7 +438,7 @@ 20 - + 0 @@ -586,7 +586,7 @@ - + 0 @@ -1058,7 +1058,7 @@ - + 0 @@ -1296,7 +1296,7 @@ - + 0 @@ -1375,7 +1375,7 @@ - + 0 @@ -1478,7 +1478,7 @@ 6 - + 16777215 @@ -1579,7 +1579,7 @@ - + 16777215 @@ -1627,7 +1627,7 @@ - + 0 @@ -2281,7 +2281,7 @@ 6 - + Buffer properties @@ -2327,7 +2327,7 @@ - + Position @@ -2425,7 +2425,7 @@ - + Display properties @@ -2479,7 +2479,7 @@ - + 0 @@ -2707,6 +2707,12 @@ + + QgsCollapsibleGroupBox + QGroupBox +
qgscollapsiblegroupbox.h
+ 1 +
QgsColorButton QToolButton