summaryrefslogtreecommitdiff
path: root/navit/gui/qt5_qml/navitrecentsmodel.cpp
diff options
context:
space:
mode:
authorViktor Verebelyi <vviktor2@gmail.com>2019-08-14 17:10:14 +0100
committerViktor Verebelyi <vviktor2@gmail.com>2020-09-22 02:23:16 +0100
commit9457e0a096bb2b802fb033f7a9551a8ad542eac2 (patch)
treea0b062b518d5720983aa5786e4375bb2f9afa314 /navit/gui/qt5_qml/navitrecentsmodel.cpp
parent770d5996f8291d33e26eb0b04801c1d5402d8d20 (diff)
downloadnavit-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.cpp106
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);
+ }
+}