Krita Source Code Documentation
Loading...
Searching...
No Matches
LocaleHandler.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef LOCALEHANDLER_H
7#define LOCALEHANDLER_H
8
9#include <QObject>
10#include <QAbstractListModel>
11#include <QSortFilterProxyModel>
12
21class LocaleHandler : public QObject
22{
23 Q_OBJECT
24
25 Q_PROPERTY(QString bcp47Tag READ bcp47Tag WRITE setBcp47Tag NOTIFY bcp47TagChanged)
26 Q_PROPERTY(QString script READ script WRITE setScript NOTIFY scriptChanged)
27 Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged)
28
29 Q_PROPERTY(QAbstractItemModel *languagesModel READ languagesModel NOTIFY languagesModelChanged)
30 Q_PROPERTY(QString searchString READ searchString WRITE setSearchString NOTIFY searchStringChanged)
31 Q_PROPERTY(QAbstractItemModel *favoritesModel READ favoritesModel NOTIFY favoritesModelChanged)
32
33 Q_PROPERTY(bool localeValid READ localeValid NOTIFY languageChanged)
34
35public:
36 LocaleHandler(QObject *parent = nullptr);
38
39 QString bcp47Tag() const;
40 void setBcp47Tag(const QString &newBcp47Tag);
41
42 QString script() const;
43 void setScript(const QString &newScript);
44
45 QString language() const;
46 void setLanguage(const QString &newLanguage);
47
48 Q_INVOKABLE QVariantList scriptModel() const;
49
50 QAbstractItemModel *languagesModel() const;
51
52 QAbstractItemModel *favoritesModel() const;
53
54 QString searchString() const;
55 void setSearchString(const QString &newSearchString);
56
57 bool localeValid() const;
58
59 Q_INVOKABLE bool validBcp47Tag(const QString &tag) const;
60
61Q_SIGNALS:
62
64
66
68
70
72
74
75private:
76
77 struct Private;
78 const QScopedPointer<Private> d;
79};
80
81class AllLanguagesModel : public QAbstractListModel {
82 Q_OBJECT
83public:
84 AllLanguagesModel(QObject *parent = nullptr);
86
87 enum Roles {
88 Code = Qt::UserRole+1
89 };
90
91 int rowCount(const QModelIndex &parent) const override;
92 QVariant data(const QModelIndex &index, int role) const override;
93
94 QHash<int, QByteArray> roleNames() const override;
95private:
96 struct Private;
97 const QScopedPointer<Private> d;
98};
99
104class FavoriteLocaleModel : public QAbstractListModel {
105 Q_OBJECT
106public:
107 FavoriteLocaleModel(QObject *parent = nullptr);
109
110 enum Roles {
111 Code = Qt::UserRole + 1,
112 Favorite
113 };
114
115 int rowCount(const QModelIndex &parent) const override;
116 QVariant data(const QModelIndex &index, int role) const override;
117
118 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
119
120 void addCode(const QString &code);
121
122 QHash<int, QByteArray> roleNames() const override;
123Q_SIGNALS:
125private Q_SLOTS:
126 void updateConfig();
127private:
128
129
130 struct Private;
131 const QScopedPointer<Private> d;
132};
133
138class LanguagesFilterModel : public QSortFilterProxyModel {
139public:
140 LanguagesFilterModel(QObject *parent = nullptr);
141
142 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
143};
144
145#endif // LOCALEHANDLER_H
float value(const T *src, size_t ch)
const QScopedPointer< Private > d
The FavoriteLocaleModel class This class keeps track of favorite locales from the config.
const QScopedPointer< Private > d
The LanguagesFilterModel class class that tests both the name and the code.
The LocaleHandler class.
QString searchString
void setLanguage(const QString &newLanguage)
void setSearchString(const QString &newSearchString)
Q_INVOKABLE QVariantList scriptModel() const
QAbstractItemModel * favoritesModel
QAbstractItemModel * languagesModel
void languageChanged()
const QScopedPointer< Private > d
void languagesModelChanged()
void favoritesModelChanged()
void setBcp47Tag(const QString &newBcp47Tag)
void bcp47TagChanged()
Q_INVOKABLE bool validBcp47Tag(const QString &tag) const
void setScript(const QString &newScript)
void scriptChanged()
void searchStringChanged()