Changeset View
Changeset View
Standalone View
Standalone View
kcms/translations/translationsmodel.h
Show All 25 Lines | |||||
26 | #include <KConfigGroup> | 26 | #include <KConfigGroup> | ||
27 | 27 | | |||
28 | #include <QSet> | 28 | #include <QSet> | ||
29 | 29 | | |||
30 | class TranslationsModel : public QAbstractListModel | 30 | class TranslationsModel : public QAbstractListModel | ||
31 | { | 31 | { | ||
32 | Q_OBJECT | 32 | Q_OBJECT | ||
33 | 33 | | |||
34 | Q_PROPERTY(QStringList selectedLanguages READ selectedLanguages WRITE setSelectedLanguages NOTIFY selectedLanguagesChanged) | | |||
35 | Q_PROPERTY(QStringList missingLanguages READ missingLanguages NOTIFY missingLanguagesChanged) | | |||
36 | | ||||
37 | public: | 34 | public: | ||
38 | enum AdditionalRoles { | 35 | enum AdditionalRoles { | ||
39 | LanguageCode = Qt::UserRole + 1, | 36 | LanguageCode = Qt::UserRole + 1, | ||
40 | IsSelected, | | |||
41 | SelectedPriority, | | |||
42 | IsMissing | 37 | IsMissing | ||
43 | }; | 38 | }; | ||
44 | Q_ENUM(AdditionalRoles) | 39 | Q_ENUM(AdditionalRoles) | ||
45 | 40 | | |||
46 | explicit TranslationsModel(QObject *parent = nullptr); | 41 | explicit TranslationsModel(QObject *parent = nullptr); | ||
47 | ~TranslationsModel() override; | 42 | ~TranslationsModel() override; | ||
48 | 43 | | |||
49 | QHash<int, QByteArray> roleNames() const override; | 44 | QHash<int, QByteArray> roleNames() const override; | ||
50 | 45 | | |||
51 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; | 46 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; | ||
52 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; | 47 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; | ||
53 | 48 | | |||
49 | protected: | ||||
50 | QString languageCodeToName(const QString& languageCode) const; | ||||
51 | | ||||
52 | static QStringList m_languages; | ||||
53 | | ||||
54 | static QSet<QString> m_installedLanguages; | ||||
55 | }; | ||||
56 | | ||||
57 | class SelectedTranslationsModel : public TranslationsModel | ||||
58 | { | ||||
59 | Q_OBJECT | ||||
60 | | ||||
61 | Q_PROPERTY(QStringList selectedLanguages READ selectedLanguages WRITE setSelectedLanguages NOTIFY selectedLanguagesChanged) | ||||
62 | Q_PROPERTY(QStringList missingLanguages READ missingLanguages NOTIFY missingLanguagesChanged) | ||||
63 | | ||||
64 | public: | ||||
65 | explicit SelectedTranslationsModel(QObject *parent = nullptr); | ||||
66 | ~SelectedTranslationsModel() override; | ||||
67 | | ||||
68 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; | ||||
69 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; | ||||
70 | | ||||
54 | QStringList selectedLanguages() const; | 71 | QStringList selectedLanguages() const; | ||
55 | void setSelectedLanguages(const QStringList &languages); | 72 | void setSelectedLanguages(const QStringList &languages); | ||
56 | 73 | | |||
57 | QStringList missingLanguages() const; | 74 | QStringList missingLanguages() const; | ||
58 | 75 | | |||
59 | public Q_SLOTS: | 76 | Q_INVOKABLE void move(int from, int to); | ||
60 | void moveSelectedLanguage(int from, int to); | 77 | Q_INVOKABLE void remove(const QString &languageCode); | ||
61 | void removeSelectedLanguage(const QString &languageCode); | | |||
62 | 78 | | |||
63 | Q_SIGNALS: | 79 | Q_SIGNALS: | ||
64 | void selectedLanguagesChanged() const; | 80 | void selectedLanguagesChanged(const QStringList &languages) const; | ||
65 | void missingLanguagesChanged() const; | 81 | void missingLanguagesChanged() const; | ||
66 | 82 | | |||
67 | private: | 83 | private: | ||
68 | QString languageCodeToName(const QString& languageCode) const; | 84 | QStringList m_selectedLanguages; | ||
85 | QStringList m_missingLanguages; | ||||
86 | }; | ||||
87 | | ||||
88 | class AvailableTranslationsModel : public TranslationsModel | ||||
89 | { | ||||
90 | Q_OBJECT | ||||
69 | 91 | | |||
70 | KConfigGroup m_config; | 92 | public: | ||
93 | explicit AvailableTranslationsModel(QObject *parent = nullptr); | ||||
94 | ~AvailableTranslationsModel() override; | ||||
71 | 95 | | |||
72 | QStringList m_languages; | 96 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; | ||
97 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; | ||||
73 | 98 | | |||
74 | QSet<QString> m_installedLanguages; | 99 | Q_INVOKABLE QString langCodeAt(int row); | ||
75 | 100 | | |||
76 | QStringList m_selectedLanguages; | 101 | public Q_SLOTS: | ||
77 | QStringList m_missingLanguages; | 102 | void setSelectedLanguages(const QStringList &languages); | ||
103 | | ||||
104 | private: | ||||
105 | QStringList m_availableLanguages; | ||||
78 | }; | 106 | }; | ||
79 | 107 | | |||
80 | #endif | 108 | #endif |