Add skin factories etc.

This commit is contained in:
Peter Hartmann 2020-05-22 15:46:17 +02:00
parent 0e8b31ab2f
commit fd668c23e6
6 changed files with 83 additions and 2 deletions

View File

@ -0,0 +1,20 @@
#include "DaytimeSkin.h"
#include "PieChart.h"
#include "PieChartSkinlet.h"
#include <QskBoxBorderMetrics.h>
#include <QskBoxBorderColors.h>
DaytimeSkin::DaytimeSkin( QObject* parent ) : QskSkin( parent )
{
declareSkinlet< PieChart, PieChartSkinlet >();
initHints();
}
void DaytimeSkin::initHints()
{
setBoxBorderMetrics( PieChart::Panel, 2 );
setGradient( PieChart::Panel, Qt::blue );
setBoxBorderColors( PieChart::Panel, Qt::green );
}

View File

@ -0,0 +1,16 @@
#ifndef DAYTIMESKIN_H
#define DAYTIMESKIN_H
#include <QskSkin.h>
class DaytimeSkin : public QskSkin
{
public:
DaytimeSkin( QObject* parent = nullptr );
private:
void initHints();
};
#endif // DAYTIMESKIN_H

View File

@ -7,7 +7,7 @@
MainWindow::MainWindow() : QskWindow() MainWindow::MainWindow() : QskWindow()
{ {
setFixedSize( { 1024, 600 } ); setPreferredSize( { 1024, 600 } );
setTitle( "IOT dashboard" ); setTitle( "IOT dashboard" );
m_mainLayout = new QskLinearBox( Qt::Horizontal, contentItem() ); m_mainLayout = new QskLinearBox( Qt::Horizontal, contentItem() );

View File

@ -45,6 +45,7 @@ QSGNode* PieChartSkinlet::updatePanelNode( const PieChart* pieChart, QSGNode* no
const auto panelRect = subControlRect( pieChart, pieChart->contentsRect(), PieChart::Panel ); const auto panelRect = subControlRect( pieChart, pieChart->contentsRect(), PieChart::Panel );
const qreal radius = panelRect.width() / 2; const qreal radius = panelRect.width() / 2;
qDebug() << "radius:" << radius << panelRect;
QskBoxShapeMetrics shapeMetrics( radius, radius, radius, radius ); QskBoxShapeMetrics shapeMetrics( radius, radius, radius, radius );
QskBoxBorderMetrics borderMetrics = pieChart->boxBorderMetricsHint( PieChart::Panel ); QskBoxBorderMetrics borderMetrics = pieChart->boxBorderMetricsHint( PieChart::Panel );

View File

@ -2,6 +2,7 @@ CONFIG += qskexample
SOURCES += \ SOURCES += \
Card.cpp \ Card.cpp \
DaytimeSkin.cpp \
MainContent.cpp \ MainContent.cpp \
MenuBar.cpp \ MenuBar.cpp \
PieChart.cpp \ PieChart.cpp \
@ -11,6 +12,7 @@ SOURCES += \
HEADERS += \ HEADERS += \
Card.h \ Card.h \
DaytimeSkin.h \
MainContent.h \ MainContent.h \
MainWindow.h \ MainWindow.h \
MenuBar.h \ MenuBar.h \

View File

@ -1,27 +1,67 @@
#include "MainWindow.h" #include "MainWindow.h"
#include "DaytimeSkin.h"
#include <SkinnyFont.h> #include <SkinnyFont.h>
#include <SkinnyShortcut.h> #include <SkinnyShortcut.h>
#include <QskLinearBox.h> #include <QskLinearBox.h>
#include <QskShortcutMap.h>
#include <QskPushButton.h> #include <QskPushButton.h>
#include <QskSetup.h>
#include <QskShortcutMap.h>
#include <QskSkinFactory.h>
#include <QskSkinManager.h>
#include <QskWindow.h> #include <QskWindow.h>
#include <QGuiApplication> #include <QGuiApplication>
namespace {
class SkinFactory : public QskSkinFactory
{
Q_OBJECT
public:
SkinFactory( QObject* parent = nullptr ) : QskSkinFactory( parent )
{
}
QStringList skinNames() const override
{
return { "DaytimeSkin" };
}
QskSkin* createSkin( const QString& skinName ) override
{
if( skinName == "DaytimeSkin" )
{
return new DaytimeSkin;
}
return nullptr;
}
};
}
int main( int argc, char* argv[] ) int main( int argc, char* argv[] )
{ {
QGuiApplication app( argc, argv ); QGuiApplication app( argc, argv );
SkinnyFont::init( &app ); SkinnyFont::init( &app );
SkinFactory skinFactory;
qskSkinManager->setPluginPaths( QStringList() ); // no plugins
qskSkinManager->registerFactory(
QStringLiteral( "SampleSkinFactory" ), &skinFactory );
// QskShortcutMap::addShortcut( QKeySequence( Qt::CTRL + Qt::Key_T ), // QskShortcutMap::addShortcut( QKeySequence( Qt::CTRL + Qt::Key_T ),
// false, skinFactory, SLOT(toggleScheme()) ); // false, skinFactory, SLOT(toggleScheme()) );
// QskShortcutMap::addShortcut( QKeySequence( Qt::CTRL + Qt::Key_S ), // QskShortcutMap::addShortcut( QKeySequence( Qt::CTRL + Qt::Key_S ),
// false, skinFactory, SLOT(rotateSkin()) ); // false, skinFactory, SLOT(rotateSkin()) );
qskSetup->setSkin( "DaytimeSkin" );
// With CTRL-B you can rotate a couple of visual debug modes // With CTRL-B you can rotate a couple of visual debug modes
SkinnyShortcut::enable( SkinnyShortcut::DebugBackground | SkinnyShortcut::enable( SkinnyShortcut::DebugBackground |
SkinnyShortcut::DebugStatistics | SkinnyShortcut::Quit ); SkinnyShortcut::DebugStatistics | SkinnyShortcut::Quit );
@ -31,3 +71,5 @@ int main( int argc, char* argv[] )
return app.exec(); return app.exec();
} }
#include "main.moc"