mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-28 05:18:00 +03:00
Qt: implement music player dialog for music handler tests
Some checks are pending
Generate Translation Template / Generate Translation Template (push) Waiting to run
Build RPCS3 / RPCS3 Linux ubuntu-24.04 gcc (push) Waiting to run
Build RPCS3 / RPCS3 Linux ubuntu-24.04-arm clang (push) Waiting to run
Build RPCS3 / RPCS3 Linux ubuntu-24.04 clang (push) Waiting to run
Build RPCS3 / RPCS3 Windows (push) Waiting to run
Some checks are pending
Generate Translation Template / Generate Translation Template (push) Waiting to run
Build RPCS3 / RPCS3 Linux ubuntu-24.04 gcc (push) Waiting to run
Build RPCS3 / RPCS3 Linux ubuntu-24.04-arm clang (push) Waiting to run
Build RPCS3 / RPCS3 Linux ubuntu-24.04 clang (push) Waiting to run
Build RPCS3 / RPCS3 Windows (push) Waiting to run
This commit is contained in:
parent
22c184bf75
commit
b2feff7d38
10 changed files with 311 additions and 1 deletions
|
@ -328,6 +328,9 @@
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_main_window.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_main_window.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_music_player_dialog.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_memory_viewer_panel.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_memory_viewer_panel.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -610,6 +613,9 @@
|
||||||
<ClCompile Include="QTGeneratedFiles\Release\moc_main_window.cpp">
|
<ClCompile Include="QTGeneratedFiles\Release\moc_main_window.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="QTGeneratedFiles\Release\moc_music_player_dialog.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Release\moc_memory_viewer_panel.cpp">
|
<ClCompile Include="QTGeneratedFiles\Release\moc_memory_viewer_panel.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -865,6 +871,7 @@
|
||||||
<ClCompile Include="rpcs3qt\kernel_explorer.cpp" />
|
<ClCompile Include="rpcs3qt\kernel_explorer.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\log_frame.cpp" />
|
<ClCompile Include="rpcs3qt\log_frame.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\main_window.cpp" />
|
<ClCompile Include="rpcs3qt\main_window.cpp" />
|
||||||
|
<ClCompile Include="rpcs3qt\music_player_dialog.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\memory_string_searcher.cpp" />
|
<ClCompile Include="rpcs3qt\memory_string_searcher.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\memory_viewer_panel.cpp" />
|
<ClCompile Include="rpcs3qt\memory_viewer_panel.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\msg_dialog_frame.cpp" />
|
<ClCompile Include="rpcs3qt\msg_dialog_frame.cpp" />
|
||||||
|
@ -930,6 +937,16 @@
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="rpcs3qt\music_player_dialog.h">
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing music_player_dialog.h...</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing music_player_dialog.h...</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
|
</CustomBuild>
|
||||||
<CustomBuild Include="rpcs3qt\pad_settings_dialog.h">
|
<CustomBuild Include="rpcs3qt\pad_settings_dialog.h">
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing pad_settings_dialog.h...</Message>
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing pad_settings_dialog.h...</Message>
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||||
|
@ -1067,6 +1084,7 @@
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_camera_settings_dialog.h" />
|
<ClInclude Include="QTGeneratedFiles\ui_camera_settings_dialog.h" />
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_ps_move_tracker_dialog.h" />
|
<ClInclude Include="QTGeneratedFiles\ui_ps_move_tracker_dialog.h" />
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_main_window.h" />
|
<ClInclude Include="QTGeneratedFiles\ui_main_window.h" />
|
||||||
|
<ClInclude Include="QTGeneratedFiles\ui_music_player_dialog.h" />
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_pad_led_settings_dialog.h" />
|
<ClInclude Include="QTGeneratedFiles\ui_pad_led_settings_dialog.h" />
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_pad_motion_settings_dialog.h" />
|
<ClInclude Include="QTGeneratedFiles\ui_pad_motion_settings_dialog.h" />
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_pad_settings_dialog.h" />
|
<ClInclude Include="QTGeneratedFiles\ui_pad_settings_dialog.h" />
|
||||||
|
@ -1937,6 +1955,18 @@
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\QTGeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\QTGeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="rpcs3qt\music_player_dialog.ui">
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Uic%27ing %(Identity)...</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\uic.exe" -o ".\QTGeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Uic%27ing %(Identity)...</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\QTGeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CustomBuild Include="rpcs3qt\pad_settings_dialog.ui">
|
<CustomBuild Include="rpcs3qt\pad_settings_dialog.ui">
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||||
|
|
|
@ -273,6 +273,12 @@
|
||||||
<ClCompile Include="QTGeneratedFiles\Release\moc_main_window.cpp">
|
<ClCompile Include="QTGeneratedFiles\Release\moc_main_window.cpp">
|
||||||
<Filter>Generated Files\Release</Filter>
|
<Filter>Generated Files\Release</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_music_player_dialog.cpp">
|
||||||
|
<Filter>Generated Files\Debug</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="QTGeneratedFiles\Release\moc_music_player_dialog.cpp">
|
||||||
|
<Filter>Generated Files\Release</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_pad_settings_dialog.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_pad_settings_dialog.cpp">
|
||||||
<Filter>Generated Files\Debug</Filter>
|
<Filter>Generated Files\Debug</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -435,6 +441,9 @@
|
||||||
<ClCompile Include="rpcs3qt\main_window.cpp">
|
<ClCompile Include="rpcs3qt\main_window.cpp">
|
||||||
<Filter>Gui</Filter>
|
<Filter>Gui</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="rpcs3qt\music_player_dialog.cpp">
|
||||||
|
<Filter>Gui\misc dialogs</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_syntax_highlighter.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_syntax_highlighter.cpp">
|
||||||
<Filter>Generated Files\Debug</Filter>
|
<Filter>Generated Files\Debug</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -1202,6 +1211,9 @@
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_main_window.h">
|
<ClInclude Include="QTGeneratedFiles\ui_main_window.h">
|
||||||
<Filter>Generated Files</Filter>
|
<Filter>Generated Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="QTGeneratedFiles\ui_music_player_dialog.h">
|
||||||
|
<Filter>Generated Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="QTGeneratedFiles\ui_pad_settings_dialog.h">
|
<ClInclude Include="QTGeneratedFiles\ui_pad_settings_dialog.h">
|
||||||
<Filter>Generated Files</Filter>
|
<Filter>Generated Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -1423,6 +1435,9 @@
|
||||||
<CustomBuild Include="rpcs3qt\main_window.ui">
|
<CustomBuild Include="rpcs3qt\main_window.ui">
|
||||||
<Filter>Form Files</Filter>
|
<Filter>Form Files</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="rpcs3qt\music_player_dialog.ui">
|
||||||
|
<Filter>Form Files</Filter>
|
||||||
|
</CustomBuild>
|
||||||
<CustomBuild Include="rpcs3qt\pad_settings_dialog.ui">
|
<CustomBuild Include="rpcs3qt\pad_settings_dialog.ui">
|
||||||
<Filter>Form Files</Filter>
|
<Filter>Form Files</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
@ -1480,6 +1495,9 @@
|
||||||
<CustomBuild Include="rpcs3qt\main_window.h">
|
<CustomBuild Include="rpcs3qt\main_window.h">
|
||||||
<Filter>Gui</Filter>
|
<Filter>Gui</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="rpcs3qt\music_player_dialog.h">
|
||||||
|
<Filter>Gui\misc dialogs</Filter>
|
||||||
|
</CustomBuild>
|
||||||
<CustomBuild Include="rpcs3qt\kernel_explorer.h">
|
<CustomBuild Include="rpcs3qt\kernel_explorer.h">
|
||||||
<Filter>Gui\dev tools</Filter>
|
<Filter>Gui\dev tools</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
|
|
@ -57,6 +57,7 @@ add_library(rpcs3_ui STATIC
|
||||||
movie_item.cpp
|
movie_item.cpp
|
||||||
movie_item_base.cpp
|
movie_item_base.cpp
|
||||||
msg_dialog_frame.cpp
|
msg_dialog_frame.cpp
|
||||||
|
music_player_dialog.cpp
|
||||||
osk_dialog_frame.cpp
|
osk_dialog_frame.cpp
|
||||||
pad_led_settings_dialog.cpp
|
pad_led_settings_dialog.cpp
|
||||||
pad_motion_settings_dialog.cpp
|
pad_motion_settings_dialog.cpp
|
||||||
|
@ -119,6 +120,7 @@ add_library(rpcs3_ui STATIC
|
||||||
about_dialog.ui
|
about_dialog.ui
|
||||||
camera_settings_dialog.ui
|
camera_settings_dialog.ui
|
||||||
main_window.ui
|
main_window.ui
|
||||||
|
music_player_dialog.ui
|
||||||
pad_led_settings_dialog.ui
|
pad_led_settings_dialog.ui
|
||||||
pad_motion_settings_dialog.ui
|
pad_motion_settings_dialog.ui
|
||||||
pad_settings_dialog.ui
|
pad_settings_dialog.ui
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "basic_mouse_settings_dialog.h"
|
#include "basic_mouse_settings_dialog.h"
|
||||||
#include "vfs_tool_dialog.h"
|
#include "vfs_tool_dialog.h"
|
||||||
#include "welcome_dialog.h"
|
#include "welcome_dialog.h"
|
||||||
|
#include "music_player_dialog.h"
|
||||||
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
@ -3143,6 +3144,12 @@ void main_window::CreateConnects()
|
||||||
dlg->show();
|
dlg->show();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(ui->actionMusic_Player, &QAction::triggered, this, [this]()
|
||||||
|
{
|
||||||
|
music_player_dialog* dlg = new music_player_dialog(this);
|
||||||
|
dlg->open();
|
||||||
|
});
|
||||||
|
|
||||||
connect(ui->showDebuggerAct, &QAction::triggered, this, [this](bool checked)
|
connect(ui->showDebuggerAct, &QAction::triggered, this, [this](bool checked)
|
||||||
{
|
{
|
||||||
checked ? m_debugger_frame->show() : m_debugger_frame->hide();
|
checked ? m_debugger_frame->show() : m_debugger_frame->hide();
|
||||||
|
|
|
@ -318,6 +318,7 @@
|
||||||
<addaction name="toolsSystemCommandsAct"/>
|
<addaction name="toolsSystemCommandsAct"/>
|
||||||
<addaction name="patchCreatorAct"/>
|
<addaction name="patchCreatorAct"/>
|
||||||
<addaction name="toolsVfsDialogAct"/>
|
<addaction name="toolsVfsDialogAct"/>
|
||||||
|
<addaction name="actionMusic_Player"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="toolsDecryptSprxLibsAct"/>
|
<addaction name="toolsDecryptSprxLibsAct"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
|
@ -1424,6 +1425,11 @@
|
||||||
<string>Prefer Game Data Icons</string>
|
<string>Prefer Game Data Icons</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionMusic_Player">
|
||||||
|
<property name="text">
|
||||||
|
<string>Music Player</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
47
rpcs3/rpcs3qt/music_player_dialog.cpp
Normal file
47
rpcs3/rpcs3qt/music_player_dialog.cpp
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
#include "music_player_dialog.h"
|
||||||
|
#include "ui_music_player_dialog.h"
|
||||||
|
#include "qt_music_handler.h"
|
||||||
|
#include "Emu/System.h"
|
||||||
|
#include "Emu/VFS.h"
|
||||||
|
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QSlider>
|
||||||
|
|
||||||
|
music_player_dialog::music_player_dialog(QWidget* parent)
|
||||||
|
: QDialog(parent), ui(new Ui::music_player_dialog)
|
||||||
|
{
|
||||||
|
setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
m_handler = std::make_unique<qt_music_handler>();
|
||||||
|
|
||||||
|
connect(ui->fileSelectButton, &QPushButton::clicked, this, [this](){ select_file(); });
|
||||||
|
connect(ui->playButton, &QPushButton::clicked, this, [this](){ m_handler->play(m_file_path); });
|
||||||
|
connect(ui->pauseButton, &QPushButton::clicked, this, [this](){ m_handler->pause(); });
|
||||||
|
connect(ui->stopButton, &QPushButton::clicked, this, [this](){ m_handler->stop(); });
|
||||||
|
connect(ui->forwardButton, &QPushButton::clicked, this, [this](){ m_handler->fast_forward(m_file_path); });
|
||||||
|
connect(ui->reverseButton, &QPushButton::clicked, this, [this](){ m_handler->fast_reverse(m_file_path); });
|
||||||
|
connect(ui->volumeSlider, &QSlider::valueChanged, this, [this](int value){ m_handler->set_volume(std::clamp(value / 100.0f, 0.0f, 1.0f)); });
|
||||||
|
}
|
||||||
|
|
||||||
|
music_player_dialog::~music_player_dialog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void music_player_dialog::select_file()
|
||||||
|
{
|
||||||
|
// Initialize Emu if not yet initialized (e.g. Emu.Kill() was previously invoked) before using some of the following vfs:: functions (e.g. vfs::get())
|
||||||
|
if (Emu.IsStopped())
|
||||||
|
{
|
||||||
|
Emu.Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string vfs_dir_path = vfs::get("/dev_hdd0/music");
|
||||||
|
const QString file_path = QFileDialog::getOpenFileName(this, tr("Select audio file"), QString::fromStdString(vfs_dir_path), tr("Audio files (*.mp3;*.wav;*.aac;*.ogg;*.flac;*.m4a;*.alac);;All files (*.*)"));
|
||||||
|
|
||||||
|
if (!file_path.isEmpty())
|
||||||
|
{
|
||||||
|
m_file_path = file_path.toStdString();
|
||||||
|
}
|
||||||
|
}
|
26
rpcs3/rpcs3qt/music_player_dialog.h
Normal file
26
rpcs3/rpcs3qt/music_player_dialog.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
class music_handler_base;
|
||||||
|
|
||||||
|
namespace Ui
|
||||||
|
{
|
||||||
|
class music_player_dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class music_player_dialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit music_player_dialog(QWidget* parent = nullptr);
|
||||||
|
~music_player_dialog();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void select_file();
|
||||||
|
|
||||||
|
std::unique_ptr<Ui::music_player_dialog> ui;
|
||||||
|
std::unique_ptr<music_handler_base> m_handler;
|
||||||
|
std::string m_file_path;
|
||||||
|
};
|
167
rpcs3/rpcs3qt/music_player_dialog.ui
Normal file
167
rpcs3/rpcs3qt/music_player_dialog.ui
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>music_player_dialog</class>
|
||||||
|
<widget class="QDialog" name="music_player_dialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Music Player</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="topLayout">
|
||||||
|
<item>
|
||||||
|
<spacer name="topSpacerLeft">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="fileSelectButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Select file</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="topSpacerRight">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="bottomLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="margin" stdset="0">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="reverseButton">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="QIcon::ThemeIcon::MediaSeekBackward"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="playButton">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="QIcon::ThemeIcon::MediaPlaybackStart"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="forwardButton">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="QIcon::ThemeIcon::MediaSeekForward"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pauseButton">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="QIcon::ThemeIcon::MediaPlaybackPause"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="stopButton">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="QIcon::ThemeIcon::MediaPlaybackStop"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="buttonSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="volumeLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Vol:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSlider" name="volumeSlider">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>50</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -69,11 +69,12 @@ qt_music_handler::qt_music_handler()
|
||||||
music_log.notice("Constructing Qt music handler...");
|
music_log.notice("Constructing Qt music handler...");
|
||||||
|
|
||||||
m_media_player = std::make_unique<QMediaPlayer>();
|
m_media_player = std::make_unique<QMediaPlayer>();
|
||||||
m_media_player->setAudioOutput(new QAudioOutput());
|
m_media_player->setAudioOutput(new QAudioOutput(m_media_player.get()));
|
||||||
|
|
||||||
connect(m_media_player.get(), &QMediaPlayer::mediaStatusChanged, this, &qt_music_handler::handle_media_status);
|
connect(m_media_player.get(), &QMediaPlayer::mediaStatusChanged, this, &qt_music_handler::handle_media_status);
|
||||||
connect(m_media_player.get(), &QMediaPlayer::playbackStateChanged, this, &qt_music_handler::handle_music_state);
|
connect(m_media_player.get(), &QMediaPlayer::playbackStateChanged, this, &qt_music_handler::handle_music_state);
|
||||||
connect(m_media_player.get(), &QMediaPlayer::errorOccurred, this, &qt_music_handler::handle_music_error);
|
connect(m_media_player.get(), &QMediaPlayer::errorOccurred, this, &qt_music_handler::handle_music_error);
|
||||||
|
connect(m_media_player->audioOutput(), &QAudioOutput::volumeChanged, this, &qt_music_handler::handle_volume_change);
|
||||||
}
|
}
|
||||||
|
|
||||||
qt_music_handler::~qt_music_handler()
|
qt_music_handler::~qt_music_handler()
|
||||||
|
@ -250,3 +251,8 @@ void qt_music_handler::handle_music_error(QMediaPlayer::Error error, const QStri
|
||||||
{
|
{
|
||||||
music_log.error("Error event: \"%s\" (error=%s)", errorString, error);
|
music_log.error("Error event: \"%s\" (error=%s)", errorString, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void qt_music_handler::handle_volume_change(float volume) const
|
||||||
|
{
|
||||||
|
music_log.notice("Volume changed: %f", volume);
|
||||||
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ private Q_SLOTS:
|
||||||
void handle_media_status(QMediaPlayer::MediaStatus status);
|
void handle_media_status(QMediaPlayer::MediaStatus status);
|
||||||
void handle_music_state(QMediaPlayer::PlaybackState state);
|
void handle_music_state(QMediaPlayer::PlaybackState state);
|
||||||
void handle_music_error(QMediaPlayer::Error error, const QString& errorString);
|
void handle_music_error(QMediaPlayer::Error error, const QString& errorString);
|
||||||
|
void handle_volume_change(float volume) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mutable std::mutex m_mutex;
|
mutable std::mutex m_mutex;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue