Store enum type in settings directly

Affected settings will be migrated to new keys so nothing should break.

PR #15800.
This commit is contained in:
Chocobo1
2021-12-06 13:53:52 +08:00
committed by GitHub
parent ab5605d54b
commit e3fe66d3ec
10 changed files with 216 additions and 67 deletions

View File

@@ -61,7 +61,7 @@ bool BandwidthScheduler::isTimeForAlternative() const
QTime start = pref->getSchedulerStartTime();
QTime end = pref->getSchedulerEndTime();
const QTime now = QTime::currentTime();
const int schedulerDays = pref->getSchedulerDays();
const Scheduler::Days schedulerDays = pref->getSchedulerDays();
const int day = QDate::currentDate().dayOfWeek();
bool alternative = false;
@@ -75,20 +75,34 @@ bool BandwidthScheduler::isTimeForAlternative() const
{
switch (schedulerDays)
{
case EVERY_DAY:
case Scheduler::Days::EveryDay:
alternative = !alternative;
break;
case WEEK_ENDS:
case Scheduler::Days::Monday:
case Scheduler::Days::Tuesday:
case Scheduler::Days::Wednesday:
case Scheduler::Days::Thursday:
case Scheduler::Days::Friday:
case Scheduler::Days::Saturday:
case Scheduler::Days::Sunday:
{
const int offset = static_cast<int>(Scheduler::Days::Monday) - 1;
const int dayOfWeek = static_cast<int>(schedulerDays) - offset;
if (day == dayOfWeek)
alternative = !alternative;
}
break;
case Scheduler::Days::Weekday:
if ((day >= 1) && (day <= 5))
alternative = !alternative;
break;
case Scheduler::Days::Weekend:
if ((day == 6) || (day == 7))
alternative = !alternative;
break;
case WEEK_DAYS:
if ((day != 6) && (day != 7))
alternative = !alternative;
break;
default:
if (day == (schedulerDays - 2))
alternative = !alternative;
Q_ASSERT(false);
break;
}
}

View File

@@ -41,7 +41,7 @@ using namespace Net;
DNSUpdater::DNSUpdater(QObject *parent)
: QObject(parent)
, m_state(OK)
, m_service(DNS::NONE)
, m_service(DNS::Service::None)
{
updateCredentials();
@@ -143,15 +143,16 @@ QString DNSUpdater::getUpdateUrl() const
// Service specific
switch (m_service)
{
case DNS::DYNDNS:
case DNS::Service::DynDNS:
url.setHost("members.dyndns.org");
break;
case DNS::NOIP:
case DNS::Service::NoIP:
url.setHost("dynupdate.no-ip.com");
break;
default:
qWarning() << "Unrecognized Dynamic DNS service!";
Q_ASSERT(0);
Q_ASSERT(false);
break;
}
url.setPath("/nic/update");
@@ -295,16 +296,17 @@ void DNSUpdater::updateCredentials()
}
}
QUrl DNSUpdater::getRegistrationUrl(const int service)
QUrl DNSUpdater::getRegistrationUrl(const DNS::Service service)
{
switch (service)
{
case DNS::DYNDNS:
case DNS::Service::DynDNS:
return {"https://account.dyn.com/entrance/"};
case DNS::NOIP:
case DNS::Service::NoIP:
return {"https://www.noip.com/remote-access"};
default:
Q_ASSERT(0);
Q_ASSERT(false);
break;
}
return {};
}

View File

@@ -48,7 +48,7 @@ namespace Net
explicit DNSUpdater(QObject *parent = nullptr);
~DNSUpdater();
static QUrl getRegistrationUrl(int service);
static QUrl getRegistrationUrl(DNS::Service service);
public slots:
void updateCredentials();

View File

