#include "Settings.h" #include "layout/Layout.h" #include namespace { constexpr auto AutoCapitalizeKey = "typing/autoCapitalize"; constexpr auto DoubleSpacePeriodKey = "typing/doubleSpacePeriod"; constexpr auto VisibleSectionsKey = "layout/visibleSections"; constexpr auto FullKeyboardKey = "layout/fullKeyboard"; } Settings::Settings(QObject *parent) : QObject(parent) { const QSettings store; const TypingOptions defaults; m_typing.autoCapitalize = store.value(AutoCapitalizeKey, defaults.autoCapitalize).toBool(); m_typing.doubleSpacePeriod = store.value(DoubleSpacePeriodKey, defaults.doubleSpacePeriod).toBool(); m_visibleSections = store.value(VisibleSectionsKey, QStringList{MainSectionId}).toStringList(); if (m_visibleSections.isEmpty()) m_visibleSections = {MainSectionId}; m_fullKeyboard = store.value(FullKeyboardKey, false).toBool(); } void Settings::setFullKeyboard(bool full) { if (full == m_fullKeyboard) return; m_fullKeyboard = full; QSettings().setValue(FullKeyboardKey, full); Q_EMIT fullKeyboardChanged(); } void Settings::setSectionVisible(const QString &id, bool visible) { QStringList sections = m_visibleSections; if (visible && !sections.contains(id)) sections.append(id); else if (!visible) sections.removeAll(id); if (sections == m_visibleSections || sections.isEmpty()) return; m_visibleSections = sections; QSettings().setValue(VisibleSectionsKey, m_visibleSections); Q_EMIT visibleSectionsChanged(); } void Settings::setAutoCapitalize(bool enabled) { TypingOptions options = m_typing; options.autoCapitalize = enabled; setTypingOptions(options); } void Settings::setDoubleSpacePeriod(bool enabled) { TypingOptions options = m_typing; options.doubleSpacePeriod = enabled; setTypingOptions(options); } void Settings::setTypingOptions(const TypingOptions &options) { if (options == m_typing) return; m_typing = options; QSettings store; store.setValue(AutoCapitalizeKey, m_typing.autoCapitalize); store.setValue(DoubleSpacePeriodKey, m_typing.doubleSpacePeriod); Q_EMIT typingOptionsChanged(); }