Skip to content

Commit 5d837ae

Browse files
committed
Initial Qt6 port.
1 parent cf74d30 commit 5d837ae

6 files changed

+27
-21
lines changed

CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ add_subdirectory(thtk EXCLUDE_FROM_ALL)
1010
#they assumed their project is the root project...
1111
target_include_directories(thtk PUBLIC thtk/)
1212

13-
find_package(Qt5 REQUIRED COMPONENTS Widgets Multimedia)
13+
find_package(Qt6 REQUIRED COMPONENTS Widgets Multimedia)
14+
find_package(ICU COMPONENTS uc i18n REQUIRED)
1415
find_package(ECM 5.83.0 NO_MODULE)
1516

1617
set(CMAKE_AUTOMOC ON)
@@ -58,7 +59,7 @@ add_dependencies(thplayer thtk)
5859
get_property(thtk_bindir DIRECTORY thtk/ PROPERTY BINARY_DIR)
5960
target_include_directories(thplayer PRIVATE ${thtk_bindir})
6061

61-
target_link_libraries(thplayer thtk Qt5::Widgets Qt5::Multimedia)
62+
target_link_libraries(thplayer thtk Qt6::Widgets Qt6::Multimedia ICU::uc ICU::i18n)
6263

6364
if(WIN32)
6465
set_property(TARGET thplayer PROPERTY WIN32_EXECUTABLE True)

mainwindow.cpp

+9-11
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <QMimeData>
1313
#include <QRegularExpression>
1414
#include <QFontDatabase>
15+
#include <QMediaDevices>
1516

1617
#include "outputselectiondialog.hpp"
1718
#include "loopedpcmstreamer.hpp"
@@ -63,9 +64,9 @@ bool MainWindow::args(QCommandLineParser &p)
6364
printf("List of available output devices:\n");
6465
printf("Device ID\tDevice Name\n");
6566
int id = 0;
66-
for (auto &di : QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
67+
for (auto &di : QMediaDevices::audioOutputs())
6768
{
68-
printf("%d \t%s\n", id++, di.deviceName().toStdString().c_str());
69+
printf("%d \t%s\n", id++, di.description().toStdString().c_str());
6970
}
7071
return true;
7172
}
@@ -78,7 +79,7 @@ bool MainWindow::args(QCommandLineParser &p)
7879
printf("--device: Number expected.\n");
7980
return true;
8081
}
81-
if (t >= QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).size() || t < 0)
82+
if (t >= QMediaDevices::audioOutputs().size() || t < 0)
8283
{
8384
printf("--device: device ID out of range.\n");
8485
return true;
@@ -241,12 +242,9 @@ void MainWindow::seek()
241242
QAudioFormat MainWindow::getAudioFormat(unsigned rate)
242243
{
243244
QAudioFormat audioFormat;
244-
audioFormat.setCodec("audio/pcm");
245245
audioFormat.setChannelCount(2);
246246
audioFormat.setSampleRate(rate);
247-
audioFormat.setSampleSize(16);
248-
audioFormat.setSampleType(QAudioFormat::SignedInt);
249-
audioFormat.setByteOrder(QAudioFormat::LittleEndian);
247+
audioFormat.setSampleFormat(QAudioFormat::SampleFormat::Int16);
250248
return audioFormat;
251249
}
252250

@@ -293,16 +291,16 @@ void MainWindow::play(int index)
293291
// audio playback:
294292
QAudioFormat desiredFormat1 = getAudioFormat(songs.songs[songIdx].rate);
295293

296-
QAudioDeviceInfo info1(
297-
~devi ? QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)[devi]
298-
: QAudioDeviceInfo::defaultOutputDevice());
294+
QAudioDevice info1(
295+
~devi ? QMediaDevices::audioOutputs()[devi]
296+
: QMediaDevices::defaultAudioOutput());
299297
if (!info1.isFormatSupported(desiredFormat1))
300298
{
301299
qWarning() << "Default format not supported, trying to use the nearest.";
302300
desiredFormat1 = info1.preferredFormat();
303301
}
304302
stop();
305-
audioOutput = new QAudioOutput(info1, desiredFormat1, this);
303+
audioOutput = new QAudioSink(info1, desiredFormat1, this);
306304
audioOutput->setVolume(1.0);
307305
fs::path srcfile = qstring_to_path(songs.thbgmFilePath);
308306
if (thver == 6)

