mobile/statistics: export ChartListModel to QML

For QML, the roles have to be associated dynamically with
name. Moreover, the model has to be registered as a QML
type to make it accessible from QML.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2021-01-12 17:53:38 +01:00 committed by Dirk Hohndel
parent e5c30e042b
commit 46bb242c69
3 changed files with 15 additions and 0 deletions

View file

@ -60,6 +60,18 @@ Qt::ItemFlags ChartListModel::flags(const QModelIndex &index) const
: Qt::ItemIsSelectable | Qt::ItemIsEnabled;
}
QHash<int, QByteArray> ChartListModel::roleNames() const
{
QHash<int, QByteArray> roles;
roles[Qt::DisplayRole] = "display";
roles[IconRole] = "icon";
roles[IconSizeRole] = "iconSize";
roles[ChartNameRole] = "chartName";
roles[IsHeaderRole] = "isHeader";
roles[Qt::UserRole] = "id";
return roles;
}
QVariant ChartListModel::data(const QModelIndex &index, int role) const
{
int row = index.row();

View file

@ -44,6 +44,7 @@ private:
QFont itemFont;
QFont headerFont;
std::vector<Item> items;
QHash<int, QByteArray> roleNames() const override;
int rowCount(const QModelIndex &parent) const override;
QVariant data(const QModelIndex &index, int role) const override;
Qt::ItemFlags flags(const QModelIndex &index) const override;

View file

@ -17,6 +17,7 @@
#include "mobile-widgets/qmlmanager.h"
#include "mobile-widgets/qmlinterface.h"
#include "mobile-widgets/statsmanager.h"
#include "stats/chartlistmodel.h"
#include "qt-models/divesummarymodel.h"
#include "qt-models/gpslistmodel.h"
#include "qt-models/messagehandlermodel.h"
@ -212,6 +213,7 @@ static void register_qml_types(QQmlEngine *engine)
register_qml_type<QMLProfile>("QMLProfile");
register_qml_type<DiveImportedModel>("DCImportModel");
register_qml_type<DiveSummaryModel>("DiveSummaryModel");
register_qml_type<ChartListModel>("ChartListModel");
#endif // not SUBSURFACE_MOBILE
register_qml_type<MapWidgetHelper>("MapWidgetHelper");