subsurface/qt-models/divecomputermodel.h
Berthold Stoeger 215e5a4544 desktop: make divecomputer table sortable
Add a small proxy-model on top of DiveComputerModel so that clicking
on table headers makes the table sortable.

The UI feature here is not as important as the fact that the UI does
its own sorting and we can keep the device-table in the core sorted
differently.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-11 08:35:20 -07:00

40 lines
1,000 B
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef DIVECOMPUTERMODEL_H
#define DIVECOMPUTERMODEL_H
#include "qt-models/cleanertablemodel.h"
#include "core/device.h"
#include <QSortFilterProxyModel>
class DiveComputerModel : public CleanerTableModel {
Q_OBJECT
public:
enum {
REMOVE,
MODEL,
ID,
NICKNAME
};
DiveComputerModel(QObject *parent = 0);
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
Qt::ItemFlags flags(const QModelIndex &index) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
void keepWorkingList();
public
slots:
void remove(const QModelIndex &index);
private:
QVector<device> dcs;
};
class DiveComputerSortedModel : public QSortFilterProxyModel {
public:
using QSortFilterProxyModel::QSortFilterProxyModel;
private:
bool lessThan(const QModelIndex &i1, const QModelIndex &i2) const;
};
#endif