Skip to content

Commit b2feff7

Browse files
committed
Qt: implement music player dialog for music handler tests
1 parent 22c184b commit b2feff7

10 files changed

+311
-1
lines changed

rpcs3/rpcs3.vcxproj

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,9 @@
328328
<ClCompile Include="QTGeneratedFiles\Debug\moc_main_window.cpp">
329329
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
330330
</ClCompile>
331+
<ClCompile Include="QTGeneratedFiles\Debug\moc_music_player_dialog.cpp">
332+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
333+
</ClCompile>
331334
<ClCompile Include="QTGeneratedFiles\Debug\moc_memory_viewer_panel.cpp">
332335
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
333336
</ClCompile>
@@ -610,6 +613,9 @@
610613
<ClCompile Include="QTGeneratedFiles\Release\moc_main_window.cpp">
611614
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
612615
</ClCompile>
616+
<ClCompile Include="QTGeneratedFiles\Release\moc_music_player_dialog.cpp">
617+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
618+
</ClCompile>
613619
<ClCompile Include="QTGeneratedFiles\Release\moc_memory_viewer_panel.cpp">
614620
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
615621
</ClCompile>
@@ -865,6 +871,7 @@
865871
<ClCompile Include="rpcs3qt\kernel_explorer.cpp" />
866872
<ClCompile Include="rpcs3qt\log_frame.cpp" />
867873
<ClCompile Include="rpcs3qt\main_window.cpp" />
874+
<ClCompile Include="rpcs3qt\music_player_dialog.cpp" />
868875
<ClCompile Include="rpcs3qt\memory_string_searcher.cpp" />
869876
<ClCompile Include="rpcs3qt\memory_viewer_panel.cpp" />
870877
<ClCompile Include="rpcs3qt\msg_dialog_frame.cpp" />
@@ -930,6 +937,16 @@
930937
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
931938
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
932939
</CustomBuild>
940+
<CustomBuild Include="rpcs3qt\music_player_dialog.h">
941+
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing music_player_dialog.h...</Message>
942+
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
943+
<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>
944+
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing music_player_dialog.h...</Message>
945+
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
946+
<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>
947+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
948+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
949+
</CustomBuild>
933950
<CustomBuild Include="rpcs3qt\pad_settings_dialog.h">
934951
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing pad_settings_dialog.h...</Message>
935952
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
@@ -1067,6 +1084,7 @@
10671084
<ClInclude Include="QTGeneratedFiles\ui_camera_settings_dialog.h" />
10681085
<ClInclude Include="QTGeneratedFiles\ui_ps_move_tracker_dialog.h" />
10691086
<ClInclude Include="QTGeneratedFiles\ui_main_window.h" />
1087+
<ClInclude Include="QTGeneratedFiles\ui_music_player_dialog.h" />
10701088
<ClInclude Include="QTGeneratedFiles\ui_pad_led_settings_dialog.h" />
10711089
<ClInclude Include="QTGeneratedFiles\ui_pad_motion_settings_dialog.h" />
10721090
<ClInclude Include="QTGeneratedFiles\ui_pad_settings_dialog.h" />
@@ -1937,6 +1955,18 @@
19371955
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\QTGeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
19381956
</CustomBuild>
19391957
</ItemGroup>
1958+
<ItemGroup>
1959+
<CustomBuild Include="rpcs3qt\music_player_dialog.ui">
1960+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
1961+
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Uic%27ing %(Identity)...</Message>
1962+
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
1963+
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\uic.exe" -o ".\QTGeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
1964+
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
1965+
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Uic%27ing %(Identity)...</Message>
1966+
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
1967+
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\QTGeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
1968+
</CustomBuild>
1969+
</ItemGroup>
19401970
<ItemGroup>
19411971
<CustomBuild Include="rpcs3qt\pad_settings_dialog.ui">
19421972
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>

