subsurface/qt-models/maplocationmodel.h
Berthold Stoeger c5f355ee8b Cleanup: remove default constructor from MapLocation
Since this is no longer a Q_METATYPE, nobody will try to
default construct this object. Remove the default constructor
and guarantee that there will be no null divesite.

Of course, the lack of default constructor means that the
default argument to the "selected" member variable should
be removed.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-09-06 11:48:47 -07:00

65 lines
1.5 KiB
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef MAPLOCATIONMODEL_H
#define MAPLOCATIONMODEL_H
#include "core/subsurface-qt/DiveListNotifier.h"
#include <QObject>
#include <QVector>
#include <QHash>
#include <QByteArray>
#include <QAbstractListModel>
#include <QGeoCoordinate>
class MapLocation
{
public:
explicit MapLocation(struct dive_site *ds, QGeoCoordinate coord, QString name, bool selected);
QVariant getRole(int role) const;
enum Roles {
RoleDivesite = Qt::UserRole + 1,
RoleCoordinate,
RoleName,
RolePixmap,
RoleZ,
RoleIsSelected
};
struct dive_site *divesite;
QGeoCoordinate coordinate;
QString name;
bool selected;
};
class MapLocationModel : public QAbstractListModel
{
Q_OBJECT
public:
MapLocationModel(QObject *parent = NULL);
~MapLocationModel();
QVariant data(const QModelIndex &index, int role) const override;
int rowCount(const QModelIndex &parent) const override;
void add(MapLocation *);
// If map is not null, it will be used to place new dive sites without GPS location at the center of the map
void reload(QObject *map);
void selectionChanged();
void setSelected(const QVector<dive_site *> &divesites);
MapLocation *getMapLocation(const struct dive_site *ds);
const QVector<dive_site *> &selectedDs() const;
void setSelected(struct dive_site *ds);
protected:
QHash<int, QByteArray> roleNames() const override;
private slots:
void diveSiteChanged(struct dive_site *ds, int field);
private:
QVector<MapLocation *> m_mapLocations;
QVector<dive_site *> m_selectedDs;
};
#endif