diff options
Diffstat (limited to 'src/settingsui/qtbuttonimageproviderplugin/qtbuttonimageprovider.cpp')
-rw-r--r-- | src/settingsui/qtbuttonimageproviderplugin/qtbuttonimageprovider.cpp | 145 |
1 files changed, 59 insertions, 86 deletions
diff --git a/src/settingsui/qtbuttonimageproviderplugin/qtbuttonimageprovider.cpp b/src/settingsui/qtbuttonimageproviderplugin/qtbuttonimageprovider.cpp index 3879d9b..a3649bb 100644 --- a/src/settingsui/qtbuttonimageproviderplugin/qtbuttonimageprovider.cpp +++ b/src/settingsui/qtbuttonimageproviderplugin/qtbuttonimageprovider.cpp @@ -26,102 +26,75 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include <QQmlExtensionPlugin> -#include <QQmlEngine> #include <QQuickImageProvider> #include <QImage> #include <QPainter> -class QtButtonImageProvider : public QQuickImageProvider -{ -public: - QtButtonImageProvider() - : QQuickImageProvider(QQuickImageProvider::Pixmap) - { - } - - QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) - { - bool ok = false; - - QStringList params = id.split("/"); - - int cutSize = params.at(0).toInt(&ok); - - if (!ok) - cutSize = 10; - - QColor fillColor; - QColor borderColor; - - if (params.length() > 1) { - fillColor = QColor(params.at(1)); - } - - if (params.length() > 2) - borderColor = QColor(params.at(2)); +#include "qtbuttonimageprovider.h" - if (!fillColor.isValid()) - fillColor = "#00eb00"; - - if (!borderColor.isValid()) - borderColor ="white"; - - int width = 100; - int height = 50; - - if (size) - *size = QSize(requestedSize.width(), requestedSize.height()); +QtButtonImageProvider::QtButtonImageProvider() + : QQuickImageProvider(QQuickImageProvider::Pixmap) +{ +} - QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : width, - requestedSize.height() > 0 ? requestedSize.height() : height); - pixmap.fill(Qt::transparent); +QPixmap QtButtonImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) +{ + bool ok = false; - QPainter painter(&pixmap); - const qreal borderPenWidth = 2; - QPen borderPen(QBrush(borderColor), borderPenWidth); - borderPen.setJoinStyle(Qt::MiterJoin); - painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(borderPen); - painter.setBrush(fillColor); + QStringList params = id.split("/"); - QPainterPath path; - qreal top = borderPenWidth - 1; - qreal left = borderPenWidth - 1; - qreal bottom = pixmap.height() - borderPenWidth; - qreal right = pixmap.width() - borderPenWidth; - path.moveTo(left + cutSize, top); - path.lineTo(right, top); - path.lineTo(right, bottom - cutSize); - path.lineTo(right - cutSize, bottom); - path.lineTo(left, bottom); - path.lineTo(left, top + cutSize); - path.lineTo(left + cutSize, top); - painter.drawPath(path); + int cutSize = params.at(0).toInt(&ok); - return pixmap; - } -}; + if (!ok) + cutSize = 10; -class ImageProviderExtensionPlugin : public QQmlExtensionPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - void registerTypes(const char *uri) - { - Q_UNUSED(uri) - Q_ASSERT(uri == QLatin1String("QtDeviceUtilities.QtButtonImageProvider")); - qmlRegisterType(QUrl("qrc:/QtButton.qml"), uri, 1, 0, "QtButton"); - } + QColor fillColor; + QColor borderColor; - void initializeEngine(QQmlEngine *engine, const char *uri) - { - Q_UNUSED(uri); - QtButtonImageProvider *provider = new QtButtonImageProvider(); - engine->addImageProvider("QtButton", provider); + if (params.length() > 1) { + fillColor = QColor(params.at(1)); } -}; -#include "qtbuttonimageprovider.moc" + if (params.length() > 2) + borderColor = QColor(params.at(2)); + + if (!fillColor.isValid()) + fillColor = "#00eb00"; + + if (!borderColor.isValid()) + borderColor ="white"; + + int width = 100; + int height = 50; + + if (size) + *size = QSize(requestedSize.width(), requestedSize.height()); + + QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : width, + requestedSize.height() > 0 ? requestedSize.height() : height); + pixmap.fill(Qt::transparent); + + QPainter painter(&pixmap); + const qreal borderPenWidth = 2; + QPen borderPen(QBrush(borderColor), borderPenWidth); + borderPen.setJoinStyle(Qt::MiterJoin); + painter.setRenderHint(QPainter::Antialiasing, true); + painter.setPen(borderPen); + painter.setBrush(fillColor); + + QPainterPath path; + qreal top = borderPenWidth - 1; + qreal left = borderPenWidth - 1; + qreal bottom = pixmap.height() - borderPenWidth; + qreal right = pixmap.width() - borderPenWidth; + path.moveTo(left + cutSize, top); + path.lineTo(right, top); + path.lineTo(right, bottom - cutSize); + path.lineTo(right - cutSize, bottom); + path.lineTo(left, bottom); + path.lineTo(left, top + cutSize); + path.lineTo(left + cutSize, top); + painter.drawPath(path); + + return pixmap; +} |