diff --git a/examples/iot-dashboard/IndoorTemperature.cpp b/examples/iot-dashboard/IndoorTemperature.cpp new file mode 100644 index 00000000..4b99b0cb --- /dev/null +++ b/examples/iot-dashboard/IndoorTemperature.cpp @@ -0,0 +1,55 @@ +#include "IndoorTemperature.h" +#include "DaytimeSkin.h" +#include "RoundedIcon.h" + +#include +#include +#include +#include +#include + +#include + +IndoorTemperature::IndoorTemperature(QQuickItem *parent) + : QskLinearBox(Qt::Horizontal, parent) +{ + setMargins(17); + setSpacing(20); + + QskGradient gradient(QskGradient::Vertical, "#ff7d34", "#ff3122"); + auto* icon = new RoundedIcon("indoor-temperature", gradient, this); + + auto *titleAndValue = new QskLinearBox(Qt::Vertical, this); + + auto* title = new QskTextLabel("Indoor Temperature", titleAndValue); + title->setFontRole(DaytimeSkin::TitleFont); + + auto* value = new QskTextLabel("+24", titleAndValue); + value->setFontRole(QskSkin::HugeFont); + value->setTextColor("#929CB2"); + + auto* buttons = new QskLinearBox(Qt::Vertical, this); + buttons->setSpacing(0); + + QImage upImage( ":/images/up.png"); + auto upGraphic = QskGraphic::fromImage( upImage ); + upGraphic.setDefaultSize({10, 5.71}); + auto* upButton = new QskPushButton(buttons); + upButton->setBoxShapeHint(QskPushButton::Panel, {30, 30, 0, 0}); + upButton->setSizePolicy(QskSizePolicy::Fixed, QskSizePolicy::Expanding); + upButton->setFixedWidth(32); + upButton->setGradientHint(QskPushButton::Panel, {"#f7f7f7"}); + upButton->setGraphic(upGraphic); + upButton->setGraphicSourceSize({10, 5.71}); + + QImage downImage( ":/images/down.png"); + auto downGraphic = QskGraphic::fromImage( downImage ); + downGraphic.setDefaultSize({10, 5.71}); + auto* downButton = new QskPushButton(buttons); + downButton->setBoxShapeHint(QskPushButton::Panel, {0, 0, 30, 30}); + downButton->setSizePolicy(QskSizePolicy::Fixed, QskSizePolicy::Expanding); + downButton->setFixedWidth(32); + downButton->setGradientHint(QskPushButton::Panel, {"#f7f7f7"}); + downButton->setGraphic(downGraphic); + downButton->setGraphicSourceSize({10, 5.71}); +} diff --git a/examples/iot-dashboard/IndoorTemperature.h b/examples/iot-dashboard/IndoorTemperature.h new file mode 100644 index 00000000..8cdfd976 --- /dev/null +++ b/examples/iot-dashboard/IndoorTemperature.h @@ -0,0 +1,12 @@ +#ifndef INDOORTEMPERATURE_H +#define INDOORTEMPERATURE_H + +#include + +class IndoorTemperature : public QskLinearBox +{ +public: + IndoorTemperature( QQuickItem* parent ); +}; + +#endif // INDOORTEMPERATURE_H diff --git a/examples/iot-dashboard/MainContent.cpp b/examples/iot-dashboard/MainContent.cpp index 6935c70a..d0cede61 100644 --- a/examples/iot-dashboard/MainContent.cpp +++ b/examples/iot-dashboard/MainContent.cpp @@ -1,6 +1,7 @@ #include "MainContent.h" #include "Card.h" +#include "IndoorTemperature.h" #include "PieChart.h" #include "TopBar.h" #include "Usage.h" @@ -20,16 +21,19 @@ MainContent::MainContent( QQuickItem *parent ) : QskLinearBox( Qt::Vertical, par auto* topBar = new TopBar(this); auto* gridBox = new QskGridBox(this); - gridBox->setMargins({15, 0, 15, 0}); + gridBox->setMargins({15, 0, 15, 20}); gridBox->setPanel(true); - gridBox->setBoxShapeHint(QskBox::Panel, QskBoxShapeMetrics(6) ); - gridBox->setBoxBorderMetricsHint( QskBox::Panel, QskBoxBorderMetrics(2) ); + gridBox->setBoxShapeHint(QskBox::Panel, 6 ); + gridBox->setBoxBorderMetricsHint( QskBox::Panel, 2 ); QskBoxBorderColors borderColors("#dddddd"); borderColors.setAlpha(100); gridBox->setBoxBorderColorsHint( QskBox::Panel, borderColors); auto* usage = new Usage(gridBox); gridBox->addItem(usage, 0, 0, 2, 1); + + auto* indoorTemperature = new IndoorTemperature(gridBox); + gridBox->addItem(indoorTemperature, 0, 1); } void MainContent::addCard( const QString &title, QskControl *content, int column ) diff --git a/examples/iot-dashboard/PieChartPainted.cpp b/examples/iot-dashboard/PieChartPainted.cpp index 090615bc..1c4cc61f 100644 --- a/examples/iot-dashboard/PieChartPainted.cpp +++ b/examples/iot-dashboard/PieChartPainted.cpp @@ -23,10 +23,8 @@ PieChartPainted::PieChartPainted(const QColor& color, const QGradient& gradient, m_progressLabel->setTextColor(color); } -QSizeF PieChartPainted::contentsSizeHint(Qt::SizeHint sizeHint, const QSizeF& size) const +QSizeF PieChartPainted::contentsSizeHint(Qt::SizeHint /*sizeHint*/, const QSizeF& /*size*/) const { - qDebug() << Q_FUNC_INFO << sizeHint << size << layoutRect() << contentsRect(); -// return size; return {57, 57}; } diff --git a/examples/iot-dashboard/RoundedIcon.cpp b/examples/iot-dashboard/RoundedIcon.cpp new file mode 100644 index 00000000..fafc0108 --- /dev/null +++ b/examples/iot-dashboard/RoundedIcon.cpp @@ -0,0 +1,29 @@ +#include "RoundedIcon.h" + +#include +#include +#include + +#include + +RoundedIcon::RoundedIcon(const QString& iconName, const QskGradient& gradient, QQuickItem* parent) + : QskBox(parent) + , m_iconName(iconName) + , m_gradient(gradient) +{ + setPanel(true); + setPolishOnResize( true ); + setGradientHint(Panel, gradient); + setBoxShapeHint(Panel, 6 ); + + QString fileName = ":/images/" + iconName + ".png"; + QImage image( fileName ); + auto graphic = QskGraphic::fromImage( image ); + m_graphicLabel = new QskGraphicLabel( graphic, this ); +} + +void RoundedIcon::updateLayout() +{ + m_graphicLabel->setSize( {36, 36}); + m_graphicLabel->setPosition( { ( width() - m_graphicLabel->width() ) / 2, ( height() - m_graphicLabel->height() ) / 2 } ); +} diff --git a/examples/iot-dashboard/RoundedIcon.h b/examples/iot-dashboard/RoundedIcon.h new file mode 100644 index 00000000..7e37eb0b --- /dev/null +++ b/examples/iot-dashboard/RoundedIcon.h @@ -0,0 +1,25 @@ +#ifndef ROUNDEDICON_H +#define ROUNDEDICON_H + +#include +#include + +class QskGraphicLabel; + +class RoundedIcon : public QskBox +{ + Q_OBJECT + +public: + RoundedIcon(const QString& iconName, const QskGradient& gradient, QQuickItem *parent = nullptr); + +protected: + void updateLayout() override; + +private: + QString m_iconName; + QskGradient m_gradient; + QskGraphicLabel* m_graphicLabel; +}; + +#endif // ROUNDEDICON_H diff --git a/examples/iot-dashboard/Usage.cpp b/examples/iot-dashboard/Usage.cpp index c4617ea9..f9413af5 100644 --- a/examples/iot-dashboard/Usage.cpp +++ b/examples/iot-dashboard/Usage.cpp @@ -7,6 +7,7 @@ Usage::Usage(QQuickItem *parent) : QskLinearBox(Qt::Vertical, parent) { setMargins(17); + auto* title = new QskTextLabel("Usage", this); title->setFontRole(DaytimeSkin::TitleFont); diff --git a/examples/iot-dashboard/images.qrc b/examples/iot-dashboard/images.qrc index 7543c5e6..b0f697a4 100644 --- a/examples/iot-dashboard/images.qrc +++ b/examples/iot-dashboard/images.qrc @@ -8,5 +8,8 @@ images/storage.png images/members.png images/logout.png + images/indoor-temperature.png + images/up.png + images/down.png diff --git a/examples/iot-dashboard/images/down.png b/examples/iot-dashboard/images/down.png new file mode 100644 index 00000000..8c321ad1 Binary files /dev/null and b/examples/iot-dashboard/images/down.png differ diff --git a/examples/iot-dashboard/images/down.svg b/examples/iot-dashboard/images/down.svg new file mode 100644 index 00000000..79693610 --- /dev/null +++ b/examples/iot-dashboard/images/down.svg @@ -0,0 +1,3 @@ + + + diff --git a/examples/iot-dashboard/images/indoor-temperature.png b/examples/iot-dashboard/images/indoor-temperature.png new file mode 100644 index 00000000..1823aade Binary files /dev/null and b/examples/iot-dashboard/images/indoor-temperature.png differ diff --git a/examples/iot-dashboard/images/indoor-temperature.svg b/examples/iot-dashboard/images/indoor-temperature.svg new file mode 100644 index 00000000..cbad53ff --- /dev/null +++ b/examples/iot-dashboard/images/indoor-temperature.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/examples/iot-dashboard/images/up.png b/examples/iot-dashboard/images/up.png new file mode 100644 index 00000000..aff671ba Binary files /dev/null and b/examples/iot-dashboard/images/up.png differ diff --git a/examples/iot-dashboard/images/up.svg b/examples/iot-dashboard/images/up.svg new file mode 100644 index 00000000..999b2bfb --- /dev/null +++ b/examples/iot-dashboard/images/up.svg @@ -0,0 +1,3 @@ + + + diff --git a/examples/iot-dashboard/iot-dashboard.pro b/examples/iot-dashboard/iot-dashboard.pro index b4c040c2..b1273538 100644 --- a/examples/iot-dashboard/iot-dashboard.pro +++ b/examples/iot-dashboard/iot-dashboard.pro @@ -4,11 +4,13 @@ SOURCES += \ Card.cpp \ CircularProgressBar.cpp \ DaytimeSkin.cpp \ + IndoorTemperature.cpp \ MainContent.cpp \ MenuBar.cpp \ PieChart.cpp \ PieChartPainted.cpp \ PieChartSkinlet.cpp \ + RoundedIcon.cpp \ TopBar.cpp \ Usage.cpp \ main.cpp \ @@ -18,12 +20,14 @@ HEADERS += \ Card.h \ CircularProgressBar.h \ DaytimeSkin.h \ + IndoorTemperature.h \ MainContent.h \ MainWindow.h \ MenuBar.h \ PieChart.h \ PieChartPainted.h \ PieChartSkinlet.h \ + RoundedIcon.h \ TopBar.h \ Usage.h