File indexing completed on 2024-04-21 05:54:07

0001 /**
0002  * SPDX-FileCopyrightText: 2022 by Alexander Stippich <a.stippich@gmx.net>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #ifndef OCR_LANGUAGE_MODEL_H
0008 #define OCR_LANGUAGE_MODEL_H
0009 
0010 #include <QAbstractListModel>
0011 
0012 struct LanguageItem {
0013     QString name;
0014     QString code;
0015     bool use;
0016 };
0017 
0018 class OCRLanguageModel : public QAbstractListModel 
0019 {
0020     Q_OBJECT
0021 
0022 public:
0023 
0024     enum LanguageModelRoles {
0025         NameRole = Qt::UserRole + 1,
0026         CodeRole,
0027         UseRole
0028     };
0029 
0030     explicit OCRLanguageModel(QObject *parent = nullptr);
0031 
0032     ~OCRLanguageModel();
0033 
0034     QHash<int, QByteArray> roleNames() const override;
0035 
0036     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0037 
0038     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0039 
0040     bool setData(const QModelIndex &index, const QVariant &value, int role) override;
0041     
0042     void setLanguages(const std::vector<std::string> &availableLanguages);
0043 
0044     std::string getLanguagesString() const;
0045 
0046 private:
0047     QList<LanguageItem> m_languages;
0048 };
0049 
0050 #endif // OCR_LANGUAGE_MODEL_H