@@ -493,14 +493,14 @@ void Preferences::setSchedulerEndTime(const QTime &time)
setValue("Preferences/Scheduler/end_time", time);
}
SchedulerDays Preferences::getSchedulerDays() const
Scheduler::Days Preferences::getSchedulerDays() const
{
return static_cast<SchedulerDays>(value("Preferences/Scheduler/days", EVERY_DAY).toInt());
return SettingsStorage::instance()->loadValue("Preferences/Scheduler/days", Scheduler::Days::EveryDay);
}
void Preferences::setSchedulerDays(const SchedulerDays days)
void Preferences::setSchedulerDays(const Scheduler::Days days)
{
setValue("Preferences/Scheduler/days", static_cast<int>(days));
SettingsStorage::instance()->storeValue("Preferences/Scheduler/days", days);
}
// Search
@@ -816,12 +816,12 @@ void Preferences::setDynDNSEnabled(const bool enabled)
DNS::Service Preferences::getDynDNSService() const
{
return DNS::Service(value("Preferences/DynDNS/Service", DNS::DYNDNS).toInt());
return SettingsStorage::instance()->loadValue("Preferences/DynDNS/Service", DNS::Service::DynDNS);
}
void Preferences::setDynDNSService(const int service)
void Preferences::setDynDNSService(const DNS::Service service)
{
setValue("Preferences/DynDNS/Service", service);
SettingsStorage::instance()->storeValue("Preferences/DynDNS/Service", service);
}
QString Preferences::getDynDomainName() const
@@ -1211,12 +1211,12 @@ void Preferences::setConfirmRemoveAllTags(const bool enabled)
#ifndef Q_OS_MACOS
TrayIcon::Style Preferences::trayIconStyle() const
{
return TrayIcon::Style(value("Preferences/Advanced/TrayIconStyle", TrayIcon::NORMAL).toInt());
return SettingsStorage::instance()->loadValue("Preferences/Advanced/TrayIconStyle", TrayIcon::Style::Normal);
}
void Preferences::setTrayIconStyle(const TrayIcon::Style style)
{
setValue("Preferences/Advanced/TrayIconStyle", style);
SettingsStorage::instance()->storeValue("Preferences/Advanced/TrayIconStyle", style);
}
#endif

View File

@@ -29,6 +29,7 @@
#pragma once
#include <QObject>
#include <QtContainerFwd>
#include <QtGlobal>
#include <QVariant>
@@ -40,38 +41,50 @@ class QNetworkCookie;
class QSize;
class QTime;
enum SchedulerDays
namespace Scheduler
{
EVERY_DAY,
WEEK_DAYS,
WEEK_ENDS,
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
};
Q_NAMESPACE
namespace TrayIcon
{
enum Style
enum class Days : int
{
NORMAL = 0,
MONO_DARK,
MONO_LIGHT
EveryDay = 0,
Weekday = 1,
Weekend = 2,
Monday = 3,
Tuesday = 4,
Wednesday = 5,
Thursday = 6,
Friday = 7,
Saturday = 8,
Sunday = 9
};
Q_ENUM_NS(Days)
}
namespace DNS
{
enum Service
Q_NAMESPACE
enum class Service : int
{
DYNDNS,
NOIP,
NONE = -1
DynDNS = 0,
NoIP = 1,
None = -1
};
Q_ENUM_NS(Service)
}
namespace TrayIcon
{
Q_NAMESPACE
enum class Style : int
{
Normal = 0,
MonoDark = 1,
MonoLight = 2
};
Q_ENUM_NS(Style)
}
class Preferences : public QObject
@@ -161,8 +174,8 @@ public:
void setSchedulerStartTime(const QTime &time);
QTime getSchedulerEndTime() const;
void setSchedulerEndTime(const QTime &time);
SchedulerDays getSchedulerDays() const;
void setSchedulerDays(SchedulerDays days);
Scheduler::Days getSchedulerDays() const;
void setSchedulerDays(Scheduler::Days days);
// Search
bool isSearchEnabled() const;
@@ -236,7 +249,7 @@ public:
bool isDynDNSEnabled() const;
void setDynDNSEnabled(bool enabled);
DNS::Service getDynDNSService() const;
void setDynDNSService(int service);
void setDynDNSService(DNS::Service service);
QString getDynDomainName() const;
void setDynDomainName(const QString &name);
QString getDynDNSUsername() const;