diff --git a/containments/desktop/package/contents/ui/ConfigFilter.qml b/containments/desktop/package/contents/ui/ConfigFilter.qml --- a/containments/desktop/package/contents/ui/ConfigFilter.qml +++ b/containments/desktop/package/contents/ui/ConfigFilter.qml @@ -36,7 +36,7 @@ property alias cfg_filterMimeTypes: mimeTypesModel.checkedTypes PlasmaCore.SortFilterModel { - id: filderedMimeTypesModel + id: filteredMimeTypesModel sourceModel: Folder.MimeTypesModel { id: mimeTypesModel @@ -49,6 +49,27 @@ sortRole: mimeTypesView.getColumn(mimeTypesView.sortIndicatorColumn).role sortOrder: mimeTypesView.sortIndicatorOrder + + function checkFiltered() { + var types = []; + + for (var i = 0; i < count; ++i) { + types.push(get(i).name); + } + + mimeTypesModel.checkedTypes = types; + } + + function uncheckFiltered() { + var types = []; + + for (var i = 0; i < count; ++i) { + types.push(get(i).name); + } + + mimeTypesModel.checkedTypes = mimeTypesModel.checkedTypes.filter(function(x) { + return types.indexOf(x) < 0; }); + } } ColumnLayout { @@ -113,7 +134,7 @@ enabled: (filterMode.currentIndex > 0) - model: filderedMimeTypesModel + model: filteredMimeTypesModel sortIndicatorVisible: true sortIndicatorColumn: 2 // Default to sort by "File type". @@ -215,9 +236,7 @@ text: i18n("Select All") - onClicked: { - mimeTypesModel.checkAll(); - } + onClicked: filteredMimeTypesModel.checkFiltered() } Button { @@ -228,9 +247,7 @@ text: i18n("Deselect All") - onClicked: { - mimeTypesModel.checkedTypes = ""; - } + onClicked: filteredMimeTypesModel.uncheckFiltered() } } } diff --git a/containments/desktop/plugins/folder/mimetypesmodel.h b/containments/desktop/plugins/folder/mimetypesmodel.h --- a/containments/desktop/plugins/folder/mimetypesmodel.h +++ b/containments/desktop/plugins/folder/mimetypesmodel.h @@ -39,8 +39,6 @@ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex &index, const QVariant &value, int role) override; - Q_INVOKABLE void checkAll(); - int rowCount(const QModelIndex &parent = QModelIndex()) const override { Q_UNUSED(parent) return m_mimeTypesList.size(); } QStringList checkedTypes() const; diff --git a/containments/desktop/plugins/folder/mimetypesmodel.cpp b/containments/desktop/plugins/folder/mimetypesmodel.cpp --- a/containments/desktop/plugins/folder/mimetypesmodel.cpp +++ b/containments/desktop/plugins/folder/mimetypesmodel.cpp @@ -98,15 +98,6 @@ return false; } -void MimeTypesModel::checkAll() -{ - m_checkedRows = QVector(m_mimeTypesList.size(), true); - - emit dataChanged(index(0, 0), index(m_mimeTypesList.size() - 1, 0), {Qt::CheckStateRole}); - - emit checkedTypesChanged(); -} - int MimeTypesModel::indexOfType(const QString &name) const { for (int i = 0; i < m_mimeTypesList.size(); i++) {