From e16b5e86c03927be8bf7e97693615187157100b0 Mon Sep 17 00:00:00 2001 From: Be Date: Mon, 27 Sep 2021 14:08:21 -0500 Subject: remove QmlSkin class --- CMakeLists.txt | 1 - src/skin/qml/qmlskin.cpp | 264 ----------------------------------------------- src/skin/qml/qmlskin.h | 51 --------- src/skin/skinloader.cpp | 9 -- 4 files changed, 325 deletions(-) delete mode 100644 src/skin/qml/qmlskin.cpp delete mode 100644 src/skin/qml/qmlskin.h diff --git a/CMakeLists.txt b/CMakeLists.txt index ff02dfff66..052539f389 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -816,7 +816,6 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL src/skin/qml/qmllibrarytracklistmodel.cpp src/skin/qml/qmlplayermanagerproxy.cpp src/skin/qml/qmlplayerproxy.cpp - src/skin/qml/qmlskin.cpp src/skin/qml/qmlvisibleeffectsmodel.cpp src/skin/qml/qmlwaveformoverview.cpp src/skin/legacy/skincontext.cpp diff --git a/src/skin/qml/qmlskin.cpp b/src/skin/qml/qmlskin.cpp deleted file mode 100644 index a87e40d70d..0000000000 --- a/src/skin/qml/qmlskin.cpp +++ /dev/null @@ -1,264 +0,0 @@ -#include "skin/qml/qmlskin.h" - -#include -#include -#include - -#include "coreservices.h" -#include "skin/qml/asyncimageprovider.h" -#include "skin/qml/qmlconfigproxy.h" -#include "skin/qml/qmlcontrolproxy.h" -#include "skin/qml/qmleffectmanifestparametersmodel.h" -#include "skin/qml/qmleffectslotproxy.h" -#include "skin/qml/qmleffectsmanagerproxy.h" -#include "skin/qml/qmllibraryproxy.h" -#include "skin/qml/qmllibrarytracklistmodel.h" -#include "skin/qml/qmlplayermanagerproxy.h" -#include "skin/qml/qmlplayerproxy.h" -#include "skin/qml/qmlvisibleeffectsmodel.h" -#include "skin/qml/qmlwaveformoverview.h" -#include "util/assert.h" - -namespace { -const QString kSkinMetadataFileName = QStringLiteral("skin.ini"); -const QString kMainQmlFileName = QStringLiteral("main.qml"); - -// TODO: Figure out a sensible default value or expose this as a config option -constexpr int kMultisamplingSampleCount = 2; - -// Converts a (capturing) lambda into a function pointer that can be passed to -// qmlRegisterSingletonType. -template -auto lambda_to_singleton_type_factory_ptr(F&& f) { - static F fn = std::forward(f); - return [](QQmlEngine* pEngine, QJSEngine* pScriptEngine) -> QObject* { - return fn(pEngine, pScriptEngine); - }; -} -} // namespace - -namespace mixxx { -namespace skin { -namespace qml { - -// static -SkinPointer QmlSkin::fromDirectory(const QDir& dir) { - if (dir.exists(kSkinMetadataFileName) && dir.exists(kMainQmlFileName)) { - return std::make_shared(QFileInfo(dir.absolutePath())); - } - return nullptr; -} - -QmlSkin::QmlSkin(const QFileInfo& path) - : m_path(path), - m_settings(QDir(path.absoluteFilePath()) - .absoluteFilePath(kSkinMetadataFileName), - QSettings::IniFormat) { - DEBUG_ASSERT(isValid()); -} - -bool QmlSkin::isValid() const { - return !m_path.filePath().isEmpty() && m_settings.status() == QSettings::NoError; -} - -QFileInfo QmlSkin::path() const { - DEBUG_ASSERT(isValid()); - return m_path; -} - -QDir QmlSkin::dir() const { - return QDir(path().absoluteFilePath()); -} - -QPixmap QmlSkin::preview(const QString& schemeName) const { - Q_UNUSED(schemeName); - DEBUG_ASSERT(schemeName.isEmpty()); - DEBUG_ASSERT(isValid()); - QPixmap preview; - preview.load(dir().absoluteFilePath(QStringLiteral("skin_preview.png"))); - if (preview.isNull()) { - preview.load(":/images/skin_preview_placeholder.png"); - } - return preview; -} - -QString QmlSkin::name() const { - DEBUG_ASSERT(isValid()); - return m_path.fileName(); -} - -QList QmlSkin::colorschemes() const { - DEBUG_ASSERT(isValid()); - // TODO: Implement this - return {}; -} - -QString QmlSkin::description() const { - DEBUG_ASSERT(isValid()); - return m_settings.value("Skin/description", QString()).toString(); -} - -bool QmlSkin::fitsScreenSize(const QScreen& screen) const { - DEBUG_ASSERT(isValid()); - const auto screenSize = screen.size(); - const int minScreenWidth = m_settings.value("Skin/min_pixel_width", -1).toInt(); - if (minScreenWidth >= 0 && minScreenWidth < screenSize.width()) { - return false; - } - - const int minScreenHeight = m_settings.value("Skin/min_pixel_height", -1).toInt(); - if (minScreenWidth >= 0 && minScreenHeight < screenSize.height()) { - return false; - } - - return true; -} - -LaunchImage* QmlSkin::loadLaunchImage(QWidget* pParent, UserSettingsPointer pConfig) const { - Q_UNUSED(pParent); - Q_UNUSED(pConfig); - // TODO: Add support for custom launch image. - return nullptr; -} - -QWidget* QmlSkin::loadSkin(QWidget* pParent, - UserSettingsPointer pConfig, - QSet* pSkinCreatedControls, - mixxx::CoreServices* pCoreServices) const { - Q_UNUSED(pConfig); - Q_UNUSED(pSkinCreatedControls); - VERIFY_OR_DEBUG_ASSERT(isValid()) { - return nullptr; - } - - qmlRegisterType("Mixxx", 0, 1, "ControlProxy"); - qmlRegisterType("Mixxx", 0, 1, "WaveformOverview"); - - // Any uncreateable non-singleton types registered here require arguments - // that we don't want to expose to QML directly. Instead, they can be - // retrieved by member properties or methods from the singleton types. - // - // The alternative would be to register their *arguments* in the QML - // system, which would improve nothing, or we had to expose them as - // singletons to that they can be accessed by components instantiated by - // QML, which would also be suboptimal. - - qmlRegisterSingletonType("Mixxx", - 0, - 1, - "EffectsManager", - lambda_to_singleton_type_factory_ptr( - [pCoreServices](QQmlEngine* pEngine, - QJSEngine* pScriptEngine) -> QObject* { - Q_UNUSED(pScriptEngine); - - QmlEffectsManagerProxy* pEffectsManagerProxy = - new QmlEffectsManagerProxy( - pCoreServices->getEffectsManager(), - pEngine); - return pEffectsManagerProxy; - })); - qmlRegisterUncreatableType("Mixxx", - 0, - 1, - "VisibleEffectsModel", - "VisibleEffectsModel objects can't be created directly, please use " - "Mixxx.EffectsManager.visibleEffectsModel"); - qmlRegisterUncreatableType("Mixxx", - 0, - 1, - "EffectManifestParametersModel", - "EffectManifestParametersModel objects can't be created directly, " - "please use Mixxx.EffectsSlot.parametersModel"); - qmlRegisterUncreatableType("Mixxx", - 0, - 1, - "EffectSlotProxy", - "EffectSlotProxy objects can't be created directly, please use " - "Mixxx.EffectsManager.getEffectSlot(rackNumber, unitNumber, effectNumber)"); - - qmlRegisterSingletonType("Mixxx", - 0, - 1, - "PlayerManager", - lambda_to_singleton_type_factory_ptr( - [pCoreServices](QQmlEngine* pEngine, - QJSEngine* pScriptEngine) -> QObject* { - Q_UNUSED(pScriptEngine); - - QmlPlayerManagerProxy* pPlayerManagerProxy = - new QmlPlayerManagerProxy( - pCoreServices->getPlayerManager(), - pEngine); - return pPlayerManagerProxy; - })); - qmlRegisterUncreatableType("Mixxx", - 0, - 1, - "Player", - "Player objects can't be created directly, please use " - "Mixxx.PlayerManager.getPlayer(group)"); - - qmlRegisterSingletonType("Mixxx", - 0, - 1, - "Config", - lambda_to_singleton_type_factory_ptr( - [pConfig](QQmlEngine* pEngine, - QJSEngine* pScriptEngine) -> QObject* { - Q_UNUSED(pScriptEngine); - - QmlConfigProxy* pConfigProxy = - new QmlConfigProxy( - pConfig, - pEngine); - return pConfigProxy; - })); - - qmlRegisterUncreatableType("Mixxx", - 0, - 1, - "LibraryTrackListModel", - "LibraryTrackListModel objects can't be created directly, " - "please use Mixxx.Library.model"); - qmlRegisterSingletonType("Mixxx", - 0, - 1, - "Library", - lambda_to_singleton_type_factory_ptr( - [pCoreServices](QQmlEngine* pEngine, - QJSEngine* pScriptEngine) -> QObject* { - Q_UNUSED(pScriptEngine); - - QmlLibraryProxy* pLibraryProxy = new QmlLibraryProxy( - pCoreServices->getLibrary(), - pEngine); - return pLibraryProxy; - })); - - QQuickWidget* pWidget = new QQuickWidget(pParent); - - // Enable multisampling for much nicer rendering of shapes/images - QSurfaceFormat format; - format.setSamples(kMultisamplingSampleCount); - pWidget->setFormat(format); - - pWidget->engine()->setBaseUrl(QUrl::fromLocalFile(m_path.absoluteFilePath())); - pWidget->engine()->addImportPath(m_path.absoluteFilePath()); - - // No memory leak here, the QQmlENgine takes ownership of the provider - QQuickAsyncImageProvider* pImageProvider = new AsyncImageProvider(); - pWidget->engine()->addImageProvider(AsyncImageProvider::kProviderName, pImageProvider); - - pWidget->setSource(QUrl::fromLocalFile(dir().absoluteFilePath(kMainQmlFileName))); - pWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); - if (pWidget->status() != QQuickWidget::Ready) { - qWarning() << "Skin" << name() << "failed to load!"; - return nullptr; - } - return pWidget; -} - -} // namespace qml -} // namespace skin -} // namespace mixxx diff --git a/src/skin/qml/qmlskin.h b/src/skin/qml/qmlskin.h deleted file mode 100644 index eda6a56981..0000000000 --- a/src/skin/qml/qmlskin.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -#include "skin/skin.h" - -namespace mixxx { -namespace skin { -namespace qml { - -class QmlSkin : public mixxx::skin::Skin { - public: - QmlSkin() = default; - QmlSkin(const QFileInfo& path); - - static SkinPointer fromDirectory(const QDir& dir); - - mixxx::skin::SkinType type() const override { - return mixxx::skin::SkinType::QML; - }; - bool isValid() const override; - QFileInfo path() const override; - QPixmap preview(const QString& schemeName) const override; - - QString name() const override; - QString description() const override; - QList colorschemes() const override; - - bool fitsScreenSize(const QScreen& screen) const override; - LaunchImage* loadLaunchImage(QWidget* pParent, UserSettingsPointer pConfig) const override; - QWidget* loadSkin(QWidget* pParent, - UserSettingsPointer pConfig, - QSet* pSkinCreatedControls, - mixxx::CoreServices* pCoreServices) const override; - - private: - QDir dir() const; - - QFileInfo m_path; - QSettings m_settings; -}; - -} // namespace qml -} // namespace skin -} // namespace mixxx diff --git a/src/skin/skinloader.cpp b/src/skin/skinloader.cpp index 87f5668aae..7e77babad4 100644 --- a/src/skin/skinloader.cpp +++ b/src/skin/skinloader.cpp @@ -13,7 +13,6 @@ #include "skin/legacy/launchimage.h" #include "skin/legacy/legacyskin.h" #include "skin/legacy/legacyskinparser.h" -#include "skin/qml/qmlskin.h" #include "util/debug.h" #include "util/timer.h" #include "vinylcontrol/vinylcontrolmanager.h" @@ -22,7 +21,6 @@ namespace mixxx { namespace skin { using legacy::LegacySkin; -using qml::QmlSkin; SkinLoader::SkinLoader(UserSettingsPointer pConfig) : m_pConfig(pConfig) { @@ -212,13 +210,6 @@ SkinPointer SkinLoader::skinFromDirectory(const QDir& dir) const { return pSkin; } - if (m_pConfig->getValue(ConfigKey("[Config]", "experimental_qml_skin_support"), false)) { - pSkin = QmlSkin::fromDirectory(dir); - if (pSkin && pSkin->isValid()) { - return pSkin; - } - } - return nullptr; } -- cgit v1.2.3