76 lines
2.9 KiB
C++
76 lines
2.9 KiB
C++
#include "TopBar.h"
|
|
#include "PieChartPainted.h"
|
|
|
|
#include <QskSkin.h>
|
|
#include <QskTextLabel.h>
|
|
|
|
#include <QTime>
|
|
|
|
QSK_SUBCONTROL( TopBar, Panel )
|
|
|
|
TopBarItem::TopBarItem( const QString& name, const QColor& textColor, const QGradient& gradient, int progress, int value, QQuickItem* parent ) : QskLinearBox( Qt::Vertical, parent ),
|
|
m_name( name )
|
|
{
|
|
setAutoLayoutChildren( true );
|
|
setAutoAddChildren( true );
|
|
setSpacing( 15 );
|
|
|
|
auto* textLabel = new QskTextLabel( name, this );
|
|
textLabel->setFontRole( QskSkin::SmallFont ); // ### style
|
|
|
|
auto* pieChartAndDisplay = new QskLinearBox( Qt::Horizontal, this );
|
|
pieChartAndDisplay->setSpacing( 10 );
|
|
/*auto* pieChart =*/ new PieChartPainted( textColor, gradient, progress, value, pieChartAndDisplay );
|
|
auto* display = new QskLinearBox( Qt::Vertical, pieChartAndDisplay );
|
|
display->setSpacing( 0 );
|
|
display->addSpacer( 0, 1 );
|
|
auto* displayValue = new QskTextLabel( QString::number( value ), display );
|
|
displayValue->setFontRole( QskSkin::MediumFont );
|
|
auto* displayUnit = new QskTextLabel( "kwH", display );
|
|
displayUnit->setFontRole( QskSkin::SmallFont );
|
|
display->addSpacer( 0, 1 );
|
|
|
|
}
|
|
|
|
TopBar::TopBar( QQuickItem* parent ) : QskLinearBox( Qt::Horizontal, parent )
|
|
{
|
|
setPanel( true );
|
|
setAutoLayoutChildren( true );
|
|
setAutoAddChildren( true );
|
|
setSizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Fixed );
|
|
|
|
QStringList itemStrings = { "Living Room", "Bedroom", "Bathroom", "Kitchen" };
|
|
QColor textColors[] = {"#ff3122", "#6776ff", "#f99055", "#6776ff"};
|
|
QColor gradientColors[] = {"#FF5C00", "#FF3122",
|
|
"#6776FF", "#6100FF",
|
|
"#FFCE50", "#FF3122",
|
|
// "#00ff00", "#ffffff", // ### remove
|
|
"#6776FF", "#6100FF"
|
|
};
|
|
|
|
int progressValues[] = {25, 45, 15, 86};
|
|
int values[] = {175, 205, 115, 289};
|
|
|
|
for( int a = 0; a < itemStrings.count(); a++ )
|
|
{
|
|
QLinearGradient gradient( 0, 0, 30, 0 ); // ### do this properly and dependent on the size
|
|
QGradientStop stop1( 0.0, gradientColors[2 * a] );
|
|
QGradientStop stop2( 1.0, gradientColors[2 * a + 1] );
|
|
gradient.setStops( {stop1, stop2} );
|
|
|
|
auto* item = new TopBarItem( itemStrings.at( a ), textColors[a], gradient, progressValues[a], values[a], this );
|
|
m_entries.append( item );
|
|
}
|
|
|
|
auto* timeControl = new QskLinearBox( Qt::Vertical, this );
|
|
timeControl->setMargins( {0, 0, 50, 0} );
|
|
auto* timeTitle = new QskTextLabel( "Current time", timeControl ); // ### make bold or so
|
|
timeTitle->setFontRole( QskSkin::TinyFont );
|
|
|
|
auto now = QTime::currentTime();
|
|
auto timeString = now.toString();
|
|
auto* timeDisplay = new QskTextLabel( timeString, timeControl );
|
|
timeDisplay->setFontRole( QskSkin::HugeFont );
|
|
timeDisplay->setTextColor( "#6776FF" );
|
|
}
|