mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
mobile/divelist: derive MobileListModel from a base model
In analogy to the DiveTripModel split, derive MobileListModel from a base model that exports the roles, etc. This will allow us to create a second model, which nevertheless possesses the same roles and all that without too much code duplication. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
7e1ac2167b
commit
71b378aa82
2 changed files with 62 additions and 40 deletions
|
|
@ -1,10 +1,21 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
// This header files declares two linear models used by the mobile UI.
|
||||
//
|
||||
// MobileListModel presents a list of trips and optionally the dives of
|
||||
// one expanded trip. It is used for quick navigation through trips.
|
||||
//
|
||||
// MobileDiveListModel gives a linearized view of all dives, sorted by
|
||||
// trip. Even if there is temporal overlap of trips, all dives of
|
||||
// a trip are listed in a contiguous block. This model is used for
|
||||
// swiping through dives.
|
||||
#ifndef MOBILELISTMODEL_H
|
||||
#define MOBILELISTMODEL_H
|
||||
|
||||
#include "divetripmodel.h"
|
||||
|
||||
class MobileListModel : public QAbstractItemModel {
|
||||
// This is the base class of the mobile-list model. All it does
|
||||
// is exporting the various dive fields as roles.
|
||||
class MobileListModelBase : public QAbstractItemModel {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Roles {
|
||||
|
|
@ -44,6 +55,19 @@ public:
|
|||
FirstGasRole,
|
||||
SelectedRole,
|
||||
};
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
protected:
|
||||
DiveTripModelBase *source;
|
||||
MobileListModelBase(DiveTripModelBase *source);
|
||||
private:
|
||||
int columnCount(const QModelIndex &parent) const override;
|
||||
QModelIndex index(int row, int column, const QModelIndex &parent) const override;
|
||||
QModelIndex parent(const QModelIndex &index) const override;
|
||||
};
|
||||
|
||||
class MobileListModel : public MobileListModelBase {
|
||||
Q_OBJECT
|
||||
public:
|
||||
MobileListModel(DiveTripModelBase *source);
|
||||
void expand(int row);
|
||||
void unexpand();
|
||||
|
|
@ -71,14 +95,9 @@ private:
|
|||
static void updateRowAfterRemove(const IndexRange &range, int &row);
|
||||
static void updateRowAfterMove(const IndexRange &range, const IndexRange &dest, int &row);
|
||||
QVariant data(const QModelIndex &index, int role) const override;
|
||||
QModelIndex index(int row, int column, const QModelIndex &parent) const override;
|
||||
QModelIndex parent(const QModelIndex &index) const override;
|
||||
int rowCount(const QModelIndex &parent) const override;
|
||||
int columnCount(const QModelIndex &parent) const override;
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
int shown() const;
|
||||
|
||||
DiveTripModelBase *source;
|
||||
int expandedRow;
|
||||
private slots:
|
||||
void prepareRemove(const QModelIndex &parent, int first, int last);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue