Skip to content

Commit

Permalink
Move TZF file into user directory
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-w committed Apr 27, 2023
1 parent d305bcf commit 4d5363c
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 23 deletions.
57 changes: 34 additions & 23 deletions src/core/StelLocationMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
#include <QRegularExpression>

TimezoneNameMap StelLocationMgr::locationDBToIANAtranslations;

QString StelLocationMgr::tzfFileName = "data/timezone.tab";
QList<GeoRegion> StelLocationMgr::regions;
QMap<QString, QString> StelLocationMgr::countryCodeToRegionMap;
QMap<QString, QString> StelLocationMgr::countryNameToCodeMap;
Expand Down Expand Up @@ -1184,35 +1184,46 @@ void StelLocationMgr::loadCountries()

void StelLocationMgr::loadTimeZones()
{
QFile tzFile(":/data/timezone.tab");
QString tzFilePath = StelFileMgr::findFile(tzfFileName, StelFileMgr::File);
if (tzFilePath.isEmpty())
{
tzFilePath = StelFileMgr::findFile(tzfFileName, StelFileMgr::New);
// Create a default TZF (time zone fixes) file
QFile tzSrc(":/data/timezone.tab");
if (!tzSrc.copy(tzFilePath))
{
qWarning() << "Cannot copy time zones file to " + QDir::toNativeSeparators(tzFilePath);
return;
}
}
QFile tzFile(tzFilePath);

if(tzFile.open(QFile::ReadOnly | QFile::Text))
{
if (locationDBToIANAtranslations.isEmpty())
locationDBToIANAtranslations.clear();
QString line;
int readOk=0;
locationDBToIANAtranslations.insert("", "UTC");
while(!tzFile.atEnd())
{
QString line;
int readOk=0;
locationDBToIANAtranslations.insert("", "UTC");
while(!tzFile.atEnd())
{
line = QString::fromUtf8(tzFile.readLine());
if (line.startsWith("//") || line.startsWith("#") || line.isEmpty())
continue;
line = QString::fromUtf8(tzFile.readLine());
if (line.startsWith("//") || line.startsWith("#") || line.isEmpty())
continue;

if (!line.isEmpty())
{
#if (QT_VERSION>=QT_VERSION_CHECK(5, 14, 0))
QStringList list=line.split("\t", Qt::KeepEmptyParts);
#else
QStringList list=line.split("\t", QString::KeepEmptyParts);
#endif
if (!line.isEmpty())
{
#if (QT_VERSION>=QT_VERSION_CHECK(5, 14, 0))
QStringList list=line.split("\t", Qt::KeepEmptyParts);
#else
QStringList list=line.split("\t", QString::KeepEmptyParts);
#endif

// The first entry is the DB name, the second is as we display it in the program.
locationDBToIANAtranslations.insert(list.at(0).trimmed().toLocal8Bit(), list.at(1).trimmed().toLocal8Bit());
readOk++;
}
// The first entry is the DB name, the second is as we display it in the program.
locationDBToIANAtranslations.insert(list.at(0).trimmed().toLocal8Bit(), list.at(1).trimmed().toLocal8Bit());
readOk++;
}
qDebug() << "Loaded" << readOk << "fixes for time zones";
}
qDebug() << "Loaded" << readOk << "fixes for time zones";
tzFile.close();
}
}
Expand Down
1 change: 1 addition & 0 deletions src/core/StelLocationMgr.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ private slots:
static QList<GeoRegion> regions;
static QMap<QString, QString> countryCodeToRegionMap;
static QMap<QString, QString> countryNameToCodeMap;
static QString tzfFileName;

StelLocation lastResortLocation;

Expand Down

0 comments on commit 4d5363c

Please sign in to comment.