feat: add reminder scheduling and sound controls
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include <QJsonParseError>
|
||||
#include <QJsonValue>
|
||||
#include <QStandardPaths>
|
||||
#include <QtGlobal>
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -57,6 +58,15 @@ QJsonObject characterObjectFromConfig(const AppConfig &config)
|
||||
return character;
|
||||
}
|
||||
|
||||
QJsonObject reminderObjectFromConfig(const AppConfig &config)
|
||||
{
|
||||
QJsonObject reminder;
|
||||
reminder.insert(QStringLiteral("soundId"), config.reminderSoundId);
|
||||
reminder.insert(QStringLiteral("soundEnabled"), config.reminderSoundEnabled);
|
||||
reminder.insert(QStringLiteral("soundVolume"), qBound(0.0, config.reminderSoundVolume, 1.0));
|
||||
return reminder;
|
||||
}
|
||||
|
||||
QString normalizedProviderName(const QString &provider)
|
||||
{
|
||||
const QString normalized = provider.trimmed().toLower();
|
||||
@@ -258,6 +268,26 @@ AppConfig ConfigManager::loadAppConfig() const
|
||||
config.characterId = character.value(QStringLiteral("id")).toString(config.characterId).trimmed();
|
||||
}
|
||||
|
||||
const QJsonObject reminder = root.value(QStringLiteral("reminder")).toObject();
|
||||
if (reminder.contains(QStringLiteral("soundId")))
|
||||
{
|
||||
config.reminderSoundId = reminder.value(QStringLiteral("soundId")).toString(config.reminderSoundId).trimmed();
|
||||
if (config.reminderSoundId.isEmpty())
|
||||
{
|
||||
config.reminderSoundId = QStringLiteral("reminder_default");
|
||||
}
|
||||
}
|
||||
|
||||
if (reminder.contains(QStringLiteral("soundEnabled")))
|
||||
{
|
||||
config.reminderSoundEnabled = reminder.value(QStringLiteral("soundEnabled")).toBool(config.reminderSoundEnabled);
|
||||
}
|
||||
|
||||
if (reminder.contains(QStringLiteral("soundVolume")))
|
||||
{
|
||||
config.reminderSoundVolume = qBound(0.0, reminder.value(QStringLiteral("soundVolume")).toDouble(config.reminderSoundVolume), 1.0);
|
||||
}
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
@@ -346,6 +376,7 @@ bool ConfigManager::saveAppConfig(const AppConfig &config) const
|
||||
root.insert(QStringLiteral("performance"), performanceObjectFromConfig(config));
|
||||
root.insert(QStringLiteral("chat"), chatObjectFromConfig(config));
|
||||
root.insert(QStringLiteral("character"), characterObjectFromConfig(config));
|
||||
root.insert(QStringLiteral("reminder"), reminderObjectFromConfig(config));
|
||||
|
||||
QFile file(appConfigPath());
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
|
||||
|
||||
Reference in New Issue
Block a user