File indexing completed on 2024-03-24 03:52:22
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 0003 #include "LatLonBoxWidget.h" 0004 0005 #include "GeoDataLatLonBox.h" 0006 #include "ui_LatLonBoxWidget.h" 0007 0008 namespace Marble 0009 { 0010 0011 class Q_DECL_HIDDEN LatLonBoxWidget::Private 0012 { 0013 public: 0014 explicit Private( QWidget * const parent ); 0015 Ui::LatLonBoxWidget m_ui; 0016 }; 0017 0018 LatLonBoxWidget::Private::Private( QWidget * const parent ) 0019 { 0020 m_ui.setupUi( parent ); 0021 } 0022 0023 0024 LatLonBoxWidget::LatLonBoxWidget( QWidget * const parent, Qt::WindowFlags const f ) 0025 : QWidget( parent, f ), 0026 d( new Private( this )) 0027 { 0028 // used for updating tiles count in DownloadRegionDialog 0029 connect( d->m_ui.northSpinBox, SIGNAL(valueChanged(double)), SIGNAL(valueChanged())); 0030 connect( d->m_ui.southSpinBox, SIGNAL(valueChanged(double)), SIGNAL(valueChanged())); 0031 connect( d->m_ui.eastSpinBox, SIGNAL(valueChanged(double)), SIGNAL(valueChanged())); 0032 connect( d->m_ui.westSpinBox, SIGNAL(valueChanged(double)), SIGNAL(valueChanged())); 0033 // used for adjusting single step values 0034 connect( d->m_ui.northSpinBox, SIGNAL(valueChanged(double)), SLOT(updateLatSingleStep())); 0035 connect( d->m_ui.southSpinBox, SIGNAL(valueChanged(double)), SLOT(updateLatSingleStep())); 0036 connect( d->m_ui.eastSpinBox, SIGNAL(valueChanged(double)), SLOT(updateLonSingleStep())); 0037 connect( d->m_ui.westSpinBox, SIGNAL(valueChanged(double)), SLOT(updateLonSingleStep())); 0038 } 0039 0040 LatLonBoxWidget::~LatLonBoxWidget() 0041 { 0042 delete d; 0043 } 0044 0045 GeoDataLatLonBox LatLonBoxWidget::latLonBox() const 0046 { 0047 return GeoDataLatLonBox( d->m_ui.northSpinBox->value(), d->m_ui.southSpinBox->value(), 0048 d->m_ui.eastSpinBox->value(), d->m_ui.westSpinBox->value(), 0049 GeoDataCoordinates::Degree ); 0050 } 0051 0052 void LatLonBoxWidget::setLatLonBox( GeoDataLatLonBox const & latLonBox ) 0053 { 0054 d->m_ui.northSpinBox->setValue( latLonBox.north( GeoDataCoordinates::Degree )); 0055 d->m_ui.southSpinBox->setValue( latLonBox.south( GeoDataCoordinates::Degree )); 0056 d->m_ui.eastSpinBox->setValue( latLonBox.east( GeoDataCoordinates::Degree )); 0057 d->m_ui.westSpinBox->setValue( latLonBox.west( GeoDataCoordinates::Degree )); 0058 } 0059 0060 void LatLonBoxWidget::updateLatSingleStep() 0061 { 0062 double const singleStep = 0063 qAbs( d->m_ui.northSpinBox->value() - d->m_ui.southSpinBox->value() ) / 10.0; 0064 d->m_ui.northSpinBox->setSingleStep( singleStep ); 0065 d->m_ui.southSpinBox->setSingleStep( singleStep ); 0066 } 0067 0068 void LatLonBoxWidget::updateLonSingleStep() 0069 { 0070 double const singleStep = 0071 qAbs( d->m_ui.eastSpinBox->value() - d->m_ui.westSpinBox->value() ) / 10.0; 0072 d->m_ui.eastSpinBox->setSingleStep( singleStep ); 0073 d->m_ui.westSpinBox->setSingleStep( singleStep ); 0074 } 0075 0076 } 0077 0078 #include "moc_LatLonBoxWidget.cpp"