rpcs3/rpcs3.vcxproj.filters

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,12 @@
273273
<ClCompile Include="QTGeneratedFiles\Release\moc_main_window.cpp">
274274
<Filter>Generated Files\Release</Filter>
275275
</ClCompile>
276+
<ClCompile Include="QTGeneratedFiles\Debug\moc_music_player_dialog.cpp">
277+
<Filter>Generated Files\Debug</Filter>
278+
</ClCompile>
279+
<ClCompile Include="QTGeneratedFiles\Release\moc_music_player_dialog.cpp">
280+
<Filter>Generated Files\Release</Filter>
281+
</ClCompile>
276282
<ClCompile Include="QTGeneratedFiles\Debug\moc_pad_settings_dialog.cpp">
277283
<Filter>Generated Files\Debug</Filter>
278284
</ClCompile>
@@ -435,6 +441,9 @@
435441
<ClCompile Include="rpcs3qt\main_window.cpp">
436442
<Filter>Gui</Filter>
437443
</ClCompile>
444+
<ClCompile Include="rpcs3qt\music_player_dialog.cpp">
445+
<Filter>Gui\misc dialogs</Filter>
446+
</ClCompile>
438447
<ClCompile Include="QTGeneratedFiles\Debug\moc_syntax_highlighter.cpp">
439448
<Filter>Generated Files\Debug</Filter>
440449
</ClCompile>
@@ -1202,6 +1211,9 @@
12021211
<ClInclude Include="QTGeneratedFiles\ui_main_window.h">
12031212
<Filter>Generated Files</Filter>
12041213
</ClInclude>
1214+
<ClInclude Include="QTGeneratedFiles\ui_music_player_dialog.h">
1215+
<Filter>Generated Files</Filter>
1216+
</ClInclude>
12051217
<ClInclude Include="QTGeneratedFiles\ui_pad_settings_dialog.h">
12061218
<Filter>Generated Files</Filter>
12071219
</ClInclude>
@@ -1423,6 +1435,9 @@
14231435
<CustomBuild Include="rpcs3qt\main_window.ui">
14241436
<Filter>Form Files</Filter>
14251437
</CustomBuild>
1438+
<CustomBuild Include="rpcs3qt\music_player_dialog.ui">
1439+
<Filter>Form Files</Filter>
1440+
</CustomBuild>
14261441
<CustomBuild Include="rpcs3qt\pad_settings_dialog.ui">
14271442
<Filter>Form Files</Filter>
14281443
</CustomBuild>
@@ -1480,6 +1495,9 @@
14801495
<CustomBuild Include="rpcs3qt\main_window.h">
14811496
<Filter>Gui</Filter>
14821497
</CustomBuild>
1498+
<CustomBuild Include="rpcs3qt\music_player_dialog.h">
1499+
<Filter>Gui\misc dialogs</Filter>
1500+
</CustomBuild>
14831501
<CustomBuild Include="rpcs3qt\kernel_explorer.h">
14841502
<Filter>Gui\dev tools</Filter>
14851503
</CustomBuild>

rpcs3/rpcs3qt/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ add_library(rpcs3_ui STATIC
5757
movie_item.cpp
5858
movie_item_base.cpp
5959
msg_dialog_frame.cpp
60+
music_player_dialog.cpp
6061
osk_dialog_frame.cpp
6162
pad_led_settings_dialog.cpp
6263
pad_motion_settings_dialog.cpp
@@ -119,6 +120,7 @@ add_library(rpcs3_ui STATIC
119120
about_dialog.ui
120121
camera_settings_dialog.ui
121122
main_window.ui
123+
music_player_dialog.ui
122124
pad_led_settings_dialog.ui
123125
pad_motion_settings_dialog.ui
124126
pad_settings_dialog.ui

rpcs3/rpcs3qt/main_window.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include "basic_mouse_settings_dialog.h"
4242
#include "vfs_tool_dialog.h"
4343
#include "welcome_dialog.h"
44+
#include "music_player_dialog.h"
4445

4546
#include <thread>
4647
#include <unordered_set>
@@ -3143,6 +3144,12 @@ void main_window::CreateConnects()
31433144
dlg->show();
31443145
});
31453146

