Procházet zdrojové kódy

Restored mod filter functionality in Launcher

Ivan Savenko před 11 měsíci
rodič
revize
065a8d5fcf

+ 25 - 4
launcher/modManager/modstateitemmodel_moc.cpp

@@ -268,12 +268,33 @@ void CModFilterModel::setTypeFilter(ModFilterMask newFilterMask)
 	invalidateFilter();
 }
 
+bool CModFilterModel::filterMatchesCategory(const QModelIndex & source) const
+{
+	QString modID =source.data(ModRoles::ModNameRole).toString();
+	ModState mod = base->model->getMod(modID);
+
+	switch (filterMask)
+	{
+		case ModFilterMask::ALL:
+			return true;
+		case ModFilterMask::AVAILABLE:
+			return !mod.isInstalled();
+		case ModFilterMask::INSTALLED:
+			return mod.isInstalled();
+		case ModFilterMask::UPDATEABLE:
+			return mod.isUpdateAvailable();
+		case ModFilterMask::ENABLED:
+			return mod.isInstalled() && mod.isEnabled();
+		case ModFilterMask::DISABLED:
+			return mod.isInstalled() && mod.isDisabled();
+	}
+	assert(0);
+	return false;
+}
+
 bool CModFilterModel::filterMatchesThis(const QModelIndex & source) const
 {
-	//QString modID =source.data(ModRoles::ModNameRole).toString();
-	//ModState mod = base->model->getMod(modID);
-	return /*(mod.getModStatus() & filterMask) == filteredType &&*/
-	       QSortFilterProxyModel::filterAcceptsRow(source.row(), source.parent());
+	return filterMatchesCategory(source) && QSortFilterProxyModel::filterAcceptsRow(source.row(), source.parent());
 }
 
 bool CModFilterModel::filterAcceptsRow(int source_row, const QModelIndex & source_parent) const

+ 1 - 0
launcher/modManager/modstateitemmodel_moc.h

@@ -93,6 +93,7 @@ class CModFilterModel : public QSortFilterProxyModel
 	ModFilterMask filterMask;
 
 	bool filterMatchesThis(const QModelIndex & source) const;
+	bool filterMatchesCategory(const QModelIndex & source) const;
 
 	bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const override;