diff options
author | Viktor Verebelyi <vviktor2@gmail.com> | 2020-09-22 02:07:38 +0100 |
---|---|---|
committer | Viktor Verebelyi <vviktor2@gmail.com> | 2020-09-22 02:25:17 +0100 |
commit | a8ee3ffa0a483bb829aaf7c6bd1d054107338210 (patch) | |
tree | 882c1715c831bd9de5b9eb0e205058f8f1586b4d /navit/gui/qt5_qml/navitlayoutsmodel.cpp | |
parent | a48a78fa14682482d85a5dc613c92d012eb93ff5 (diff) | |
download | navit-a8ee3ffa0a483bb829aaf7c6bd1d054107338210.tar.gz |
Add:qt5_gui:Levy add Layers, Layout, Maps and Vehicle models and menu options
Diffstat (limited to 'navit/gui/qt5_qml/navitlayoutsmodel.cpp')
-rw-r--r-- | navit/gui/qt5_qml/navitlayoutsmodel.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/navit/gui/qt5_qml/navitlayoutsmodel.cpp b/navit/gui/qt5_qml/navitlayoutsmodel.cpp new file mode 100644 index 000000000..eb2114f4d --- /dev/null +++ b/navit/gui/qt5_qml/navitlayoutsmodel.cpp @@ -0,0 +1,97 @@ +#include "navitlayoutsmodel.h" + +NavitLayoutsModel::NavitLayoutsModel(QObject *parent) +{ + +} + +QHash<int, QByteArray> NavitLayoutsModel::roleNames() const{ + QHash<int, QByteArray> roles; + roles[NameRole] = "name"; + roles[ActionRole] = "action"; + roles[ImageUrlRole] = "imageUrl"; + return roles; +} + +QVariant NavitLayoutsModel::data(const QModelIndex & index, int role) const { + if (index.row() < 0 || index.row() >= m_layouts.count()) + return QVariant(); + + const QVariantMap *poi = &m_layouts.at(index.row()); + + if (role == NameRole) + return poi->value("name"); + else if (role == ActionRole) + return poi->value("action"); + else if (role == ImageUrlRole) + return poi->value("imageUrl"); + return QVariant(); +} + + +int NavitLayoutsModel::rowCount(const QModelIndex & parent) const { + return m_layouts.count(); +} + +Qt::ItemFlags NavitLayoutsModel::flags(const QModelIndex &index) const { + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; +} + +bool NavitLayoutsModel::setData(const QModelIndex &index, const QVariant &value, int role) { + return false; +} + +QModelIndex NavitLayoutsModel::index(int row, int column, const QModelIndex &parent) const { + return createIndex(row, column); +} + +QModelIndex NavitLayoutsModel::parent(const QModelIndex &child) const { + return QModelIndex(); +} + +int NavitLayoutsModel::columnCount(const QModelIndex &parent) const { + return 0; +} + +void NavitLayoutsModel::setNavit(NavitInstance * navit){ + m_navitInstance = navit; + update(); +} +void NavitLayoutsModel::update() { + if(m_navitInstance){ + struct attr attr; + struct attr_iter *iter; + + beginResetModel(); + m_layouts.clear(); + endResetModel(); + + iter=navit_attr_iter_new(nullptr); + navit_get_attr(m_navitInstance->getNavit(), attr_layout, &attr, nullptr); + QString activeLayout = QString::fromLocal8Bit(attr.u.layout->name); + while(navit_get_attr(m_navitInstance->getNavit(), attr_layout, &attr, iter)) { + QVariantMap layouts; + QString layout = QString::fromLocal8Bit(attr.u.layout->name); + layouts.insert("name",layout); + layouts.insert("action", "setLayout"); + if(layout == activeLayout){ + layouts.insert("imageUrl", "qrc:/themes/Levy/assets/ionicons/md-checkmark-circle-outline.svg"); + } else { + layouts.insert("imageUrl", ""); + } + + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + m_layouts.append(layouts); + endInsertRows(); + } + navit_attr_iter_destroy(iter); + emit layoutChanged(); + } +} + +void NavitLayoutsModel::setLayout(QString name){ + if(m_navitInstance){ + navit_set_layout_by_name(m_navitInstance->getNavit(), name.toUtf8().data()); + update(); + } +} |