File indexing completed on 2024-05-12 05:36:19

0001 /*
0002     SPDX-FileCopyrightText: 2020 Bhushan Shah <bshah@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #include "virtualkeyboard.h"
0008 #include <KLocalizedString>
0009 #include <KPluginFactory>
0010 
0011 #include <QDir>
0012 
0013 #include "languagemodel.h"
0014 
0015 // clang-format off
0016 
0017 #define SETTER(setter, member, gsetting, signal) \
0018     void VirtualKeyboard::setter(bool enabled) \
0019     { \
0020         if (member != enabled) {\
0021             member = enabled; \
0022             m_gsettings->set(gsetting, enabled); \
0023             Q_EMIT signal();\
0024         }\
0025     }
0026 
0027 // clang-format on
0028 
0029 K_PLUGIN_CLASS_WITH_JSON(VirtualKeyboard, "kcm_mobile_onscreenkeyboard.json")
0030 
0031 VirtualKeyboard::VirtualKeyboard(QObject *parent, const KPluginMetaData &metaData)
0032     : KQuickConfigModule(parent, metaData)
0033     , m_gsettings(new GSettingsItem("/org/maliit/keyboard/maliit/", parent))
0034     , m_langModel(new LanguageModel(this, m_gsettings))
0035 {
0036     setButtons({});
0037 
0038     qmlRegisterAnonymousType<LanguageModel>("org.kde.kcm.virtualkeyboard", 1);
0039 
0040     m_autoCapitalize = m_gsettings->value("auto-capitalization").toBool();
0041     m_autoCompleteOnSpace = m_gsettings->value("auto-completion").toBool();
0042     m_showSuggestions = m_gsettings->value("predictive-text").toBool();
0043     m_fullStopOnDoubleSpace = m_gsettings->value("double-space-full-stop").toBool();
0044     m_spellCheck = m_gsettings->value("spell-checking").toBool();
0045 
0046     m_soundFeedback = m_gsettings->value("key-press-feedback").toBool();
0047     m_vibrateFeedback = m_gsettings->value("key-press-haptic-feedback").toBool();
0048 }
0049 
0050 SETTER(setAutoCapitalize, m_autoCapitalize, "auto-capitalization", autoCapitalizeChanged)
0051 SETTER(setAutoCompleteOnSpace, m_autoCompleteOnSpace, "auto-completion", autoCompleteOnSpaceChanged);
0052 SETTER(setShowSuggestions, m_showSuggestions, "predictive-text", showSuggestionsChanged)
0053 SETTER(setFullStopOnDoubleSpace, m_fullStopOnDoubleSpace, "double-space-full-stop", fullStopOnDoubleSpaceChanged)
0054 SETTER(setSpellCheck, m_spellCheck, "spell-checking", spellCheckChanged)
0055 
0056 SETTER(setSoundFeedback, m_soundFeedback, "key-press-feedback", soundFeedbackChanged)
0057 SETTER(setVibrateFeedback, m_vibrateFeedback, "key-press-haptic-feedback", vibrateFeedbackChanged)
0058 
0059 #include "virtualkeyboard.moc"