Ejemplo n.º 1
0
void CModListView::selectMod(int index)
{
	if (index < 0)
	{
		disableModInfo();
	}
	else
	{
		enableModInfo();

		auto mod = modModel->getMod(modModel->modIndexToName(index));

		ui->textBrowser->setHtml(genModInfoText(mod));

		bool hasInvalidDeps = !findInvalidDependencies(modModel->modIndexToName(index)).empty();
		bool hasBlockingMods = !findBlockingMods(modModel->modIndexToName(index)).empty();
		bool hasDependentMods = !findDependentMods(modModel->modIndexToName(index), true).empty();

		ui->disableButton->setVisible(mod.isEnabled());
		ui->enableButton->setVisible(mod.isDisabled());
		ui->installButton->setVisible(mod.isAvailable());
		ui->uninstallButton->setVisible(mod.isInstalled());
		ui->updateButton->setVisible(mod.isUpdateable());

		// Block buttons if action is not allowed at this time
		// TODO: automate handling of some of these cases instead of forcing player
		// to resolve all conflicts manually.
		ui->disableButton->setEnabled(!hasDependentMods);
		ui->enableButton->setEnabled(!hasBlockingMods && !hasInvalidDeps);
		ui->installButton->setEnabled(!hasInvalidDeps);
		ui->uninstallButton->setEnabled(!hasDependentMods);
		ui->updateButton->setEnabled(!hasInvalidDeps && !hasDependentMods);
	}
}
Ejemplo n.º 2
0
CModListView::CModListView(QWidget *parent) :
    QWidget(parent),
    settingsListener(settings.listen["launcher"]["repositoryURL"]),
    ui(new Ui::CModListView)
{
    settingsListener([&](const JsonNode &) {
        repositoriesChanged = true;
    });
    ui->setupUi(this);

    setupModModel();
    setupFilterModel();
    setupModsView();

    ui->progressWidget->setVisible(false);
    dlManager = nullptr;
    disableModInfo();
    if (settings["launcher"]["autoCheckRepositories"].Bool())
    {
        loadRepositories();
    }
}
Ejemplo n.º 3
0
void CModListView::selectMod(const QModelIndex & index)
{
    if (!index.isValid())
    {
        disableModInfo();
    }
    else
    {
        auto mod = modModel->getMod(index.data(ModRoles::ModNameRole).toString());

        ui->modInfoBrowser->setHtml(genModInfoText(mod));
        ui->changelogBrowser->setHtml(genChangelogText(mod));

        bool hasInvalidDeps = !findInvalidDependencies(index.data(ModRoles::ModNameRole).toString()).empty();
        bool hasBlockingMods = !findBlockingMods(index.data(ModRoles::ModNameRole).toString()).empty();
        bool hasDependentMods = !findDependentMods(index.data(ModRoles::ModNameRole).toString(), true).empty();

        ui->hideModInfoButton->setEnabled(true);
        ui->showInfoButton->setVisible(!ui->modInfoWidget->isVisible());
        ui->disableButton->setVisible(mod.isEnabled());
        ui->enableButton->setVisible(mod.isDisabled());
        ui->installButton->setVisible(mod.isAvailable() && !mod.getName().contains('.'));
        ui->uninstallButton->setVisible(mod.isInstalled() && !mod.getName().contains('.'));
        ui->updateButton->setVisible(mod.isUpdateable());

        // Block buttons if action is not allowed at this time
        // TODO: automate handling of some of these cases instead of forcing player
        // to resolve all conflicts manually.
        ui->disableButton->setEnabled(!hasDependentMods);
        ui->enableButton->setEnabled(!hasBlockingMods && !hasInvalidDeps);
        ui->installButton->setEnabled(!hasInvalidDeps);
        ui->uninstallButton->setEnabled(!hasDependentMods);
        ui->updateButton->setEnabled(!hasInvalidDeps && !hasDependentMods);

        loadScreenshots();
    }
}