diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..cf299494 --- /dev/null +++ b/.clang-format @@ -0,0 +1,66 @@ +Language: Cpp +IndentWidth: 4 +AccessModifierOffset: 4 +AlignAfterOpenBracket: DontAlign +PointerBindsToType: true +AlignArrayOfStructures: Left +AlignConsecutiveAssignments: None +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Empty +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: InlineOnly +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortLambdasOnASingleLine: None +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: No +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: After +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeTernaryOperators: false +BreakConstructorInitializers: AfterColon +BreakInheritanceList: AfterComma +BreakStringLiterals: false +ColumnLimit: 0 +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +IndentAccessModifiers: true +IndentCaseBlocks: true +IndentCaseLabels: true +IndentExternBlock: true +IndentGotoLabels: false +IndentPPDirectives: BeforeHash +IndentWrappedFunctionNames: true +KeepEmptyLinesAtTheStartOfBlocks: false +LambdaBodyIndentation: OuterScope +NamespaceIndentation: All +PointerAlignment: Left +ReferenceAlignment: Left +SpaceAfterCStyleCast: true +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatementsExceptControlMacros +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesInAngles: Never +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Latest +TabWidth: 4 +UseTab: Never diff --git a/application/translations/desktop/com.vicr123.thebeat/en.json b/application/translations/desktop/com.vicr123.thebeat/en.json index 6b9af4b8..db589aa7 100644 --- a/application/translations/desktop/com.vicr123.thebeat/en.json +++ b/application/translations/desktop/com.vicr123.thebeat/en.json @@ -1,12 +1,12 @@ { "GenericName": { - "message": "Audio Player" + "message": "Audio Player\r" }, "Keywords": { - "description": "A list of words that can be searched for. Please ensure that the list also ends with a semicolon!", - "message": "audio;music;cd;player;" + "description": "A list of words that can be searched for. Please ensure that the list also ends with a semicolon!\r", + "message": "audio;music;cd;player;\r" }, "Name": { - "message": "theBeat" + "message": "theBeat\r" } } diff --git a/application/translations/desktop/com.vicr123.thebeat_blueprint/en.json b/application/translations/desktop/com.vicr123.thebeat_blueprint/en.json index b22e7022..28b0fd75 100644 --- a/application/translations/desktop/com.vicr123.thebeat_blueprint/en.json +++ b/application/translations/desktop/com.vicr123.thebeat_blueprint/en.json @@ -1,12 +1,12 @@ { "GenericName": { - "message": "Audio Player" + "message": "Audio Player\r" }, "Keywords": { - "description": "A list of words that can be searched for. Please ensure that the list also ends with a semicolon!", - "message": "audio;music;cd;player;" + "description": "A list of words that can be searched for. Please ensure that the list also ends with a semicolon!\r", + "message": "audio;music;cd;player;\r" }, "Name": { - "message": "theBeat Blueprint" + "message": "theBeat Blueprint\r" } } diff --git a/libthebeat/helpers.cpp b/libthebeat/helpers.cpp index 49a6c0f1..7fd2e981 100644 --- a/libthebeat/helpers.cpp +++ b/libthebeat/helpers.cpp @@ -72,7 +72,7 @@ QMap Helpers::metadataStrings = { }; QImage findAlbumArtWorker(QUrl url) { - auto extractID3v2 = [](TagLib::ID3v2::Tag* tag) { + auto extractID3v2 = [](TagLib::ID3v2::Tag * tag) { TagLib::ID3v2::FrameList frameList = tag->frameListMap()["APIC"]; if (frameList.isEmpty()) return QImage(); @@ -87,7 +87,7 @@ QImage findAlbumArtWorker(QUrl url) { return QImage(); }; - auto extractXiph = [](TagLib::Ogg::XiphComment* xiph) { + auto extractXiph = [](TagLib::Ogg::XiphComment * xiph) { for (TagLib::FLAC::Picture* picture : xiph->pictureList()) { if (picture->type() == TagLib::FLAC::Picture::FrontCover) { return QImage::fromData(reinterpret_cast(picture->data().data()), picture->data().size()); @@ -160,7 +160,7 @@ QCoro::Task Helpers::albumArt(QUrl url) { co_return artCache.object(url)->copy(); } - QImage art = co_await QtConcurrent::run([=]() { + QImage art = co_await QtConcurrent::run([ = ]() { return findAlbumArtWorker(url); }); diff --git a/libthebeat/musicbrainzclient.h b/libthebeat/musicbrainzclient.h index 8da8d839..3280ace6 100644 --- a/libthebeat/musicbrainzclient.h +++ b/libthebeat/musicbrainzclient.h @@ -3,9 +3,10 @@ #include #include +#include "libthebeat_global.h" struct MusicBrainzClientPrivate; -class MusicBrainzClient : public QAbstractListModel { +class LIBTHEBEAT_EXPORT MusicBrainzClient : public QAbstractListModel { Q_OBJECT Q_PROPERTY(QString albumName READ albumName NOTIFY albumNameChanged FINAL) Q_PROPERTY(QImage albumArt READ albumArt NOTIFY albumArtChanged FINAL) @@ -17,9 +18,9 @@ class MusicBrainzClient : public QAbstractListModel { ~MusicBrainzClient(); struct MusicBrainzTrack { - QString title; - QStringList artists; - QString album; + QString title; + QStringList artists; + QString album; }; enum Role { diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index e4425960..71af02ef 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,9 +1,9 @@ add_subdirectory(InternetRadioPlugin) add_subdirectory(PodcastPlugin) add_subdirectory(LastFmPlugin) +add_subdirectory(ParanoiaPlugin) IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") -# add_subdirectory(AvFoundationPlugin) add_subdirectory(MacIntegration) ENDIF() @@ -11,7 +11,6 @@ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") add_subdirectory(CdrdaoPlugin) add_subdirectory(LinuxIntegration) add_subdirectory(GstPlugin) - add_subdirectory(ParanoiaPlugin) ENDIF() IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") diff --git a/plugins/ParanoiaPlugin/CMakeLists.txt b/plugins/ParanoiaPlugin/CMakeLists.txt index 1a829cb3..e0201380 100644 --- a/plugins/ParanoiaPlugin/CMakeLists.txt +++ b/plugins/ParanoiaPlugin/CMakeLists.txt @@ -4,17 +4,20 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets DBus) find_package(libcontemporary) find_package(PkgConfig REQUIRED) +find_package(libthefrisbee) pkg_check_modules(cdio IMPORTED_TARGET libcdio++) pkg_check_modules(MusicBrainz IMPORTED_TARGET libmusicbrainz5) pkg_check_modules(cdio-paranoia IMPORTED_TARGET libcdio_paranoia) +IF(NOT ${cdio-paranoia_FOUND}) +return() +ENDIF() + set(SOURCES - cdmonitor.cpp plugin.cpp ) set(HEADERS - cdmonitor.h plugin.h ) @@ -42,7 +45,19 @@ qt_add_qml_module(plugin-paranoia SOURCES paranoiamediaitem.h paranoiamediaitem.cpp ) -target_link_libraries(plugin-paranoia PRIVATE Qt::Widgets Qt::DBus PkgConfig::cdio PkgConfig::cdio-paranoia libcontemporary libthefrisbee libthebeat) +target_link_libraries(plugin-paranoia PRIVATE Qt::Widgets Qt::DBus PkgConfig::cdio PkgConfig::cdio-paranoia libcontemporary libthebeat) + +IF(${libthefrisbee_FOUND}) + target_sources(plugin-paranoia PRIVATE cdmonitor.cpp cdmonitor.h) + target_link_libraries(plugin-paranoia PRIVATE libthefrisbee) + target_compile_definitions(plugin-paranoia PUBLIC HAVE_THEFRISBEE) +ENDIF() + + +IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + target_sources(plugin-paranoia PRIVATE wincdmonitor.h wincdmonitor.cpp) + target_link_libraries(plugin-paranoia PRIVATE comsuppwd) +ENDIF() IF(${MusicBrainz_FOUND}) target_link_libraries(plugin-paranoia PRIVATE PkgConfig::MusicBrainz) diff --git a/plugins/ParanoiaPlugin/cdmonitor.cpp b/plugins/ParanoiaPlugin/cdmonitor.cpp index d37cc422..18a18490 100644 --- a/plugins/ParanoiaPlugin/cdmonitor.cpp +++ b/plugins/ParanoiaPlugin/cdmonitor.cpp @@ -8,7 +8,7 @@ #include struct CdMonitorPrivate { - QMap panes; + QMap panes; }; CdMonitor::CdMonitor(QObject* parent) : @@ -18,7 +18,7 @@ CdMonitor::CdMonitor(QObject* parent) : for (auto drive : DriveObjectManager::drives()) { connect(drive, &DriveInterface::changed, this, &CdMonitor::updateDisks); } - connect(DriveObjectManager::instance(), &DriveObjectManager::driveAdded, this, [this](DriveInterface* drive) { + connect(DriveObjectManager::instance(), &DriveObjectManager::driveAdded, this, [this](DriveInterface * drive) { connect(drive, &DriveInterface::changed, this, &CdMonitor::updateDisks); }); QTimer::singleShot(0, this, &CdMonitor::updateDisks); @@ -37,7 +37,7 @@ void CdMonitor::updateDisks() { if (drive->audioTracks() == 0) continue; if (!d->panes.contains(disk)) { - auto widget = new ParanoiaCdController(disk); + auto widget = new ParanoiaCdController(disk->interface()->blockName()); d->panes.insert(disk, widget); } diff --git a/plugins/ParanoiaPlugin/paranoiacdcontroller.cpp b/plugins/ParanoiaPlugin/paranoiacdcontroller.cpp index 7ae5674f..a610bf7b 100644 --- a/plugins/ParanoiaPlugin/paranoiacdcontroller.cpp +++ b/plugins/ParanoiaPlugin/paranoiacdcontroller.cpp @@ -4,13 +4,11 @@ #include "paranoiamediaitem.h" #include "paranoiaplayer.h" #include "paranoiatrackinfo.h" -#include -#include -#include // #include #include #include #include +#include #include #include @@ -19,35 +17,30 @@ #include struct ParanoiaCdControllerPrivate { - PluginMediaSource* source; - DiskObject* disk; - ParanoiaPlayer* player = nullptr; - QAudioSink* sink = nullptr; - QIODevice* sinkOutput = nullptr; - MusicBrainzClient* musicBrainzClient = nullptr; - - QString albumName; - QList trackInfo; - CdioDevice device; + PluginMediaSource* source; + ParanoiaPlayer* player = nullptr; + QAudioSink* sink = nullptr; + QIODevice* sinkOutput = nullptr; + MusicBrainzClient* musicBrainzClient = nullptr; + + QString albumName; + QList trackInfo; + CdioDevice device; }; -ParanoiaCdController::ParanoiaCdController(DiskObject* disk, QWidget* parent) : +ParanoiaCdController::ParanoiaCdController(QString deviceDescriptor, QWidget* parent) : QAbstractListModel(parent) { d = new ParanoiaCdControllerPrivate(); - d->disk = disk; d->albumName = tr("CD"); d->source = new ParanoiaCdPluginMediaSource(this); d->source->setIcon(QIcon::fromTheme("media-optical-audio")); - auto drive = d->disk->interface()->drive(); - for (auto i = 0; i < drive->audioTracks(); i++) { - d->trackInfo.append(ParanoiaTrackInfoPtr(new ParanoiaTrackInfo(i))); + if (d->device.open(deviceDescriptor.toUtf8().constData(), DRIVER_DEVICE)) { + readCd(); } - readCd(); - QAudioFormat format; format.setChannelCount(2); format.setSampleRate(44100); @@ -58,7 +51,9 @@ ParanoiaCdController::ParanoiaCdController(DiskObject* disk, QWidget* parent) : d->sink->suspend(); connect(d->player, &ParanoiaPlayer::frameAvailable, this, &ParanoiaCdController::feedSink); connect(d->player, &ParanoiaPlayer::epochChanged, this, [this] { - d->sinkOutput = d->sink->start(); + if (d->sink->state() != QAudio::SuspendedState) { + d->sinkOutput = d->sink->start(); + } }); QTimer* sinkFeedTimer = new QTimer(this); @@ -84,8 +79,10 @@ MusicBrainzClient* ParanoiaCdController::musicBrainzClient() { } QCoro::Task<> ParanoiaCdController::eject() { - auto drive = d->disk->interface()->drive(); - co_await drive->eject(); + // auto drive = d->disk->interface()->drive(); + // co_await drive->eject(); + d->device.ejectMedia(); + co_return; } MediaItem* ParanoiaCdController::mediaItem(int row) { @@ -95,7 +92,14 @@ MediaItem* ParanoiaCdController::mediaItem(int row) { } void ParanoiaCdController::readCd() { - if (!d->device.open(d->disk->interface()->blockName().toUtf8().constData(), DRIVER_DEVICE)) return; + // if (!d->device.open(d->disk->interface()->blockName().toUtf8().constData(), DRIVER_DEVICE)) return; + + auto firstTrack = d->device.getFirstTrackNum(); + auto lastTrack = d->device.getLastTrackNum(); + // auto drive = d->disk->interface()->drive(); + for (auto i = firstTrack; i <= lastTrack; i++) { + d->trackInfo.append(ParanoiaTrackInfoPtr(new ParanoiaTrackInfo(i - 1))); + } this->setCdTextMetadata(); d->player = new ParanoiaPlayer(&d->device, this); @@ -127,7 +131,7 @@ void ParanoiaCdController::readCd() { } void ParanoiaCdController::feedSink() { - while (d->sink->bytesFree() >= 2342 && d->player->isFrameAvailable()) { + while (d->sink->bytesFree() >= 2342 && d->player->isFrameAvailable() && d->sink->state() != QAudio::SuspendedState) { d->sinkOutput->write(d->player->nextFrame(1)); } } diff --git a/plugins/ParanoiaPlugin/paranoiacdcontroller.h b/plugins/ParanoiaPlugin/paranoiacdcontroller.h index c0d4e072..a9ede59d 100644 --- a/plugins/ParanoiaPlugin/paranoiacdcontroller.h +++ b/plugins/ParanoiaPlugin/paranoiacdcontroller.h @@ -4,10 +4,10 @@ #include #include #include +#include #include class MediaItem; -class DiskObject; struct ParanoiaCdControllerPrivate; class ParanoiaCdController : public QAbstractListModel { Q_OBJECT @@ -15,7 +15,7 @@ class ParanoiaCdController : public QAbstractListModel { Q_PROPERTY(MusicBrainzClient* musicBrainzClient READ musicBrainzClient NOTIFY musicBrainzClientChanged FINAL) public: - explicit ParanoiaCdController(DiskObject* disk, QWidget* parent = nullptr); + explicit ParanoiaCdController(QString deviceDescriptor, QWidget* parent = nullptr); ~ParanoiaCdController(); enum Roles { diff --git a/plugins/ParanoiaPlugin/plugin.cpp b/plugins/ParanoiaPlugin/plugin.cpp index 63661e8d..af90b3c5 100644 --- a/plugins/ParanoiaPlugin/plugin.cpp +++ b/plugins/ParanoiaPlugin/plugin.cpp @@ -18,8 +18,6 @@ * * *************************************/ #include "plugin.h" -#include "cdmonitor.h" -// #include "mediaitem/gsturlhandler.h" #include #include @@ -29,8 +27,18 @@ #include #include +#ifdef HAVE_FRISBEE + #include "cdmonitor.h" + #define MONITOR_TYPE CdMonitor +#endif + +#ifdef Q_OS_WIN + #include "wincdmonitor.h" + #define MONITOR_TYPE WinCdMonitor +#endif + struct PluginPrivate { - CdMonitor* monitor; + MONITOR_TYPE* monitor; }; Plugin::Plugin() { @@ -45,7 +53,7 @@ Plugin::~Plugin() { } void Plugin::activate() { - d->monitor = new CdMonitor(); + d->monitor = new MONITOR_TYPE(); } void Plugin::deactivate() { diff --git a/plugins/ParanoiaPlugin/wincdmonitor.cpp b/plugins/ParanoiaPlugin/wincdmonitor.cpp new file mode 100644 index 00000000..86eda864 --- /dev/null +++ b/plugins/ParanoiaPlugin/wincdmonitor.cpp @@ -0,0 +1,105 @@ +#include "wincdmonitor.h" + +#include +#include +#include "paranoiacdcontroller.h" +#include + +#include + +#include +#include +#include +#include +#include + +using namespace Qt::Literals; + +struct WinCdMonitorPrivate { + winrt::com_ptr discMaster; + QMap controllers; +}; + +WinCdMonitor::WinCdMonitor(QObject* parent) + : QObject{parent}, d{new WinCdMonitorPrivate()} { + qApp->installNativeEventFilter(this); + + d->discMaster = winrt::create_instance(CLSID_MsftDiscMaster2); + updateDisks(); +} + +WinCdMonitor::~WinCdMonitor() { + delete d; +} + +bool WinCdMonitor::nativeEventFilter(const QByteArray& eventType, void* message, qintptr* result) { +#ifdef Q_OS_WIN + if (eventType == "windows_generic_MSG") { + auto msg = static_cast(message); + if (msg->message == WM_DEVICECHANGE) { + auto lpdb = reinterpret_cast(msg->lParam); + switch (msg->wParam) { + case DBT_DEVICEARRIVAL: + if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) { + QTimer::singleShot(0, this, &WinCdMonitor::updateDisks); + } + break; + case DBT_DEVICEREMOVECOMPLETE: + if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) { + QTimer::singleShot(0, this, &WinCdMonitor::updateDisks); + } + break; + } + } + } +#endif + return false; +} + +void WinCdMonitor::updateDisks() { + LONG count; + winrt::check_hresult(d->discMaster->get_Count(&count)); + + QList availableDriveIds; + for (LONG i = 0; i < count; i++) { + BSTR id; + winrt::check_hresult(d->discMaster->get_Item(i, &id)); + bstr_t wrappedId(id, false); + + if (!d->controllers.contains(wrappedId)) { + try { + auto discRecorder = winrt::create_instance(CLSID_MsftDiscRecorder2); + + winrt::check_hresult(discRecorder->InitializeDiscRecorder(wrappedId)); + SAFEARRAY* driveLetters; + winrt::check_hresult(discRecorder->get_VolumePathNames(&driveLetters)); + + ATL::CComSafeArray driveLetterVariants; + driveLetterVariants.Attach(driveLetters); + + if (driveLetterVariants.GetCount() > 0) { + variant_t driveLetterVariant = driveLetterVariants[driveLetterVariants.GetLowerBound()]; + auto driveLetter = static_cast(driveLetterVariant); + auto widget = new ParanoiaCdController(QString::fromWCharArray(driveLetter).remove("\\")); + d->controllers.insert(wrappedId, widget); + } else { + tWarn("WinCdMonitor") << "Could not create burner because no drive letter is attached"; + } + } catch (...) { + // Do nothing + tWarn("WinCdMonitor") << "Could not create burner. HRESULT " << QString::number(static_cast(winrt::to_hresult()), 16); + } + } + availableDriveIds.append(wrappedId); + } + + QList driveIdsToRemove; + for (bstr_t driveId : d->controllers.keys()) { + if (!availableDriveIds.contains(driveId)) driveIdsToRemove.append(driveId); + } + + for (bstr_t driveId : driveIdsToRemove) { + auto controller = d->controllers.take(driveId); + controller->deleteLater(); + } +} diff --git a/plugins/ParanoiaPlugin/wincdmonitor.h b/plugins/ParanoiaPlugin/wincdmonitor.h new file mode 100644 index 00000000..f900903c --- /dev/null +++ b/plugins/ParanoiaPlugin/wincdmonitor.h @@ -0,0 +1,26 @@ +#ifndef WINCDMONITOR_H +#define WINCDMONITOR_H + +#include +#include + +struct WinCdMonitorPrivate; +class WinCdMonitor : public QObject, public QAbstractNativeEventFilter { + Q_OBJECT + public: + explicit WinCdMonitor(QObject* parent = nullptr); + ~WinCdMonitor(); + + signals: + + private: + WinCdMonitorPrivate* d; + + void updateDisks(); + + // QAbstractNativeEventFilter interface + public: + bool nativeEventFilter(const QByteArray& eventType, void* message, qintptr* result); +}; + +#endif // WINCDMONITOR_H diff --git a/plugins/WinIntegration/CMakeLists.txt b/plugins/WinIntegration/CMakeLists.txt index aa65a9aa..d11c3265 100644 --- a/plugins/WinIntegration/CMakeLists.txt +++ b/plugins/WinIntegration/CMakeLists.txt @@ -3,42 +3,6 @@ project(lib VERSION 1.0.0 LANGUAGES CXX) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Concurrent) find_package(libcontemporary REQUIRED) -set(CNTP_TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Architecture to build for") - -include(ExternalProject) - -function(translate_arch arch) - if(${arch} STREQUAL "AMD64") - set(RESULT_ARCH "x64" PARENT_SCOPE) - elseif(${arch} STREQUAL "arm64") - set(RESULT_ARCH "arm64" PARENT_SCOPE) - else() - set(RESULT_ARCH ${arch} PARENT_SCOPE) - endif() -endfunction() - -if(";${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION};$ENV{UCRTVersion};$ENV{WindowsSDKVersion};" MATCHES [=[;(10\.[0-9.]+)[;\]]=]) - get_filename_component(WINDOWS_KITS_BASE_DIR - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE) - - set(WINDOWS_SDK_VERSION ${CMAKE_MATCH_1}) - translate_arch(CMAKE_HOST_SYSTEM_PROCESSOR) - set(CPPWINRT_PATH "${WINDOWS_KITS_BASE_DIR}/bin/${WINDOWS_SDK_VERSION}/${RESULT_ARCH}/cppwinrt.exe") -endif() - -translate_arch(${CNTP_TARGET_ARCH}) - -ExternalProject_Add(CDLib - GIT_REPOSITORY https://github.com/reflectronic/cdlib.git - GIT_TAG 21f9f6abd03291a56a6b5875f6afc6c67c1d5795 - PREFIX ${CMAKE_BINARY_DIR}/cdlib - CONFIGURE_COMMAND "" - BUILD_COMMAND msbuild /m /v:m /r /p:OutDir=/ /p:RestorePackagesConfig=true /p:Configuration=$ /p:Platform=${RESULT_ARCH} /CDLib.sln - INSTALL_COMMAND ${CPPWINRT_PATH} -out /Include/ -in /CDLib.winmd -ref ${WINDOWS_SDK_VERSION} -) - -ExternalProject_Get_Property(CDLib INSTALL_DIR) - set(SOURCES burn/cdtextcrcgenerator.cpp burn/cdtextgenerator.cpp @@ -48,11 +12,6 @@ set(SOURCES burn/winburnmanager.cpp burn/winburnpopover.cpp burn/winburnprovider.cpp - cdplayback/audiocdplayerthread.cpp - cdplayback/cdchecker.cpp - cdplayback/diskwatcher.cpp - cdplayback/trackinfo.cpp - cdplayback/wincdmediaitem.cpp plugin.cpp smtcintegration.cpp @@ -70,17 +29,11 @@ set(HEADERS burn/winburnmanager.h burn/winburnpopover.h burn/winburnprovider.h - cdplayback/audiocdplayerthread.h - cdplayback/cdchecker.h - cdplayback/diskwatcher.h - cdplayback/trackinfo.h - cdplayback/wincdmediaitem.h plugin.h smtcintegration.h) add_library(plugin-winintegration SHARED ${SOURCES} ${HEADERS}) target_include_directories(plugin-winintegration PUBLIC ../../libthebeat/ ${INSTALL_DIR}/Include) -add_dependencies(plugin-winintegration CDLib) qt_add_qml_module(plugin-winintegration URI com.vicr123.thebeat.plugin.winintegration @@ -88,7 +41,6 @@ qt_add_qml_module(plugin-winintegration QML_FILES WinCdPane.qml NO_CACHEGEN - SOURCES cdplayback/wincdpluginmediasource.h cdplayback/wincdpluginmediasource.cpp ) cntp_init_plugin(thebeat plugin-winintegration 20 linuxintegration) diff --git a/plugins/WinIntegration/cdplayback/audiocdplayerthread.cpp b/plugins/WinIntegration/cdplayback/audiocdplayerthread.cpp deleted file mode 100644 index 9bfec574..00000000 --- a/plugins/WinIntegration/cdplayback/audiocdplayerthread.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "audiocdplayerthread.h" - -#include -#include -#include -#include -#include - -struct AudioCdPlayerThreadPrivate { - QThread thread; - winrt::CDLib::IAudioCDPlayer audioCdPlayer; -}; - -AudioCdPlayerThread* AudioCdPlayerThread::instance() { - static AudioCdPlayerThread* instance = new AudioCdPlayerThread(); - - QMetaObject::Connection* connection = new QMetaObject::Connection(); - *connection = connect(instance, &AudioCdPlayerThread::ready, [ = ] { - disconnect(*connection); - delete connection; - - connect(StateManager::instance()->playlist(), &Playlist::volumeChanged, [ = ](double volume) { - instance->player().Volume(volume); - }); - instance->player().Volume(StateManager::instance()->playlist()->volume()); - }); - - return instance; -} - -winrt::CDLib::IAudioCDPlayer AudioCdPlayerThread::player() { - return d->audioCdPlayer; -} - -void AudioCdPlayerThread::start() { - tDebug("AudioCdPlayerThread") << "Started"; - this->run(); -} - -AudioCdPlayerThread::AudioCdPlayerThread(QObject* parent) : QObject(parent) { - d = new AudioCdPlayerThreadPrivate(); - d->thread.start(); - this->moveToThread(&d->thread); -} - -void AudioCdPlayerThread::run() { - try { - winrt::init_apartment(winrt::apartment_type::single_threaded); - d->audioCdPlayer = winrt::CDLib::AudioCDPlayer::GetPlayer(); - } catch (winrt::hresult_error err) { - tWarn("AudioCdPlayerThread") << "Error creating player:" << QString::fromWCharArray(err.message().c_str()); - return; - } - - emit ready(); - - MSG msg; - while (GetMessage(&msg, nullptr, 0, 0)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - } -} diff --git a/plugins/WinIntegration/cdplayback/audiocdplayerthread.h b/plugins/WinIntegration/cdplayback/audiocdplayerthread.h deleted file mode 100644 index cc924476..00000000 --- a/plugins/WinIntegration/cdplayback/audiocdplayerthread.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef AUDIOCDPLAYERTHREAD_H -#define AUDIOCDPLAYERTHREAD_H - -#include -#include - -class AudioCdPlayerThreadPrivate; -class AudioCdPlayerThread : public QObject { - Q_OBJECT - - public: - static AudioCdPlayerThread* instance(); - - winrt::CDLib::IAudioCDPlayer player(); - - public slots: - void start(); - - signals: - void ready(); - - private: - explicit AudioCdPlayerThread(QObject* parent = nullptr); - AudioCdPlayerThreadPrivate* d; - - // QThread interface - protected: - void run(); -}; - -#endif // AUDIOCDPLAYERTHREAD_H diff --git a/plugins/WinIntegration/cdplayback/cdchecker.cpp b/plugins/WinIntegration/cdplayback/cdchecker.cpp deleted file mode 100644 index 77e4cddf..00000000 --- a/plugins/WinIntegration/cdplayback/cdchecker.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#include "cdchecker.h" - -#include -#include -#include -#include "wincdmediaitem.h" -#include "wincdpluginmediasource.h" -#include "trackinfo.h" -#include -#include -#include "audiocdplayerthread.h" -#include -#include -#include -#include - -struct CdCheckerPrivate { - WinCdPluginMediaSource* source; - winrt::CDLib::IAudioCDDrive drive; - QList trackInfo; - QString albumName; - - QImage playlistBackground; - QNetworkAccessManager mgr; - - QTimer* metadataTimer; -}; - -CdChecker::CdChecker(QChar driveLetter, QWidget* parent) : - QAbstractListModel(parent) { - d = new CdCheckerPrivate(); - d->source = new WinCdPluginMediaSource(this); - - d->metadataTimer = new QTimer(this); - d->metadataTimer->setInterval(1000); - connect(d->metadataTimer, &QTimer::timeout, this, &CdChecker::getMetadata); - - winrt::CDLib::IAudioCDPlayer audioCdPlayer = AudioCdPlayerThread::instance()->player(); - auto drives = audioCdPlayer.GetDrives(); - - for (uint i = 0; i < drives.Size(); i++) { - winrt::CDLib::IAudioCDDrive drive = drives.GetAt(i); - auto letter = drive.DriveLetter(); - if (letter.Value() == driveLetter) { - d->drive = drive; - } - } - - d->source->setIcon(QIcon::fromTheme("media-optical-audio")); - - d->drive.MediaChanged([ this ](winrt::CDLib::IAudioCDDrive drive) { - Q_UNUSED(drive); - checkCd(); - }); - checkCd(); -} - -CdChecker::~CdChecker() { - delete d; -} - -void CdChecker::checkCd() { - auto media = d->drive.InsertedMedia(); - if (media && media.Tracks().Size() > 0) { - this->beginResetModel(); - StateManager::instance()->sources()->addSource(d->source); - - d->trackInfo.clear(); - for (uint i = 0; i < media.Tracks().Size(); i++) { - TrackInfoPtr trackInfo = TrackInfoPtr(new TrackInfo(i)); - d->trackInfo.append(trackInfo); - } - - d->metadataTimer->start(); - getMetadata(); - - updateTrackListing(); - this->endResetModel(); - } else { - this->beginResetModel(); - WinCdMediaItem::driveGone(d->drive.DriveLetter().Value()); - StateManager::instance()->sources()->removeSource(d->source); - - d->playlistBackground = QImage(); - - d->albumName = tr("CD"); - emit albumNameChanged(); - - d->metadataTimer->stop(); - d->trackInfo.clear(); - this->endResetModel(); - } -} - -void CdChecker::getMetadata() { - auto media = d->drive.InsertedMedia(); - for (uint i = 0; i < media.Tracks().Size(); i++) { - TrackInfoPtr trackInfo = d->trackInfo.at(i); - winrt::CDLib::IAudioCDTrack cdTrack = media.Tracks().GetAt(i); - trackInfo->setData(QString::fromUtf16(reinterpret_cast(cdTrack.Title().c_str())), - {QString::fromUtf16(reinterpret_cast(cdTrack.Artist().c_str()))}, - QString::fromUtf16(reinterpret_cast(cdTrack.AlbumTitle().c_str()))); - } - - winrt::CDLib::IAudioCDTrack firstTrack = media.Tracks().GetAt(0); - d->albumName = QString::fromUtf16(reinterpret_cast(firstTrack.AlbumTitle().c_str())); - emit albumNameChanged(); - - updateTrackListing(); -} - -void CdChecker::updateTrackListing() { - emit dataChanged(index(0), index(rowCount() - 1)); -} - -QString CdChecker::albumName() { - return d->albumName; -} - -QCoro::Task<> CdChecker::eject() { - d->drive.Eject(); - co_return; -} - -MediaItem* CdChecker::mediaItem(int row) { - winrt::CDLib::IAudioCDTrack track = d->drive.InsertedMedia().Tracks().GetAt(row); - auto item = new WinCdMediaItem(d->drive.DriveLetter().Value(), track); - StateManager::instance()->qmlEngine()->setObjectOwnership(item, QQmlEngine::CppOwnership); - return item; -} - -int CdChecker::rowCount(const QModelIndex& parent) const { - if (parent.isValid()) return 0; - - return d->trackInfo.count(); -} - -QVariant CdChecker::data(const QModelIndex& index, int role) const { - if (index.parent().isValid()) return {}; - - auto trackInfo = d->trackInfo.at(index.row()); - switch (role) { - case TitleRole: - return trackInfo->title(); - case ArtistRole: - return trackInfo->artist(); - case AlbumRole: - return trackInfo->album(); - case TrackRole: - return trackInfo->track() + 1; - } - - return {}; -} - -QHash CdChecker::roleNames() const { - return { - {PathRole, "path" }, - {TitleRole, "title" }, - {ArtistRole, "artist" }, - {AlbumRole, "album" }, - {DurationRole, "duration"}, - {TrackRole, "track" }, - {AlbumArtRole, "albumArt"}, - {ErrorRole, "error" }, - {SortRole, "sort" } - }; -} diff --git a/plugins/WinIntegration/cdplayback/cdchecker.h b/plugins/WinIntegration/cdplayback/cdchecker.h deleted file mode 100644 index 60b86838..00000000 --- a/plugins/WinIntegration/cdplayback/cdchecker.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef CDCHECKER_H -#define CDCHECKER_H - -#include -#include -#include -#include - -class MediaItem; -struct CdCheckerPrivate; -class CdChecker : public QAbstractListModel { - Q_OBJECT - Q_PROPERTY(QString albumName READ albumName NOTIFY albumNameChanged FINAL) - - public: - explicit CdChecker(QChar driveLetter, QWidget* parent = nullptr); - ~CdChecker(); - - enum Roles { - PathRole = Qt::UserRole, - TitleRole, - ArtistRole, - AlbumRole, - DurationRole, - TrackRole, - AlbumArtRole, - ErrorRole, - SortRole - }; - - QString albumName(); - - Q_SCRIPTABLE QCoro::Task<> eject(); - Q_SCRIPTABLE MediaItem* mediaItem(int row); - - signals: - void albumNameChanged(); - - private: - CdCheckerPrivate* d; - - void checkCd(); - void getMetadata(); - void updateTrackListing(); - - // QAbstractItemModel interface - public: - int rowCount(const QModelIndex& parent = {}) const; - QVariant data(const QModelIndex& index, int role) const; - QHash roleNames() const; -}; - -#endif // CDCHECKER_H diff --git a/plugins/WinIntegration/cdplayback/diskwatcher.cpp b/plugins/WinIntegration/cdplayback/diskwatcher.cpp deleted file mode 100644 index 64a6688c..00000000 --- a/plugins/WinIntegration/cdplayback/diskwatcher.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "diskwatcher.h" - -#include "cdchecker.h" -#include -#include -#include -#include "audiocdplayerthread.h" - -#include -#include -#include - -struct DiskWatcherPrivate { - QMap cdCheckers; -}; - -DiskWatcher::DiskWatcher(QObject* parent) : QObject(parent) { - d = new DiskWatcherPrivate(); - tDebug("DiskWatcher") << "Ready"; - - AudioCdPlayerThread::staticMetaObject.invokeMethod(AudioCdPlayerThread::instance(), &AudioCdPlayerThread::start, Qt::QueuedConnection); - connect(AudioCdPlayerThread::instance(), &AudioCdPlayerThread::ready, this, &DiskWatcher::checkCd); -} - -DiskWatcher::~DiskWatcher() { - delete d; -} - -void DiskWatcher::checkCd() { - struct CdInformation { - QList availableDriveLetters; - }; - tDebug("DiskWatcher") << "Checking CDs"; - - AudioCdPlayerThread* thread = AudioCdPlayerThread::instance(); - auto drives = thread->player().GetDrives(); - CdInformation info; - for (uint i = 0; i < drives.Size(); i++) { - auto letter = drives.GetAt(i).DriveLetter(); - info.availableDriveLetters.append(letter.Value()); - } - for (QChar letter : info.availableDriveLetters) { - tDebug("DiskWatcher") << "Found CD " << letter; - if (!d->cdCheckers.contains(letter)) d->cdCheckers.insert(letter, new CdChecker(letter)); - } -} diff --git a/plugins/WinIntegration/cdplayback/diskwatcher.h b/plugins/WinIntegration/cdplayback/diskwatcher.h deleted file mode 100644 index 46f56a25..00000000 --- a/plugins/WinIntegration/cdplayback/diskwatcher.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef DISKWATCHER_H -#define DISKWATCHER_H - -#include - -struct DiskWatcherPrivate; -class DiskWatcher : public QObject -{ - Q_OBJECT -public: - explicit DiskWatcher(QObject *parent = nullptr); - ~DiskWatcher(); - -signals: - -private: - DiskWatcherPrivate* d; - - void checkCd(); -}; - -#endif // DISKWATCHER_H diff --git a/plugins/WinIntegration/cdplayback/trackinfo.cpp b/plugins/WinIntegration/cdplayback/trackinfo.cpp deleted file mode 100644 index 3b6212b9..00000000 --- a/plugins/WinIntegration/cdplayback/trackinfo.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************** - * - * INSERT-PROJECT-NAME-HERE - INSERT-GENERIC-NAME-HERE - * Copyright (C) 2020 Victor Tran - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * *************************************/ -#include "trackinfo.h" - -#include - -struct TrackInfoPrivate { - QString title; - QStringList artist; - QString album; - int track; - QImage albumArt; -}; - -TrackInfo::TrackInfo() : QObject(nullptr) { - d = new TrackInfoPrivate(); - -} - -TrackInfo::TrackInfo(int track) { - d = new TrackInfoPrivate(); - d->title = tr("Track %1").arg(track + 1); - d->album = tr("Unknown"); - d->track = track; -} - -TrackInfo::~TrackInfo() { - delete d; -} - -QString TrackInfo::title() { - return d->title; -} - -QStringList TrackInfo::artist() { - return d->artist; -} - -QString TrackInfo::album() { - return d->album; -} - -int TrackInfo::track() { - return d->track; -} - -QImage TrackInfo::albumArt() { - return d->albumArt; -} - -void TrackInfo::setData(QString title, QStringList artist, QString album) { - d->title = title; - d->artist = artist; - d->album = album; - - emit dataChanged(); -} - -void TrackInfo::setAlbumArt(QImage albumArt) { - d->albumArt = albumArt; -} diff --git a/plugins/WinIntegration/cdplayback/trackinfo.h b/plugins/WinIntegration/cdplayback/trackinfo.h deleted file mode 100644 index 1019c60b..00000000 --- a/plugins/WinIntegration/cdplayback/trackinfo.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************** - * - * INSERT-PROJECT-NAME-HERE - INSERT-GENERIC-NAME-HERE - * Copyright (C) 2020 Victor Tran - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * *************************************/ -#ifndef TRACKINFO_H -#define TRACKINFO_H - -#include - -struct TrackInfoPrivate; -class TrackInfo : public QObject { - Q_OBJECT - public: - explicit TrackInfo(); - explicit TrackInfo(int track); - ~TrackInfo(); - - QString title(); - QStringList artist(); - QString album(); - int track(); - QImage albumArt(); - - void setData(QString title, QStringList artist, QString album); - void setAlbumArt(QImage albumArt); - - signals: - void dataChanged(); - - private: - TrackInfoPrivate* d; -}; - -typedef QSharedPointer TrackInfoPtr; - -#endif // TRACKINFO_H diff --git a/plugins/WinIntegration/cdplayback/wincdmediaitem.cpp b/plugins/WinIntegration/cdplayback/wincdmediaitem.cpp deleted file mode 100644 index ef68546c..00000000 --- a/plugins/WinIntegration/cdplayback/wincdmediaitem.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "wincdmediaitem.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include "audiocdplayerthread.h" - -struct WinCdMediaItemPrivate { - QChar driveLetter; - winrt::CDLib::IAudioCDTrack track; - QTimer* timer; - - winrt::event_token finishedPlayingToken; - - static QPointer currentItem; - static QMultiMap driveMapping; -}; - -QPointer WinCdMediaItemPrivate::currentItem = QPointer(); -QMultiMap WinCdMediaItemPrivate::driveMapping = QMultiMap(); - -WinCdMediaItem::WinCdMediaItem(QChar driveLetter, winrt::CDLib::IAudioCDTrack track) : MediaItem() { - d = new WinCdMediaItemPrivate(); - d->track = track; - - d->driveLetter = driveLetter; - d->driveMapping.insert(driveLetter, this); - - d->timer = new QTimer(this); - d->timer->setInterval(100); - connect(d->timer, &QTimer::timeout, this, [ = ] { - emit durationChanged(); - emit elapsedChanged(); - }); - - d->finishedPlayingToken = AudioCdPlayerThread::instance()->player().FinishedPlayingTrack([ = ] { - if (d->currentItem == this) { - QTimer::singleShot(0, this, &WinCdMediaItem::done); - } - }); -} - -WinCdMediaItem::~WinCdMediaItem() { - d->driveMapping.remove(d->driveLetter, this); - AudioCdPlayerThread::instance()->player().FinishedPlayingTrack(d->finishedPlayingToken); - delete d; -} - -void WinCdMediaItem::driveGone(QChar driveLetter) { - QList items = WinCdMediaItemPrivate::driveMapping.values(driveLetter); - for (WinCdMediaItem* item : items) { - StateManager::instance()->playlist()->removeItem(item); - item->deleteLater(); - } - WinCdMediaItemPrivate::driveMapping.remove(driveLetter); -} - -void WinCdMediaItem::play() { - if (d->currentItem == this) { - AudioCdPlayerThread::instance()->player().Resume(); - } else { - AudioCdPlayerThread::instance()->player().PlayTrack(d->track); - d->currentItem = this; - } - - d->timer->start(); -} - -void WinCdMediaItem::pause() { - if (d->currentItem == this) { - AudioCdPlayerThread::instance()->player().Pause(); - d->timer->stop(); - } -} - -void WinCdMediaItem::stop() { - if (d->currentItem == this) { - AudioCdPlayerThread::instance()->player().Pause(); - d->timer->stop(); - } -} - -void WinCdMediaItem::seek(quint64 ms) { - if (d->currentItem == this) AudioCdPlayerThread::instance()->player().Seek(std::chrono::duration_cast(std::chrono::duration(ms))); -} - -quint64 WinCdMediaItem::elapsed() { - return std::chrono::duration_cast>(AudioCdPlayerThread::instance()->player().CurrentPosition()).count(); -} - -quint64 WinCdMediaItem::duration() { - return std::chrono::duration_cast>(d->track.Duration()).count(); -} - -QString WinCdMediaItem::title() { - return QString::fromUtf16(reinterpret_cast(d->track.Title().c_str())); -} - -QStringList WinCdMediaItem::authors() { - return {QString::fromUtf16(reinterpret_cast(d->track.Artist().c_str()))}; -} - -QString WinCdMediaItem::album() { - return QString::fromUtf16(reinterpret_cast(d->track.AlbumTitle().c_str())); -} - -QImage WinCdMediaItem::albumArt() { - return QImage(); -} - -QVariant WinCdMediaItem::metadata(QMediaMetaData::Key key) { - if (key == QMediaMetaData::TrackNumber) { - return d->track.TrackNumber(); - } - return QVariant(); -} - -QString WinCdMediaItem::lyrics() { - return ""; -} - -QString WinCdMediaItem::lyricFormat() { - return ""; -} diff --git a/plugins/WinIntegration/cdplayback/wincdmediaitem.h b/plugins/WinIntegration/cdplayback/wincdmediaitem.h deleted file mode 100644 index 641fcb07..00000000 --- a/plugins/WinIntegration/cdplayback/wincdmediaitem.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef WINCDMEDIAITEM_H -#define WINCDMEDIAITEM_H - -#include -#include - -struct WinCdMediaItemPrivate; -class WinCdMediaItem : public MediaItem { - Q_OBJECT - public: - explicit WinCdMediaItem(QChar driveLetter, winrt::CDLib::IAudioCDTrack track); - ~WinCdMediaItem(); - - static void driveGone(QChar driveLetter); - - signals: - - private: - WinCdMediaItemPrivate* d; - - // MediaItem interface - public: - void play(); - void pause(); - void stop(); - void seek(quint64 ms); - quint64 elapsed(); - quint64 duration(); - QString title(); - QStringList authors(); - QString album(); - QImage albumArt(); - QVariant metadata(QMediaMetaData::Key key); - QString lyrics(); - QString lyricFormat(); -}; - -#endif // WINCDMEDIAITEM_H diff --git a/plugins/WinIntegration/cdplayback/wincdpluginmediasource.cpp b/plugins/WinIntegration/cdplayback/wincdpluginmediasource.cpp deleted file mode 100644 index 4a5b4c86..00000000 --- a/plugins/WinIntegration/cdplayback/wincdpluginmediasource.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "wincdpluginmediasource.h" - -#include "cdchecker.h" - -struct WinCdPluginMediaSourcePrivate { - CdChecker* parent; -}; - -WinCdPluginMediaSource::WinCdPluginMediaSource(CdChecker* parent) : - PluginMediaSource{nullptr, QUrl(u"qrc:/qt/qml/com/vicr123/thebeat/plugin/winintegration/WinCdPane.qml"_qs), parent}, d{new WinCdPluginMediaSourcePrivate()} { - d->parent = parent; - - connect(parent, &CdChecker::albumNameChanged, this, [parent, this] { - this->setName(parent->albumName()); - }); -} - -WinCdPluginMediaSource::~WinCdPluginMediaSource() { - delete d; -} - -CdChecker* WinCdPluginMediaSource::controller() { - return d->parent; -} diff --git a/plugins/WinIntegration/cdplayback/wincdpluginmediasource.h b/plugins/WinIntegration/cdplayback/wincdpluginmediasource.h deleted file mode 100644 index a4288246..00000000 --- a/plugins/WinIntegration/cdplayback/wincdpluginmediasource.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef WINCDPLUGINMEDIASOURCE_H -#define WINCDPLUGINMEDIASOURCE_H - -#include - -class CdChecker; -struct WinCdPluginMediaSourcePrivate; -class WinCdPluginMediaSource : public PluginMediaSource { - Q_PROPERTY(CdChecker* controller READ controller FINAL) - Q_OBJECT - public: - explicit WinCdPluginMediaSource(CdChecker* parent = nullptr); - ~WinCdPluginMediaSource(); - - CdChecker* controller(); - - signals: - - private: - WinCdPluginMediaSourcePrivate* d; -}; - -#endif // WINCDPLUGINMEDIASOURCE_H diff --git a/plugins/WinIntegration/plugin.cpp b/plugins/WinIntegration/plugin.cpp index 2af53dec..9099239c 100644 --- a/plugins/WinIntegration/plugin.cpp +++ b/plugins/WinIntegration/plugin.cpp @@ -24,7 +24,6 @@ #include #include -#include "cdplayback/diskwatcher.h" #include "burn/winburnmanager.h" #include "smtcintegration.h" @@ -42,7 +41,7 @@ Plugin::~Plugin() { } void Plugin::activate() { - new DiskWatcher(); + // new DiskWatcher(); d->burnManager = new WinBurnManager(); connect(StateManager::instance(), &StateManager::mainWindowAvailable, this, [] { diff --git a/plugins/WinIntegration/translations/en_US.ts b/plugins/WinIntegration/translations/en_US.ts index 02bfb354..9819defb 100644 --- a/plugins/WinIntegration/translations/en_US.ts +++ b/plugins/WinIntegration/translations/en_US.ts @@ -1,27 +1,6 @@ - - CdChecker - - - CD - - - - - TrackInfo - - - Track %1 - - - - - Unknown - - - WinBurnJob diff --git a/vcpkg.json b/vcpkg.json index 45585eb9..4d7f7dee 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,10 +1,17 @@ { "dependencies": [ - "libcdio", - "libcdio-paranoia", + { + "name": "libcdio", + "platform": "windows" + }, + { + "name": "libcdio-paranoia", + "platform": "windows" + }, { "name": "pkgconf", - "host": true + "host": true, + "platform": "windows" } ] }