Cockatrice/libcockatrice_settings/libcockatrice/settings/personal_settings.cpp
Lukas Brübach 6411abfb57
[CrashReporting] Mock dialog, sentry skeleton and CI prerequisites
Mock: DlgCrashReport preview dialog (no account needed, redacted log
preview), CrashReportingMode Ask/Always/Never setting in DebugSettings,
--simulate-crash flag and Help-menu preview entry. Send writes a local
mock JSON only.

Vendor sentry-native 0.17.3 via FetchContent behind
WITH_CRASH_REPORTING (breakpad everywhere, backend none under
sanitizers) plus a CrashReporter facade with early init and post-loop
shutdown. DSN is a placeholder: empty CMake default with
COCKATRICE_SENTRY_DSN env override, so SDK init is skipped and mock
behavior is unchanged until a real DSN is configured.

CI prerequisites riding here so every layer below builds green:
libcurl dev plus CA bundles in the Linux images and CodeQL env, sentry
Qt integration off (its own find_package cannot see the macOS thin Qt
layout), and the StrFunc Using construction makensis requires.

Tests: ctest green, format clean, code plus UI gates PASS.
2026-10-18 23:04:17 +02:00

74 lines
2 KiB
C++

#include "personal_settings.h"
#include "libcockatrice/settings/settings_manager.h"
#include <QList>
#include <QVariant>
class QObject;
PersonalSettings::PersonalSettings(const QString &settingPath, QObject *parent)
: SettingsManager(settingPath + "personal.ini", "personal", QString(), parent)
{
}
QString PersonalSettings::getLang() const
{
return getValue("lang", QString(), QString(), QString()).toString();
}
bool PersonalSettings::getShowTipsOnStartup() const
{
return getValue("showTips", "tipOfDay", QString(), true).toBool();
}
QList<int> PersonalSettings::getSeenTips() const
{
QList<int> tips;
auto tipValues = getValue("seenTips", "tipOfDay", QString()).toList();
for (const auto &tipNumber : tipValues) {
tips.append(tipNumber.toInt());
}
return tips;
}
void PersonalSettings::setLang(const QString &_lang)
{
setValue(_lang, "lang");
emit langChanged();
}
void PersonalSettings::setShowTipsOnStartup(bool _showTipsOnStartup)
{
setValue(_showTipsOnStartup, "showTips", "tipOfDay");
}
void PersonalSettings::setSeenTips(const QList<int> &_seenTips)
{
QList<QVariant> storedTipList;
for (auto tipNumber : _seenTips) {
storedTipList.append(tipNumber);
}
setValue(QVariant::fromValue(storedTipList), "seenTips", "tipOfDay");
}
PersonalSettings::CrashReportingMode PersonalSettings::getCrashReportingMode() const
{
const int raw = getValue("crashReportingMode", QString(), QString(), 0).toInt();
switch (raw) {
case 1:
return CrashReportingMode::AlwaysSend;
case 2:
return CrashReportingMode::NeverSend;
case 0:
default:
// Clamp corrupt ini values back to Ask; the QSettings key string is unchanged (no migration).
return CrashReportingMode::Ask;
}
}
void PersonalSettings::setCrashReportingMode(CrashReportingMode _crashReportingMode)
{
setValue(static_cast<int>(_crashReportingMode), "crashReportingMode");
emit crashReportingModeChanged(_crashReportingMode);
}