mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
mobile/divelist: create memory management class for models
Since we want to add a second model, but not have to manage two models everywhere, create a class MobileModels that contains both of the models. When calling reset() on that class, it will reset both of the models, etc. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
8e9e536ffd
commit
7e1ac2167b
4 changed files with 45 additions and 30 deletions
|
@ -2,20 +2,9 @@
|
|||
#include "mobilelistmodel.h"
|
||||
#include "core/divelist.h" // for shown_dives
|
||||
|
||||
MobileListModel::MobileListModel(DiveTripModelBase *sourceIn) : source(sourceIn),
|
||||
MobileListModel::MobileListModel(DiveTripModelBase *sourceIn) :
|
||||
source(sourceIn),
|
||||
expandedRow(-1)
|
||||
{
|
||||
connectSignals();
|
||||
}
|
||||
|
||||
MobileListModel *MobileListModel::instance()
|
||||
{
|
||||
static DiveTripModelTree source;
|
||||
static MobileListModel self(&source);
|
||||
return &self;
|
||||
}
|
||||
|
||||
void MobileListModel::connectSignals()
|
||||
{
|
||||
connect(source, &DiveTripModelBase::modelAboutToBeReset, this, &MobileListModel::beginResetModel);
|
||||
connect(source, &DiveTripModelBase::modelReset, this, &MobileListModel::endResetModel);
|
||||
|
@ -246,14 +235,6 @@ QVariant MobileListModel::data(const QModelIndex &index, int role) const
|
|||
return source->data(mapToSource(index), role);
|
||||
}
|
||||
|
||||
void MobileListModel::resetModel()
|
||||
{
|
||||
beginResetModel();
|
||||
source->reset();
|
||||
connectSignals();
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
// Trivial helper to return and erase the last element of a stack
|
||||
template<typename T>
|
||||
static T pop(std::vector<T> &v)
|
||||
|
@ -544,3 +525,28 @@ void MobileListModel::toggle(int row)
|
|||
else
|
||||
expand(row);
|
||||
}
|
||||
MobileModels *MobileModels::instance()
|
||||
{
|
||||
static MobileModels self;
|
||||
return &self;
|
||||
}
|
||||
|
||||
MobileModels::MobileModels() :
|
||||
lm(&source)
|
||||
{
|
||||
}
|
||||
|
||||
MobileListModel *MobileModels::listModel()
|
||||
{
|
||||
return &lm;
|
||||
}
|
||||
|
||||
void MobileModels::clear()
|
||||
{
|
||||
source.clear();
|
||||
}
|
||||
|
||||
void MobileModels::reset()
|
||||
{
|
||||
source.reset();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue