diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 5ac70d3d0..e41e3a30b 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -255,13 +255,14 @@ LocaleTests::testRegions() QStringList names; for ( int i = 0; i < regions.rowCount( QModelIndex() ); ++i ) { - QVariant name = regions.data( regions.index( i ), Qt::UserRole ); + QVariant name = regions.data( regions.index( i ), Qt::DisplayRole ); QVERIFY( name.isValid() ); QVERIFY( !name.toString().isEmpty() ); names.append( name.toString() ); } QVERIFY( names.contains( "America" ) ); + QVERIFY( !names.contains( "UTC" ) ); } diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index e12f404a5..9f356d958 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -326,9 +326,29 @@ RegionsModel::rowCount( const QModelIndex& parent ) const QVariant RegionsModel::data( const QModelIndex& index, int role ) const { + if ( !index.isValid() || index.row() < 0 || index.row() >= m_private->m_regions.count() ) + { + return QVariant(); + } + + if ( role == Qt::DisplayRole ) + { + return m_private->m_regions[ index.row() ].tr(); + } + if ( role == KeyRole ) + { + return m_private->m_regions[ index.row() ].key(); + } return QVariant(); } +QHash< int, QByteArray > +RegionsModel::roleNames() const +{ + return { { Qt::DisplayRole, "name" }, { KeyRole, "key" } }; +} + + ZonesModel::ZonesModel( QObject* parent ) : QAbstractListModel( parent ) , m_private( privateInstance() ) diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 4ded57d8f..0a5fbf7f6 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -43,14 +43,20 @@ class DLLEXPORT RegionsModel : public QAbstractListModel { Q_OBJECT - public: + enum Roles + { + KeyRole = Qt::UserRole + 1 + }; + RegionsModel( QObject* parent = nullptr ); virtual ~RegionsModel() override; int rowCount( const QModelIndex& parent ) const override; QVariant data( const QModelIndex& index, int role ) const override; + QHash< int, QByteArray > roleNames() const override; + private: Private* m_private; };