summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp
diff options
context:
space:
mode:
authorspycrab <spycrab@users.noreply.github.com>2017-06-16 01:42:12 +0200
committerspycrab <spycrab@users.noreply.github.com>2017-06-28 20:14:38 +0200
commit908e1e9abaf0bab44acb999f37bd472ec007488c (patch)
treeb9a87894e65ffa1eae693bab2af5092af6d620dc /Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp
parent1b1ab3119a743035b6e1877a97e3a4824d4caf38 (diff)
Qt: Implement graphics window and controls
Diffstat (limited to 'Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp')
-rw-r--r--Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp113
1 files changed, 113 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp b/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp
new file mode 100644
index 0000000000..f32623f22e
--- /dev/null
+++ b/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp
@@ -0,0 +1,113 @@
+// Copyright 2017 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include "DolphinQt2/Config/Graphics/GraphicsWindow.h"
+
+#include <QDialogButtonBox>
+#include <QEvent>
+#include <QGroupBox>
+#include <QLabel>
+#include <QTabWidget>
+#include <QVBoxLayout>
+
+#include "Core/ConfigManager.h"
+#include "DolphinQt2/Config/Graphics/AdvancedWidget.h"
+#include "DolphinQt2/Config/Graphics/EnhancementsWidget.h"
+#include "DolphinQt2/Config/Graphics/GeneralWidget.h"
+#include "DolphinQt2/Config/Graphics/HacksWidget.h"
+#include "DolphinQt2/MainWindow.h"
+
+GraphicsWindow::GraphicsWindow(X11Utils::XRRConfiguration* xrr_config, MainWindow* parent)
+ : QDialog(parent), m_xrr_config(xrr_config)
+{
+ CreateMainLayout();
+ ConnectWidgets();
+
+ setWindowTitle(tr("Graphics"));
+ setWindowFlags(Qt::Window);
+
+ OnBackendChanged(QString::fromStdString(SConfig::GetInstance().m_strVideoBackend));
+
+ connect(parent, &MainWindow::EmulationStarted, this, &GraphicsWindow::EmulationStarted);
+ connect(parent, &MainWindow::EmulationStopped, this, &GraphicsWindow::EmulationStopped);
+}
+
+void GraphicsWindow::CreateMainLayout()
+{
+ auto* main_layout = new QVBoxLayout();
+ auto* description_box = new QGroupBox(tr("Description"));
+ auto* description_layout = new QVBoxLayout();
+ m_description =
+ new QLabel(tr("Move the mouse pointer over an option to display a detailed description."));
+ m_tab_widget = new QTabWidget();
+ m_button_box = new QDialogButtonBox(QDialogButtonBox::Ok);
+
+ description_box->setLayout(description_layout);
+ description_box->setMinimumHeight(205);
+
+ m_description->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ m_description->setWordWrap(true);
+ m_description->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+
+ description_layout->addWidget(m_description);
+
+ main_layout->addWidget(m_tab_widget);
+ main_layout->addWidget(description_box);
+ main_layout->addWidget(m_button_box);
+
+ auto* general_widget = new GeneralWidget(m_xrr_config, this);
+ auto* enhancements_widget = new EnhancementsWidget(this);
+ auto* hacks_widget = new HacksWidget(this);
+ auto* advanced_widget = new AdvancedWidget(this);
+
+ connect(general_widget, &GeneralWidget::BackendChanged, this, &GraphicsWindow::OnBackendChanged);
+
+ m_tab_widget->addTab(general_widget, tr("General"));
+ m_tab_widget->addTab(enhancements_widget, tr("Enhancements"));
+ m_tab_widget->addTab(hacks_widget, tr("Hacks"));
+ m_tab_widget->addTab(advanced_widget, tr("Advanced"));
+
+ setLayout(main_layout);
+}
+
+void GraphicsWindow::ConnectWidgets()
+{
+ connect(m_button_box, &QDialogButtonBox::accepted, this, &QDialog::accept);
+}
+
+void GraphicsWindow::OnBackendChanged(const QString& backend)
+{
+ setWindowTitle(tr("Dolphin %1 Graphics Configuration").arg(backend));
+ emit BackendChanged(backend);
+}
+
+void GraphicsWindow::RegisterWidget(GraphicsWidget* widget)
+{
+ connect(widget, &GraphicsWidget::DescriptionAdded, this, &GraphicsWindow::OnDescriptionAdded);
+}
+
+void GraphicsWindow::OnDescriptionAdded(QWidget* widget, const char* description)
+{
+ m_widget_descriptions[widget] = description;
+ widget->installEventFilter(this);
+}
+
+bool GraphicsWindow::eventFilter(QObject* object, QEvent* event)
+{
+ if (!m_widget_descriptions.contains(object))
+ return false;
+ if (event->type() == QEvent::Enter)
+ {
+ m_description->setText(tr(m_widget_descriptions[object]));
+ return false;
+ }
+
+ if (event->type() == QEvent::Leave)
+ {
+ m_description->setText(
+ tr("Move the mouse pointer over an option to display a detailed description."));
+ }
+
+ return false;
+}