diff --git a/CMakeLists.txt b/CMakeLists.txt index fba74bc..58616ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,8 @@ add_subdirectory(thtk EXCLUDE_FROM_ALL) #they assumed their project is the root project... target_include_directories(thtk PUBLIC thtk/) -find_package(Qt5 REQUIRED COMPONENTS Widgets Multimedia) +find_package(Qt6 REQUIRED COMPONENTS Widgets Multimedia) +find_package(ICU COMPONENTS uc i18n REQUIRED) find_package(ECM 5.83.0 NO_MODULE) set(CMAKE_AUTOMOC ON) @@ -58,7 +59,7 @@ add_dependencies(thplayer thtk) get_property(thtk_bindir DIRECTORY thtk/ PROPERTY BINARY_DIR) target_include_directories(thplayer PRIVATE ${thtk_bindir}) -target_link_libraries(thplayer thtk Qt5::Widgets Qt5::Multimedia) +target_link_libraries(thplayer thtk Qt6::Widgets Qt6::Multimedia ICU::uc ICU::i18n) if(WIN32) set_property(TARGET thplayer PROPERTY WIN32_EXECUTABLE True) diff --git a/mainwindow.cpp b/mainwindow.cpp index 02ff8cf..483f3a6 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "outputselectiondialog.hpp" #include "loopedpcmstreamer.hpp" @@ -63,9 +64,9 @@ bool MainWindow::args(QCommandLineParser &p) printf("List of available output devices:\n"); printf("Device ID\tDevice Name\n"); int id = 0; - for (auto &di : QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) + for (auto &di : QMediaDevices::audioOutputs()) { - printf("%d \t%s\n", id++, di.deviceName().toStdString().c_str()); + printf("%d \t%s\n", id++, di.description().toStdString().c_str()); } return true; } @@ -78,7 +79,7 @@ bool MainWindow::args(QCommandLineParser &p) printf("--device: Number expected.\n"); return true; } - if (t >= QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).size() || t < 0) + if (t >= QMediaDevices::audioOutputs().size() || t < 0) { printf("--device: device ID out of range.\n"); return true; @@ -241,12 +242,9 @@ void MainWindow::seek() QAudioFormat MainWindow::getAudioFormat(unsigned rate) { QAudioFormat audioFormat; - audioFormat.setCodec("audio/pcm"); audioFormat.setChannelCount(2); audioFormat.setSampleRate(rate); - audioFormat.setSampleSize(16); - audioFormat.setSampleType(QAudioFormat::SignedInt); - audioFormat.setByteOrder(QAudioFormat::LittleEndian); + audioFormat.setSampleFormat(QAudioFormat::SampleFormat::Int16); return audioFormat; } @@ -293,16 +291,16 @@ void MainWindow::play(int index) // audio playback: QAudioFormat desiredFormat1 = getAudioFormat(songs.songs[songIdx].rate); - QAudioDeviceInfo info1( - ~devi ? QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)[devi] - : QAudioDeviceInfo::defaultOutputDevice()); + QAudioDevice info1( + ~devi ? QMediaDevices::audioOutputs()[devi] + : QMediaDevices::defaultAudioOutput()); if (!info1.isFormatSupported(desiredFormat1)) { qWarning() << "Default format not supported, trying to use the nearest."; desiredFormat1 = info1.preferredFormat(); } stop(); - audioOutput = new QAudioOutput(info1, desiredFormat1, this); + audioOutput = new QAudioSink(info1, desiredFormat1, this); audioOutput->setVolume(1.0); fs::path srcfile = qstring_to_path(songs.thbgmFilePath); if (thver == 6) diff --git a/mainwindow.hpp b/mainwindow.hpp index c393118..fc7dd13 100644 --- a/mainwindow.hpp +++ b/mainwindow.hpp @@ -4,7 +4,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -56,7 +57,7 @@ class MainWindow : public QMainWindow SongList songs; song_t cursong; LoopedPCMStreamer *st = nullptr; - QAudioOutput *audioOutput = nullptr; + QAudioSink *audioOutput = nullptr; QAudioFormat getAudioFormat(unsigned rate); QTimer *timer; thDatWrapper *datw; diff --git a/outputselectiondialog.cpp b/outputselectiondialog.cpp index 0938b11..e6af0b5 100644 --- a/outputselectiondialog.cpp +++ b/outputselectiondialog.cpp @@ -1,6 +1,8 @@ #include "outputselectiondialog.hpp" #include "ui_outputselectiondialog.h" +#include + OutputSelectionDialog::OutputSelectionDialog(QWidget *parent) : QDialog(parent), ui(new Ui::OutputSelectionDialog) @@ -15,12 +17,12 @@ OutputSelectionDialog::~OutputSelectionDialog() void OutputSelectionDialog::init(int curout) { - QList dl = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); + QList dl = QMediaDevices::audioOutputs(); if (curout < 0 || curout >= dl.size())curout = 0; - ui->label->setText(QString("The current audio output '%1' didn't work, please choose another one below.").arg(dl[curout].deviceName())); + ui->label->setText(QString("The current audio output '%1' didn't work, please choose another one below.").arg(dl[curout].description())); _selection = -1; ui->comboBox->clear(); - for (auto di : dl)ui->comboBox->addItem(di.deviceName()); + for (auto di : dl)ui->comboBox->addItem(di.description()); } void OutputSelectionDialog::on_buttonBox_accepted() { diff --git a/outputselectiondialog.hpp b/outputselectiondialog.hpp index 80c59be..4927efa 100644 --- a/outputselectiondialog.hpp +++ b/outputselectiondialog.hpp @@ -2,7 +2,7 @@ #define OUTPUTSELECTIONDIALOG_H #include -#include +#include namespace Ui { diff --git a/songlist.cpp b/songlist.cpp index a9736c8..dba9898 100644 --- a/songlist.cpp +++ b/songlist.cpp @@ -2,8 +2,10 @@ #include #include #include -#include #include +#include +#include +#include #include #include @@ -82,7 +84,9 @@ void SongList::LoadComment(thDatWrapper *datw) QByteArray *arr = new QByteArray((int)(scmt + 1), '\0'); char *dat = arr->data(); datw->getFile(isTrial ? "musiccmt_tr.txt" : "musiccmt.txt", dat); - QString s = QTextCodec::codecForName("Shift-JIS")->toUnicode(*arr); + icu::UnicodeString us(dat, "sjis"); + std::string r; + QString s = QString::fromUtf8(us.toUTF8String(r).c_str()); std::map> map; QStringList sl = s.split('\n'); for (auto &i : sl)i = i.trimmed();