Browse Source

Smarter double-click

nordsoft 2 years ago
parent
commit
5875dc6b8f
1 changed files with 24 additions and 7 deletions
  1. 24 7
      launcher/modManager/cmodlistview_moc.cpp

+ 24 - 7
launcher/modManager/cmodlistview_moc.cpp

@@ -893,29 +893,46 @@ void CModListView::on_allModsView_doubleClicked(const QModelIndex &index)
 {
 {
 	if(!index.isValid())
 	if(!index.isValid())
 		return;
 		return;
-
-	auto mod = modModel->getMod(index.data(ModRoles::ModNameRole).toString());
-
-	if(mod.isAvailable() && !mod.getName().contains('.'))
+	
+	auto modName = index.data(ModRoles::ModNameRole).toString();
+	auto mod = modModel->getMod(modName);
+	
+	bool hasInvalidDeps = !findInvalidDependencies(modName).empty();
+	bool hasBlockingMods = !findBlockingMods(modName).empty();
+	bool hasDependentMods = !findDependentMods(modName, true).empty();
+	
+	if(!hasInvalidDeps && mod.isAvailable() && !mod.getName().contains('.'))
 	{
 	{
 		on_installButton_clicked();
 		on_installButton_clicked();
 		return;
 		return;
 	}
 	}
 
 
-	if(mod.isUpdateable())
+	if(!hasInvalidDeps && !hasDependentMods && mod.isUpdateable() && index.column() == ModFields::STATUS_UPDATE)
 	{
 	{
 		on_updateButton_clicked();
 		on_updateButton_clicked();
+		return;
+	}
+	
+	if(index.column() == ModFields::NAME)
+	{
+		if(ui->allModsView->isExpanded(index))
+			ui->allModsView->collapse(index);
+		else
+			ui->allModsView->expand(index);
+		
+		return;
 	}
 	}
 
 
-	if(mod.isDisabled())
+	if(!hasBlockingMods && !hasInvalidDeps && mod.isDisabled())
 	{
 	{
 		on_enableButton_clicked();
 		on_enableButton_clicked();
 		return;
 		return;
 	}
 	}
 
 
-	if(mod.isEnabled())
+	if(!hasDependentMods && !mod.isEssential() && mod.isEnabled())
 	{
 	{
 		on_disableButton_clicked();
 		on_disableButton_clicked();
+		return;
 	}
 	}
 }
 }