diff options
Diffstat (limited to 'proto-wine/ftnoir_protocol_wine_dialog.cpp')
-rw-r--r-- | proto-wine/ftnoir_protocol_wine_dialog.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/proto-wine/ftnoir_protocol_wine_dialog.cpp b/proto-wine/ftnoir_protocol_wine_dialog.cpp index f1cb01c2..a954a752 100644 --- a/proto-wine/ftnoir_protocol_wine_dialog.cpp +++ b/proto-wine/ftnoir_protocol_wine_dialog.cpp @@ -1,25 +1,37 @@ #include "ftnoir_protocol_wine.h" #include <QDebug> +#include <QDir> + #include "api/plugin-api.hpp" -static const char* proton_versions[] = { - "4.11", "4.2", "3.16", "3.7", +static const char* proton_paths[] = { + "/.steam/steam/steamapps/common", + "/.steam/root/compatibilitytools.d", + "/.local/share/Steam/steamapps/common", }; FTControls::FTControls() { ui.setupUi(this); - for (const char* version : proton_versions) - ui.proton_version->addItem(version, QVariant{version}); - - tie_setting(s.proton_version, ui.proton_version); + for (const char* path : proton_paths) { + QDir dir(QDir::homePath() + path); + dir.setFilter(QDir::Dirs); + dir.setNameFilters({ "Proton*" }); + QFileInfoList list = dir.entryInfoList(); + for (int i = 0; i < list.size(); ++i) { + QFileInfo fileInfo = list.at(i); + ui.proton_version->addItem(fileInfo.fileName(), QVariant{fileInfo.filePath()}); + } + } + tie_setting(s.proton_path, ui.proton_version); tie_setting(s.variant_wine, ui.variant_wine); tie_setting(s.variant_proton, ui.variant_proton); tie_setting(s.esync, ui.esync); tie_setting(s.fsync, ui.fsync); tie_setting(s.proton_appid, ui.proton_appid); tie_setting(s.wineprefix, ui.wineprefix); + tie_setting(s.protocol, ui.protocol_selection); connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &FTControls::doOK); connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &FTControls::doCancel); @@ -36,4 +48,3 @@ void FTControls::doCancel() s.b->reload(); close(); } - |