shift-shell/initialstart/modules/time/timeutil.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

57 lines
1.4 KiB
C++
Raw Normal View History

// SPDX-FileCopyrightText: 2023 by Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "timeutil.h"
#include <QDebug>
#include <QRegularExpression>
#include <QTimeZone>
#include <KConfigGroup>
#include <KSharedConfig>
#define FORMAT24H "HH:mm:ss"
#define FORMAT12H "h:mm:ss ap"
TimeUtil::TimeUtil(QObject *parent)
: QObject{parent}
, m_timeZoneModel{new TimeZoneModel{this}}
, m_filterModel{new TimeZoneFilterProxy{this}}
{
m_filterModel->setSourceModel(m_timeZoneModel);
}
bool TimeUtil::is24HourTime() const
{
return m_is24HourTime;
}
void TimeUtil::setIs24HourTime(bool is24HourTime)
{
if (is24HourTime != m_is24HourTime) {
auto config = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::SimpleConfig);
auto group = KConfigGroup(config, "Locale");
group.writeEntry(QStringLiteral("TimeFormat"), is24HourTime ? FORMAT24H : FORMAT12H, KConfig::Notify);
config->sync();
m_is24HourTime = is24HourTime;
Q_EMIT is24HourTimeChanged();
}
}
QString TimeUtil::currentTimeZone() const
{
return QString{QTimeZone::systemTimeZoneId()};
}
void TimeUtil::setCurrentTimeZone(QString timeZone)
{
QProcess::execute("timedatectl", {"set-timezone", timeZone});
Q_EMIT currentTimeZoneChanged();
}
TimeZoneFilterProxy *TimeUtil::timeZones() const
{
return m_filterModel;
}