File indexing completed on 2024-03-24 15:37:17

0001 /*
0002  * This file is part of KQuickCharts
0003  * SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006  */
0007 
0008 #include "ChartsControlsPlugin.h"
0009 
0010 #include <QDebug>
0011 #include <QFile>
0012 #include <QQmlEngine>
0013 #include <QQuickStyle>
0014 #include <QUrl>
0015 
0016 ChartsControlsPlugin::ChartsControlsPlugin(QObject *parent)
0017     : QQmlExtensionPlugin(parent)
0018 {
0019 }
0020 
0021 void ChartsControlsPlugin::registerTypes(const char *uri)
0022 {
0023     Q_ASSERT(QString::fromLatin1(uri) == QLatin1String("org.kde.quickcharts.controls"));
0024 
0025     m_styleName = QQuickStyle::name();
0026 
0027     qmlRegisterSingletonType(componentUrl(QStringLiteral("Theme.qml")), uri, 1, 0, "Theme");
0028     qmlRegisterType(componentUrl(QStringLiteral("Legend.qml")), uri, 1, 0, "Legend");
0029     qmlRegisterType(componentUrl(QStringLiteral("LegendDelegate.qml")), uri, 1, 0, "LegendDelegate");
0030     qmlRegisterType(componentUrl(QStringLiteral("LineChartControl.qml")), uri, 1, 0, "LineChartControl");
0031     qmlRegisterType(componentUrl(QStringLiteral("PieChartControl.qml")), uri, 1, 0, "PieChartControl");
0032 
0033     qmlRegisterSingletonType(componentUrl(QStringLiteral("Logging.qml")), uri, 1, 0, "Logging");
0034 }
0035 
0036 QUrl ChartsControlsPlugin::componentUrl(const QString &fileName)
0037 {
0038     auto url = baseUrl();
0039     url.setPath(url.path() % QLatin1Char('/'));
0040 
0041     auto styled = url.resolved(QUrl{QStringLiteral("styles/") % m_styleName % QLatin1Char('/') % fileName});
0042     if (QFile::exists(styled.toLocalFile())) {
0043         return styled;
0044     }
0045 
0046     return url.resolved(QUrl{fileName});
0047 }
0048 
0049 #include "moc_ChartsControlsPlugin.cpp"