Skip to content

Commit 4d5363c

Browse files
committed
Move TZF file into user directory
1 parent d305bcf commit 4d5363c

File tree

2 files changed

+35
-23
lines changed

2 files changed

+35
-23
lines changed

src/core/StelLocationMgr.cpp

+34-23
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
#include <QRegularExpression>
4343

4444
TimezoneNameMap StelLocationMgr::locationDBToIANAtranslations;
45-
45+
QString StelLocationMgr::tzfFileName = "data/timezone.tab";
4646
QList<GeoRegion> StelLocationMgr::regions;
4747
QMap<QString, QString> StelLocationMgr::countryCodeToRegionMap;
4848
QMap<QString, QString> StelLocationMgr::countryNameToCodeMap;
@@ -1184,35 +1184,46 @@ void StelLocationMgr::loadCountries()
11841184

11851185
void StelLocationMgr::loadTimeZones()
11861186
{
1187-
QFile tzFile(":/data/timezone.tab");
1187+
QString tzFilePath = StelFileMgr::findFile(tzfFileName, StelFileMgr::File);
1188+
if (tzFilePath.isEmpty())
1189+
{
1190+
tzFilePath = StelFileMgr::findFile(tzfFileName, StelFileMgr::New);
1191+
// Create a default TZF (time zone fixes) file
1192+
QFile tzSrc(":/data/timezone.tab");
1193+
if (!tzSrc.copy(tzFilePath))
1194+
{
1195+
qWarning() << "Cannot copy time zones file to " + QDir::toNativeSeparators(tzFilePath);
1196+
return;
1197+
}
1198+
}
1199+
QFile tzFile(tzFilePath);
1200+
11881201
if(tzFile.open(QFile::ReadOnly | QFile::Text))
11891202
{
1190-
if (locationDBToIANAtranslations.isEmpty())
1203+
locationDBToIANAtranslations.clear();
1204+
QString line;
1205+
int readOk=0;
1206+
locationDBToIANAtranslations.insert("", "UTC");
1207+
while(!tzFile.atEnd())
11911208
{
1192-
QString line;
1193-
int readOk=0;
1194-
locationDBToIANAtranslations.insert("", "UTC");
1195-
while(!tzFile.atEnd())
1196-
{
1197-
line = QString::fromUtf8(tzFile.readLine());
1198-
if (line.startsWith("//") || line.startsWith("#") || line.isEmpty())
1199-
continue;
1209+
line = QString::fromUtf8(tzFile.readLine());
1210+
if (line.startsWith("//") || line.startsWith("#") || line.isEmpty())
1211+
continue;
12001212

1201-
if (!line.isEmpty())
1202-
{
1203-
#if (QT_VERSION>=QT_VERSION_CHECK(5, 14, 0))
1204-
QStringList list=line.split("\t", Qt::KeepEmptyParts);
1205-
#else
1206-
QStringList list=line.split("\t", QString::KeepEmptyParts);
1207-
#endif
1213+
if (!line.isEmpty())
1214+
{
1215+
#if (QT_VERSION>=QT_VERSION_CHECK(5, 14, 0))
1216+
QStringList list=line.split("\t", Qt::KeepEmptyParts);
1217+
#else
1218+
QStringList list=line.split("\t", QString::KeepEmptyParts);
1219+
#endif
12081220

1209-
// The first entry is the DB name, the second is as we display it in the program.
1210-
locationDBToIANAtranslations.insert(list.at(0).trimmed().toLocal8Bit(), list.at(1).trimmed().toLocal8Bit());
1211-
readOk++;
1212-
}
1221+
// The first entry is the DB name, the second is as we display it in the program.
1222+
locationDBToIANAtranslations.insert(list.at(0).trimmed().toLocal8Bit(), list.at(1).trimmed().toLocal8Bit());
1223+
readOk++;
12131224
}
1214-
qDebug() << "Loaded" << readOk << "fixes for time zones";
12151225
}
1226+
qDebug() << "Loaded" << readOk << "fixes for time zones";
12161227
tzFile.close();
12171228
}
12181229
}

src/core/StelLocationMgr.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ private slots:
183183
static QList<GeoRegion> regions;
184184
static QMap<QString, QString> countryCodeToRegionMap;
185185
static QMap<QString, QString> countryNameToCodeMap;
186+
static QString tzfFileName;
186187

187188
StelLocation lastResortLocation;
188189

0 commit comments

Comments
 (0)