mobile/filter: derive numShown from a new Q_PROPERTY

The number of dives was updated when the model of the list was
changed. Since we removed the multi-threading, the model is
not disconnected/connected anymore and therefore we don't get
the appropriate signal. Instead of introducing a different
signal, make the shown-value a Q_PROPERTY. Thus, we can easily
send a changed signal if we have to.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-02-23 20:18:13 +01:00 committed by Dirk Hohndel
parent 6f2a6fef14
commit d6114fc37e
3 changed files with 6 additions and 7 deletions

View file

@ -17,7 +17,6 @@ Kirigami.ScrollablePage {
property color secondaryTextColor: subsurfaceTheme.secondaryTextColor
property int horizontalPadding: Kirigami.Units.gridUnit / 2 - Kirigami.Units.smallSpacing + 1
property QtObject diveListModel: diveTripModel
property string numShownText
opacity: 0
Behavior on opacity {
@ -481,7 +480,7 @@ Kirigami.ScrollablePage {
id: numShown
z: 10
verticalAlignment: Text.AlignVCenter
text: numShownText
text: diveModel.shown
}
}
}
@ -503,9 +502,6 @@ Kirigami.ScrollablePage {
section.criteria: ViewSection.FullString
section.delegate: tripHeading
section.labelPositioning: ViewSection.CurrentLabelAtStart | ViewSection.InlineLabels
onModelChanged: {
numShownText = diveModel.shown()
}
Connections {
target: detailsWindow
onCurrentIndexChanged: diveListView.currentIndex = detailsWindow.currentIndex
@ -555,7 +551,6 @@ Kirigami.ScrollablePage {
onTriggered: {
rootItem.filterToggle = !rootItem.filterToggle
manager.setFilter("", 0)
numShownText = diveModel.shown()
}
}

View file

@ -195,6 +195,7 @@ DiveListSortModel *DiveListSortModel::instance()
void DiveListSortModel::updateFilterState()
{
DiveFilter::instance()->updateAll();
emit shownChanged();
}
void DiveListSortModel::setSourceModel(QAbstractItemModel *sourceModel)

View file

@ -47,11 +47,14 @@ public:
Q_INVOKABLE void reload();
QString filterString;
void updateFilterState();
Q_PROPERTY(int shown READ shown NOTIFY shownChanged);
int shown();
public slots:
int getIdxForId(int id);
void setFilter(QString f, FilterData::Mode mode);
void resetFilter();
int shown();
signals:
void shownChanged();
protected:
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
private: