From c320edcd9ffc1e009101fd4a3e7009dfc1c2e181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Kera=CC=88nen?= Date: Sun, 19 Aug 2018 14:39:50 +0300 Subject: [PATCH] UI|Client: Opening a web page (macOS); FileDialog in CVarNativePathWidget --- doomsday/apps/client/src/clientapp.cpp | 7 ++++-- .../src/ui/widgets/cvarnativepathwidget.cpp | 1 + .../src/ui/widgets/nativepathwidget.cpp | 22 ++++++++++--------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/doomsday/apps/client/src/clientapp.cpp b/doomsday/apps/client/src/clientapp.cpp index c3e1259ee3..e3971fecd4 100644 --- a/doomsday/apps/client/src/clientapp.cpp +++ b/doomsday/apps/client/src/clientapp.cpp @@ -173,7 +173,7 @@ DE_PIMPL(ClientApp) InFineSystem infineSys; // instantiated at construction time ServerLink * svLink = nullptr; ClientServerWorld * world = nullptr; - + /** * Log entry sink that passes warning messages to the main window's alert * notification dialog. @@ -984,8 +984,11 @@ void ClientApp::openInBrowser(const String &url) ClientWindow::main().changeAttributes(windowed); #endif -// QDesktopServices::openUrl(url); +#if defined (MACOSX) + CommandLine({"/usr/bin/open", url}).execute(); +#else DE_ASSERT_FAIL("Open a browser"); +#endif } void ClientApp::unloadGame(const GameProfile &upcomingGame) diff --git a/doomsday/apps/client/src/ui/widgets/cvarnativepathwidget.cpp b/doomsday/apps/client/src/ui/widgets/cvarnativepathwidget.cpp index 9c0d611ee6..4f528abe2d 100644 --- a/doomsday/apps/client/src/ui/widgets/cvarnativepathwidget.cpp +++ b/doomsday/apps/client/src/ui/widgets/cvarnativepathwidget.cpp @@ -22,6 +22,7 @@ #include #include +#include using namespace de; diff --git a/doomsday/apps/client/src/ui/widgets/nativepathwidget.cpp b/doomsday/apps/client/src/ui/widgets/nativepathwidget.cpp index 327818eb26..a2bac2ba81 100644 --- a/doomsday/apps/client/src/ui/widgets/nativepathwidget.cpp +++ b/doomsday/apps/client/src/ui/widgets/nativepathwidget.cpp @@ -115,23 +115,25 @@ void NativePathWidget::setPath(const NativePath &path) void NativePathWidget::chooseUsingNativeFileDialog() { ClientApp::app().beginNativeUIMode(); - + // Use a native dialog to pick the path. - QDir dir(d->path); - if (d->path.isEmpty()) dir = QDir::home(); - QFileDialog dlg(nullptr, d->prompt, dir.absolutePath()); + NativePath dir = d->path; + if (d->path.isEmpty()) dir = NativePath::homePath(); + FileDialog dlg; + dlg.setTitle(Stringf("Select File for \"%s\"", d->cvar)); + dlg.setInitialLocation(NativePath::workPath() / dir); if (!d->filters.isEmpty()) { - dlg.setNameFilters(d->filters); + dlg.setFileTypes(d->filters); } - dlg.setFileMode(QFileDialog::ExistingFile); - dlg.setOption(QFileDialog::ReadOnly, true); - dlg.setLabelText(QFileDialog::Accept, tr("Select")); + dlg.setPrompt("Select"); if (dlg.exec()) { - setPath(dlg.selectedFiles().at(0)); + d->path = dlg.selectedPath(); + setCVarValueFromWidget(); + setText(d->labelText()); } - + ClientApp::app().endNativeUIMode(); }