Prison

barcodequickitem.h
1/*
2 SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org>
3
4 SPDX-License-Identifier: MIT
5*/
6
7#ifndef PRISON_BARCODEQUICKITEM_H
8#define PRISON_BARCODEQUICKITEM_H
9
10#include <Prison/Barcode>
11
12#include <QColor>
13#include <QQuickPaintedItem>
14
15#include <qqmlregistration.h>
16
17namespace Prison
18{
19
20class BarcodeQuickItem : public QQuickPaintedItem
21{
23 QML_NAMED_ELEMENT(Barcode)
24 Q_PROPERTY(QVariant content READ content WRITE setContent NOTIFY contentChanged)
25 Q_PROPERTY(QJSValue barcodeType READ barcodeType WRITE setBarcodeType NOTIFY barcodeTypeChanged)
26 Q_PROPERTY(QColor foregroundColor READ foregroundColor WRITE setForegroundColor NOTIFY foregroundColorChanged)
27 Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged)
28 Q_PROPERTY(Dimensions dimensions READ dimensions NOTIFY dimensionsChanged)
29 /**
30 * @see Prison::Barcode::minimumSize()
31 * @since 5.69
32 */
33 Q_PROPERTY(qreal minimumHeight READ minimumHeight NOTIFY implicitHeightChanged)
34 /**
35 * @see Prison::Barcode::minimumSize()
36 * @since 5.69
37 */
38 Q_PROPERTY(qreal minimumWidth READ minimumWidth NOTIFY implicitWidthChanged)
39
40public:
41 enum BarcodeType {
42 QRCode = Prison::QRCode,
43 DataMatrix = Prison::DataMatrix,
44 Aztec = Prison::Aztec,
45 Code39 = Prison::Code39,
46 Code93 = Prison::Code93,
47 Code128 = Prison::Code128,
48 PDF417 = Prison::PDF417,
49 EAN13 = Prison::EAN13,
50 };
51 Q_ENUM(BarcodeType)
52 explicit BarcodeQuickItem(QQuickItem *parent = nullptr);
53 ~BarcodeQuickItem() override;
54
55 QVariant content() const;
56 void setContent(const QVariant &data);
57
58 QJSValue barcodeType() const;
59 void setBarcodeType(const QJSValue &type);
60
61 QColor foregroundColor() const;
62 void setForegroundColor(const QColor &color);
63 QColor backgroundColor() const;
64 void setBackgroundColor(const QColor &color);
65
66 enum Dimensions {
67 NoDimensions,
68 OneDimension,
69 TwoDimensions,
70 };
71 Q_ENUM(Dimensions)
72 Dimensions dimensions() const;
73
74 void paint(QPainter *painter) override;
75 void componentComplete() override;
76
77 qreal minimumHeight() const;
78 qreal minimumWidth() const;
79
81 void contentChanged();
82 void barcodeTypeChanged();
83 void foregroundColorChanged();
84 void backgroundColorChanged();
85 void dimensionsChanged();
86
87private:
88 bool isEmpty() const;
89 void updateBarcode();
90
91 QVariant m_content;
92 std::optional<Barcode> m_barcode;
93 QColor m_fgColor = Qt::black;
94 QColor m_bgColor = Qt::white;
95 std::optional<Prison::BarcodeType> m_type;
96};
97
98}
99
100#endif // PRISON_BARCODEQUICKITEM_H
Provides classes and methods for generating barcodes.
Definition barcode.h:24
@ PDF417
PDF417 barcode.
Definition prison.h:36
@ QRCode
QRCode 2d barcode.
Definition prison.h:24
@ Code39
Code39 barcode.
Definition prison.h:30
@ EAN13
EAN13 barcode.
Definition prison.h:38
@ DataMatrix
DataMatrix 2d barcode.
Definition prison.h:26
@ Aztec
Aztec 2d barcode.
Definition prison.h:28
@ Code128
Code 128 barcode.
Definition prison.h:34
@ Code93
Code93 barcode.
Definition prison.h:32
Q_ENUM(...)
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS
QQuickItem(QQuickItem *parent)
void implicitHeightChanged()
void implicitWidthChanged()
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Feb 28 2025 11:52:49 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.