mainwindow.hpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
#include <QMainWindow>
55
#include <QDragEnterEvent>
66
#include <QAudioFormat>
7-
#include <QAudioOutput>
7+
#include <QAudioDevice>
8+
#include <QAudioSink>
89
#include <QBuffer>
910
#include <QTimer>
1011
#include <QSlider>
@@ -56,7 +57,7 @@ class MainWindow : public QMainWindow
5657
SongList songs;
5758
song_t cursong;
5859
LoopedPCMStreamer *st = nullptr;
59-
QAudioOutput *audioOutput = nullptr;
60+
QAudioSink *audioOutput = nullptr;
6061
QAudioFormat getAudioFormat(unsigned rate);
6162
QTimer *timer;
6263
thDatWrapper *datw;

outputselectiondialog.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#include "outputselectiondialog.hpp"
22
#include "ui_outputselectiondialog.h"
33

4+
#include <QAudioDevice>
5+
46
OutputSelectionDialog::OutputSelectionDialog(QWidget *parent) :
57
QDialog(parent),
68
ui(new Ui::OutputSelectionDialog)
@@ -15,12 +17,12 @@ OutputSelectionDialog::~OutputSelectionDialog()
1517

1618
void OutputSelectionDialog::init(int curout)
1719
{
18-
QList<QAudioDeviceInfo> dl = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
20+
QList<QAudioDevice> dl = QMediaDevices::audioOutputs();
1921
if (curout < 0 || curout >= dl.size())curout = 0;
20-
ui->label->setText(QString("The current audio output '%1' didn't work, please choose another one below.").arg(dl[curout].deviceName()));
22+
ui->label->setText(QString("The current audio output '%1' didn't work, please choose another one below.").arg(dl[curout].description()));
2123
_selection = -1;
2224
ui->comboBox->clear();
23-
for (auto di : dl)ui->comboBox->addItem(di.deviceName());
25+
for (auto di : dl)ui->comboBox->addItem(di.description());
2426
}
2527
void OutputSelectionDialog::on_buttonBox_accepted()
2628
{

outputselectiondialog.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define OUTPUTSELECTIONDIALOG_H
33

44
#include <QDialog>
5-
#include <QAudioDeviceInfo>
5+
#include <QMediaDevices>
66

77
namespace Ui
88
{

songlist.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
#include <QFileInfo>
33
#include <QDebug>
44
#include <QByteArray>
5-
#include <QTextCodec>
65
#include <QRegularExpression>
6+
#include <unicode/ustring.h>
7+
#include <unicode/unistr.h>
8+
#include <unicode/ucnv.h>
79
#include <map>
810
#include <fstream>
911

@@ -82,7 +84,9 @@ void SongList::LoadComment(thDatWrapper *datw)
8284
QByteArray *arr = new QByteArray((int)(scmt + 1), '\0');
8385
char *dat = arr->data();
8486
datw->getFile(isTrial ? "musiccmt_tr.txt" : "musiccmt.txt", dat);
85-
QString s = QTextCodec::codecForName("Shift-JIS")->toUnicode(*arr);
87+
icu::UnicodeString us(dat, "sjis");
88+
std::string r;
89+
QString s = QString::fromUtf8(us.toUTF8String(r).c_str());
8690
std::map<QString, std::pair<QString, QString>> map;
8791
QStringList sl = s.split('\n');
8892
for (auto &i : sl)i = i.trimmed();

0 commit comments

Comments
 (0)