3147+
connect(ui->actionMusic_Player, &QAction::triggered, this, [this]()
3148+
{
3149+
music_player_dialog* dlg = new music_player_dialog(this);
3150+
dlg->open();
3151+
});
3152+
31463153
connect(ui->showDebuggerAct, &QAction::triggered, this, [this](bool checked)
31473154
{
31483155
checked ? m_debugger_frame->show() : m_debugger_frame->hide();

rpcs3/rpcs3qt/main_window.ui

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@
318318
<addaction name="toolsSystemCommandsAct"/>
319319
<addaction name="patchCreatorAct"/>
320320
<addaction name="toolsVfsDialogAct"/>
321+
<addaction name="actionMusic_Player"/>
321322
<addaction name="separator"/>
322323
<addaction name="toolsDecryptSprxLibsAct"/>
323324
<addaction name="separator"/>
@@ -1424,6 +1425,11 @@
14241425
<string>Prefer Game Data Icons</string>
14251426
</property>
14261427
</action>
1428+
<action name="actionMusic_Player">
1429+
<property name="text">
1430+
<string>Music Player</string>
1431+
</property>
1432+
</action>
14271433
</widget>
14281434
<layoutdefault spacing="6" margin="11"/>
14291435
<resources>

rpcs3/rpcs3qt/music_player_dialog.cpp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include "music_player_dialog.h"
2+
#include "ui_music_player_dialog.h"
3+
#include "qt_music_handler.h"
4+
#include "Emu/System.h"
5+
#include "Emu/VFS.h"
6+
7+
#include <QFileDialog>
8+
#include <QSlider>
9+
10+
music_player_dialog::music_player_dialog(QWidget* parent)
11+
: QDialog(parent), ui(new Ui::music_player_dialog)
12+
{
13+
setAttribute(Qt::WA_DeleteOnClose);
14+
15+
ui->setupUi(this);
16+
17+
m_handler = std::make_unique<qt_music_handler>();
18+
19+
connect(ui->fileSelectButton, &QPushButton::clicked, this, [this](){ select_file(); });
20+
connect(ui->playButton, &QPushButton::clicked, this, [this](){ m_handler->play(m_file_path); });
21+
connect(ui->pauseButton, &QPushButton::clicked, this, [this](){ m_handler->pause(); });
22+
connect(ui->stopButton, &QPushButton::clicked, this, [this](){ m_handler->stop(); });
23+
connect(ui->forwardButton, &QPushButton::clicked, this, [this](){ m_handler->fast_forward(m_file_path); });
24+
connect(ui->reverseButton, &QPushButton::clicked, this, [this](){ m_handler->fast_reverse(m_file_path); });
25+
connect(ui->volumeSlider, &QSlider::valueChanged, this, [this](int value){ m_handler->set_volume(std::clamp(value / 100.0f, 0.0f, 1.0f)); });
26+
}
27+
28+
music_player_dialog::~music_player_dialog()
29+
{
30+
}
31+
32+
void music_player_dialog::select_file()
33+
{
34+
// 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())
35+
if (Emu.IsStopped())
36+
{
37+
Emu.Init();
38+
}
39+
40+
const std::string vfs_dir_path = vfs::get("/dev_hdd0/music");
41+
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 (*.*)"));
42+
43+
if (!file_path.isEmpty())
44+
{
45+
m_file_path = file_path.toStdString();
46+
}
47+
}

rpcs3/rpcs3qt/music_player_dialog.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#pragma once
2+
3+
#include <QDialog>
4+
5+
class music_handler_base;
6+
7+
namespace Ui
8+
{
9+
class music_player_dialog;
10+
}
11+
12+
class music_player_dialog : public QDialog
13+
{
14+
Q_OBJECT
15+
16+
public:
17+
explicit music_player_dialog(QWidget* parent = nullptr);
18+
~music_player_dialog();
19+
20+
private:
21+
void select_file();
22+
23+
std::unique_ptr<Ui::music_player_dialog> ui;
24+
std::unique_ptr<music_handler_base> m_handler;
25+
std::string m_file_path;
26+
};

0 commit comments

Comments
 (0)