Skip to content

Commit

Permalink
Move the scale lock button from QgsStatusBarScaleWidget to QgsStatusB…
Browse files Browse the repository at this point in the history
…arMagnifierWidget, so it's hidable together with the magnifier in the Customization
  • Loading branch information
borysiasty committed Oct 24, 2018
1 parent 302529a commit 8bee898
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 19 deletions.
3 changes: 2 additions & 1 deletion src/app/qgisapp.cpp
Expand Up @@ -3027,7 +3027,6 @@ void QgisApp::createStatusBar()
mScaleWidget = new QgsStatusBarScaleWidget( mMapCanvas, mStatusBar );
mScaleWidget->setObjectName( QStringLiteral( "mScaleWidget" ) );
mScaleWidget->setFont( myFont );
connect( mScaleWidget, &QgsStatusBarScaleWidget::scaleLockChanged, mMapCanvas, &QgsMapCanvas::setScaleLocked );
mStatusBar->addPermanentWidget( mScaleWidget, 0 );

// zoom widget
Expand All @@ -3036,6 +3035,8 @@ void QgisApp::createStatusBar()
mMagnifierWidget->setFont( myFont );
connect( mMapCanvas, &QgsMapCanvas::magnificationChanged, mMagnifierWidget, &QgsStatusBarMagnifierWidget::updateMagnification );
connect( mMagnifierWidget, &QgsStatusBarMagnifierWidget::magnificationChanged, mMapCanvas, &QgsMapCanvas::setMagnificationFactor );
connect( mMagnifierWidget, &QgsStatusBarMagnifierWidget::scaleLockChanged, mMapCanvas, &QgsMapCanvas::setScaleLocked );
connect( mMagnifierWidget, &QgsStatusBarMagnifierWidget::scaleLockChanged, mScaleWidget, &QgsStatusBarScaleWidget::setLocked );
mMagnifierWidget->updateMagnification( QSettings().value( QStringLiteral( "/qgis/magnifier_factor_default" ), 1.0 ).toDouble() );
mStatusBar->addPermanentWidget( mMagnifierWidget, 0 );

Expand Down
11 changes: 11 additions & 0 deletions src/app/qgsstatusbarmagnifierwidget.cpp
Expand Up @@ -17,6 +17,7 @@
#include <QFont>
#include <QHBoxLayout>
#include <QLabel>
#include <QToolButton>

#include "qgssettings.h"
#include "qgsapplication.h"
Expand Down Expand Up @@ -55,8 +56,18 @@ QgsStatusBarMagnifierWidget::QgsStatusBarMagnifierWidget( QWidget *parent )

connect( mSpinBox, static_cast < void ( QgsDoubleSpinBox::* )( double ) > ( &QgsDoubleSpinBox::valueChanged ), this, &QgsStatusBarMagnifierWidget::setMagnification );

mLockButton = new QToolButton();
mLockButton->setIcon( QIcon( QgsApplication::getThemeIcon( "/lockedGray.svg" ) ) );
mLockButton->setToolTip( tr( "Lock the scale to use magnifier to zoom in or out." ) );
mLockButton->setCheckable( true );
mLockButton->setChecked( false );
mLockButton->setAutoRaise( true );

connect( mLockButton, &QAbstractButton::toggled, this, &QgsStatusBarMagnifierWidget::scaleLockChanged );

// layout
mLayout = new QHBoxLayout( this );
mLayout->addWidget( mLockButton );
mLayout->addWidget( mLabel );
mLayout->addWidget( mSpinBox );
mLayout->setContentsMargins( 0, 0, 0, 0 );
Expand Down
3 changes: 3 additions & 0 deletions src/app/qgsstatusbarmagnifierwidget.h
Expand Up @@ -20,6 +20,7 @@
class QLabel;
class QFont;
class QHBoxLayout;
class QToolButton;
class QgsDoubleSpinBox;

