Clear services model after KNS entries changed

We can not know if a service got deleted, so we clear
the model and reload the services. The issue that the entries are
not uninstalled has already been solved, this is just a patch to
fix the state of the UI.

CCBUG: 420312
This commit is contained in:
Alexander Lohnau 2020-09-05 17:32:48 +00:00 committed by Elvis Angelaccio
parent a1d5d75bea
commit 8e2f0a1d5b
3 changed files with 15 additions and 1 deletions

View file

@ -92,3 +92,10 @@ int ServiceModel::rowCount(const QModelIndex& parent) const
return m_items.count();
}
void ServiceModel::clear()
{
beginRemoveRows(QModelIndex(), 0, m_items.count());
m_items.clear();
endRemoveRows();
}

View file

@ -38,6 +38,7 @@ public:
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
void clear();
private:
struct ServiceItem

View file

@ -73,7 +73,13 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) :
auto *downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."),
QStringLiteral("servicemenu.knsrc"),
this);
connect(downloadButton, &KNS3::Button::dialogFinished, this, &ServicesSettingsPage::loadServices);
connect(downloadButton, &KNS3::Button::dialogFinished, this, [this](const KNS3::Entry::List &changedEntries) {
if (!changedEntries.isEmpty()) {
m_serviceModel->clear();
loadServices();
}
});
#endif
topLayout->addWidget(label);