[locale] Chase RAII conveniences

- several early-return paths would leave the TZ widget blocked
- use the zones data from config
This commit is contained in:
Adriaan de Groot 2020-07-21 00:21:42 +02:00
parent 0645a46b42
commit 81520bbbf9

View File

@ -31,6 +31,7 @@
#include "locale/TimeZone.h" #include "locale/TimeZone.h"
#include "utils/CalamaresUtilsGui.h" #include "utils/CalamaresUtilsGui.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include "utils/RAII.h"
#include "utils/Retranslator.h" #include "utils/Retranslator.h"
#include <QBoxLayout> #include <QBoxLayout>
@ -106,7 +107,10 @@ LocalePage::LocalePage( Config* config, QWidget* parent )
connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation ); connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation );
connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged ); connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged );
connect( m_tzWidget, &TimeZoneWidget::locationChanged, config, QOverload< const CalamaresUtils::Locale::TZZone* >::of( &Config::setCurrentLocation ) ); connect( m_tzWidget,
&TimeZoneWidget::locationChanged,
config,
QOverload< const CalamaresUtils::Locale::TZZone* >::of( &Config::setCurrentLocation ) );
connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged ); connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged );
connect( m_zoneCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::zoneChanged ); connect( m_zoneCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::zoneChanged );
@ -265,15 +269,17 @@ LocalePage::regionChanged( int currentIndex )
Q_UNUSED( currentIndex ) Q_UNUSED( currentIndex )
QString selectedRegion = m_regionCombo->currentData().toString(); QString selectedRegion = m_regionCombo->currentData().toString();
TZRegion* region = CalamaresUtils::Locale::TZRegion::fromZoneTab().find< TZRegion >( selectedRegion ); TZRegion* region = m_config->timezoneData().find< TZRegion >( selectedRegion );
if ( !region ) if ( !region )
{ {
return; return;
} }
m_zoneCombo->blockSignals( true ); {
m_zoneCombo->setModel( new CStringListModel( region->zones() ) ); cSignalBlocker b( m_zoneCombo );
m_zoneCombo->blockSignals( false ); m_zoneCombo->setModel( new CStringListModel( region->zones() ) );
}
m_zoneCombo->currentIndexChanged( m_zoneCombo->currentIndex() ); m_zoneCombo->currentIndexChanged( m_zoneCombo->currentIndex() );
} }
@ -283,8 +289,7 @@ LocalePage::zoneChanged( int currentIndex )
Q_UNUSED( currentIndex ) Q_UNUSED( currentIndex )
if ( !m_blockTzWidgetSet ) if ( !m_blockTzWidgetSet )
{ {
m_config->setCurrentLocation( m_regionCombo->currentData().toString(), m_config->setCurrentLocation( m_regionCombo->currentData().toString(), m_zoneCombo->currentData().toString() );
m_zoneCombo->currentData().toString() );
} }
updateGlobalStorage(); updateGlobalStorage();
} }
@ -292,7 +297,7 @@ LocalePage::zoneChanged( int currentIndex )
void void
LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location )
{ {
m_blockTzWidgetSet = true; cBoolSetter< true > b( m_blockTzWidgetSet );
// Set region index // Set region index
int index = m_regionCombo->findData( location->region() ); int index = m_regionCombo->findData( location->region() );
@ -312,8 +317,6 @@ LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location )
m_zoneCombo->setCurrentIndex( index ); m_zoneCombo->setCurrentIndex( index );
m_blockTzWidgetSet = false;
updateGlobalStorage(); updateGlobalStorage();
} }