File indexing completed on 2024-04-28 11:49:00
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Benjamin Port <benjamin.port@enioka.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 #ifndef SONNET_SETTINGS_H 0007 #define SONNET_SETTINGS_H 0008 0009 #include <QAbstractListModel> 0010 #include <QString> 0011 #include <QStringList> 0012 #include <QtCore/QObject> 0013 0014 #include "sonnetcore_export.h" 0015 0016 namespace Sonnet 0017 { 0018 class Loader; 0019 class SettingsPrivate; 0020 0021 class SONNETCORE_EXPORT Settings : public QObject 0022 { 0023 Q_OBJECT 0024 /// This property holds whether Sonnet should skip checkign words starting with an uppercase letter. 0025 Q_PROPERTY(bool skipUppercase READ skipUppercase WRITE setSkipUppercase NOTIFY skipUppercaseChanged) 0026 /// This property holds whether Sonnet should autodetect language. 0027 Q_PROPERTY(bool autodetectLanguage READ autodetectLanguage WRITE setAutodetectLanguage NOTIFY autodetectLanguageChanged) 0028 /// This property holds whether Sonnet should run spellchecking checks in the background. 0029 Q_PROPERTY(bool backgroundCheckerEnabled READ backgroundCheckerEnabled WRITE setBackgroundCheckerEnabled NOTIFY backgroundCheckerEnabledChanged) 0030 /// This property holds whether Sonnet should be enabled by default. 0031 Q_PROPERTY(bool checkerEnabledByDefault READ checkerEnabledByDefault WRITE setCheckerEnabledByDefault NOTIFY checkerEnabledByDefaultChanged) 0032 /// This property holds whether Sonnet should skip checking compounds words. 0033 Q_PROPERTY(bool skipRunTogether READ skipRunTogether WRITE setSkipRunTogether NOTIFY skipRunTogetherChanged) 0034 /// This property holds the list of ignored words. 0035 Q_PROPERTY(QStringList currentIgnoreList READ currentIgnoreList WRITE setCurrentIgnoreList NOTIFY currentIgnoreListChanged) 0036 /// This property holds the list of preferred languages. 0037 Q_PROPERTY(QStringList preferredLanguages READ preferredLanguages WRITE setPreferredLanguages NOTIFY preferredLanguagesChanged) 0038 /// This property holds the default language for spell checking. 0039 Q_PROPERTY(QString defaultLanguage READ defaultLanguage WRITE setDefaultLanguage NOTIFY defaultLanguageChanged) 0040 0041 /// This property holds a Qt Model containing all the preferred dictionaries 0042 /// with language description and theirs codes. This model makes the 0043 /// Qt::DisplayRole as well as the roles defined in \ref DictionaryRoles 0044 /// available. 0045 /// \since 5.88 0046 Q_PROPERTY(QAbstractListModel *dictionaryModel READ dictionaryModel CONSTANT) 0047 0048 Q_PROPERTY(bool modified READ modified NOTIFY modifiedChanged) 0049 0050 public: 0051 /// Roles for \ref dictionaryModel 0052 enum DictionaryRoles { 0053 LanguageCodeRole = Qt::UserRole + 1, //< Language code of the language. This uses "languageCode" as roleNames. 0054 PreferredRole, //< This role holds whether the language is one of the preferred languages. This uses "isPreferred" as roleNames. 0055 DefaultRole //< This role holds whether the language is the default language. This uses "isDefault" as roleNames. 0056 }; 0057 0058 explicit Settings(QObject *parent = nullptr); 0059 ~Settings() override; 0060 0061 void setDefaultLanguage(const QString &lang); 0062 QString defaultLanguage() const; 0063 0064 void setPreferredLanguages(const QStringList &lang); 0065 QStringList preferredLanguages() const; 0066 0067 void setDefaultClient(const QString &client); 0068 QString defaultClient() const; 0069 0070 void setSkipUppercase(bool); 0071 bool skipUppercase() const; 0072 0073 void setAutodetectLanguage(bool); 0074 bool autodetectLanguage() const; 0075 0076 void setSkipRunTogether(bool); 0077 bool skipRunTogether() const; 0078 0079 void setBackgroundCheckerEnabled(bool); 0080 bool backgroundCheckerEnabled() const; 0081 0082 void setCheckerEnabledByDefault(bool); 0083 bool checkerEnabledByDefault() const; 0084 0085 void setCurrentIgnoreList(const QStringList &ignores); 0086 QStringList currentIgnoreList() const; 0087 0088 QStringList clients() const; 0089 bool modified() const; 0090 0091 QAbstractListModel *dictionaryModel(); 0092 0093 Q_INVOKABLE void save(); 0094 0095 static QStringList defaultIgnoreList(); 0096 static bool defaultSkipUppercase(); 0097 static bool defaultAutodetectLanguage(); 0098 static bool defaultBackgroundCheckerEnabled(); 0099 static bool defaultCheckerEnabledByDefault(); 0100 static bool defauktSkipRunTogether(); 0101 static QString defaultDefaultLanguage(); 0102 static QStringList defaultPreferredLanguages(); 0103 0104 Q_SIGNALS: 0105 void skipUppercaseChanged(); 0106 void autodetectLanguageChanged(); 0107 void backgroundCheckerEnabledChanged(); 0108 void defaultClientChanged(); 0109 void defaultLanguageChanged(); 0110 void preferredLanguagesChanged(); 0111 void skipRunTogetherChanged(); 0112 void checkerEnabledByDefaultChanged(); 0113 void currentIgnoreListChanged(); 0114 void modifiedChanged(); 0115 0116 private: 0117 friend class Loader; 0118 SettingsPrivate *const d; 0119 }; 0120 } 0121 Q_DECLARE_METATYPE(QAbstractListModel *) 0122 0123 #endif // SONNET_SETTINGS_H