1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-12 02:28:11 +02:00

Correctly handle scenario of unavailable mod repository

This commit is contained in:
Ivan Savenko 2023-03-26 20:11:59 +03:00
parent a4fe11d413
commit 5357709b17
4 changed files with 21 additions and 17 deletions

View File

@ -310,6 +310,10 @@ void FirstLaunchView::modPresetUpdate()
ui->checkBoxPresetExtras->setEnabled(checkCanInstallExtras());
ui->checkBoxPresetHota->setEnabled(checkCanInstallHota());
ui->checkBoxPresetWog->setEnabled(checkCanInstallWog());
// we can't install anything - either repository checkout is off or all recommended mods are already installed
if (!checkCanInstallTranslation() && !checkCanInstallExtras() && !checkCanInstallHota() && !checkCanInstallWog())
exitSetup();
}
QString FirstLaunchView::findTranslationModName()
@ -364,7 +368,7 @@ CModListView * FirstLaunchView::getModView()
bool FirstLaunchView::checkCanInstallMod(const QString & modID)
{
return getModView() && !getModView()->isModInstalled(modID);
return getModView() && getModView()->isModAvailable(modID);
}
void FirstLaunchView::on_pushButtonPresetBack_clicked()
@ -376,16 +380,16 @@ void FirstLaunchView::on_pushButtonPresetNext_clicked()
{
QStringList modsToInstall;
if (ui->checkBoxPresetLanguage && checkCanInstallTranslation())
if (ui->checkBoxPresetLanguage->isChecked() && checkCanInstallTranslation())
modsToInstall.push_back(findTranslationModName());
if (ui->checkBoxPresetExtras && checkCanInstallExtras())
if (ui->checkBoxPresetExtras->isChecked() && checkCanInstallExtras())
modsToInstall.push_back("vcmi-extras");
if (ui->checkBoxPresetWog && checkCanInstallWog())
if (ui->checkBoxPresetWog->isChecked() && checkCanInstallWog())
modsToInstall.push_back("wake-of-gods");
if (ui->checkBoxPresetHota && checkCanInstallHota())
if (ui->checkBoxPresetHota->isChecked() && checkCanInstallHota())
modsToInstall.push_back("hota");
exitSetup();

View File

@ -829,10 +829,10 @@ void CModListView::doInstallMod(const QString & modName)
}
}
bool CModListView::isModInstalled(const QString & modName)
bool CModListView::isModAvailable(const QString & modName)
{
auto mod = modModel->getMod(modName);
return mod.isInstalled();
return mod.isAvailable();
}
bool CModListView::isModEnabled(const QString & modName)

View File

@ -86,8 +86,8 @@ public:
/// install mod by name
void doInstallMod(const QString & modName);
/// returns true if mod is currently installed
bool isModInstalled(const QString & modName);
/// returns true if mod is available in repository and can be installed
bool isModAvailable(const QString & modName);
/// finds translation mod for specified languages. Returns empty string on error
QString getTranslationModName(const QString & language);

View File

@ -375,7 +375,7 @@ void CSettingsView::loadTranslation()
if (!translationExists)
return;
bool translationInstalled = mainWindow->getModView()->isModInstalled(modName);
bool translationAvailable = mainWindow->getModView()->isModAvailable(modName);
bool translationEnabled = mainWindow->getModView()->isModEnabled(modName);
ui->pushButtonTranslation->setVisible(!translationEnabled);
@ -385,13 +385,13 @@ void CSettingsView::loadTranslation()
ui->labelTranslationStatus->setText(tr("Active"));
}
if (translationInstalled && !translationEnabled)
if (!translationEnabled && !translationAvailable)
{
ui->labelTranslationStatus->setText(tr("Disabled"));
ui->pushButtonTranslation->setText(tr("Enable"));
}
if (!translationInstalled)
if (translationAvailable)
{
ui->labelTranslationStatus->setText(tr("Not Installed"));
ui->pushButtonTranslation->setText(tr("Install"));
@ -413,15 +413,15 @@ void CSettingsView::on_pushButtonTranslation_clicked()
if (modName.isEmpty())
return;
if (mainWindow->getModView()->isModInstalled(modName))
{
mainWindow->getModView()->enableModByName(modName);
}
else
if (mainWindow->getModView()->isModAvailable(modName))
{
mainWindow->switchToModsTab();
mainWindow->getModView()->doInstallMod(modName);
}
else
{
mainWindow->getModView()->enableModByName(modName);
}
}
void CSettingsView::on_comboBoxLanguageBase_currentIndexChanged(int index)