kcontrol: make use of KSystemTimeZones::zoneinfoDir() in dateandtime helper

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-10-02 16:43:10 +03:00
parent 4ebf0c5a3d
commit dc331742e4

View file

@ -38,6 +38,7 @@
#include <kconfig.h> #include <kconfig.h>
#include <kconfiggroup.h> #include <kconfiggroup.h>
#include <kstandarddirs.h> #include <kstandarddirs.h>
#include <ksystemtimezone.h>
#include <QProcess> #include <QProcess>
#include <QFile> #include <QFile>
#include <QDir> #include <QDir>
@ -112,28 +113,8 @@ ClockHelper::CH_Error ClockHelper::tz( const QString& selectedzone )
return TimezoneError; return TimezoneError;
} }
// NOTE: keep in sync with ktimezoned/ktimezoned.cpp const QString tzdir = KSystemTimeZones::zoneinfoDir();
static const QStringList zoneDirs = QStringList() const QString tz = QDir::cleanPath(tzdir + QDir::separator() + selectedzone);
<< QLatin1String("/share/zoneinfo/")
<< QLatin1String("/lib/zoneinfo/")
<< QLatin1String("/usr/share/zoneinfo/")
<< QLatin1String("/usr/lib/zoneinfo/")
<< QLatin1String("/usr/local/share/zoneinfo/")
<< QLatin1String("/usr/local/lib/zoneinfo/")
<< (KStandardDirs::installPath("kdedir") + QLatin1String("/share/zoneinfo/"))
<< (KStandardDirs::installPath("kdedir") + QLatin1String("/lib/zoneinfo/"));
// /usr is kind of standard
QString ZONE_INFO_DIR = "/usr/share/zoneinfo/";
foreach (const QString &zonedir, zoneDirs) {
if (QDir(zonedir).exists()) {
ZONE_INFO_DIR = zonedir;
break;
}
}
QString tz = ZONE_INFO_DIR + selectedzone;
unlink( "/etc/localtime" ); unlink( "/etc/localtime" );
@ -141,9 +122,9 @@ ClockHelper::CH_Error ClockHelper::tz( const QString& selectedzone )
return TimezoneError; return TimezoneError;
} }
QString val = ':' + tz; QByteArray val = ':' + tz.toAscii();
setenv("TZ", val.toAscii(), 1); setenv("TZ", val.constData(), 1);
tzset(); tzset();
return NoError; return NoError;