diff options
| author | Viktor Verebelyi <vviktor2@gmail.com> | 2019-08-14 17:10:14 +0100 |
|---|---|---|
| committer | Viktor Verebelyi <vviktor2@gmail.com> | 2020-09-22 02:23:16 +0100 |
| commit | 9457e0a096bb2b802fb033f7a9551a8ad542eac2 (patch) | |
| tree | a0b062b518d5720983aa5786e4375bb2f9afa314 /navit/gui/qt5_qml/navitrecentsmodel.cpp | |
| parent | 770d5996f8291d33e26eb0b04801c1d5402d8d20 (diff) | |
| download | navit-9457e0a096bb2b802fb033f7a9551a8ad542eac2.tar.gz | |
Add:qt5_gui:Levy:Add current WIP
Diffstat (limited to 'navit/gui/qt5_qml/navitrecentsmodel.cpp')
| -rw-r--r-- | navit/gui/qt5_qml/navitrecentsmodel.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/navit/gui/qt5_qml/navitrecentsmodel.cpp b/navit/gui/qt5_qml/navitrecentsmodel.cpp new file mode 100644 index 000000000..46ed14f3f --- /dev/null +++ b/navit/gui/qt5_qml/navitrecentsmodel.cpp @@ -0,0 +1,106 @@ +#include "navitrecentsmodel.h" + +NavitRecentsModel::NavitRecentsModel(QObject *parent) +{ + +} +QHash<int, QByteArray> NavitRecentsModel::roleNames() const{ + QHash<int, QByteArray> roles; + roles[NameRole] = "name"; + roles[CoordXRole] = "coordX"; + roles[CoordYRole] = "coordY"; + roles[CoordProjectionRole] = "coordProjection"; + return roles; +} + +QVariant NavitRecentsModel::data(const QModelIndex & index, int role) const { + if (index.row() < 0 || index.row() >= m_recents.count()) + return QVariant(); + + const QVariantMap *poi = &m_recents.at(index.row()); + + if (role == NameRole) + return poi->value("name"); + if (role == CoordXRole) + return poi->value("coordX"); + if (role == CoordYRole) + return poi->value("coordY"); + if (role == CoordProjectionRole) + return poi->value("coordProjection"); + + return QVariant(); +} + + +int NavitRecentsModel::rowCount(const QModelIndex & parent) const { + return m_recents.count(); +} + +Qt::ItemFlags NavitRecentsModel::flags(const QModelIndex &index) const { + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; +} + +bool NavitRecentsModel::setData(const QModelIndex &index, const QVariant &value, int role) { + return false; +} + +QModelIndex NavitRecentsModel::index(int row, int column, const QModelIndex &parent) const { + return createIndex(row, column); +} + +QModelIndex NavitRecentsModel::parent(const QModelIndex &child) const { + return QModelIndex(); +} + +int NavitRecentsModel::columnCount(const QModelIndex &parent) const { + return 0; +} + +void NavitRecentsModel::setNavit(NavitInstance * navit){ + m_navitInstance = navit; + update(); +} +void NavitRecentsModel::update() { + if(m_navitInstance){ + struct map *formerdests; + struct map_rect *mr_formerdests; + struct item *item; + struct attr attr; + char *label_full; + enum projection projection; + + if(!navit_get_attr(m_navitInstance->getNavit(), attr_former_destination_map, &attr, nullptr)) + return; + + formerdests=attr.u.map; + if(!formerdests) + return; + + mr_formerdests=map_rect_new(formerdests, nullptr); + if(!mr_formerdests) + return; + + projection = map_projection(formerdests); + + while ((item=map_rect_get_item(mr_formerdests))) { + struct coord c; + if (item->type!=type_former_destination) continue; + if (!item_attr_get(item, attr_label, &attr)) continue; + + label_full=attr.u.str; + + if (item_coord_get(item, &c, 1)) { + QVariantMap recentItem; + recentItem.insert("coordX",c.x); + recentItem.insert("coordY",c.y); + recentItem.insert("coordProjection",projection); + recentItem.insert("name",label_full); + + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + m_recents.append(recentItem); + endInsertRows(); + } + } + map_rect_destroy(mr_formerdests); + } +} |
