[libcalamares] Make TimeZoneData public
- Also make it a QObject so we can add properties and make it useful for QML consumption.
This commit is contained in:
parent
10fb5b95c7
commit
478a275764
@ -70,22 +70,6 @@ getRightGeoLocation( QString str )
|
||||
}
|
||||
|
||||
|
||||
class TimeZoneData : public TranslatableString
|
||||
{
|
||||
public:
|
||||
TimeZoneData( const QString& region,
|
||||
const QString& zone,
|
||||
const QString& country,
|
||||
double latitude,
|
||||
double longitude );
|
||||
QString tr() const override;
|
||||
|
||||
QString m_region;
|
||||
QString m_country;
|
||||
double m_latitude;
|
||||
double m_longitude;
|
||||
};
|
||||
|
||||
TimeZoneData::TimeZoneData( const QString& region,
|
||||
const QString& zone,
|
||||
const QString& country,
|
||||
@ -122,7 +106,7 @@ RegionData::tr() const
|
||||
}
|
||||
|
||||
static void
|
||||
loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones )
|
||||
loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData* >& zones )
|
||||
{
|
||||
QFile file( TZ_DATA_FILE );
|
||||
if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) )
|
||||
@ -187,7 +171,7 @@ loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones )
|
||||
{
|
||||
regions.append( std::move( r ) );
|
||||
}
|
||||
zones.append( TimeZoneData( region, zone, countryCode, latitude, longitude ) );
|
||||
zones.append( new TimeZoneData( region, zone, countryCode, latitude, longitude ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -196,7 +180,7 @@ loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones )
|
||||
struct Private
|
||||
{
|
||||
QVector< RegionData > m_regions;
|
||||
QVector< TimeZoneData > m_zones;
|
||||
QVector< TimeZoneData* > m_zones;
|
||||
|
||||
Private()
|
||||
{
|
||||
@ -277,14 +261,14 @@ ZonesModel::data( const QModelIndex& index, int role ) const
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
const auto& zone = m_private->m_zones[ index.row() ];
|
||||
const auto* zone = m_private->m_zones[ index.row() ];
|
||||
if ( role == NameRole )
|
||||
{
|
||||
return zone.tr();
|
||||
return zone->tr();
|
||||
}
|
||||
if ( role == KeyRole )
|
||||
{
|
||||
return zone.key();
|
||||
return zone->key();
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
@ -329,13 +313,9 @@ RegionalZonesModel::filterAcceptsRow( int sourceRow, const QModelIndex& ) const
|
||||
}
|
||||
|
||||
const auto& zone = m_private->m_zones[ sourceRow ];
|
||||
return ( zone.m_region == m_region );
|
||||
return ( zone->m_region == m_region );
|
||||
}
|
||||
|
||||
|
||||
} // namespace Locale
|
||||
} // namespace CalamaresUtils
|
||||
|
||||
#include "utils/moc-warnings.h"
|
||||
|
||||
#include "TimeZone.moc"
|
||||
|
@ -24,6 +24,8 @@
|
||||
|
||||
#include "DllMacro.h"
|
||||
|
||||
#include "locale/TranslatableString.h"
|
||||
|
||||
#include <QAbstractListModel>
|
||||
#include <QObject>
|
||||
#include <QSortFilterProxyModel>
|
||||
@ -34,6 +36,35 @@ namespace CalamaresUtils
|
||||
namespace Locale
|
||||
{
|
||||
struct Private;
|
||||
class RegionalZonesModel;
|
||||
class ZonesModel;
|
||||
|
||||
class TimeZoneData : public QObject, TranslatableString
|
||||
{
|
||||
friend class RegionalZonesModel;
|
||||
friend class ZonesModel;
|
||||
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY( QString region READ region CONSTANT )
|
||||
|
||||
public:
|
||||
TimeZoneData( const QString& region,
|
||||
const QString& zone,
|
||||
const QString& country,
|
||||
double latitude,
|
||||
double longitude );
|
||||
QString tr() const override;
|
||||
|
||||
QString region() const { return m_region; }
|
||||
|
||||
private:
|
||||
QString m_region;
|
||||
QString m_country;
|
||||
double m_latitude;
|
||||
double m_longitude;
|
||||
};
|
||||
|
||||
|
||||
/** @brief The list of timezone regions
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user