diff options
Diffstat (limited to 'src/editexecutablesdialog.cpp')
| -rw-r--r-- | src/editexecutablesdialog.cpp | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/editexecutablesdialog.cpp b/src/editexecutablesdialog.cpp index be2ee127..212993f1 100644 --- a/src/editexecutablesdialog.cpp +++ b/src/editexecutablesdialog.cpp @@ -25,7 +25,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QMessageBox> #include <Shellapi.h> #include <utility.h> - +#include "forcedloaddialog.h" +#include <algorithm> using namespace MOBase; using namespace MOShared; @@ -44,6 +45,8 @@ EditExecutablesDialog::EditExecutablesDialog( refreshExecutablesWidget(); ui->newFilesModBox->addItems(modList.allMods()); + + m_ForcedLibraries = m_Profile->determineForcedLibraries(ui->titleEdit->text()); } EditExecutablesDialog::~EditExecutablesDialog() @@ -93,6 +96,7 @@ void EditExecutablesDialog::resetInput() ui->overwriteAppIDBox->setChecked(false); ui->useAppIconCheckBox->setChecked(false); ui->newFilesModCheckBox->setChecked(false); + ui->forceLoadCheckBox->setChecked(false); m_CurrentItem = nullptr; } @@ -118,6 +122,9 @@ void EditExecutablesDialog::saveExecutable() else { m_Profile->removeSetting("custom_overwrites", ui->titleEdit->text()); } + + m_Profile->saveForcedLibraries(ui->titleEdit->text(), m_ForcedLibraries); + m_Profile->setForcedLibrariesEnabled(ui->titleEdit->text(), ui->forceLoadCheckBox->isChecked()); } @@ -130,6 +137,21 @@ void EditExecutablesDialog::delayedRefresh() } +void EditExecutablesDialog::on_forceLoadButton_clicked() +{ + ForcedLoadDialog dialog(this); + dialog.setValues(m_ForcedLibraries); + if (dialog.exec() == QDialog::Accepted) { + m_ForcedLibraries = dialog.values(); + } +} + +void EditExecutablesDialog::on_forceLoadCheckBox_toggled() +{ + ui->forceLoadButton->setEnabled(ui->forceLoadCheckBox->isChecked()); +} + + void EditExecutablesDialog::on_addButton_clicked() { if (executableChanged()) { @@ -231,6 +253,20 @@ bool EditExecutablesDialog::executableChanged() QString storedCustomOverwrite = m_Profile->setting("custom_overwrites", selectedExecutable.m_Title).toString(); + bool forcedLibrariesDirty = false; + auto forcedLibaries = m_Profile->determineForcedLibraries(selectedExecutable.m_Title); + forcedLibrariesDirty |= !std::equal(forcedLibaries.begin(), forcedLibaries.end(), + m_ForcedLibraries.begin(), m_ForcedLibraries.end(), + [](const ExecutableForcedLoadSetting &lhs, const ExecutableForcedLoadSetting &rhs) + { + return lhs.enabled() == rhs.enabled() && + lhs.forced() == rhs.forced() && + lhs.library() == rhs.library() && + lhs.process() == rhs.process(); + }); + forcedLibrariesDirty |= m_Profile->setting("forced_libraries", ui->titleEdit->text() + "/enabled", false).toBool() != + ui->forceLoadCheckBox->isChecked(); + return selectedExecutable.m_Title != ui->titleEdit->text() || selectedExecutable.m_Arguments != ui->argumentsEdit->text() || selectedExecutable.m_SteamAppID != ui->appIDOverwriteEdit->text() @@ -238,7 +274,9 @@ bool EditExecutablesDialog::executableChanged() || !storedCustomOverwrite.isEmpty() && (storedCustomOverwrite != ui->newFilesModBox->currentText()) || selectedExecutable.m_WorkingDirectory != QDir::fromNativeSeparators(ui->workingDirEdit->text()) || selectedExecutable.m_BinaryInfo.absoluteFilePath() != QDir::fromNativeSeparators(ui->binaryEdit->text()) - || selectedExecutable.usesOwnIcon() != ui->useAppIconCheckBox->isChecked(); + || selectedExecutable.usesOwnIcon() != ui->useAppIconCheckBox->isChecked() + || forcedLibrariesDirty + ; } else { QFileInfo fileInfo(ui->binaryEdit->text()); return !ui->binaryEdit->text().isEmpty() @@ -331,6 +369,11 @@ void EditExecutablesDialog::on_executablesListBox_clicked(const QModelIndex &cur if (index != -1) { ui->newFilesModBox->setCurrentIndex(index); } + + m_ForcedLibraries = m_Profile->determineForcedLibraries(ui->titleEdit->text()); + bool forcedLibraries = m_Profile->forcedLibrariesEnabled(ui->titleEdit->text()); + ui->forceLoadButton->setEnabled(forcedLibraries); + ui->forceLoadCheckBox->setChecked(forcedLibraries); } } |
