From 2ab0a9b13907bfb63d3a40435f62eaa460fbcda6 Mon Sep 17 00:00:00 2001 From: Logan McNaughton Date: Thu, 4 Jun 2020 15:40:34 -0600 Subject: [PATCH] update gui --- mupen64plus-gui/mainwindow.cpp | 29 +++++++++++++++++++++++++ mupen64plus-gui/mainwindow.h | 30 ++++++++++++++++++++++++++ mupen64plus-gui/netplay/createroom.cpp | 2 ++ mupen64plus-gui/netplay/joinroom.cpp | 2 ++ mupen64plus-gui/netplay/waitroom.cpp | 2 ++ 5 files changed, 65 insertions(+) diff --git a/mupen64plus-gui/mainwindow.cpp b/mupen64plus-gui/mainwindow.cpp index 71513f5..9ff906d 100644 --- a/mupen64plus-gui/mainwindow.cpp +++ b/mupen64plus-gui/mainwindow.cpp @@ -35,6 +35,7 @@ void MainWindow::updatePlugins() Filter.append(""); QStringList current; QString default_value; + if (!settings->contains("videoPlugin")) { Filter.replace(0,"mupen64plus-video*"); current = PluginDir.entryList(Filter); @@ -402,6 +403,14 @@ MainWindow::MainWindow(QWidget *parent) : qtConfigDir = settings->value("configDirPath").toString(); updatePlugins(); + + if (!settings->contains("volume")) + settings->setValue("volume", 100); + VolumeAction * volumeAction = new VolumeAction(tr("Volume")); + connect(volumeAction->slider(), SIGNAL(valueChanged(int)), this, SLOT(volumeValueChanged(int))); + volumeAction->slider()->setValue(settings->value("volume").toInt()); + ui->menuFile->insertAction(ui->actionTake_Screenshot, volumeAction); + ui->menuFile->insertSeparator(volumeAction); } MainWindow::~MainWindow() @@ -410,6 +419,16 @@ MainWindow::~MainWindow() delete ui; } +void MainWindow::volumeValueChanged(int value) +{ + if (value != settings->value("volume").toInt()) + { + settings->setValue("volume", value); + if (coreStarted) + (*CoreDoCommand)(M64CMD_CORE_STATE_SET, M64CORE_AUDIO_VOLUME, &value); + } +} + void MainWindow::setVerbose() { verbose = 1; @@ -598,6 +617,16 @@ void MainWindow::openROM(QString filename, QString netplay_ip, int netplay_port, connect(workerThread, SIGNAL(finished()), workerThread, SLOT(deleteLater())); workerThread->start(); + while (!coreStarted) QCoreApplication::processEvents(); + int response = 0; + while (response != M64EMU_RUNNING) + { + (*CoreDoCommand)(M64CMD_CORE_STATE_QUERY, M64CORE_EMU_STATE, &response); + QCoreApplication::processEvents(); + } + int volume = w->getSettings()->value("volume").toInt(); + (*CoreDoCommand)(M64CMD_CORE_STATE_SET, M64CORE_AUDIO_VOLUME, &volume); + QStringList list; if (settings->contains("RecentROMs")) list = settings->value("RecentROMs").toString().split(";"); diff --git a/mupen64plus-gui/mainwindow.h b/mupen64plus-gui/mainwindow.h index ea2d132..7705f81 100644 --- a/mupen64plus-gui/mainwindow.h +++ b/mupen64plus-gui/mainwindow.h @@ -9,6 +9,9 @@ #include #include #include +#include +#include +#include namespace Ui { class MainWindow; @@ -49,6 +52,8 @@ public slots: void showMessage(QString message); private slots: + void volumeValueChanged(int value); + void on_actionOpen_ROM_triggered(); void on_actionPlugin_Paths_triggered(); @@ -120,4 +125,29 @@ private: extern MainWindow *w; +class VolumeAction : public QWidgetAction { +public: + VolumeAction (const QString& title) : + QWidgetAction (NULL) { + QWidget* pWidget = new QWidget (NULL); + QHBoxLayout* pLayout = new QHBoxLayout(); + QLabel* pLabel = new QLabel (title); + pLayout->addWidget (pLabel); + pSlider = new QSlider(Qt::Horizontal); + pSlider->setMinimum(0); + pSlider->setMaximum(100); + pLayout->addWidget (pSlider); + pWidget->setLayout (pLayout); + + setDefaultWidget(pWidget); + } + + QSlider * slider () { + return pSlider; + } + +private: + QSlider * pSlider; +}; + #endif // MAINWINDOW_H diff --git a/mupen64plus-gui/netplay/createroom.cpp b/mupen64plus-gui/netplay/createroom.cpp index b141484..35a474e 100644 --- a/mupen64plus-gui/netplay/createroom.cpp +++ b/mupen64plus-gui/netplay/createroom.cpp @@ -34,6 +34,8 @@ CreateRoom::CreateRoom(QWidget *parent) QLabel *playerNameLabel = new QLabel("Player Name", this); layout->addWidget(playerNameLabel, 3, 0); playerNameEdit = new QLineEdit(this); + if (w->getSettings()->contains("netplay_name")) + playerNameEdit->setText(w->getSettings()->value("netplay_name").toString()); layout->addWidget(playerNameEdit, 3, 1); QLabel *serverLabel = new QLabel("Server", this); diff --git a/mupen64plus-gui/netplay/joinroom.cpp b/mupen64plus-gui/netplay/joinroom.cpp index a1a452a..28d8e39 100644 --- a/mupen64plus-gui/netplay/joinroom.cpp +++ b/mupen64plus-gui/netplay/joinroom.cpp @@ -19,6 +19,8 @@ JoinRoom::JoinRoom(QWidget *parent) layout->setColumnMinimumWidth(1, 500); playerName = new QLineEdit(this); + if (w->getSettings()->contains("netplay_name")) + playerName->setText(w->getSettings()->value("netplay_name").toString()); playerName->setPlaceholderText("Player Name"); layout->addWidget(playerName, 0, 0); diff --git a/mupen64plus-gui/netplay/waitroom.cpp b/mupen64plus-gui/netplay/waitroom.cpp index c05d9e8..2dd1010 100644 --- a/mupen64plus-gui/netplay/waitroom.cpp +++ b/mupen64plus-gui/netplay/waitroom.cpp @@ -13,6 +13,8 @@ WaitRoom::WaitRoom(QString filename, QJsonObject room, QWebSocket *socket, QWidg room_name = room.value("room_name").toString(); file_name = filename; + w->getSettings()->setValue("netplay_name", player_name); + webSocket = socket; connect(webSocket, &QWebSocket::binaryMessageReceived, this, &WaitRoom::processBinaryMessage);