From 49d3705d16dcbfb69995eb731a11944eb9db33fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 5 May 2015 00:42:04 +0200 Subject: GH-899 clean up mod browse buttons and dead legacy forge --- application/GuiUtil.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'application/GuiUtil.cpp') diff --git a/application/GuiUtil.cpp b/application/GuiUtil.cpp index fb42b9bc..7ce00115 100644 --- a/application/GuiUtil.cpp +++ b/application/GuiUtil.cpp @@ -3,11 +3,15 @@ #include #include #include +#include #include "dialogs/ProgressDialog.h" #include "net/PasteUpload.h" #include "dialogs/CustomMessageBox.h" +#include "MultiMC.h" +#include + void GuiUtil::uploadPaste(const QString &text, QWidget *parentWidget) { ProgressDialog dialog(parentWidget); @@ -46,3 +50,52 @@ void GuiUtil::setClipboardText(const QString &text) { QApplication::clipboard()->setText(text); } + +QStringList GuiUtil::BrowseForMods(QString context, QString caption, QString filter, + QWidget *parentWidget) +{ + static QMap savedPaths; + + QFileDialog w(parentWidget, caption); + QSet locations; + QString modsFolder = MMC->settings()->get("CentralModsDir").toString(); + auto f = [&](QStandardPaths::StandardLocation l) + { + QString location = QStandardPaths::writableLocation(l); + QFileInfo finfo(location); + if (!finfo.exists()) + return; + locations.insert(location); + }; + f(QStandardPaths::DesktopLocation); + f(QStandardPaths::DocumentsLocation); + f(QStandardPaths::DownloadLocation); + f(QStandardPaths::HomeLocation); + QList urls; + for (auto location : locations) + { + urls.append(QUrl::fromLocalFile(location)); + } + urls.append(QUrl::fromLocalFile(modsFolder)); + + w.setFileMode(QFileDialog::ExistingFiles); + w.setAcceptMode(QFileDialog::AcceptOpen); + w.setNameFilter(filter); + if(savedPaths.contains(context)) + { + w.setDirectory(savedPaths[context]); + } + else + { + w.setDirectory(modsFolder); + } + w.setSidebarUrls(urls); + + if (w.exec()) + { + savedPaths[context] = w.directory().absolutePath(); + return w.getOpenFileNames(); + } + savedPaths[context] = w.directory().absolutePath(); + return {}; +} -- cgit v1.2.3