Files
amnezia-client/client/ui/models/languageModel.h
T

81 lines
2.1 KiB
C++
Raw Normal View History

#ifndef LANGUAGEMODEL_H
#define LANGUAGEMODEL_H
#include <QAbstractListModel>
#include <QQmlEngine>
#include "settings.h"
namespace LanguageSettings
{
Q_NAMESPACE
enum class AvailableLanguageEnum {
English,
2023-09-28 23:21:13 +08:00
Russian,
China_cn,
2024-04-04 19:25:39 +01:00
Ukrainian,
2024-02-16 12:19:47 +02:00
Persian,
2024-03-05 22:49:30 +02:00
Arabic,
2024-04-25 16:30:31 +02:00
Burmese,
2024-04-29 19:52:57 +03:00
Urdu,
Hindi
};
Q_ENUM_NS(AvailableLanguageEnum)
static void declareQmlAvailableLanguageEnum()
{
qmlRegisterUncreatableMetaObject(LanguageSettings::staticMetaObject, "AvailableLanguageEnum", 1, 0,
"AvailableLanguageEnum", QString());
}
}
struct LanguageModelData
{
QString name;
LanguageSettings::AvailableLanguageEnum index;
};
class LanguageModel : public QAbstractListModel
{
Q_OBJECT
public:
enum Roles {
NameRole = Qt::UserRole + 1,
IndexRole
};
LanguageModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
Q_PROPERTY(QString currentLanguageName READ getCurrentLanguageName NOTIFY translationsUpdated)
Q_PROPERTY(int currentLanguageIndex READ getCurrentLanguageIndex NOTIFY translationsUpdated)
2024-03-20 17:20:09 +02:00
Q_PROPERTY(int lineHeightAppend READ getLineHeightAppend NOTIFY translationsUpdated)
public slots:
void changeLanguage(const LanguageSettings::AvailableLanguageEnum language);
int getCurrentLanguageIndex();
2024-03-20 17:20:09 +02:00
int getLineHeightAppend();
QString getCurrentLanguageName();
2025-04-08 12:07:31 +07:00
QString getCurrentSiteUrl(const QString &path = "");
2025-08-01 06:36:30 +03:00
QString getCurrentDocsUrl(const QString &path = "");
signals:
void updateTranslations(const QLocale &locale);
void translationsUpdated();
protected:
QHash<int, QByteArray> roleNames() const override;
private:
2023-09-28 23:21:13 +08:00
QString getLocalLanguageName(const LanguageSettings::AvailableLanguageEnum language);
QVector<LanguageModelData> m_availableLanguages;
std::shared_ptr<Settings> m_settings;
};
#endif // LANGUAGEMODEL_H