diff options
| author | EmptyChaos <EmptyChaos@users.noreply.github.com> | 2016-07-13 05:52:45 +0000 |
|---|---|---|
| committer | EmptyChaos <EmptyChaos@users.noreply.github.com> | 2016-07-13 15:52:45 +1000 |
| commit | 0efb19e66afa3bda97a8ebb0cce47b923fbc7084 (patch) | |
| tree | 8a26261100ee2a474af1b95fa481b3bad359ddc2 /Source/Core/DolphinQt2/InDevelopmentWarning.cpp | |
| parent | 3e4cea7f6fdd5c1588402908bcd62362bf9a8313 (diff) | |
DolphinQt2: Experimental GUI Warning Prompt.
Add a GUI prompt to tell users not to use DolphinQt by accident.
Diffstat (limited to 'Source/Core/DolphinQt2/InDevelopmentWarning.cpp')
| -rw-r--r-- | Source/Core/DolphinQt2/InDevelopmentWarning.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt2/InDevelopmentWarning.cpp b/Source/Core/DolphinQt2/InDevelopmentWarning.cpp new file mode 100644 index 0000000000..5defcfb52e --- /dev/null +++ b/Source/Core/DolphinQt2/InDevelopmentWarning.cpp @@ -0,0 +1,120 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include <QApplication> +#include <QBoxLayout> +#include <QCommandLinkButton> +#include <QDialogButtonBox> +#include <QFileInfo> +#include <QLabel> +#include <QMessageBox> +#include <QProcess> +#include <QStyle> + +#include "DolphinQt2/InDevelopmentWarning.h" +#include "DolphinQt2/Resources.h" + +static bool LaunchDolphinWX() +{ + QFileInfo file_info; + for (auto path : {"/Dolphin.exe", "/dolphin-emu", "/Dolphin"}) + { + file_info.setFile(qApp->applicationDirPath() + QString::fromUtf8(path)); + if (file_info.isExecutable()) + return QProcess::startDetached(file_info.absoluteFilePath(), {}); + } + return false; +} + +InDevelopmentWarning::InDevelopmentWarning(QWidget* parent) + : QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint) +{ + QWidget* container = new QWidget(this); + QDialogButtonBox* std_buttons = + new QDialogButtonBox(QDialogButtonBox::Cancel, Qt::Horizontal, this); + QLabel* heading = new QLabel(container); + QLabel* icon = new QLabel(container); + QLabel* body = new QLabel(container); + + QCommandLinkButton* btn_dolphinwx = new QCommandLinkButton( + tr("Run DolphinWX Instead"), tr("Recommended for normal users"), container); + QCommandLinkButton* btn_run = new QCommandLinkButton(tr("Use DolphinQt Anyway"), container); + + container->setForegroundRole(QPalette::Text); + container->setBackgroundRole(QPalette::Base); + container->setAutoFillBackground(true); + + std_buttons->setContentsMargins(10, 0, 10, 0); + + QFont heading_font{heading->font()}; + heading_font.setPointSizeF(heading_font.pointSizeF() * 1.5); + heading->setFont(heading_font); + heading->setText(tr("DolphinQt Experimental GUI")); + heading->setForegroundRole(QPalette::Text); + heading->setAlignment(Qt::AlignTop | Qt::AlignLeft); + + icon->setPixmap(style()->standardPixmap(QStyle::SP_MessageBoxWarning, nullptr, this)); + icon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + + QString body_text = tr( + "<p>DolphinQt is a new experimental GUI that is eventually intended to replace " + "the current GUI based on wxWidgets. The implementation is <b>very " + "incomplete</b>, even basic functionality like changing settings and " + "attaching gamepads may be missing or not work at all.</p>\n" + "<p>Only developers working on the DolphinQt implementation should use it at " + "the present time; normal users are recommended to continue using the " + "older DolphinWX GUI for the time being.</p>\n" + "<p><big><b>Bug Reports:</b></big> At the current time there is no point making bug reports " + "about the DolphinQt GUI as the list of what is broken is much longer " + "than the list of things that work.</p>\n"); + body->setText(body_text); + body->setWordWrap(true); + body->setForegroundRole(QPalette::Text); + body->setAlignment(Qt::AlignTop | Qt::AlignLeft); + body->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + btn_dolphinwx->setDefault(true); + + connect(btn_dolphinwx, &QCommandLinkButton::clicked, this, [this](bool) { + if (!LaunchDolphinWX()) + QMessageBox::critical( + this, tr("Failed to launch"), + tr("Could not start DolphinWX. Check for dolphin.exe in the installation directory.")); + reject(); + }); + connect(btn_run, &QCommandLinkButton::clicked, this, [this](bool) { accept(); }); + connect(std_buttons->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, + [this](bool) { reject(); }); + + QVBoxLayout* body_column = new QVBoxLayout(); + body_column->addWidget(heading); + body_column->addSpacing(10); + body_column->addWidget(body); + body_column->addWidget(btn_dolphinwx); + body_column->addSpacing(10); + body_column->addWidget(btn_run); + body_column->setMargin(0); + body_column->setSpacing(0); + + QHBoxLayout* icon_layout = new QHBoxLayout(container); + icon_layout->addWidget(icon, 0, Qt::AlignTop); + icon_layout->addLayout(body_column); + icon_layout->setContentsMargins(15, 10, 10, 10); + icon_layout->setSpacing(15); + + QVBoxLayout* top_layout = new QVBoxLayout(this); + top_layout->addWidget(container); + top_layout->addWidget(std_buttons); + top_layout->setSpacing(10); + top_layout->setContentsMargins(0, 0, 0, 10); + + setWindowIcon(Resources::GetMisc(Resources::LOGO_SMALL)); + setWindowTitle(tr("DolphinQt2 Experimental GUI")); + setMinimumSize(460, 320); + resize(minimumSizeHint()); +} + +InDevelopmentWarning::~InDevelopmentWarning() +{ +} |