#include <QWidget>
Expand Down Expand Up @@ -63,11 +64,13 @@ class APP_EXPORT QgsStatusBarMagnifierWidget : public QWidget
signals:
void magnificationChanged( double factor );

void scaleLockChanged( bool );

private:
QHBoxLayout *mLayout = nullptr;
QLabel *mLabel = nullptr;
QgsDoubleSpinBox *mSpinBox = nullptr;
QToolButton *mLockButton = nullptr;
};

#endif
19 changes: 6 additions & 13 deletions src/app/qgsstatusbarscalewidget.cpp
Expand Up @@ -17,7 +17,6 @@
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QToolButton>
#include <QValidator>

#include "qgsstatusbarscalewidget.h"
Expand Down Expand Up @@ -49,28 +48,17 @@ QgsStatusBarScaleWidget::QgsStatusBarScaleWidget( QgsMapCanvas *canvas, QWidget
mScale->setWhatsThis( tr( "Displays the current map scale" ) );
mScale->setToolTip( tr( "Current map scale (formatted as x:y)" ) );

mLockButton = new QToolButton();
mLockButton->setIcon( QIcon( QgsApplication::getThemeIcon( "/lockedGray.svg" ) ) );
mLockButton->setToolTip( tr( "Lock the scale to use magnifier to zoom in or out." ) );
mLockButton->setCheckable( true );
mLockButton->setChecked( false );
mLockButton->setAutoRaise( true );

// layout
mLayout = new QHBoxLayout( this );
mLayout->addWidget( mLabel );
mLayout->addWidget( mScale );
mLayout->addWidget( mLockButton );
mLayout->setContentsMargins( 0, 0, 0, 0 );
mLayout->setAlignment( Qt::AlignRight );
mLayout->setSpacing( 0 );

setLayout( mLayout );

connect( mScale, &QgsScaleComboBox::scaleChanged, this, &QgsStatusBarScaleWidget::userScale );

connect( mLockButton, &QAbstractButton::toggled, this, &QgsStatusBarScaleWidget::scaleLockChanged );
connect( mLockButton, &QAbstractButton::toggled, mScale, &QWidget::setDisabled );
}

void QgsStatusBarScaleWidget::setScale( double scale )
Expand All @@ -87,7 +75,12 @@ void QgsStatusBarScaleWidget::setScale( double scale )

bool QgsStatusBarScaleWidget::isLocked() const
{
return mLockButton->isChecked();
return !mScale->isEnabled();
}

void QgsStatusBarScaleWidget::setLocked( bool state )
{
mScale->setDisabled( state );
}

void QgsStatusBarScaleWidget::setFont( const QFont &font )
Expand Down
12 changes: 7 additions & 5 deletions src/app/qgsstatusbarscalewidget.h
Expand Up @@ -20,7 +20,6 @@
class QFont;
class QHBoxLayout;
class QLabel;
class QToolButton;
class QValidator;

class QgsMapCanvas;
Expand All @@ -46,6 +45,13 @@ class APP_EXPORT QgsStatusBarScaleWidget : public QWidget
*/
void setScale( double scale );

/**
* Lock the scale widget.
* \param state the lock state
* \since QGIS 3.4
*/
void setLocked( bool state );

/**
* \brief isLocked check if the scale should be locked to use magnifier instead of scale to zoom in/out
* \returns True if the scale shall be locked
Expand All @@ -64,13 +70,9 @@ class APP_EXPORT QgsStatusBarScaleWidget : public QWidget
private slots:
void userScale() const;

signals:
void scaleLockChanged( bool );

private:
QgsMapCanvas *mMapCanvas = nullptr;
QHBoxLayout *mLayout = nullptr;
QToolButton *mLockButton = nullptr;

//! Widget that will live on the statusbar to display "scale 1:"
QLabel *mLabel = nullptr;
Expand Down

0 comments on commit 8bee898

Please sign in to comment.