changes from master
This commit is contained in:
parent
2bfb68c7de
commit
1430210424
1851
.uncrustify
1851
.uncrustify
File diff suppressed because it is too large
Load Diff
|
|
@ -28,6 +28,7 @@ But so far only Linux is actively tested.
|
||||||
It might support all versions Qt >= 5.6, but you can rely on:
|
It might support all versions Qt >= 5.6, but you can rely on:
|
||||||
|
|
||||||
- Qt 5.6
|
- Qt 5.6
|
||||||
|
- Qt 5.15
|
||||||
- current long term supported ( LTS ) version of Qt
|
- current long term supported ( LTS ) version of Qt
|
||||||
- current version of Qt
|
- current version of Qt
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace
|
||||||
|
|
||||||
connect( this, &QskTabView::currentIndexChanged,
|
connect( this, &QskTabView::currentIndexChanged,
|
||||||
this, &TabView::updateViewPanel );
|
this, &TabView::updateViewPanel );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void aboutToShow() override
|
void aboutToShow() override
|
||||||
|
|
@ -48,7 +48,7 @@ namespace
|
||||||
We should have a better way to set individual colors
|
We should have a better way to set individual colors
|
||||||
for each tab page background
|
for each tab page background
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( auto page = dynamic_cast< const ::Page* >( currentItem() ) )
|
if ( auto page = dynamic_cast< const ::Page* >( currentItem() ) )
|
||||||
setGradientHint( QskTabView::Page, page->gradient() );
|
setGradientHint( QskTabView::Page, page->gradient() );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -165,14 +165,15 @@ bool LightDisplay::arcContainsPoint( const QRectF& rect, const QPointF& point )
|
||||||
const int tolerance = 20;
|
const int tolerance = 20;
|
||||||
|
|
||||||
// 1. check angle
|
// 1. check angle
|
||||||
QPointF circlePos( point.x() - rect.center().x(),
|
QPointF circlePos(
|
||||||
rect.center().y() - point.y() );
|
point.x() - rect.center().x(),
|
||||||
|
rect.center().y() - point.y() );
|
||||||
|
|
||||||
const qreal angle = angleFromPoint( rect, point );
|
const qreal angle = angleFromPoint( rect, point );
|
||||||
|
|
||||||
const bool angleWithinRange = angleInRange( metrics, angle )
|
const bool angleWithinRange = angleInRange( metrics, angle )
|
||||||
|| angleDiff( angle, metrics.startAngle() ) <= tolerance
|
|| angleDiff( angle, metrics.startAngle() ) <= tolerance
|
||||||
|| angleDiff( angle, metrics.endAngle() ) <= tolerance;
|
|| angleDiff( angle, metrics.endAngle() ) <= tolerance;
|
||||||
|
|
||||||
// 2. check whether point is on arc
|
// 2. check whether point is on arc
|
||||||
const qreal radiusMax = rect.width() / 2;
|
const qreal radiusMax = rect.width() / 2;
|
||||||
|
|
@ -181,7 +182,7 @@ bool LightDisplay::arcContainsPoint( const QRectF& rect, const QPointF& point )
|
||||||
|
|
||||||
const qreal polarRadius = qSqrt( qPow( circlePos.x(), 2 ) + qPow( circlePos.y(), 2 ) );
|
const qreal polarRadius = qSqrt( qPow( circlePos.x(), 2 ) + qPow( circlePos.y(), 2 ) );
|
||||||
const bool pointOnArc = ( polarRadius + tolerance ) > radiusMin
|
const bool pointOnArc = ( polarRadius + tolerance ) > radiusMin
|
||||||
&& ( polarRadius - tolerance ) < radiusMax;
|
&& ( polarRadius - tolerance ) < radiusMax;
|
||||||
|
|
||||||
bool ret = angleWithinRange && pointOnArc;
|
bool ret = angleWithinRange && pointOnArc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include <QskArcMetrics.h>
|
#include <QskArcMetrics.h>
|
||||||
#include <QskTextOptions.h>
|
#include <QskTextOptions.h>
|
||||||
|
#include <QskScaleTickmarks.h>
|
||||||
|
|
||||||
#include <QFontMetrics>
|
#include <QFontMetrics>
|
||||||
#include <QtMath>
|
#include <QtMath>
|
||||||
|
|
@ -33,15 +34,15 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
QRectF rect = contentsRect;
|
QRectF rect = contentsRect;
|
||||||
const qreal ticksSpacing = 4; // space between the ticks and the arc
|
const qreal ticksSpacing = 4; // space between the ticks and the arc
|
||||||
|
|
||||||
if( subControl == LightDisplay::Groove
|
if( subControl == LightDisplay::Groove || subControl == LightDisplay::Panel )
|
||||||
|| subControl == LightDisplay::Panel )
|
|
||||||
{
|
{
|
||||||
QSizeF textSize = textLabelsSize( display );
|
QSizeF textSize = textLabelsSize( display );
|
||||||
QskArcMetrics arcMetrics = display->arcMetricsHint( LightDisplay::ColdAndWarmArc );
|
QskArcMetrics arcMetrics = display->arcMetricsHint( LightDisplay::ColdAndWarmArc );
|
||||||
const qreal ticksWidth = display->arcMetricsHint( LightDisplay::Tickmarks ).width() + ticksSpacing;
|
const qreal ticksWidth = display->arcMetricsHint( LightDisplay::Tickmarks ).width() + ticksSpacing;
|
||||||
|
|
||||||
const qreal x = textSize.width() + arcMetrics.width() + ticksWidth;
|
const qreal x = textSize.width() + arcMetrics.width() + ticksWidth;
|
||||||
const qreal w = contentsRect.width() - ( 2 * ( textSize.width() + arcMetrics.width() + ticksWidth ) );
|
const qreal w = contentsRect.width() -
|
||||||
|
( 2 * ( textSize.width() + arcMetrics.width() + ticksWidth ) );
|
||||||
const qreal y = arcMetrics.width() + ticksWidth;
|
const qreal y = arcMetrics.width() + ticksWidth;
|
||||||
const qreal h = contentsRect.height() - 2 * ( arcMetrics.width() + ticksWidth );
|
const qreal h = contentsRect.height() - 2 * ( arcMetrics.width() + ticksWidth );
|
||||||
|
|
||||||
|
|
@ -52,24 +53,24 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
}
|
}
|
||||||
else if( subControl == LightDisplay::ColdAndWarmArc )
|
else if( subControl == LightDisplay::ColdAndWarmArc )
|
||||||
{
|
{
|
||||||
const QRectF panelRect = subControlRect( skinnable, contentsRect,
|
const QRectF panelRect = subControlRect( skinnable, contentsRect, LightDisplay::Panel );
|
||||||
LightDisplay::Panel );
|
|
||||||
auto barWidth = display->arcMetricsHint( LightDisplay::ColdAndWarmArc ).width();
|
auto barWidth = display->arcMetricsHint( LightDisplay::ColdAndWarmArc ).width();
|
||||||
auto rect = panelRect.marginsAdded( { barWidth, barWidth, barWidth, barWidth } );
|
auto rect = panelRect.marginsAdded( { barWidth, barWidth, barWidth, barWidth } );
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
else if( subControl == LightDisplay::Tickmarks )
|
else if( subControl == LightDisplay::Tickmarks )
|
||||||
{
|
{
|
||||||
const QRectF arcRect = subControlRect( skinnable, contentsRect,
|
const QRectF arcRect = subControlRect(
|
||||||
LightDisplay::ColdAndWarmArc );
|
skinnable, contentsRect, LightDisplay::ColdAndWarmArc );
|
||||||
const qreal ticksWidth = display->arcMetricsHint( LightDisplay::Tickmarks ).width() + ticksSpacing;
|
const qreal ticksWidth = display->arcMetricsHint(
|
||||||
const QRectF rect = arcRect.marginsAdded( { ticksWidth, ticksWidth, ticksWidth, ticksWidth } );
|
LightDisplay::Tickmarks ).width() + ticksSpacing;
|
||||||
|
const QRectF rect =
|
||||||
|
arcRect.marginsAdded( { ticksWidth, ticksWidth, ticksWidth, ticksWidth } );
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
else if( subControl == LightDisplay::ValueText )
|
else if( subControl == LightDisplay::ValueText )
|
||||||
{
|
{
|
||||||
QRectF valueTextRect = subControlRect( skinnable, contentsRect,
|
QRectF valueTextRect = subControlRect( skinnable, contentsRect, LightDisplay::Panel );
|
||||||
LightDisplay::Panel );
|
|
||||||
const QFontMetricsF fm( skinnable->effectiveFont( subControl ) );
|
const QFontMetricsF fm( skinnable->effectiveFont( subControl ) );
|
||||||
const qreal fontWidth = fm.width( QStringLiteral( "100 %" ) );
|
const qreal fontWidth = fm.width( QStringLiteral( "100 %" ) );
|
||||||
const QPointF center = valueTextRect.center();
|
const QPointF center = valueTextRect.center();
|
||||||
|
|
@ -125,8 +126,7 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
QSGNode* LightDisplaySkinlet::updateSubNode(
|
QSGNode* LightDisplaySkinlet::updateSubNode(
|
||||||
const QskSkinnable* skinnable, quint8 nodeRole, QSGNode* node ) const
|
const QskSkinnable* skinnable, quint8 nodeRole, QSGNode* node ) const
|
||||||
{
|
{
|
||||||
auto* display = static_cast< const LightDisplay* >( skinnable );
|
const auto* display = static_cast< const LightDisplay* >( skinnable );
|
||||||
|
|
||||||
|
|
||||||
switch( nodeRole )
|
switch( nodeRole )
|
||||||
{
|
{
|
||||||
|
|
@ -166,16 +166,16 @@ QSGNode* LightDisplaySkinlet::updateSubNode(
|
||||||
if ( ticksNode == nullptr )
|
if ( ticksNode == nullptr )
|
||||||
ticksNode = new RadialTickmarksNode();
|
ticksNode = new RadialTickmarksNode();
|
||||||
|
|
||||||
QColor color = display->color( LightDisplay::Tickmarks );
|
const auto color = display->color( LightDisplay::Tickmarks );
|
||||||
QRectF ticksRect = display->subControlRect( LightDisplay::Tickmarks );
|
const auto ticksRect = display->subControlRect( LightDisplay::Tickmarks );
|
||||||
QskArcMetrics arcMetrics = display->arcMetricsHint( LightDisplay::Tickmarks );
|
const auto arcMetrics = display->arcMetricsHint( LightDisplay::Tickmarks );
|
||||||
QskIntervalF boundaries = display->boundaries();
|
|
||||||
QskScaleTickmarks tickmarks;
|
|
||||||
tickmarks.setMajorTicks( {0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180 } );
|
|
||||||
int tickLineWidth = display->metric( LightDisplay::Tickmarks );
|
|
||||||
|
|
||||||
ticksNode->update( color, ticksRect, arcMetrics, boundaries,
|
QskScaleTickmarks tickmarks;
|
||||||
tickmarks, tickLineWidth, Qt::Horizontal );
|
tickmarks.setMajorTicks( { 0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180 } );
|
||||||
|
|
||||||
|
const auto tickLineWidth = display->metric( LightDisplay::Tickmarks );
|
||||||
|
|
||||||
|
ticksNode->update( color, ticksRect, arcMetrics, tickmarks, tickLineWidth );
|
||||||
|
|
||||||
return ticksNode;
|
return ticksNode;
|
||||||
}
|
}
|
||||||
|
|
@ -207,11 +207,11 @@ QSGNode* LightDisplaySkinlet::updateSubNode(
|
||||||
|
|
||||||
QSizeF LightDisplaySkinlet::textLabelsSize( const LightDisplay* display ) const
|
QSizeF LightDisplaySkinlet::textLabelsSize( const LightDisplay* display ) const
|
||||||
{
|
{
|
||||||
QFont font = display->effectiveFont( LightDisplay::LeftLabel );
|
const QFontMetricsF fm( display->effectiveFont( LightDisplay::LeftLabel ) );
|
||||||
QFontMetricsF fm( font );
|
|
||||||
|
|
||||||
qreal w = fm.width( QStringLiteral( " 100" ) );
|
qreal w = fm.width( QStringLiteral( " 100" ) );
|
||||||
qreal h = fm.height();
|
qreal h = fm.height();
|
||||||
|
|
||||||
return { w, h };
|
return { w, h };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ MenuBar::MenuBar( QQuickItem* parent )
|
||||||
|
|
||||||
m_entryStrings = { "Dashboard", "Rooms", "Devices", "Statistics", "Storage", "Members" };
|
m_entryStrings = { "Dashboard", "Rooms", "Devices", "Statistics", "Storage", "Members" };
|
||||||
|
|
||||||
for( const auto& entryString : qskAsConst( m_entryStrings ) )
|
for( const auto& entryString : qAsConst( m_entryStrings ) )
|
||||||
{
|
{
|
||||||
auto* entry = new MenuItem( entryString, this );
|
auto* entry = new MenuItem( entryString, this );
|
||||||
m_entries.append( entry );
|
m_entries.append( entry );
|
||||||
|
|
|
||||||
|
|
@ -125,7 +125,7 @@ QColor ShadowedBox::shadowColor() const
|
||||||
return m_shadowColor;
|
return m_shadowColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF ShadowedBox::layoutRectForSize( const QSizeF &size ) const
|
QRectF ShadowedBox::layoutRectForSize( const QSizeF& size ) const
|
||||||
{
|
{
|
||||||
auto padding = paddingHint( Panel );
|
auto padding = paddingHint( Panel );
|
||||||
return { padding.left() / 2, padding.top() / 2,
|
return { padding.left() / 2, padding.top() / 2,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
CONFIG += qskexample
|
CONFIG += qskexample
|
||||||
|
|
||||||
QT += svg
|
QT += svg
|
||||||
|
QT += quick_private # TODO: examples should not use private headers
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
Box.cpp \
|
Box.cpp \
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,9 @@ namespace
|
||||||
|
|
||||||
int compare( const QSGMaterial* other ) const override;
|
int compare( const QSGMaterial* other ) const override;
|
||||||
|
|
||||||
QVector2D aspect = QVector2D{1.0, 1.0};
|
QVector2D aspect = QVector2D{ 1.0, 1.0 };
|
||||||
float blurExtent = 0.0;
|
float blurExtent = 0.0;
|
||||||
QVector4D radius = QVector4D{0.0, 0.0, 0.0, 0.0};
|
QVector4D radius = QVector4D{ 0.0, 0.0, 0.0, 0.0 };
|
||||||
QColor color = Qt::black;
|
QColor color = Qt::black;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,82 +5,48 @@
|
||||||
|
|
||||||
#include "RadialTickmarksNode.h"
|
#include "RadialTickmarksNode.h"
|
||||||
|
|
||||||
#include <QSGFlatColorMaterial>
|
#include <QskScaleTickmarks.h>
|
||||||
|
#include <QskArcMetrics.h>
|
||||||
#include <QtMath>
|
#include <QtMath>
|
||||||
|
|
||||||
QSK_QT_PRIVATE_BEGIN
|
|
||||||
#include <private/qsgnode_p.h>
|
|
||||||
QSK_QT_PRIVATE_END
|
|
||||||
|
|
||||||
static constexpr inline qreal qskTickFactor( QskScaleTickmarks::TickType type )
|
|
||||||
{
|
|
||||||
using TM = QskScaleTickmarks;
|
|
||||||
return type == TM::MinorTick ? 0.7 : ( type == TM::MinorTick ? 0.85 : 1.0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
class RadialTickmarksNodePrivate final : public QSGGeometryNodePrivate
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RadialTickmarksNodePrivate()
|
|
||||||
: geometry( QSGGeometry::defaultAttributes_Point2D(), 0 )
|
|
||||||
{
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 5, 8, 0 )
|
|
||||||
geometry.setDrawingMode( QSGGeometry::DrawLines );
|
|
||||||
#else
|
|
||||||
geometry.setDrawingMode( GL_LINES );
|
|
||||||
#endif
|
|
||||||
geometry.setVertexDataPattern( QSGGeometry::StaticPattern );
|
|
||||||
}
|
|
||||||
|
|
||||||
QSGGeometry geometry;
|
|
||||||
QSGFlatColorMaterial material;
|
|
||||||
|
|
||||||
QskIntervalF boundaries;
|
|
||||||
QskScaleTickmarks tickmarks;
|
|
||||||
|
|
||||||
QRectF rect;
|
|
||||||
int lineWidth = 0;
|
|
||||||
|
|
||||||
uint hash = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
RadialTickmarksNode::RadialTickmarksNode()
|
RadialTickmarksNode::RadialTickmarksNode()
|
||||||
: QSGGeometryNode( *new RadialTickmarksNodePrivate )
|
: m_geometry( QSGGeometry::defaultAttributes_Point2D(), 0 )
|
||||||
{
|
{
|
||||||
Q_D( RadialTickmarksNode );
|
#if QT_VERSION >= QT_VERSION_CHECK( 5, 8, 0 )
|
||||||
|
m_geometry.setDrawingMode( QSGGeometry::DrawLines );
|
||||||
|
#else
|
||||||
|
m_geometry.setDrawingMode( GL_LINES );
|
||||||
|
#endif
|
||||||
|
m_geometry.setVertexDataPattern( QSGGeometry::StaticPattern );
|
||||||
|
|
||||||
setGeometry( &d->geometry );
|
setGeometry( &m_geometry );
|
||||||
setMaterial( &d->material );
|
setMaterial( &m_material );
|
||||||
}
|
}
|
||||||
|
|
||||||
RadialTickmarksNode::~RadialTickmarksNode()
|
RadialTickmarksNode::~RadialTickmarksNode()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadialTickmarksNode::update(const QColor& color, const QRectF& rect,
|
void RadialTickmarksNode::update( const QColor& color, const QRectF& rect,
|
||||||
const QskArcMetrics& arcMetrics, const QskIntervalF& /*boundaries*/,
|
const QskArcMetrics& arcMetrics, const QskScaleTickmarks& tickmarks, int lineWidth )
|
||||||
const QskScaleTickmarks& tickmarks, int lineWidth,
|
|
||||||
Qt::Orientation /*orientation*/ )
|
|
||||||
{
|
{
|
||||||
Q_D( RadialTickmarksNode );
|
if( lineWidth != m_lineWidth )
|
||||||
|
|
||||||
if( lineWidth != d->lineWidth )
|
|
||||||
{
|
{
|
||||||
d->lineWidth = lineWidth;
|
m_lineWidth = lineWidth;
|
||||||
d->geometry.setLineWidth( lineWidth );
|
m_geometry.setLineWidth( lineWidth );
|
||||||
|
|
||||||
markDirty( QSGNode::DirtyGeometry );
|
markDirty( QSGNode::DirtyGeometry );
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint hash = tickmarks.hash( 17435 );
|
const auto hash = tickmarks.hash( 17435 );
|
||||||
|
|
||||||
if( ( hash != d->hash ) || ( rect != d->rect ) )
|
if( ( hash != m_hash ) || ( rect != m_rect ) )
|
||||||
{
|
{
|
||||||
d->hash = hash;
|
m_hash = hash;
|
||||||
d->rect = rect;
|
m_rect = rect;
|
||||||
|
|
||||||
d->geometry.allocate( tickmarks.tickCount() * 2 );
|
m_geometry.allocate( tickmarks.tickCount() * 2 );
|
||||||
auto vertexData = d->geometry.vertexDataAsPoint2D();
|
auto vertexData = m_geometry.vertexDataAsPoint2D();
|
||||||
|
|
||||||
const auto center = rect.center();
|
const auto center = rect.center();
|
||||||
const auto radius = 0.5 * rect.width();
|
const auto radius = 0.5 * rect.width();
|
||||||
|
|
@ -117,13 +83,13 @@ void RadialTickmarksNode::update(const QColor& color, const QRectF& rect,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
d->geometry.markVertexDataDirty();
|
m_geometry.markVertexDataDirty();
|
||||||
markDirty( QSGNode::DirtyGeometry );
|
markDirty( QSGNode::DirtyGeometry );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( color != d->material.color() )
|
if ( color != m_material.color() )
|
||||||
{
|
{
|
||||||
d->material.setColor( color );
|
m_material.setColor( color );
|
||||||
markDirty( QSGNode::DirtyMaterial );
|
markDirty( QSGNode::DirtyMaterial );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QskArcMetrics.h>
|
|
||||||
#include <QskIntervalF.h>
|
#include <QskIntervalF.h>
|
||||||
#include <QskScaleTickmarks.h>
|
|
||||||
|
|
||||||
#include <QSGGeometryNode>
|
#include <QSGGeometryNode>
|
||||||
|
#include <QSGFlatColorMaterial>
|
||||||
|
|
||||||
class RadialTickmarksNodePrivate;
|
class QskArcMetrics;
|
||||||
|
class QskScaleTickmarks;
|
||||||
|
|
||||||
class RadialTickmarksNode : public QSGGeometryNode
|
class RadialTickmarksNode : public QSGGeometryNode
|
||||||
{
|
{
|
||||||
|
|
@ -19,9 +19,15 @@ class RadialTickmarksNode : public QSGGeometryNode
|
||||||
RadialTickmarksNode();
|
RadialTickmarksNode();
|
||||||
~RadialTickmarksNode() override;
|
~RadialTickmarksNode() override;
|
||||||
|
|
||||||
void update( const QColor&, const QRectF&, const QskArcMetrics&,
|
void update( const QColor&, const QRectF&,
|
||||||
const QskIntervalF&, const QskScaleTickmarks&, int, Qt::Orientation );
|
const QskArcMetrics&, const QskScaleTickmarks&, int lineWidth );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DECLARE_PRIVATE( RadialTickmarksNode )
|
QSGGeometry m_geometry;
|
||||||
|
QSGFlatColorMaterial m_material;
|
||||||
|
|
||||||
|
QRectF m_rect;
|
||||||
|
int m_lineWidth = 0;
|
||||||
|
|
||||||
|
QskHashValue m_hash = 0;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,14 @@ class ListBox : public QskSimpleListBox
|
||||||
private:
|
private:
|
||||||
void populate()
|
void populate()
|
||||||
{
|
{
|
||||||
|
const int count = 10000;
|
||||||
|
|
||||||
const QString format( "Row %1: The quick brown fox jumps over the lazy dog" );
|
const QString format( "Row %1: The quick brown fox jumps over the lazy dog" );
|
||||||
|
|
||||||
QStringList entries;
|
QStringList entries;
|
||||||
for ( int i = 0; i < 10000; i++ )
|
entries.reserve( count );
|
||||||
|
|
||||||
|
for ( int i = 0; i < count; i++ )
|
||||||
{
|
{
|
||||||
entries += format.arg( i + 1 );
|
entries += format.arg( i + 1 );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
#include <QskBox.h>
|
#include <QskBox.h>
|
||||||
#include <QskLinearBox.h>
|
#include <QskLinearBox.h>
|
||||||
#include <QskSkinManager.h>
|
#include <QskSkinManager.h>
|
||||||
|
#include <QskAnimationHint.h>
|
||||||
#include <QskSkinTransition.h>
|
#include <QskSkinTransition.h>
|
||||||
#include <QskSetup.h>
|
#include <QskSetup.h>
|
||||||
#include <QskSkin.h>
|
#include <QskSkin.h>
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ CONFIG += no_private_qt_headers_warning
|
||||||
CONFIG += warn_on
|
CONFIG += warn_on
|
||||||
CONFIG += no_keywords
|
CONFIG += no_keywords
|
||||||
CONFIG += silent
|
CONFIG += silent
|
||||||
CONFIG -= depend_includepath
|
#CONFIG -= depend_includepath
|
||||||
|
|
||||||
CONFIG += strict_c++
|
CONFIG += strict_c++
|
||||||
CONFIG += c++11
|
CONFIG += c++11
|
||||||
|
|
@ -64,16 +64,6 @@ RCC_DIR = rcc
|
||||||
|
|
||||||
QSK_CONFIG += QskDll
|
QSK_CONFIG += QskDll
|
||||||
|
|
||||||
*-g++* {
|
|
||||||
|
|
||||||
GCC_VERSION = $$system("$$QMAKE_CXX -dumpversion")
|
|
||||||
equals(GCC_VERSION,4) || contains(GCC_VERSION, 4.* ) {
|
|
||||||
|
|
||||||
# gcc4 is too old for certain checks
|
|
||||||
CONFIG -= pedantic sanitize
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
linux {
|
linux {
|
||||||
|
|
||||||
pedantic {
|
pedantic {
|
||||||
|
|
@ -83,16 +73,20 @@ linux {
|
||||||
# Qt headers do not stand pedantic checks, so it's better
|
# Qt headers do not stand pedantic checks, so it's better
|
||||||
# to exclude them by declaring them as system includes
|
# to exclude them by declaring them as system includes
|
||||||
|
|
||||||
|
CONFIG += qtassysteminclude
|
||||||
|
}
|
||||||
|
|
||||||
|
qtassysteminclude {
|
||||||
|
|
||||||
# As most distros set QT_INSTALL_HEADERS to /usr/include we
|
# As most distros set QT_INSTALL_HEADERS to /usr/include we
|
||||||
# would run into gcc compiler errors and better drop it
|
# would run into gcc compiler errors and better drop it
|
||||||
# from the list below. Should be no problem as we don't
|
# from the list below. Should be no problem as we don't
|
||||||
# add the Qt module to our includes and therefore don't
|
# add the Qt module to our includes and therefore don't
|
||||||
# need this path.
|
# need this path.
|
||||||
|
|
||||||
# QMAKE_CXXFLAGS += -isystem $$[QT_INSTALL_HEADERS]
|
|
||||||
|
|
||||||
QMAKE_CXXFLAGS += \
|
QMAKE_CXXFLAGS += \
|
||||||
-isystem $$[QT_INSTALL_HEADERS]/QtCore \
|
-isystem $$[QT_INSTALL_HEADERS]/QtCore \
|
||||||
|
-isystem $$[QT_INSTALL_HEADERS]/QtCore/$$[QT_VERSION]/QtCore \
|
||||||
-isystem $$[QT_INSTALL_HEADERS]/QtGui \
|
-isystem $$[QT_INSTALL_HEADERS]/QtGui \
|
||||||
-isystem $$[QT_INSTALL_HEADERS]/QtGui/$$[QT_VERSION]/QtGui \
|
-isystem $$[QT_INSTALL_HEADERS]/QtGui/$$[QT_VERSION]/QtGui \
|
||||||
-isystem $$[QT_INSTALL_HEADERS]/QtQuick \
|
-isystem $$[QT_INSTALL_HEADERS]/QtQuick \
|
||||||
|
|
@ -114,13 +108,6 @@ linux-g++ | linux-g++-64 {
|
||||||
|
|
||||||
# QMAKE_CXXFLAGS_RELEASE *= -Ofast
|
# QMAKE_CXXFLAGS_RELEASE *= -Ofast
|
||||||
# QMAKE_CXXFLAGS_RELEASE *= -Os
|
# QMAKE_CXXFLAGS_RELEASE *= -Os
|
||||||
|
|
||||||
# Some versions ( here 2.31.1 ) of the BFD linker may generate shared
|
|
||||||
# libraries with corrupt symbol version info which leads to
|
|
||||||
# "invalid version 21" errors when the corrupt shared library is used.
|
|
||||||
# One possible workaround is to use the gold linker instead.
|
|
||||||
|
|
||||||
# QMAKE_LFLAGS *= -Wl,-fuse-ld=gold
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pedantic {
|
pedantic {
|
||||||
|
|
@ -130,7 +117,7 @@ pedantic {
|
||||||
QMAKE_CXXFLAGS *= -pedantic-errors
|
QMAKE_CXXFLAGS *= -pedantic-errors
|
||||||
QMAKE_CXXFLAGS *= -Wextra
|
QMAKE_CXXFLAGS *= -Wextra
|
||||||
QMAKE_CXXFLAGS *= -Werror=format-security
|
QMAKE_CXXFLAGS *= -Werror=format-security
|
||||||
QMAKE_CXXFLAGS *= -Wlogical-op
|
#QMAKE_CXXFLAGS *= -Wlogical-op
|
||||||
|
|
||||||
# QMAKE_CXXFLAGS *= -Wconversion
|
# QMAKE_CXXFLAGS *= -Wconversion
|
||||||
# QMAKE_CXXFLAGS *= -Wfloat-equal
|
# QMAKE_CXXFLAGS *= -Wfloat-equal
|
||||||
|
|
@ -172,8 +159,7 @@ sanitize {
|
||||||
|
|
||||||
CONFIG += sanitizer
|
CONFIG += sanitizer
|
||||||
CONFIG += sanitize_address
|
CONFIG += sanitize_address
|
||||||
#CONFIG *= sanitize_memory
|
# CONFIG *= sanitize_undefined
|
||||||
CONFIG *= sanitize_undefined
|
|
||||||
|
|
||||||
linux-g++ | linux-g++-64 {
|
linux-g++ | linux-g++-64 {
|
||||||
#QMAKE_CXXFLAGS *= -fsanitize-address-use-after-scope
|
#QMAKE_CXXFLAGS *= -fsanitize-address-use-after-scope
|
||||||
|
|
@ -185,7 +171,16 @@ debug {
|
||||||
DEFINES += ITEM_STATISTICS=1
|
DEFINES += ITEM_STATISTICS=1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Help out Qt Creator
|
|
||||||
ide: DEFINES += QT_IDE
|
|
||||||
|
|
||||||
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000
|
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000
|
||||||
|
DEFINES += QSK_BUILD
|
||||||
|
|
||||||
|
LOCAL_PRI=$$(QSK_LOCAL_PRI)
|
||||||
|
|
||||||
|
if ( exists( $${LOCAL_PRI} ) ) {
|
||||||
|
|
||||||
|
# When not working with the Qt/Creator it is often more convenient
|
||||||
|
# to include the specific options of your local build, than passing
|
||||||
|
# them all on the command line
|
||||||
|
|
||||||
|
include( $${LOCAL_PRI} )
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,3 @@
|
||||||
/******************************************************************************
|
|
||||||
* This code is a stripped down version of the Cassowary constraint solving
|
|
||||||
* algorithm. The implementation has been taken from the Kiwi project:
|
|
||||||
*
|
|
||||||
* Copyright (c) 2013-2017, Nucleic Development Team.
|
|
||||||
* Distributed under the terms of the Modified BSD License.
|
|
||||||
* https://github.com/nucleic/kiwi/blob/master/LICENSE
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#include "Solver.h"
|
#include "Solver.h"
|
||||||
#include "Constraint.h"
|
#include "Constraint.h"
|
||||||
#include "Variable.h"
|
#include "Variable.h"
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ GridQuick::GridQuick( QWidget* parent )
|
||||||
createQml( "import QtQuick 2.0\nimport QtQuick.Layouts 1.1\nItem { GridLayout {} }" );
|
createQml( "import QtQuick 2.0\nimport QtQuick.Layouts 1.1\nItem { GridLayout {} }" );
|
||||||
setContent( QUrl(), nullptr, contentItem );
|
setContent( QUrl(), nullptr, contentItem );
|
||||||
|
|
||||||
m_grid = contentItem->childItems().first();
|
m_grid = contentItem->childItems().constFirst();
|
||||||
m_grid->setProperty( "rowSpacing", 5 );
|
m_grid->setProperty( "rowSpacing", 5 );
|
||||||
m_grid->setProperty( "columnSpacing", 5 );
|
m_grid->setProperty( "columnSpacing", 5 );
|
||||||
}
|
}
|
||||||
|
|
@ -78,7 +78,7 @@ void GridQuick::insert( const QByteArray& colorName,
|
||||||
*/
|
*/
|
||||||
auto layout = createQml( "import QtQuick 2.0\nimport QtQuick.Layouts 1.15\nGridLayout { Rectangle {} }" );
|
auto layout = createQml( "import QtQuick 2.0\nimport QtQuick.Layouts 1.15\nGridLayout { Rectangle {} }" );
|
||||||
|
|
||||||
auto rectangle = layout->childItems().first();
|
auto rectangle = layout->childItems().constFirst();
|
||||||
rectangle->setParent( nullptr );
|
rectangle->setParent( nullptr );
|
||||||
|
|
||||||
delete layout;
|
delete layout;
|
||||||
|
|
|
||||||
|
|
@ -391,7 +391,7 @@ int main( int argc, char** argv )
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
/*
|
/*
|
||||||
we don't need the fonts, but by calling something from
|
we don't need the fonts, but by calling something from
|
||||||
the support library initializations regarding the skins
|
the support library initializations regarding the skins
|
||||||
are loaded. TODO ...
|
are loaded. TODO ...
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -7,17 +7,18 @@
|
||||||
|
|
||||||
#include "QskGlobal.h"
|
#include "QskGlobal.h"
|
||||||
|
|
||||||
#ifdef QT_NO_KEYWORDS
|
QSK_QT_PRIVATE_BEGIN
|
||||||
|
|
||||||
// qquickimage_p.h uses emit
|
|
||||||
#define emit Q_EMIT
|
|
||||||
#include <private/qquickimage_p.h>
|
|
||||||
#undef emit
|
|
||||||
|
|
||||||
|
#ifndef emit
|
||||||
|
#define emit
|
||||||
|
#include <private/qquickimage_p.h>
|
||||||
|
#undef emit
|
||||||
#else
|
#else
|
||||||
#include <private/qquickimage_p.h>
|
#include <private/qquickimage_p.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
QSK_QT_PRIVATE_END
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class Image : public QQuickImage
|
class Image : public QQuickImage
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,9 @@ namespace
|
||||||
|
|
||||||
int compare( const QSGMaterial* other ) const override;
|
int compare( const QSGMaterial* other ) const override;
|
||||||
|
|
||||||
QVector2D aspect = QVector2D{1.0, 1.0};
|
QVector2D aspect = QVector2D{ 1.0, 1.0 };
|
||||||
float blurExtent = 0.0;
|
float blurExtent = 0.0;
|
||||||
QVector4D radius = QVector4D{0.0, 0.0, 0.0, 0.0};
|
QVector4D radius = QVector4D{ 0.0, 0.0, 0.0, 0.0 };
|
||||||
QColor color = Qt::black;
|
QColor color = Qt::black;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@
|
||||||
#include <QskSkin.h>
|
#include <QskSkin.h>
|
||||||
#include <QskSkinManager.h>
|
#include <QskSkinManager.h>
|
||||||
#include <QskSlider.h>
|
#include <QskSlider.h>
|
||||||
#include <QskStandardSymbol.h>
|
|
||||||
#include <QskStatusIndicator.h>
|
#include <QskStatusIndicator.h>
|
||||||
#include <QskSubWindow.h>
|
#include <QskSubWindow.h>
|
||||||
#include <QskSubWindowArea.h>
|
#include <QskSubWindowArea.h>
|
||||||
|
|
@ -115,8 +114,8 @@ namespace
|
||||||
static inline QskGradientStop qskToGradientStop( const QJSValue& value )
|
static inline QskGradientStop qskToGradientStop( const QJSValue& value )
|
||||||
{
|
{
|
||||||
return QskGradientStop(
|
return QskGradientStop(
|
||||||
value.property( QLatin1String( "position" ) ).toNumber(),
|
value.property( QStringLiteral( "position" ) ).toNumber(),
|
||||||
value.property( QLatin1String( "color" ) ).toVariant().value< QColor >()
|
value.property( QStringLiteral( "color" ) ).toVariant().value< QColor >()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,7 +193,6 @@ void QskQml::registerTypes()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QSK_REGISTER_GADGET( QskRgbValueQml, "RgbValue" );
|
QSK_REGISTER_GADGET( QskRgbValueQml, "RgbValue" );
|
||||||
QSK_REGISTER_GADGET( QskStandardSymbol, "StandardSymbol" );
|
|
||||||
QSK_REGISTER_GADGET( QskBoxBorderMetrics, "BorderMetrics" );
|
QSK_REGISTER_GADGET( QskBoxBorderMetrics, "BorderMetrics" );
|
||||||
QSK_REGISTER_GADGET( QskBoxShapeMetrics, "Shape" );
|
QSK_REGISTER_GADGET( QskBoxShapeMetrics, "Shape" );
|
||||||
QSK_REGISTER_GADGET( QskShadowMetrics, "ShadowMetrics" );
|
QSK_REGISTER_GADGET( QskShadowMetrics, "ShadowMetrics" );
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ class QskShortcutQml : public QObject, public QQmlParserStatus
|
||||||
void activated();
|
void activated();
|
||||||
void activatedAmbiguously();
|
void activatedAmbiguously();
|
||||||
|
|
||||||
int shortcutIdChanged( int );
|
void shortcutIdChanged( int );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool event( QEvent* ) override;
|
bool event( QEvent* ) override;
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ OTHER_FILES = \
|
||||||
qmlexport.depends = src
|
qmlexport.depends = src
|
||||||
inputcontext.depends = src
|
inputcontext.depends = src
|
||||||
skins.depends = src
|
skins.depends = src
|
||||||
|
tools.depends = src
|
||||||
support.depends = src skins
|
support.depends = src skins
|
||||||
examples.depends = tools support skins qmlexport
|
examples.depends = tools support skins qmlexport
|
||||||
playground.depends = tools support skins qmlexport
|
playground.depends = tools support skins qmlexport
|
||||||
|
|
|
||||||
|
|
@ -785,7 +785,7 @@ QskMaterialSkin::QskMaterialSkin( QObject* parent )
|
||||||
QskRgb::Blue500, QskRgb::White );
|
QskRgb::Blue500, QskRgb::White );
|
||||||
|
|
||||||
// Default theme colors
|
// Default theme colors
|
||||||
setupFonts( "Roboto" );
|
setupFonts( QStringLiteral( "Roboto" ) );
|
||||||
|
|
||||||
auto buttonFont = font( QskSkin::DefaultFont );
|
auto buttonFont = font( QskSkin::DefaultFont );
|
||||||
buttonFont.setCapitalization( QFont::AllUppercase );
|
buttonFont.setCapitalization( QFont::AllUppercase );
|
||||||
|
|
|
||||||
|
|
@ -941,7 +941,7 @@ QskSquiekSkin::QskSquiekSkin( QObject* parent )
|
||||||
: Inherited( parent )
|
: Inherited( parent )
|
||||||
, m_data( new PrivateData() )
|
, m_data( new PrivateData() )
|
||||||
{
|
{
|
||||||
setupFonts( "DejaVuSans" );
|
setupFonts( QStringLiteral( "DejaVuSans" ) );
|
||||||
|
|
||||||
Editor editor( &hintTable(), m_data->palette );
|
Editor editor( &hintTable(), m_data->palette );
|
||||||
editor.setup();
|
editor.setup();
|
||||||
|
|
|
||||||
|
|
@ -86,9 +86,9 @@ QskArcMetrics QskArcMetrics::toAbsolute( const QSizeF& size ) const noexcept
|
||||||
return absoluted;
|
return absoluted;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskArcMetrics::hash( uint seed ) const noexcept
|
QskHashValue QskArcMetrics::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
uint hash = qHash( m_width, seed );
|
auto hash = qHash( m_width, seed );
|
||||||
hash = qHash( m_startAngle, hash );
|
hash = qHash( m_startAngle, hash );
|
||||||
hash = qHash( m_spanAngle, hash );
|
hash = qHash( m_spanAngle, hash );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ class QSK_EXPORT QskArcMetrics
|
||||||
public:
|
public:
|
||||||
constexpr QskArcMetrics() noexcept;
|
constexpr QskArcMetrics() noexcept;
|
||||||
constexpr QskArcMetrics( qreal width, qreal startAngle, qreal spanAngle,
|
constexpr QskArcMetrics( qreal width, qreal startAngle, qreal spanAngle,
|
||||||
Qt::SizeMode = Qt::AbsoluteSize ) noexcept;
|
Qt::SizeMode = Qt::AbsoluteSize ) noexcept;
|
||||||
|
|
||||||
bool operator==( const QskArcMetrics& ) const noexcept;
|
bool operator==( const QskArcMetrics& ) const noexcept;
|
||||||
bool operator!=( const QskArcMetrics& ) const noexcept;
|
bool operator!=( const QskArcMetrics& ) const noexcept;
|
||||||
|
|
@ -50,7 +50,7 @@ class QSK_EXPORT QskArcMetrics
|
||||||
|
|
||||||
QskArcMetrics toAbsolute( const QSizeF& ) const noexcept;
|
QskArcMetrics toAbsolute( const QSizeF& ) const noexcept;
|
||||||
|
|
||||||
uint hash( uint seed = 0 ) const noexcept;
|
QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
|
||||||
|
|
||||||
static QVariant interpolate( const QskArcMetrics&,
|
static QVariant interpolate( const QskArcMetrics&,
|
||||||
const QskArcMetrics&, qreal progress );
|
const QskArcMetrics&, qreal progress );
|
||||||
|
|
|
||||||
|
|
@ -185,9 +185,9 @@ QVariant QskBoxBorderColors::interpolate(
|
||||||
return QVariant::fromValue( from.interpolated( to, ratio ) );
|
return QVariant::fromValue( from.interpolated( to, ratio ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskBoxBorderColors::hash( uint seed ) const
|
QskHashValue QskBoxBorderColors::hash( QskHashValue seed ) const
|
||||||
{
|
{
|
||||||
uint h = m_gradients[ 0 ].hash( seed );
|
auto h = m_gradients[ 0 ].hash( seed );
|
||||||
h = m_gradients[ 1 ].hash( h );
|
h = m_gradients[ 1 ].hash( h );
|
||||||
h = m_gradients[ 2 ].hash( h );
|
h = m_gradients[ 2 ].hash( h );
|
||||||
h = m_gradients[ 3 ].hash( h );
|
h = m_gradients[ 3 ].hash( h );
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ class QSK_EXPORT QskBoxBorderColors
|
||||||
static QVariant interpolate( const QskBoxBorderColors&,
|
static QVariant interpolate( const QskBoxBorderColors&,
|
||||||
const QskBoxBorderColors&, qreal ratio );
|
const QskBoxBorderColors&, qreal ratio );
|
||||||
|
|
||||||
uint hash( uint seed = 0 ) const;
|
QskHashValue hash( QskHashValue seed = 0 ) const;
|
||||||
|
|
||||||
bool isMonochrome() const;
|
bool isMonochrome() const;
|
||||||
bool isVisible() const;
|
bool isVisible() const;
|
||||||
|
|
|
||||||
|
|
@ -92,9 +92,9 @@ QVariant QskBoxBorderMetrics::interpolate(
|
||||||
return QVariant::fromValue( from.interpolated( to, progress ) );
|
return QVariant::fromValue( from.interpolated( to, progress ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskBoxBorderMetrics::hash( uint seed ) const noexcept
|
QskHashValue QskBoxBorderMetrics::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
uint hash = qHashBits( &m_widths, sizeof( m_widths ), seed );
|
auto hash = qHashBits( &m_widths, sizeof( m_widths ), seed );
|
||||||
|
|
||||||
const int mode = m_sizeMode;
|
const int mode = m_sizeMode;
|
||||||
return qHashBits( &mode, sizeof( mode ), hash );
|
return qHashBits( &mode, sizeof( mode ), hash );
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ class QSK_EXPORT QskBoxBorderMetrics
|
||||||
|
|
||||||
QskBoxBorderMetrics toAbsolute( const QSizeF& ) const noexcept;
|
QskBoxBorderMetrics toAbsolute( const QSizeF& ) const noexcept;
|
||||||
|
|
||||||
uint hash( uint seed = 0 ) const noexcept;
|
QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
|
||||||
|
|
||||||
static QVariant interpolate( const QskBoxBorderMetrics&,
|
static QVariant interpolate( const QskBoxBorderMetrics&,
|
||||||
const QskBoxBorderMetrics&, qreal progress );
|
const QskBoxBorderMetrics&, qreal progress );
|
||||||
|
|
|
||||||
|
|
@ -36,17 +36,17 @@ QskBoxHints QskBoxHints::interpolated(
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef QT_NO_DEBUG_STREAM
|
#ifndef QT_NO_DEBUG_STREAM
|
||||||
|
|
||||||
#include <qdebug.h>
|
#include <qdebug.h>
|
||||||
|
|
||||||
QDebug operator<<( QDebug debug, const QskBoxHints& hints )
|
QDebug operator<<( QDebug debug, const QskBoxHints& hints )
|
||||||
{
|
{
|
||||||
debug << hints.shape << hints.borderMetrics
|
debug << hints.shape << hints.borderMetrics
|
||||||
<< hints.borderColors << hints.gradient;
|
<< hints.borderColors << hints.gradient;
|
||||||
|
|
||||||
return debug;
|
return debug;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "moc_QskBoxHints.cpp"
|
#include "moc_QskBoxHints.cpp"
|
||||||
|
|
|
||||||
|
|
@ -151,9 +151,9 @@ QVariant QskBoxShapeMetrics::interpolate(
|
||||||
return QVariant::fromValue( from.interpolated( to, progress ) );
|
return QVariant::fromValue( from.interpolated( to, progress ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskBoxShapeMetrics::hash( uint seed ) const noexcept
|
QskHashValue QskBoxShapeMetrics::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
uint hash = qHash( static_cast< int >( m_sizeMode ), seed );
|
auto hash = qHash( static_cast< int >( m_sizeMode ), seed );
|
||||||
return qHashBits( m_radii, sizeof( m_radii ), hash );
|
return qHashBits( m_radii, sizeof( m_radii ), hash );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ class QSK_EXPORT QskBoxShapeMetrics
|
||||||
|
|
||||||
constexpr QskBoxShapeMetrics transposed() const noexcept;
|
constexpr QskBoxShapeMetrics transposed() const noexcept;
|
||||||
|
|
||||||
uint hash( uint seed = 0 ) const noexcept;
|
QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
|
||||||
|
|
||||||
static QVariant interpolate( const QskBoxShapeMetrics&,
|
static QVariant interpolate( const QskBoxShapeMetrics&,
|
||||||
const QskBoxShapeMetrics&, qreal progress ) noexcept;
|
const QskBoxShapeMetrics&, qreal progress ) noexcept;
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ QRectF qskValidOrEmptyInnerRect( const QRectF& rect, const QMarginsF& margins )
|
||||||
return QRectF( x, y, w, h );
|
return QRectF( x, y, w, h );
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF qskInterpolatedRect( const QRectF &from, const QRectF &to, qreal progress )
|
QRectF qskInterpolatedRect( const QRectF& from, const QRectF& to, qreal progress )
|
||||||
{
|
{
|
||||||
if ( progress <= 0.0 )
|
if ( progress <= 0.0 )
|
||||||
return from;
|
return from;
|
||||||
|
|
@ -138,7 +138,7 @@ QRectF qskInterpolatedRect( const QRectF &from, const QRectF &to, qreal progress
|
||||||
return QRectF( x, y, w, h );
|
return QRectF( x, y, w, h );
|
||||||
}
|
}
|
||||||
|
|
||||||
QSizeF qskInterpolatedSize( const QSizeF &from, const QSizeF &to, qreal progress )
|
QSizeF qskInterpolatedSize( const QSizeF& from, const QSizeF& to, qreal progress )
|
||||||
{
|
{
|
||||||
if ( progress <= 0.0 )
|
if ( progress <= 0.0 )
|
||||||
return from;
|
return from;
|
||||||
|
|
|
||||||
|
|
@ -17,15 +17,15 @@
|
||||||
#ifdef QSK_DLL
|
#ifdef QSK_DLL
|
||||||
|
|
||||||
#if defined( QSK_MAKEDLL ) // create a DLL library
|
#if defined( QSK_MAKEDLL ) // create a DLL library
|
||||||
#define QSK_EXPORT Q_DECL_EXPORT
|
#define QSK_EXPORT Q_DECL_EXPORT
|
||||||
#else // use a DLL library
|
#else // use a DLL library
|
||||||
#define QSK_EXPORT Q_DECL_IMPORT
|
#define QSK_EXPORT Q_DECL_IMPORT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // QSK_DLL
|
#endif // QSK_DLL
|
||||||
|
|
||||||
#ifndef QSK_EXPORT
|
#ifndef QSK_EXPORT
|
||||||
#define QSK_EXPORT
|
#define QSK_EXPORT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define QSK_QT_PRIVATE_BEGIN \
|
#define QSK_QT_PRIVATE_BEGIN \
|
||||||
|
|
@ -39,27 +39,26 @@
|
||||||
#define QSK_QT_PRIVATE_END \
|
#define QSK_QT_PRIVATE_END \
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 5, 7, 0 )
|
#if defined( QSK_BUILD )
|
||||||
|
|
||||||
#define qskAsConst qAsConst
|
#if QT_VERSION < QT_VERSION_CHECK( 5, 7, 0 )
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
struct QskAddConst { typedef const T Type; };
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
constexpr typename QskAddConst< T >::Type& qAsConst( T& t ) noexcept { return t; }
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
void qAsConst( const T&& ) = delete;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
|
||||||
|
using QskHashValue = uint;
|
||||||
#else
|
#else
|
||||||
|
using QskHashValue = size_t;
|
||||||
template< typename T >
|
|
||||||
struct QskAddConst { typedef const T Type; };
|
|
||||||
|
|
||||||
template< typename T >
|
|
||||||
constexpr typename QskAddConst< T >::Type& qskAsConst( T& t ) noexcept { return t; }
|
|
||||||
|
|
||||||
template< typename T >
|
|
||||||
void qskAsConst( const T&& ) = delete;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef Q_FALLTHROUGH
|
|
||||||
#define QSK_FALLTHROUGH Q_FALLTHROUGH
|
|
||||||
#else
|
|
||||||
#define QSK_FALLTHROUGH
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ static inline bool qskIsVisible( const QskGradientStops& stops )
|
||||||
const auto& c = stop.color();
|
const auto& c = stop.color();
|
||||||
if ( c.isValid() && c.alpha() > 0 )
|
if ( c.isValid() && c.alpha() > 0 )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -179,6 +179,17 @@ static inline QskGradientStops qskExtractedStops(
|
||||||
return extracted;
|
return extracted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline QskGradientStops qskGradientStops( const QGradientStops& qtStops )
|
||||||
|
{
|
||||||
|
QskGradientStops stops;
|
||||||
|
stops.reserve( qtStops.count() );
|
||||||
|
|
||||||
|
for ( const auto& s : qtStops )
|
||||||
|
stops += QskGradientStop( s.first, s.second );
|
||||||
|
|
||||||
|
return stops;
|
||||||
|
}
|
||||||
|
|
||||||
QskGradient::QskGradient( Orientation orientation )
|
QskGradient::QskGradient( Orientation orientation )
|
||||||
: m_orientation( orientation )
|
: m_orientation( orientation )
|
||||||
, m_isDirty( false )
|
, m_isDirty( false )
|
||||||
|
|
@ -218,6 +229,16 @@ QskGradient::QskGradient( Orientation orientation, const QskGradientStops& stops
|
||||||
setStops( stops );
|
setStops( stops );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK( 5, 12, 0 )
|
||||||
|
|
||||||
|
QskGradient::QskGradient( Orientation orientation, QGradient::Preset preset )
|
||||||
|
: QskGradient( orientation )
|
||||||
|
{
|
||||||
|
setStops( qskGradientStops( QGradient( preset ).stops() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
QskGradient::~QskGradient()
|
QskGradient::~QskGradient()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -301,8 +322,17 @@ void QskGradient::setStops( const QskGradientStops& stops )
|
||||||
m_isDirty = true;
|
m_isDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskGradientStops QskGradient::stops() const
|
const QskGradientStops& QskGradient::stops() const
|
||||||
{
|
{
|
||||||
|
#if 1
|
||||||
|
/*
|
||||||
|
Returning a const& so that it is possible to write:
|
||||||
|
for ( const auto& stop : qAsConst( gradient.stops() ) )
|
||||||
|
|
||||||
|
Once we have changed QskGradientStop from QColor to QRgb
|
||||||
|
we should check if there is a better solution possible
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
return m_stops;
|
return m_stops;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -387,14 +417,14 @@ bool QskGradient::hasStopAt( qreal value ) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskGradient::hash( uint seed ) const
|
QskHashValue QskGradient::hash( QskHashValue seed ) const
|
||||||
{
|
{
|
||||||
if ( m_stops.isEmpty() )
|
if ( m_stops.isEmpty() )
|
||||||
return seed;
|
return seed;
|
||||||
|
|
||||||
const auto o = orientation();
|
const auto o = orientation();
|
||||||
|
|
||||||
uint hash = qHashBits( &o, sizeof( o ), seed );
|
auto hash = qHashBits( &o, sizeof( o ), seed );
|
||||||
for ( const auto& stop : m_stops )
|
for ( const auto& stop : m_stops )
|
||||||
hash = stop.hash( hash );
|
hash = stop.hash( hash );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include "QskGlobal.h"
|
#include "QskGlobal.h"
|
||||||
#include "QskGradientStop.h"
|
#include "QskGradientStop.h"
|
||||||
|
|
||||||
#include <qcolor.h>
|
#include <qbrush.h>
|
||||||
#include <qmetatype.h>
|
#include <qmetatype.h>
|
||||||
#include <qvector.h>
|
#include <qvector.h>
|
||||||
|
|
||||||
|
|
@ -49,12 +49,18 @@ class QSK_EXPORT QskGradient
|
||||||
QskGradient( QRgb );
|
QskGradient( QRgb );
|
||||||
QskGradient( const QColor& );
|
QskGradient( const QColor& );
|
||||||
|
|
||||||
|
|
||||||
QskGradient( Qt::Orientation, const QVector< QskGradientStop >& );
|
QskGradient( Qt::Orientation, const QVector< QskGradientStop >& );
|
||||||
QskGradient( Qt::Orientation, const QColor&, const QColor& );
|
QskGradient( Qt::Orientation, const QColor&, const QColor& );
|
||||||
|
|
||||||
QskGradient( Orientation, const QVector< QskGradientStop >& );
|
QskGradient( Orientation, const QVector< QskGradientStop >& );
|
||||||
QskGradient( Orientation, const QColor&, const QColor& );
|
QskGradient( Orientation, const QColor&, const QColor& );
|
||||||
|
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK( 5, 12, 0 )
|
||||||
|
QskGradient( QGradient::Preset );
|
||||||
|
QskGradient( Orientation, QGradient::Preset );
|
||||||
|
#endif
|
||||||
|
|
||||||
~QskGradient();
|
~QskGradient();
|
||||||
|
|
||||||
void setOrientation( Qt::Orientation );
|
void setOrientation( Qt::Orientation );
|
||||||
|
|
@ -74,7 +80,7 @@ class QSK_EXPORT QskGradient
|
||||||
Q_INVOKABLE QColor endColor() const;
|
Q_INVOKABLE QColor endColor() const;
|
||||||
|
|
||||||
Q_INVOKABLE void setStops( const QVector< QskGradientStop >& );
|
Q_INVOKABLE void setStops( const QVector< QskGradientStop >& );
|
||||||
Q_INVOKABLE QVector< QskGradientStop > stops() const;
|
Q_INVOKABLE const QVector< QskGradientStop >& stops() const;
|
||||||
|
|
||||||
Q_INVOKABLE bool hasStopAt( qreal value ) const;
|
Q_INVOKABLE bool hasStopAt( qreal value ) const;
|
||||||
|
|
||||||
|
|
@ -94,7 +100,7 @@ class QSK_EXPORT QskGradient
|
||||||
static QVariant interpolate( const QskGradient&,
|
static QVariant interpolate( const QskGradient&,
|
||||||
const QskGradient&, qreal progress );
|
const QskGradient&, qreal progress );
|
||||||
|
|
||||||
uint hash( uint seed ) const;
|
QskHashValue hash( QskHashValue seed ) const;
|
||||||
|
|
||||||
Q_INVOKABLE qreal stopAt( int index ) const;
|
Q_INVOKABLE qreal stopAt( int index ) const;
|
||||||
Q_INVOKABLE QColor colorAt( int index ) const;
|
Q_INVOKABLE QColor colorAt( int index ) const;
|
||||||
|
|
@ -133,6 +139,15 @@ inline QskGradient::QskGradient( QRgb rgb )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK( 5, 12, 0 )
|
||||||
|
|
||||||
|
inline QskGradient::QskGradient( QGradient::Preset preset )
|
||||||
|
: QskGradient( Vertical, preset )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
inline QskGradient::Orientation QskGradient::orientation() const
|
inline QskGradient::Orientation QskGradient::orientation() const
|
||||||
{
|
{
|
||||||
return static_cast< Orientation >( m_orientation );
|
return static_cast< Orientation >( m_orientation );
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,9 @@ void QskGradientStop::setStop( qreal position, const QColor& color ) noexcept
|
||||||
m_color = color;
|
m_color = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskGradientStop::hash( uint seed ) const noexcept
|
QskHashValue QskGradientStop::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
uint hash = qHashBits( &m_position, sizeof( m_position ), seed );
|
auto hash = qHashBits( &m_position, sizeof( m_position ), seed );
|
||||||
return qHashBits( &m_color, sizeof( m_color ), hash );
|
return qHashBits( &m_color, sizeof( m_color ), hash );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,6 @@
|
||||||
#include <qcolor.h>
|
#include <qcolor.h>
|
||||||
#include <qmetatype.h>
|
#include <qmetatype.h>
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK( 5, 14, 0 )
|
|
||||||
/*
|
|
||||||
since Qt >= 5.14 QColor has constexpr declarations and we could declare
|
|
||||||
several methods of QskGradientStop being constexpr as well. TODO ...
|
|
||||||
*/
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class QSK_EXPORT QskGradientStop
|
class QSK_EXPORT QskGradientStop
|
||||||
{
|
{
|
||||||
Q_GADGET
|
Q_GADGET
|
||||||
|
|
@ -47,7 +40,7 @@ class QSK_EXPORT QskGradientStop
|
||||||
static QColor interpolated(
|
static QColor interpolated(
|
||||||
const QskGradientStop&, const QskGradientStop&, qreal position ) noexcept;
|
const QskGradientStop&, const QskGradientStop&, qreal position ) noexcept;
|
||||||
|
|
||||||
uint hash( uint seed ) const noexcept;
|
QskHashValue hash( QskHashValue seed ) const noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
qreal m_position;
|
qreal m_position;
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ namespace
|
||||||
int maximum;
|
int maximum;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CounterData final : public QObject
|
class CounterData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Counter counter[ 2 ];
|
Counter counter[ 2 ];
|
||||||
|
|
@ -162,7 +162,7 @@ void CounterHook::addObject( QObject* object )
|
||||||
{
|
{
|
||||||
const bool isItem = qskIsItem( object );
|
const bool isItem = qskIsItem( object );
|
||||||
|
|
||||||
for ( auto counterData : qskAsConst( m_counterDataSet ) )
|
for ( auto counterData : qAsConst( m_counterDataSet ) )
|
||||||
{
|
{
|
||||||
counterData->counter[ QskObjectCounter::Objects ].increment();
|
counterData->counter[ QskObjectCounter::Objects ].increment();
|
||||||
|
|
||||||
|
|
@ -182,7 +182,7 @@ void CounterHook::removeObject( QObject* object )
|
||||||
{
|
{
|
||||||
const bool isItem = qskIsItem( object );
|
const bool isItem = qskIsItem( object );
|
||||||
|
|
||||||
for ( auto counterData : qskAsConst( m_counterDataSet ) )
|
for ( auto counterData : qAsConst( m_counterDataSet ) )
|
||||||
{
|
{
|
||||||
counterData->counter[ QskObjectCounter::Objects ].decrement();
|
counterData->counter[ QskObjectCounter::Objects ].decrement();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ class QSK_EXPORT QskObjectCounter
|
||||||
void dump() const;
|
void dump() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Q_DISABLE_COPY( QskObjectCounter )
|
||||||
|
|
||||||
class PrivateData;
|
class PrivateData;
|
||||||
std::unique_ptr< PrivateData > m_data;
|
std::unique_ptr< PrivateData > m_data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ void QskScaleTickmarks::invert()
|
||||||
std::reverse( m_ticks[ 2 ].begin(), m_ticks[ 2 ].end() );
|
std::reverse( m_ticks[ 2 ].begin(), m_ticks[ 2 ].end() );
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskScaleTickmarks::hash( uint seed ) const
|
QskHashValue QskScaleTickmarks::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
seed = qHash( m_ticks[0], seed );
|
seed = qHash( m_ticks[0], seed );
|
||||||
seed = qHash( m_ticks[1], seed );
|
seed = qHash( m_ticks[1], seed );
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ class QSK_EXPORT QskScaleTickmarks
|
||||||
void invert();
|
void invert();
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
uint hash( uint seed = 0 ) const;
|
QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector< qreal > m_ticks[ 3 ];
|
QVector< qreal > m_ticks[ 3 ];
|
||||||
|
|
|
||||||
|
|
@ -83,9 +83,9 @@ QRectF QskShadowMetrics::shadowRect( const QRectF& sourceRect ) const
|
||||||
sourceRect.height() + 2 * extent );
|
sourceRect.height() + 2 * extent );
|
||||||
}
|
}
|
||||||
|
|
||||||
uint QskShadowMetrics::hash( uint seed ) const noexcept
|
QskHashValue QskShadowMetrics::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
uint hash;
|
QskHashValue hash;
|
||||||
|
|
||||||
hash = qHash( m_offset.x(), seed );
|
hash = qHash( m_offset.x(), seed );
|
||||||
hash = qHash( m_offset.y(), seed );
|
hash = qHash( m_offset.y(), seed );
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class QSK_EXPORT QskShadowMetrics
|
||||||
|
|
||||||
QRectF shadowRect( const QRectF& sourceRect ) const;
|
QRectF shadowRect( const QRectF& sourceRect ) const;
|
||||||
|
|
||||||
uint hash( uint seed = 0 ) const noexcept;
|
QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
|
||||||
|
|
||||||
static QVariant interpolate( const QskShadowMetrics&,
|
static QVariant interpolate( const QskShadowMetrics&,
|
||||||
const QskShadowMetrics&, qreal progress );
|
const QskShadowMetrics&, qreal progress );
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include <qhashfunctions.h>
|
#include <qhashfunctions.h>
|
||||||
#include <qvariant.h>
|
#include <qvariant.h>
|
||||||
|
|
||||||
uint QskTextColors::hash( uint seed ) const
|
QskHashValue QskTextColors::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
const QRgb rgb[] = { textColor.rgba(), styleColor.rgba(), linkColor.rgba() };
|
const QRgb rgb[] = { textColor.rgba(), styleColor.rgba(), linkColor.rgba() };
|
||||||
return qHashBits( rgb, sizeof( rgb ), seed );
|
return qHashBits( rgb, sizeof( rgb ), seed );
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class QSK_EXPORT QskTextColors
|
||||||
static QVariant interpolate( const QskTextColors&,
|
static QVariant interpolate( const QskTextColors&,
|
||||||
const QskTextColors&, qreal ratio );
|
const QskTextColors&, qreal ratio );
|
||||||
|
|
||||||
uint hash( uint seed = 0 ) const;
|
QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
|
||||||
|
|
||||||
QColor textColor;
|
QColor textColor;
|
||||||
QColor styleColor;
|
QColor styleColor;
|
||||||
|
|
|
||||||
|
|
@ -50,15 +50,13 @@ QskTextOptions::TextFormat QskTextOptions::effectiveFormat( const QString& text
|
||||||
return m_format;
|
return m_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint qHash( const QskTextOptions& options, uint seed ) noexcept
|
QskHashValue QskTextOptions::hash( QskHashValue seed ) const noexcept
|
||||||
{
|
{
|
||||||
uint hash;
|
auto hash = qHash( m_maximumLineCount, seed );
|
||||||
|
hash = qHash( m_fontSizeMode, hash );
|
||||||
hash = qHash( options.maximumLineCount(), seed );
|
hash = qHash( m_wrapMode, hash );
|
||||||
hash = qHash( options.fontSizeMode(), hash );
|
hash = qHash( m_format, hash );
|
||||||
hash = qHash( options.wrapMode(), hash );
|
hash = qHash( m_elideMode, hash );
|
||||||
hash = qHash( options.format(), hash );
|
|
||||||
hash = qHash( options.elideMode(), hash );
|
|
||||||
|
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,8 @@ class QSK_EXPORT QskTextOptions
|
||||||
constexpr bool operator==( const QskTextOptions& other ) const noexcept;
|
constexpr bool operator==( const QskTextOptions& other ) const noexcept;
|
||||||
constexpr bool operator!=( const QskTextOptions& other ) const noexcept;
|
constexpr bool operator!=( const QskTextOptions& other ) const noexcept;
|
||||||
|
|
||||||
|
QskHashValue hash( QskHashValue seed ) const noexcept;
|
||||||
|
|
||||||
int textFlags() const noexcept;
|
int textFlags() const noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -164,8 +166,6 @@ inline constexpr bool QskTextOptions::operator!=(
|
||||||
return !( *this == other );
|
return !( *this == other );
|
||||||
}
|
}
|
||||||
|
|
||||||
QSK_EXPORT uint qHash( const QskTextOptions&, uint seed = 0 ) noexcept;
|
|
||||||
|
|
||||||
#ifndef QT_NO_DEBUG_STREAM
|
#ifndef QT_NO_DEBUG_STREAM
|
||||||
class QDebug;
|
class QDebug;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
TEMPLATE = subdirs
|
|
||||||
SUBDIRS = ../
|
|
||||||
|
|
@ -181,13 +181,15 @@ void QskBoundedInput::keyPressEvent( QKeyEvent* event )
|
||||||
{
|
{
|
||||||
if ( !isReadOnly() )
|
if ( !isReadOnly() )
|
||||||
{
|
{
|
||||||
if ( event->key() == Qt::Key_Up || event->matches( QKeySequence::MoveToNextChar ) )
|
if ( event->key() == Qt::Key_Up ||
|
||||||
|
qskIsStandardKeyInput( event, QKeySequence::MoveToNextChar ) )
|
||||||
{
|
{
|
||||||
increment( m_stepSize );
|
increment( m_stepSize );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( event->key() == Qt::Key_Down || event->matches( QKeySequence::MoveToPreviousChar ) )
|
if ( event->key() == Qt::Key_Down ||
|
||||||
|
qskIsStandardKeyInput( event, QKeySequence::MoveToPreviousChar ) )
|
||||||
{
|
{
|
||||||
increment( -m_stepSize );
|
increment( -m_stepSize );
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ qreal qskWheelSteps( const QWheelEvent* event )
|
||||||
const auto angleDelta = event->angleDelta();
|
const auto angleDelta = event->angleDelta();
|
||||||
|
|
||||||
const qreal delta = angleDelta.y() ? angleDelta.y() : angleDelta.x();
|
const qreal delta = angleDelta.y() ? angleDelta.y() : angleDelta.x();
|
||||||
return delta / QWheelEvent::DefaultDeltasPerStep;
|
return delta / QWheelEvent::DefaultDeltasPerStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal qskWheelIncrement( const QWheelEvent* event )
|
qreal qskWheelIncrement( const QWheelEvent* event )
|
||||||
|
|
@ -111,11 +111,26 @@ qreal qskWheelIncrement( const QWheelEvent* event )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const qreal delta = angleDelta.y() ? angleDelta.y() : angleDelta.x();
|
const qreal delta = angleDelta.y() ? angleDelta.y() : angleDelta.x();
|
||||||
return delta / QWheelEvent::DefaultDeltasPerStep;
|
return delta / QWheelEvent::DefaultDeltasPerStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool qskIsStandardKeyInput( const QKeyEvent* event, QKeySequence::StandardKey key )
|
||||||
|
{
|
||||||
|
#if 1
|
||||||
|
return event->matches( key );
|
||||||
|
#else
|
||||||
|
constexpr auto mask = ~( Qt::KeypadModifier | Qt::GroupSwitchModifier );
|
||||||
|
|
||||||
|
// We should route this call through the skin. TODO
|
||||||
|
const auto theme = QGuiApplicationPrivate::platformTheme();
|
||||||
|
const auto bindings = theme->keyBindings( ( event->modifiers() | event->key() ) & mask );
|
||||||
|
|
||||||
|
return bindings.contains( QKeySequence(searchkey) );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
QskEvent::QskEvent( QskEvent::Type type )
|
QskEvent::QskEvent( QskEvent::Type type )
|
||||||
: QEvent( static_cast< QEvent::Type >( type ) )
|
: QEvent( static_cast< QEvent::Type >( type ) )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
#include <qcoreevent.h>
|
#include <qcoreevent.h>
|
||||||
#include <qrect.h>
|
#include <qrect.h>
|
||||||
|
#include <qkeysequence.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class QskGesture;
|
class QskGesture;
|
||||||
|
|
@ -20,6 +21,7 @@ class QQuickItem;
|
||||||
class QMouseEvent;
|
class QMouseEvent;
|
||||||
class QWheelEvent;
|
class QWheelEvent;
|
||||||
class QHoverEvent;
|
class QHoverEvent;
|
||||||
|
class QKeyEvent;
|
||||||
|
|
||||||
class QSK_EXPORT QskEvent : public QEvent
|
class QSK_EXPORT QskEvent : public QEvent
|
||||||
{
|
{
|
||||||
|
|
@ -148,4 +150,6 @@ QSK_EXPORT qreal qskWheelIncrement( const QWheelEvent* );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
QSK_EXPORT bool qskIsStandardKeyInput( const QKeyEvent*, QKeySequence::StandardKey );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_FLICK_ANIMATOR_H
|
#ifndef QSK_FLICK_ANIMATOR_H
|
||||||
#define QSK_FLICK_ANIMATOR_H 1
|
#define QSK_FLICK_ANIMATOR_H
|
||||||
|
|
||||||
#include "QskAnimator.h"
|
#include "QskAnimator.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ class QskFocusIndicator::PrivateData
|
||||||
public:
|
public:
|
||||||
void resetConnections()
|
void resetConnections()
|
||||||
{
|
{
|
||||||
for ( const auto& connection : qskAsConst( connections ) )
|
for ( const auto& connection : qAsConst( connections ) )
|
||||||
QObject::disconnect( connection );
|
QObject::disconnect( connection );
|
||||||
|
|
||||||
connections.clear();
|
connections.clear();
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,8 @@ class QSK_EXPORT QskGesture
|
||||||
inline State state() const { return m_state; }
|
inline State state() const { return m_state; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Q_DISABLE_COPY( QskGesture )
|
||||||
|
|
||||||
QskGesture( Type type );
|
QskGesture( Type type );
|
||||||
|
|
||||||
const Type m_type;
|
const Type m_type;
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,15 @@
|
||||||
#include <qvector.h>
|
#include <qvector.h>
|
||||||
|
|
||||||
QSK_QT_PRIVATE_BEGIN
|
QSK_QT_PRIVATE_BEGIN
|
||||||
|
|
||||||
#include <private/qquickwindow_p.h>
|
#include <private/qquickwindow_p.h>
|
||||||
QSK_QT_PRIVATE_END
|
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 6, 3, 0 )
|
#if QT_VERSION >= QT_VERSION_CHECK( 6, 3, 0 )
|
||||||
#include <private/qeventpoint_p.h>
|
#include <private/qeventpoint_p.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
QSK_QT_PRIVATE_END
|
||||||
|
|
||||||
static QMouseEvent* qskClonedMouseEventAt(
|
static QMouseEvent* qskClonedMouseEventAt(
|
||||||
const QMouseEvent* event, QPointF* localPos )
|
const QMouseEvent* event, QPointF* localPos )
|
||||||
{
|
{
|
||||||
|
|
@ -130,7 +132,7 @@ namespace
|
||||||
{
|
{
|
||||||
Timer* timer = nullptr;
|
Timer* timer = nullptr;
|
||||||
|
|
||||||
for ( auto t : qskAsConst( m_table ) )
|
for ( auto t : qAsConst( m_table ) )
|
||||||
{
|
{
|
||||||
if ( t->recognizer() == nullptr ||
|
if ( t->recognizer() == nullptr ||
|
||||||
t->recognizer() == recognizer )
|
t->recognizer() == recognizer )
|
||||||
|
|
@ -151,7 +153,7 @@ namespace
|
||||||
|
|
||||||
void stopTimer( const QskGestureRecognizer* recognizer )
|
void stopTimer( const QskGestureRecognizer* recognizer )
|
||||||
{
|
{
|
||||||
for ( auto timer : qskAsConst( m_table ) )
|
for ( auto timer : qAsConst( m_table ) )
|
||||||
{
|
{
|
||||||
if ( timer->recognizer() == recognizer )
|
if ( timer->recognizer() == recognizer )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_INPUT_GRABBER_H
|
#ifndef QSK_INPUT_GRABBER_H
|
||||||
#define QSK_INPUT_GRABBER_H 1
|
#define QSK_INPUT_GRABBER_H
|
||||||
|
|
||||||
#include "QskControl.h"
|
#include "QskControl.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,8 @@
|
||||||
#include "QskColorFilter.h"
|
#include "QskColorFilter.h"
|
||||||
#include "QskEvent.h"
|
#include "QskEvent.h"
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 5, 9, 0 )
|
|
||||||
#include <qguiapplication.h>
|
#include <qguiapplication.h>
|
||||||
#include <qstylehints.h>
|
#include <qstylehints.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <qmath.h>
|
#include <qmath.h>
|
||||||
|
|
||||||
|
|
@ -198,11 +196,13 @@ void QskListView::keyPressEvent( QKeyEvent* event )
|
||||||
case Qt::Key_PageDown:
|
case Qt::Key_PageDown:
|
||||||
{
|
{
|
||||||
// TODO ...
|
// TODO ...
|
||||||
return Inherited::keyPressEvent( event );
|
Inherited::keyPressEvent( event );
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
return Inherited::keyPressEvent( event );
|
Inherited::keyPressEvent( event );
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,13 +108,19 @@ QPointF QskMenu::origin() const
|
||||||
|
|
||||||
void QskMenu::addOption( const QUrl& graphicSource, const QString& text )
|
void QskMenu::addOption( const QUrl& graphicSource, const QString& text )
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
|
// does not work with Qt 5.6 version of QVector. TODO ...
|
||||||
m_data->options += Option( graphicSource, text );
|
m_data->options += Option( graphicSource, text );
|
||||||
|
#else
|
||||||
|
Q_UNUSED( graphicSource )
|
||||||
|
Q_UNUSED( text )
|
||||||
|
#endif
|
||||||
|
|
||||||
resetImplicitSize();
|
resetImplicitSize();
|
||||||
update();
|
update();
|
||||||
|
|
||||||
if ( isComponentComplete() )
|
if ( isComponentComplete() )
|
||||||
countChanged( count() );
|
Q_EMIT countChanged( count() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskMenu::addOption( const QString& graphicSource, const QString& text )
|
void QskMenu::addOption( const QString& graphicSource, const QString& text )
|
||||||
|
|
@ -278,14 +284,14 @@ void QskMenu::traverse( int steps )
|
||||||
|
|
||||||
if ( hasAnimationHint( Cursor | QskAspect::Position | QskAspect::Metric ) )
|
if ( hasAnimationHint( Cursor | QskAspect::Position | QskAspect::Metric ) )
|
||||||
{
|
{
|
||||||
// when cycling we want slide in
|
// when cycling we want slide in
|
||||||
|
|
||||||
if ( index < 0 )
|
if ( index < 0 )
|
||||||
setPositionHint( Cursor, count() );
|
setPositionHint( Cursor, count() );
|
||||||
|
|
||||||
if ( index >= count() )
|
if ( index >= count() )
|
||||||
setPositionHint( Cursor, -1 );
|
setPositionHint( Cursor, -1 );
|
||||||
|
|
||||||
movePositionHint( Cursor, newIndex );
|
movePositionHint( Cursor, newIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -308,7 +314,7 @@ void QskMenu::mousePressEvent( QMouseEvent* event )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Inherited::mousePressEvent( event );
|
Inherited::mousePressEvent( event );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskMenu::mouseReleaseEvent( QMouseEvent* event )
|
void QskMenu::mouseReleaseEvent( QMouseEvent* event )
|
||||||
|
|
@ -327,7 +333,7 @@ void QskMenu::mouseReleaseEvent( QMouseEvent* event )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Inherited::mouseReleaseEvent( event );
|
Inherited::mouseReleaseEvent( event );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskMenu::aboutToShow()
|
void QskMenu::aboutToShow()
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ class QskMenuSkinlet::PrivateData
|
||||||
{
|
{
|
||||||
m_data->enableCache( false );
|
m_data->enableCache( false );
|
||||||
}
|
}
|
||||||
private:
|
|
||||||
|
private:
|
||||||
PrivateData* m_data;
|
PrivateData* m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -168,7 +169,7 @@ class QskMenuSkinlet::PrivateData
|
||||||
const auto sample = skinlet->sampleAt( menu, QskMenu::Text, i );
|
const auto sample = skinlet->sampleAt( menu, QskMenu::Text, i );
|
||||||
if ( sample.canConvert< QString >() )
|
if ( sample.canConvert< QString >() )
|
||||||
{
|
{
|
||||||
const auto text = sample.value< QString >();
|
const auto text = sample.toString();
|
||||||
if( !text.isEmpty() )
|
if( !text.isEmpty() )
|
||||||
{
|
{
|
||||||
const auto w = qskHorizontalAdvance( fm, text );
|
const auto w = qskHorizontalAdvance( fm, text );
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ QObjectList QskObjectTree::childNodes( const QObject* object )
|
||||||
if ( object == nullptr )
|
if ( object == nullptr )
|
||||||
{
|
{
|
||||||
const auto windows = QGuiApplication::topLevelWindows();
|
const auto windows = QGuiApplication::topLevelWindows();
|
||||||
|
children.reserve( windows.count() );
|
||||||
|
|
||||||
for ( auto window : windows )
|
for ( auto window : windows )
|
||||||
children += window;
|
children += window;
|
||||||
}
|
}
|
||||||
|
|
@ -43,6 +45,7 @@ QObjectList QskObjectTree::childNodes( const QObject* object )
|
||||||
else if ( auto item = qobject_cast< const QQuickItem* >( object ) )
|
else if ( auto item = qobject_cast< const QQuickItem* >( object ) )
|
||||||
{
|
{
|
||||||
const auto childItems = item->childItems();
|
const auto childItems = item->childItems();
|
||||||
|
children.reserve( childItems.count() );
|
||||||
|
|
||||||
for ( auto child : childItems )
|
for ( auto child : childItems )
|
||||||
children += child;
|
children += child;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_OBJECT_TREE_H
|
#ifndef QSK_OBJECT_TREE_H
|
||||||
#define QSK_OBJECT_TREE_H 1
|
#define QSK_OBJECT_TREE_H
|
||||||
|
|
||||||
#include "QskControl.h"
|
#include "QskControl.h"
|
||||||
#include "QskWindow.h"
|
#include "QskWindow.h"
|
||||||
|
|
@ -16,10 +16,14 @@ namespace QskObjectTree
|
||||||
class Visitor
|
class Visitor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Visitor() = default;
|
||||||
virtual ~Visitor() = default;
|
virtual ~Visitor() = default;
|
||||||
|
|
||||||
virtual bool visitDown( QObject* object ) = 0;
|
virtual bool visitDown( QObject* object ) = 0;
|
||||||
virtual bool visitUp( const QObject* object ) = 0;
|
virtual bool visitUp( const QObject* object ) = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Q_DISABLE_COPY( Visitor )
|
||||||
};
|
};
|
||||||
|
|
||||||
QSK_EXPORT QObjectList childNodes( const QObject* );
|
QSK_EXPORT QObjectList childNodes( const QObject* );
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@ QSK_SYSTEM_STATE( QskPageIndicator, Selected, QskAspect::FirstSystemState << 1 )
|
||||||
static int qskKeyIncrement(
|
static int qskKeyIncrement(
|
||||||
const QskPageIndicator* indicator, const QKeyEvent* event )
|
const QskPageIndicator* indicator, const QKeyEvent* event )
|
||||||
{
|
{
|
||||||
if ( event->matches( QKeySequence::MoveToNextChar ) )
|
if ( qskIsStandardKeyInput( event, QKeySequence::MoveToNextChar ) )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if ( event->matches( QKeySequence::MoveToPreviousChar ) )
|
if ( qskIsStandardKeyInput( event, QKeySequence::MoveToPreviousChar ) )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
const auto key = event->key();
|
const auto key = event->key();
|
||||||
|
|
@ -29,10 +29,10 @@ static int qskKeyIncrement(
|
||||||
|
|
||||||
if ( key == Qt::Key_Left )
|
if ( key == Qt::Key_Left )
|
||||||
return mirrored ? 1 : -1;
|
return mirrored ? 1 : -1;
|
||||||
|
|
||||||
if ( key == Qt::Key_Right )
|
if ( key == Qt::Key_Right )
|
||||||
return mirrored ? -1 : 1;
|
return mirrored ? -1 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( key == Qt::Key_Up )
|
if ( key == Qt::Key_Up )
|
||||||
|
|
@ -40,10 +40,10 @@ static int qskKeyIncrement(
|
||||||
|
|
||||||
if ( key == Qt::Key_Down )
|
if ( key == Qt::Key_Down )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class QskPageIndicator::PrivateData
|
class QskPageIndicator::PrivateData
|
||||||
|
|
@ -145,8 +145,8 @@ qreal QskPageIndicator::valueRatioAt( int index ) const
|
||||||
|
|
||||||
const qreal diff = 1.0 - std::abs( pos - index );
|
const qreal diff = 1.0 - std::abs( pos - index );
|
||||||
return std::max( diff, 0.0 );
|
return std::max( diff, 0.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -184,7 +184,7 @@ void QskPageIndicator::mousePressEvent( QMouseEvent* event )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Inherited::mousePressEvent( event );
|
Inherited::mousePressEvent( event );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskPageIndicator::mouseUngrabEvent()
|
void QskPageIndicator::mouseUngrabEvent()
|
||||||
|
|
@ -205,11 +205,11 @@ void QskPageIndicator::mouseReleaseEvent( QMouseEvent* event )
|
||||||
if ( indexAtPosition( pos ) == index )
|
if ( indexAtPosition( pos ) == index )
|
||||||
Q_EMIT pageRequested( index );
|
Q_EMIT pageRequested( index );
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Inherited::mouseReleaseEvent( event );
|
Inherited::mouseReleaseEvent( event );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskPageIndicator::keyPressEvent( QKeyEvent* event )
|
void QskPageIndicator::keyPressEvent( QKeyEvent* event )
|
||||||
|
|
|
||||||
|
|
@ -10,15 +10,6 @@
|
||||||
#include "QskSGNode.h"
|
#include "QskSGNode.h"
|
||||||
#include "QskFunctions.h"
|
#include "QskFunctions.h"
|
||||||
|
|
||||||
static inline int qskCurrentIndex( const QskPageIndicator* indicator )
|
|
||||||
{
|
|
||||||
int index = qRound( indicator->currentIndex() );
|
|
||||||
if ( index >= indicator->count() )
|
|
||||||
index = 0;
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QRectF qskBulletRect( const QskPageIndicator* indicator,
|
static QRectF qskBulletRect( const QskPageIndicator* indicator,
|
||||||
const QRectF& rect, int index )
|
const QRectF& rect, int index )
|
||||||
{
|
{
|
||||||
|
|
@ -44,7 +35,7 @@ static QRectF qskBulletRect( const QskPageIndicator* indicator,
|
||||||
{
|
{
|
||||||
const auto maxWidth = n * size.width() + ( n - 1 ) * spacing;
|
const auto maxWidth = n * size.width() + ( n - 1 ) * spacing;
|
||||||
const auto r = qskAlignedRectF( rect, maxWidth, size.height(), alignment );
|
const auto r = qskAlignedRectF( rect, maxWidth, size.height(), alignment );
|
||||||
|
|
||||||
x = r.x() + index * ( size.width() + spacing );
|
x = r.x() + index * ( size.width() + spacing );
|
||||||
y = r.y();
|
y = r.y();
|
||||||
}
|
}
|
||||||
|
|
@ -52,7 +43,7 @@ static QRectF qskBulletRect( const QskPageIndicator* indicator,
|
||||||
{
|
{
|
||||||
const auto maxHeight = n * size.height() + ( n - 1 ) * spacing;
|
const auto maxHeight = n * size.height() + ( n - 1 ) * spacing;
|
||||||
const auto r = qskAlignedRectF( rect, maxHeight, size.height(), alignment );
|
const auto r = qskAlignedRectF( rect, maxHeight, size.height(), alignment );
|
||||||
|
|
||||||
x = r.x();
|
x = r.x();
|
||||||
y = r.y() + index * ( size.height() + spacing );;
|
y = r.y() + index * ( size.height() + spacing );;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -382,7 +382,7 @@ bool QskPopup::hasFaderEffect() const
|
||||||
|
|
||||||
void QskPopup::setPopupFlags( PopupFlags flags )
|
void QskPopup::setPopupFlags( PopupFlags flags )
|
||||||
{
|
{
|
||||||
if ( static_cast<int>(flags) != m_data->flags )
|
if ( static_cast< int >( flags ) != m_data->flags )
|
||||||
{
|
{
|
||||||
m_data->flags = flags;
|
m_data->flags = flags;
|
||||||
updateInputGrabber();
|
updateInputGrabber();
|
||||||
|
|
@ -654,7 +654,7 @@ int QskPopup::execPopup()
|
||||||
if ( popup->isOpen() || popup->isFading() )
|
if ( popup->isOpen() || popup->isFading() )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QEventLoop::exit( 0 );
|
QEventLoop::exit( 0 );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -679,10 +679,10 @@ int QskPopup::execPopup()
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( auto mouseGrabber = window()->mouseGrabberItem() )
|
if ( auto mouseGrabber = window()->mouseGrabberItem() )
|
||||||
{
|
{
|
||||||
// when being called from QQuickWindow::mouseReleaseEvent
|
// when being called from QQuickWindow::mouseReleaseEvent
|
||||||
// the mouse grabber has not yet been released.
|
// the mouse grabber has not yet been released.
|
||||||
|
|
||||||
if( !qskIsAncestorOf( this, mouseGrabber ) )
|
if( !qskIsAncestorOf( this, mouseGrabber ) )
|
||||||
qskUngrabMouse( mouseGrabber );
|
qskUngrabMouse( mouseGrabber );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -649,7 +649,7 @@ void qskItemUpdateRecursive( QQuickItem* item )
|
||||||
|
|
||||||
static const QQuickPointerTouchEvent* qskPointerPressEvent( const QQuickWindowPrivate* wd )
|
static const QQuickPointerTouchEvent* qskPointerPressEvent( const QQuickWindowPrivate* wd )
|
||||||
{
|
{
|
||||||
for ( const auto event : wd->pointerEventInstances )
|
for ( const auto event : qAsConst( wd->pointerEventInstances ) )
|
||||||
{
|
{
|
||||||
if ( auto touchEvent = event->asPointerTouchEvent() )
|
if ( auto touchEvent = event->asPointerTouchEvent() )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_QUICK_H
|
#ifndef QSK_QUICK_H
|
||||||
#define QSK_QUICK_H 1
|
#define QSK_QUICK_H
|
||||||
|
|
||||||
#include "QskGlobal.h"
|
#include "QskGlobal.h"
|
||||||
#include <qnamespace.h>
|
#include <qnamespace.h>
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,21 @@
|
||||||
#include <qquickwindow.h>
|
#include <qquickwindow.h>
|
||||||
|
|
||||||
#if defined( QT_DEBUG )
|
#if defined( QT_DEBUG )
|
||||||
|
|
||||||
QSK_QT_PRIVATE_BEGIN
|
QSK_QT_PRIVATE_BEGIN
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 6, 2, 0 )
|
#if QT_VERSION >= QT_VERSION_CHECK( 6, 2, 0 )
|
||||||
#ifndef emit
|
#ifndef emit
|
||||||
// qvariantanimation_p.h needs it
|
|
||||||
#define emit
|
#define emit
|
||||||
|
#include <private/qabstractanimation_p.h>
|
||||||
|
#undef emit
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <private/qquickpositioners_p.h>
|
#include <private/qquickpositioners_p.h>
|
||||||
|
|
||||||
QSK_QT_PRIVATE_END
|
QSK_QT_PRIVATE_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
|
@ -65,6 +70,10 @@ namespace
|
||||||
QObject::connect( qskSetup, &QskSetup::itemUpdateFlagsChanged,
|
QObject::connect( qskSetup, &QskSetup::itemUpdateFlagsChanged,
|
||||||
qskSetup, [ this ] { updateControlFlags(); } );
|
qskSetup, [ this ] { updateControlFlags(); } );
|
||||||
|
|
||||||
|
/*
|
||||||
|
We would also need to send QEvent::StyleChange, when
|
||||||
|
a window has a new skin. TODO ...
|
||||||
|
*/
|
||||||
QObject::connect( qskSetup, &QskSetup::skinChanged,
|
QObject::connect( qskSetup, &QskSetup::skinChanged,
|
||||||
qskSetup, [ this ] { updateSkin(); } );
|
qskSetup, [ this ] { updateSkin(); } );
|
||||||
}
|
}
|
||||||
|
|
@ -200,9 +209,9 @@ void QskQuickItem::classBegin()
|
||||||
void QskQuickItem::componentComplete()
|
void QskQuickItem::componentComplete()
|
||||||
{
|
{
|
||||||
#if defined( QT_DEBUG )
|
#if defined( QT_DEBUG )
|
||||||
if ( qobject_cast< const QQuickBasePositioner* >( parent() ) )
|
if ( d_func()->updateFlags & QskQuickItem::DeferredLayout )
|
||||||
{
|
{
|
||||||
if ( d_func()->updateFlags & QskQuickItem::DeferredLayout )
|
if ( qobject_cast< const QQuickBasePositioner* >( parent() ) )
|
||||||
{
|
{
|
||||||
qWarning( "QskQuickItem in DeferredLayout mode under control of a positioner" );
|
qWarning( "QskQuickItem in DeferredLayout mode under control of a positioner" );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ void QskShortcutHandler::remove( int id )
|
||||||
Finally let's check if we can disconnect
|
Finally let's check if we can disconnect
|
||||||
from the destroyed signals
|
from the destroyed signals
|
||||||
*/
|
*/
|
||||||
for ( const auto& entry : qskAsConst( m_invokeDataMap ) )
|
for ( const auto& entry : qAsConst( m_invokeDataMap ) )
|
||||||
{
|
{
|
||||||
if ( item == nullptr && receiver == nullptr )
|
if ( item == nullptr && receiver == nullptr )
|
||||||
break;
|
break;
|
||||||
|
|
@ -276,7 +276,7 @@ bool QskShortcutHandler::invoke( QQuickItem* item, const QKeySequence& sequence
|
||||||
{
|
{
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
for ( const auto& entry : qskAsConst( m_invokeDataMap ) )
|
for ( const auto& entry : qAsConst( m_invokeDataMap ) )
|
||||||
{
|
{
|
||||||
auto& data = entry.second;
|
auto& data = entry.second;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -321,6 +321,20 @@ bool QskSkin::hasGraphicProvider() const
|
||||||
return m_data->graphicProviders.size() > 0;
|
return m_data->graphicProviders.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QskSkin::dialogButtonText( int action ) const
|
||||||
|
{
|
||||||
|
const auto theme = QGuiApplicationPrivate::platformTheme();
|
||||||
|
|
||||||
|
auto text = theme->standardButtonText( action );
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK( 5, 7, 0 )
|
||||||
|
text.remove( '&' );
|
||||||
|
#else
|
||||||
|
text = QPlatformTheme::removeMnemonics( text );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
const int* QskSkin::dialogButtonLayout( Qt::Orientation orientation ) const
|
const int* QskSkin::dialogButtonLayout( Qt::Orientation orientation ) const
|
||||||
{
|
{
|
||||||
// auto policy = QPlatformDialogHelper::UnknownLayout;
|
// auto policy = QPlatformDialogHelper::UnknownLayout;
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ class QSK_EXPORT QskSkin : public QObject
|
||||||
bool hasGraphicProvider() const;
|
bool hasGraphicProvider() const;
|
||||||
|
|
||||||
virtual const int* dialogButtonLayout( Qt::Orientation ) const;
|
virtual const int* dialogButtonLayout( Qt::Orientation ) const;
|
||||||
|
virtual QString dialogButtonText( int button ) const;
|
||||||
|
|
||||||
void setStateMask( QskAspect::States );
|
void setStateMask( QskAspect::States );
|
||||||
QskAspect::States stateMask() const;
|
QskAspect::States stateMask() const;
|
||||||
|
|
|
||||||
|
|
@ -244,10 +244,10 @@ void QskSkinHintTableEditor::setPosition(
|
||||||
setMetricHint( aspectPosition( aspect ), position, combination );
|
setMetricHint( aspectPosition( aspect ), position, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removePosition(
|
bool QskSkinHintTableEditor::removePosition(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeMetricHint( aspectPosition( aspect ), combination );
|
return removeMetricHint( aspectPosition( aspect ), combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal QskSkinHintTableEditor::position( QskAspect aspect ) const
|
qreal QskSkinHintTableEditor::position( QskAspect aspect ) const
|
||||||
|
|
@ -268,10 +268,10 @@ void QskSkinHintTableEditor::setStrutSize(
|
||||||
QSizeF( width, height ), combination );
|
QSizeF( width, height ), combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeStrutSize(
|
bool QskSkinHintTableEditor::removeStrutSize(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeMetricHint( aspectStrutSize( aspect ), combination );
|
return removeMetricHint( aspectStrutSize( aspect ), combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
QSizeF QskSkinHintTableEditor::strutSize( QskAspect aspect ) const
|
QSizeF QskSkinHintTableEditor::strutSize( QskAspect aspect ) const
|
||||||
|
|
@ -293,10 +293,10 @@ void QskSkinHintTableEditor::setMargin( QskAspect aspect,
|
||||||
setMetricHint( aspectMargin( aspect ), margins, combination );
|
setMetricHint( aspectMargin( aspect ), margins, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeMargin(
|
bool QskSkinHintTableEditor::removeMargin(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeMetricHint( aspectMargin( aspect ), combination );
|
return removeMetricHint( aspectMargin( aspect ), combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskMargins QskSkinHintTableEditor::margin( QskAspect aspect ) const
|
QskMargins QskSkinHintTableEditor::margin( QskAspect aspect ) const
|
||||||
|
|
@ -319,10 +319,10 @@ void QskSkinHintTableEditor::setPadding( QskAspect aspect,
|
||||||
setMetricHint( aspectPadding( aspect ), padding, combination );
|
setMetricHint( aspectPadding( aspect ), padding, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removePadding(
|
bool QskSkinHintTableEditor::removePadding(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeMetricHint( aspectPadding( aspect ), combination );
|
return removeMetricHint( aspectPadding( aspect ), combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskMargins QskSkinHintTableEditor::padding( QskAspect aspect ) const
|
QskMargins QskSkinHintTableEditor::padding( QskAspect aspect ) const
|
||||||
|
|
@ -336,10 +336,10 @@ void QskSkinHintTableEditor::setSpacing(
|
||||||
setMetricHint( aspectSpacing( aspect ), spacing, combination );
|
setMetricHint( aspectSpacing( aspect ), spacing, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeSpacing(
|
bool QskSkinHintTableEditor::removeSpacing(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeMetricHint( aspectSpacing( aspect ), combination );
|
return removeMetricHint( aspectSpacing( aspect ), combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal QskSkinHintTableEditor::spacing( QskAspect aspect ) const
|
qreal QskSkinHintTableEditor::spacing( QskAspect aspect ) const
|
||||||
|
|
@ -354,7 +354,7 @@ void QskSkinHintTableEditor::setAlignment(
|
||||||
static_cast< int >( alignment ), combination );
|
static_cast< int >( alignment ), combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeAlignment(
|
bool QskSkinHintTableEditor::removeAlignment(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
return removeFlagHint( aspectAlignment( aspect ), combination );
|
return removeFlagHint( aspectAlignment( aspect ), combination );
|
||||||
|
|
@ -371,7 +371,7 @@ void QskSkinHintTableEditor::setFontRole(
|
||||||
setFlagHint( aspectFontRole( aspect ), fontRole, combination );
|
setFlagHint( aspectFontRole( aspect ), fontRole, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeFontRole(
|
bool QskSkinHintTableEditor::removeFontRole(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
return removeFlagHint( aspectFontRole( aspect ), combination );
|
return removeFlagHint( aspectFontRole( aspect ), combination );
|
||||||
|
|
@ -388,7 +388,7 @@ void QskSkinHintTableEditor::setGraphicRole(
|
||||||
setFlagHint( aspectGraphicRole( aspect ), graphicRole, combination );
|
setFlagHint( aspectGraphicRole( aspect ), graphicRole, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeGraphicRole(
|
bool QskSkinHintTableEditor::removeGraphicRole(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
return removeFlagHint( aspectGraphicRole( aspect ), combination );
|
return removeFlagHint( aspectGraphicRole( aspect ), combination );
|
||||||
|
|
@ -421,7 +421,7 @@ void QskSkinHintTableEditor::setBoxShape(
|
||||||
setMetricHint( aspectShape( aspect ), shape, combination );
|
setMetricHint( aspectShape( aspect ), shape, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeBoxShape(
|
bool QskSkinHintTableEditor::removeBoxShape(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
return removeMetricHint( aspectShape( aspect ), combination );
|
return removeMetricHint( aspectShape( aspect ), combination );
|
||||||
|
|
@ -453,7 +453,7 @@ void QskSkinHintTableEditor::setBoxBorderMetrics(
|
||||||
setMetricHint( aspectBorder( aspect ), borderMetrics, combination );
|
setMetricHint( aspectBorder( aspect ), borderMetrics, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeBoxBorderMetric(
|
bool QskSkinHintTableEditor::removeBoxBorderMetric(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
return removeMetricHint( aspectBorder( aspect ), combination );
|
return removeMetricHint( aspectBorder( aspect ), combination );
|
||||||
|
|
@ -480,7 +480,7 @@ void QskSkinHintTableEditor::setBoxBorderColors(QskAspect aspect,
|
||||||
combination );
|
combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeBoxBorderColors(
|
bool QskSkinHintTableEditor::removeBoxBorderColors(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
return removeColorHint( aspectBorder( aspect ), combination );
|
return removeColorHint( aspectBorder( aspect ), combination );
|
||||||
|
|
@ -504,7 +504,7 @@ void QskSkinHintTableEditor::setArcMetrics( QskAspect aspect,
|
||||||
setMetricHint( aspectShape( aspect ), arcMetrics, combination );
|
setMetricHint( aspectShape( aspect ), arcMetrics, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeArcMetrics( QskAspect aspect,
|
bool QskSkinHintTableEditor::removeArcMetrics( QskAspect aspect,
|
||||||
QskStateCombination combination )
|
QskStateCombination combination )
|
||||||
{
|
{
|
||||||
return removeMetricHint( aspectShape( aspect ), combination );
|
return removeMetricHint( aspectShape( aspect ), combination );
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
template< typename T > void setFlagHint( QskAspect, const T&,
|
template< typename T > void setFlagHint( QskAspect, const T&,
|
||||||
QskStateCombination = QskStateCombination() );
|
QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeFlagHint( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeFlagHint( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QVariant flagHint( QskAspect ) const;
|
QVariant flagHint( QskAspect ) const;
|
||||||
template< typename T > T flagHint( QskAspect ) const;
|
template< typename T > T flagHint( QskAspect ) const;
|
||||||
|
|
@ -76,7 +76,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
template< typename T > void setMetricHint(
|
template< typename T > void setMetricHint(
|
||||||
QskAspect, const T&, QskStateCombination = QskStateCombination() );
|
QskAspect, const T&, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeMetricHint( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeMetricHint( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QVariant metricHint( QskAspect ) const;
|
QVariant metricHint( QskAspect ) const;
|
||||||
template< typename T > T metricHint( QskAspect ) const;
|
template< typename T > T metricHint( QskAspect ) const;
|
||||||
|
|
@ -89,7 +89,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
template< typename T > void setColorHint(
|
template< typename T > void setColorHint(
|
||||||
QskAspect, const T&, QskStateCombination = QskStateCombination() );
|
QskAspect, const T&, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeColorHint( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeColorHint( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QVariant colorHint( QskAspect ) const;
|
QVariant colorHint( QskAspect ) const;
|
||||||
template< typename T > T colorHint( QskAspect ) const;
|
template< typename T > T colorHint( QskAspect ) const;
|
||||||
|
|
@ -126,7 +126,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setPosition( QskAspect, qreal,
|
void setPosition( QskAspect, qreal,
|
||||||
QskStateCombination = QskStateCombination() );
|
QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removePosition( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removePosition( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
qreal position( QskAspect ) const;
|
qreal position( QskAspect ) const;
|
||||||
|
|
||||||
|
|
@ -138,7 +138,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setStrutSize( QskAspect, qreal width, qreal height,
|
void setStrutSize( QskAspect, qreal width, qreal height,
|
||||||
QskStateCombination = QskStateCombination() );
|
QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeStrutSize( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeStrutSize( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QSizeF strutSize( QskAspect ) const;
|
QSizeF strutSize( QskAspect ) const;
|
||||||
|
|
||||||
|
|
@ -151,7 +151,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
qreal left, qreal top, qreal right, qreal bottom,
|
qreal left, qreal top, qreal right, qreal bottom,
|
||||||
QskStateCombination = QskStateCombination() );
|
QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeMargin( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeMargin( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QskMargins margin( QskAspect ) const;
|
QskMargins margin( QskAspect ) const;
|
||||||
|
|
||||||
|
|
@ -164,32 +164,32 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
qreal left, qreal top, qreal right, qreal bottom,
|
qreal left, qreal top, qreal right, qreal bottom,
|
||||||
QskStateCombination = QskStateCombination() );
|
QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removePadding( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removePadding( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QskMargins padding( QskAspect ) const;
|
QskMargins padding( QskAspect ) const;
|
||||||
|
|
||||||
// spacing
|
// spacing
|
||||||
|
|
||||||
void setSpacing( QskAspect, qreal, QskStateCombination = QskStateCombination() );
|
void setSpacing( QskAspect, qreal, QskStateCombination = QskStateCombination() );
|
||||||
void removeSpacing( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeSpacing( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
qreal spacing( QskAspect ) const;
|
qreal spacing( QskAspect ) const;
|
||||||
|
|
||||||
// alignment
|
// alignment
|
||||||
|
|
||||||
void setAlignment( QskAspect, Qt::Alignment, QskStateCombination = QskStateCombination() );
|
void setAlignment( QskAspect, Qt::Alignment, QskStateCombination = QskStateCombination() );
|
||||||
void removeAlignment( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeAlignment( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
Qt::Alignment alignment( QskAspect ) const;
|
Qt::Alignment alignment( QskAspect ) const;
|
||||||
|
|
||||||
// fontRole
|
// fontRole
|
||||||
|
|
||||||
void setFontRole( QskAspect, int, QskStateCombination = QskStateCombination() );
|
void setFontRole( QskAspect, int, QskStateCombination = QskStateCombination() );
|
||||||
void removeFontRole( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeFontRole( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
int fontRole( QskAspect ) const;
|
int fontRole( QskAspect ) const;
|
||||||
|
|
||||||
// graphicRole
|
// graphicRole
|
||||||
|
|
||||||
void setGraphicRole( QskAspect, int, QskStateCombination = QskStateCombination() );
|
void setGraphicRole( QskAspect, int, QskStateCombination = QskStateCombination() );
|
||||||
void removeGraphicRole( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeGraphicRole( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
int graphicRole( QskAspect ) const;
|
int graphicRole( QskAspect ) const;
|
||||||
|
|
||||||
// boxShape
|
// boxShape
|
||||||
|
|
@ -202,7 +202,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setBoxShape( QskAspect, const QskBoxShapeMetrics&,
|
void setBoxShape( QskAspect, const QskBoxShapeMetrics&,
|
||||||
QskStateCombination = QskStateCombination() );
|
QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeBoxShape( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeBoxShape( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QskBoxShapeMetrics boxShape( QskAspect ) const;
|
QskBoxShapeMetrics boxShape( QskAspect ) const;
|
||||||
|
|
||||||
|
|
@ -217,7 +217,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setBoxBorderMetrics( QskAspect,
|
void setBoxBorderMetrics( QskAspect,
|
||||||
const QskBoxBorderMetrics&, QskStateCombination = QskStateCombination() );
|
const QskBoxBorderMetrics&, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeBoxBorderMetric( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeBoxBorderMetric( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QskBoxBorderMetrics boxBorderMetrics( QskAspect ) const;
|
QskBoxBorderMetrics boxBorderMetrics( QskAspect ) const;
|
||||||
|
|
||||||
|
|
@ -231,7 +231,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
const QskGradient& right, const QskGradient& bottom,
|
const QskGradient& right, const QskGradient& bottom,
|
||||||
QskStateCombination = QskStateCombination() );
|
QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeBoxBorderColors( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeBoxBorderColors( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
QskBoxBorderColors boxBorderColors( QskAspect ) const;
|
QskBoxBorderColors boxBorderColors( QskAspect ) const;
|
||||||
|
|
||||||
// arcMetrics
|
// arcMetrics
|
||||||
|
|
@ -241,7 +241,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setArcMetrics( QskAspect,
|
void setArcMetrics( QskAspect,
|
||||||
const QskArcMetrics&, QskStateCombination = QskStateCombination() );
|
const QskArcMetrics&, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
void removeArcMetrics( QskAspect, QskStateCombination = QskStateCombination() );
|
bool removeArcMetrics( QskAspect, QskStateCombination = QskStateCombination() );
|
||||||
|
|
||||||
QskArcMetrics arcMetrics( QskAspect ) const;
|
QskArcMetrics arcMetrics( QskAspect ) const;
|
||||||
|
|
||||||
|
|
@ -294,10 +294,10 @@ inline void QskSkinHintTableEditor::setFlagHint(
|
||||||
setHint( aspect | QskAspect::Flag, hint, combination );
|
setHint( aspect | QskAspect::Flag, hint, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QskSkinHintTableEditor::removeFlagHint(
|
inline bool QskSkinHintTableEditor::removeFlagHint(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeHint( aspect | QskAspect::Flag, combination );
|
return removeHint( aspect | QskAspect::Flag, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QVariant QskSkinHintTableEditor::flagHint( QskAspect aspect ) const
|
inline QVariant QskSkinHintTableEditor::flagHint( QskAspect aspect ) const
|
||||||
|
|
@ -326,10 +326,10 @@ inline void QskSkinHintTableEditor::setMetricHint(
|
||||||
setHint( aspect | QskAspect::Metric, hint, combination );
|
setHint( aspect | QskAspect::Metric, hint, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QskSkinHintTableEditor::removeMetricHint(
|
inline bool QskSkinHintTableEditor::removeMetricHint(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeHint( aspect | QskAspect::Metric, combination );
|
return removeHint( aspect | QskAspect::Metric, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QVariant QskSkinHintTableEditor::metricHint( QskAspect aspect ) const
|
inline QVariant QskSkinHintTableEditor::metricHint( QskAspect aspect ) const
|
||||||
|
|
@ -358,10 +358,10 @@ inline void QskSkinHintTableEditor::setColorHint(
|
||||||
setHint( aspect | QskAspect::Color, hint, combination );
|
setHint( aspect | QskAspect::Color, hint, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QskSkinHintTableEditor::removeColorHint(
|
inline bool QskSkinHintTableEditor::removeColorHint(
|
||||||
QskAspect aspect, QskStateCombination combination )
|
QskAspect aspect, QskStateCombination combination )
|
||||||
{
|
{
|
||||||
removeHint( aspect | QskAspect::Color, combination );
|
return removeHint( aspect | QskAspect::Color, combination );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QVariant QskSkinHintTableEditor::colorHint( QskAspect aspect ) const
|
inline QVariant QskSkinHintTableEditor::colorHint( QskAspect aspect ) const
|
||||||
|
|
|
||||||
|
|
@ -292,7 +292,7 @@ namespace
|
||||||
m_skinMap.clear();
|
m_skinMap.clear();
|
||||||
|
|
||||||
// first we try all factories, that have been added manually
|
// first we try all factories, that have been added manually
|
||||||
for ( auto it = m_factoryMap.begin(); it != m_factoryMap.end(); ++it )
|
for ( auto it = m_factoryMap.constBegin(); it != m_factoryMap.constEnd(); ++it )
|
||||||
{
|
{
|
||||||
const auto& data = it.value();
|
const auto& data = it.value();
|
||||||
|
|
||||||
|
|
@ -301,7 +301,7 @@ namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
// all factories from plugins are following
|
// all factories from plugins are following
|
||||||
for ( auto it = m_factoryMap.begin(); it != m_factoryMap.end(); ++it )
|
for ( auto it = m_factoryMap.constBegin(); it != m_factoryMap.constEnd(); ++it )
|
||||||
{
|
{
|
||||||
const auto& data = it.value();
|
const auto& data = it.value();
|
||||||
if ( data.loader )
|
if ( data.loader )
|
||||||
|
|
@ -341,7 +341,7 @@ class QskSkinManager::PrivateData
|
||||||
{
|
{
|
||||||
if ( !pluginsRegistered )
|
if ( !pluginsRegistered )
|
||||||
{
|
{
|
||||||
for ( const auto& path : qskAsConst( pluginPaths ) )
|
for ( const auto& path : qAsConst( pluginPaths ) )
|
||||||
registerPlugins( path + QStringLiteral( "/skins" ) );
|
registerPlugins( path + QStringLiteral( "/skins" ) );
|
||||||
|
|
||||||
pluginsRegistered = true;
|
pluginsRegistered = true;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,13 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||||
|
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
#include "QskSkinTransition.h"
|
#include "QskSkinTransition.h"
|
||||||
#include "QskColorFilter.h"
|
#include "QskColorFilter.h"
|
||||||
#include "QskControl.h"
|
#include "QskControl.h"
|
||||||
#include "QskWindow.h"
|
#include "QskWindow.h"
|
||||||
|
#include "QskAnimationHint.h"
|
||||||
#include "QskHintAnimator.h"
|
#include "QskHintAnimator.h"
|
||||||
#include "QskSkin.h"
|
#include "QskSkin.h"
|
||||||
#include "QskSkinHintTable.h"
|
#include "QskSkinHintTable.h"
|
||||||
|
|
@ -39,7 +45,8 @@ namespace
|
||||||
public:
|
public:
|
||||||
AnimatorCandidate() = default;
|
AnimatorCandidate() = default;
|
||||||
|
|
||||||
inline AnimatorCandidate( QskAspect aspect, QVariant from, QVariant to )
|
inline AnimatorCandidate( QskAspect aspect,
|
||||||
|
const QVariant& from, const QVariant& to )
|
||||||
: aspect( aspect )
|
: aspect( aspect )
|
||||||
, from( from )
|
, from( from )
|
||||||
, to( to )
|
, to( to )
|
||||||
|
|
@ -518,10 +525,17 @@ namespace
|
||||||
|
|
||||||
Q_GLOBAL_STATIC( AnimatorGroups, qskSkinAnimator )
|
Q_GLOBAL_STATIC( AnimatorGroups, qskSkinAnimator )
|
||||||
|
|
||||||
QskSkinTransition::QskSkinTransition()
|
class QskSkinTransition::PrivateData
|
||||||
: m_mask( QskSkinTransition::AllTypes )
|
{
|
||||||
|
public:
|
||||||
|
QskSkin* skins[ 2 ] = {};
|
||||||
|
QskAnimationHint animationHint;
|
||||||
|
Type mask = QskSkinTransition::AllTypes;
|
||||||
|
};
|
||||||
|
|
||||||
|
QskSkinTransition::QskSkinTransition()
|
||||||
|
: m_data( new PrivateData() )
|
||||||
{
|
{
|
||||||
m_skins[ 0 ] = m_skins[ 1 ] = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QskSkinTransition::~QskSkinTransition()
|
QskSkinTransition::~QskSkinTransition()
|
||||||
|
|
@ -530,42 +544,42 @@ QskSkinTransition::~QskSkinTransition()
|
||||||
|
|
||||||
void QskSkinTransition::setMask( Type type )
|
void QskSkinTransition::setMask( Type type )
|
||||||
{
|
{
|
||||||
m_mask = type;
|
m_data->mask = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskSkinTransition::Type QskSkinTransition::mask() const
|
QskSkinTransition::Type QskSkinTransition::mask() const
|
||||||
{
|
{
|
||||||
return m_mask;
|
return m_data->mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinTransition::setSourceSkin( QskSkin* skin )
|
void QskSkinTransition::setSourceSkin( QskSkin* skin )
|
||||||
{
|
{
|
||||||
m_skins[ 0 ] = skin;
|
m_data->skins[ 0 ] = skin;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskSkin* QskSkinTransition::sourceSkin() const
|
QskSkin* QskSkinTransition::sourceSkin() const
|
||||||
{
|
{
|
||||||
return m_skins[ 0 ];
|
return m_data->skins[ 0 ];
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinTransition::setTargetSkin( QskSkin* skin )
|
void QskSkinTransition::setTargetSkin( QskSkin* skin )
|
||||||
{
|
{
|
||||||
m_skins[ 1 ] = skin;
|
m_data->skins[ 1 ] = skin;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskSkin* QskSkinTransition::targetSkin() const
|
QskSkin* QskSkinTransition::targetSkin() const
|
||||||
{
|
{
|
||||||
return m_skins[ 1 ];
|
return m_data->skins[ 1 ];
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinTransition::setAnimation( QskAnimationHint animationHint )
|
void QskSkinTransition::setAnimation( QskAnimationHint animationHint )
|
||||||
{
|
{
|
||||||
m_animationHint = animationHint;
|
m_data->animationHint = animationHint;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskAnimationHint QskSkinTransition::animation() const
|
QskAnimationHint QskSkinTransition::animation() const
|
||||||
{
|
{
|
||||||
return m_animationHint;
|
return m_data->animationHint;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinTransition::updateSkin( QskSkin*, QskSkin* )
|
void QskSkinTransition::updateSkin( QskSkin*, QskSkin* )
|
||||||
|
|
@ -575,7 +589,10 @@ void QskSkinTransition::updateSkin( QskSkin*, QskSkin* )
|
||||||
|
|
||||||
void QskSkinTransition::process()
|
void QskSkinTransition::process()
|
||||||
{
|
{
|
||||||
if ( ( m_skins[ 0 ] == nullptr ) || ( m_skins[ 1 ] == nullptr ) )
|
auto skinFrom = m_data->skins[ 0 ];
|
||||||
|
auto skinTo = m_data->skins[ 1 ];
|
||||||
|
|
||||||
|
if ( ( skinFrom == nullptr ) || ( skinTo == nullptr ) )
|
||||||
{
|
{
|
||||||
// do nothing
|
// do nothing
|
||||||
return;
|
return;
|
||||||
|
|
@ -583,32 +600,32 @@ void QskSkinTransition::process()
|
||||||
|
|
||||||
qskSkinAnimator->reset();
|
qskSkinAnimator->reset();
|
||||||
|
|
||||||
if ( ( m_animationHint.duration <= 0 ) || ( m_mask == 0 ) )
|
if ( ( m_data->animationHint.duration <= 0 ) || ( m_data->mask == 0 ) )
|
||||||
{
|
{
|
||||||
// no animations, we can apply the changes
|
// no animations, we can apply the changes
|
||||||
updateSkin( m_skins[ 0 ], m_skins[ 1 ] );
|
updateSkin( skinFrom, skinTo );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector< AnimatorCandidate > candidates;
|
QVector< AnimatorCandidate > candidates;
|
||||||
const auto oldFilters = m_skins[ 0 ]->graphicFilters();
|
const auto oldFilters = skinFrom->graphicFilters();
|
||||||
|
|
||||||
{
|
{
|
||||||
// copy out all hints before updating the skin
|
// copy out all hints before updating the skin
|
||||||
// - would be good to have Copy on Write here
|
// - would be good to have Copy on Write here
|
||||||
|
|
||||||
const auto oldTable = m_skins[ 0 ]->hintTable();
|
const auto oldTable = skinFrom->hintTable();
|
||||||
|
|
||||||
// apply the changes
|
// apply the changes
|
||||||
updateSkin( m_skins[ 0 ], m_skins[ 1 ] );
|
updateSkin( skinFrom, skinTo );
|
||||||
|
|
||||||
candidates = qskAnimatorCandidates( m_mask, oldTable, oldFilters,
|
candidates = qskAnimatorCandidates( m_data->mask, oldTable, oldFilters,
|
||||||
m_skins[ 1 ]->hintTable(), m_skins[ 1 ]->graphicFilters() );
|
skinTo->hintTable(), skinTo->graphicFilters() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !candidates.isEmpty() )
|
if ( !candidates.isEmpty() )
|
||||||
{
|
{
|
||||||
bool doGraphicFilter = m_mask & QskSkinTransition::Color;
|
bool doGraphicFilter = m_data->mask & QskSkinTransition::Color;
|
||||||
|
|
||||||
const auto windows = qGuiApp->topLevelWindows();
|
const auto windows = qGuiApp->topLevelWindows();
|
||||||
|
|
||||||
|
|
@ -617,7 +634,7 @@ void QskSkinTransition::process()
|
||||||
if ( auto quickWindow = qobject_cast< QQuickWindow* >( window ) )
|
if ( auto quickWindow = qobject_cast< QQuickWindow* >( window ) )
|
||||||
{
|
{
|
||||||
if ( !quickWindow->isVisible() ||
|
if ( !quickWindow->isVisible() ||
|
||||||
( qskEffectiveSkin( quickWindow ) != m_skins[ 1 ] ) )
|
( qskEffectiveSkin( quickWindow ) != skinTo ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -627,8 +644,8 @@ void QskSkinTransition::process()
|
||||||
if ( doGraphicFilter )
|
if ( doGraphicFilter )
|
||||||
{
|
{
|
||||||
group->addGraphicFilterAnimators(
|
group->addGraphicFilterAnimators(
|
||||||
m_animationHint, oldFilters,
|
m_data->animationHint, oldFilters,
|
||||||
m_skins[ 1 ]->graphicFilters() );
|
skinTo->graphicFilters() );
|
||||||
|
|
||||||
doGraphicFilter = false;
|
doGraphicFilter = false;
|
||||||
}
|
}
|
||||||
|
|
@ -639,7 +656,7 @@ void QskSkinTransition::process()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
group->addAnimators( quickWindow->contentItem(),
|
group->addAnimators( quickWindow->contentItem(),
|
||||||
m_animationHint, candidates, m_skins[ 1 ] );
|
m_data->animationHint, candidates, skinTo );
|
||||||
|
|
||||||
qskSkinAnimator->add( group );
|
qskSkinAnimator->add( group );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
#ifndef QSK_SKIN_TRANSITION_H
|
#ifndef QSK_SKIN_TRANSITION_H
|
||||||
#define QSK_SKIN_TRANSITION_H
|
#define QSK_SKIN_TRANSITION_H
|
||||||
|
|
||||||
#include "QskAnimationHint.h"
|
|
||||||
#include "QskAspect.h"
|
#include "QskAspect.h"
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
class QskSkin;
|
class QskSkin;
|
||||||
|
class QskAnimationHint;
|
||||||
class QQuickWindow;
|
class QQuickWindow;
|
||||||
class QVariant;
|
class QVariant;
|
||||||
|
|
||||||
|
|
@ -44,9 +45,10 @@ class QSK_EXPORT QskSkinTransition
|
||||||
virtual void updateSkin( QskSkin*, QskSkin* );
|
virtual void updateSkin( QskSkin*, QskSkin* );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QskSkin* m_skins[ 2 ];
|
Q_DISABLE_COPY( QskSkinTransition )
|
||||||
QskAnimationHint m_animationHint;
|
|
||||||
Type m_mask : 2;
|
class PrivateData;
|
||||||
|
std::unique_ptr< PrivateData > m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -263,7 +263,7 @@ void QskSkinlet::updateNode( QskSkinnable* skinnable, QSGNode* parentNode ) cons
|
||||||
replaceChildNode( DebugRole, parentNode, oldNode, newNode );
|
replaceChildNode( DebugRole, parentNode, oldNode, newNode );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( const auto nodeRole : m_data->nodeRoles )
|
for ( const auto nodeRole : qAsConst( m_data->nodeRoles ) )
|
||||||
{
|
{
|
||||||
Q_ASSERT( nodeRole < FirstReservedRole );
|
Q_ASSERT( nodeRole < FirstReservedRole );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -167,6 +167,8 @@ class QSK_EXPORT QskSkinlet
|
||||||
const QSizeF& hint, const QSizeF& constraint ) const;
|
const QSizeF& hint, const QSizeF& constraint ) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Q_DISABLE_COPY( QskSkinlet )
|
||||||
|
|
||||||
class PrivateData;
|
class PrivateData;
|
||||||
std::unique_ptr< PrivateData > m_data;
|
std::unique_ptr< PrivateData > m_data;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -220,8 +220,7 @@ static inline QskAspect qskSubstitutedAspect(
|
||||||
if ( aspect.hasStates() )
|
if ( aspect.hasStates() )
|
||||||
{
|
{
|
||||||
qWarning() << "QskSkinnable::(re)setSkinHint: setting hints with states "
|
qWarning() << "QskSkinnable::(re)setSkinHint: setting hints with states "
|
||||||
"is discouraged - use QskSkinTableEditor if you are "
|
"is discouraged - use QskSkinTableEditor if you are sure, that you need this.";
|
||||||
"sure, that you need this.";
|
|
||||||
|
|
||||||
qWarning() << "QskAspect:" << aspect.stateless()
|
qWarning() << "QskAspect:" << aspect.stateless()
|
||||||
<< skinnable->skinStatesAsPrintable( aspect.states() );
|
<< skinnable->skinStatesAsPrintable( aspect.states() );
|
||||||
|
|
@ -1167,14 +1166,14 @@ bool QskSkinnable::isTransitionAccepted( QskAspect aspect ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::startTransition( QskAspect aspect,
|
void QskSkinnable::startTransition( QskAspect aspect,
|
||||||
QskAnimationHint animationHint, QVariant from, QVariant to )
|
QskAnimationHint animationHint, const QVariant& from, const QVariant& to )
|
||||||
{
|
{
|
||||||
aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) );
|
aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) );
|
||||||
startHintTransition( aspect, animationHint, from, to );
|
startHintTransition( aspect, animationHint, from, to );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::startHintTransition( QskAspect aspect,
|
void QskSkinnable::startHintTransition( QskAspect aspect,
|
||||||
QskAnimationHint animationHint, QVariant from, QVariant to )
|
QskAnimationHint animationHint, const QVariant& from, const QVariant& to )
|
||||||
{
|
{
|
||||||
if ( animationHint.duration <= 0 || ( from == to ) )
|
if ( animationHint.duration <= 0 || ( from == to ) )
|
||||||
return;
|
return;
|
||||||
|
|
@ -1189,15 +1188,18 @@ void QskSkinnable::startHintTransition( QskAspect aspect,
|
||||||
to fallback to 0.0 ). In this case we create a default one.
|
to fallback to 0.0 ). In this case we create a default one.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( !from.isValid() )
|
auto v1 = from;
|
||||||
|
auto v2 = to;
|
||||||
|
|
||||||
|
if ( !v1.isValid() )
|
||||||
{
|
{
|
||||||
from = qskTypedNullValue( to );
|
v1 = qskTypedNullValue( v2 );
|
||||||
}
|
}
|
||||||
else if ( !to.isValid() )
|
else if ( !v2.isValid() )
|
||||||
{
|
{
|
||||||
to = qskTypedNullValue( from );
|
v2 = qskTypedNullValue( v1 );
|
||||||
}
|
}
|
||||||
else if ( from.userType() != to.userType() )
|
else if ( v1.userType() != v2.userType() )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1206,8 +1208,8 @@ void QskSkinnable::startHintTransition( QskAspect aspect,
|
||||||
{
|
{
|
||||||
const auto skin = effectiveSkin();
|
const auto skin = effectiveSkin();
|
||||||
|
|
||||||
from.setValue( skin->graphicFilter( from.toInt() ) );
|
v1.setValue( skin->graphicFilter( v1.toInt() ) );
|
||||||
to.setValue( skin->graphicFilter( to.toInt() ) );
|
v2.setValue( skin->graphicFilter( v2.toInt() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
aspect.clearStates();
|
aspect.clearStates();
|
||||||
|
|
@ -1220,9 +1222,9 @@ void QskSkinnable::startHintTransition( QskAspect aspect,
|
||||||
|
|
||||||
auto animator = m_data->animators.animator( aspect );
|
auto animator = m_data->animators.animator( aspect );
|
||||||
if ( animator && animator->isRunning() )
|
if ( animator && animator->isRunning() )
|
||||||
from = animator->currentValue();
|
v1 = animator->currentValue();
|
||||||
|
|
||||||
m_data->animators.start( control, aspect, animationHint, from, to );
|
m_data->animators.start( control, aspect, animationHint, v1, v2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setSkinStateFlag( QskAspect::State stateFlag, bool on )
|
void QskSkinnable::setSkinStateFlag( QskAspect::State stateFlag, bool on )
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ class QSK_EXPORT QskSkinnable
|
||||||
QskSkin* effectiveSkin() const;
|
QskSkin* effectiveSkin() const;
|
||||||
|
|
||||||
void startTransition( QskAspect,
|
void startTransition( QskAspect,
|
||||||
QskAnimationHint, QVariant from, QVariant to );
|
QskAnimationHint, const QVariant& from, const QVariant& to );
|
||||||
|
|
||||||
QskAspect::Subcontrol effectiveSubcontrol( QskAspect::Subcontrol ) const;
|
QskAspect::Subcontrol effectiveSubcontrol( QskAspect::Subcontrol ) const;
|
||||||
|
|
||||||
|
|
@ -240,8 +240,10 @@ class QSK_EXPORT QskSkinnable
|
||||||
const QskSkinHintTable& hintTable() const;
|
const QskSkinHintTable& hintTable() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Q_DISABLE_COPY( QskSkinnable )
|
||||||
|
|
||||||
void startHintTransition( QskAspect,
|
void startHintTransition( QskAspect,
|
||||||
QskAnimationHint, QVariant from, QVariant to );
|
QskAnimationHint, const QVariant& from, const QVariant& to );
|
||||||
|
|
||||||
QVariant animatedValue( QskAspect, QskSkinHintStatus* ) const;
|
QVariant animatedValue( QskAspect, QskSkinHintStatus* ) const;
|
||||||
const QVariant& storedHint( QskAspect, QskSkinHintStatus* = nullptr ) const;
|
const QVariant& storedHint( QskAspect, QskSkinHintStatus* = nullptr ) const;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_SUB_WINDOW_H
|
#ifndef QSK_SUB_WINDOW_H
|
||||||
#define QSK_SUB_WINDOW_H 1
|
#define QSK_SUB_WINDOW_H
|
||||||
|
|
||||||
#include "QskPopup.h"
|
#include "QskPopup.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_SUB_WINDOW_AREA_H
|
#ifndef QSK_SUB_WINDOW_AREA_H
|
||||||
#define QSK_SUB_WINDOW_AREA_H 1
|
#define QSK_SUB_WINDOW_AREA_H
|
||||||
|
|
||||||
#include "QskControl.h"
|
#include "QskControl.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ namespace
|
||||||
|
|
||||||
inline QskLinearBox* buttonBox() const
|
inline QskLinearBox* buttonBox() const
|
||||||
{
|
{
|
||||||
return qobject_cast< QskLinearBox* >( childItems().first() );
|
return qobject_cast< QskLinearBox* >( childItems().constFirst() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void enableAutoTranslation( bool on )
|
void enableAutoTranslation( bool on )
|
||||||
|
|
|
||||||
|
|
@ -766,12 +766,12 @@ int QskTextInput::passwordMaskDelay() const
|
||||||
|
|
||||||
void QskTextInput::setPasswordMaskDelay( int ms )
|
void QskTextInput::setPasswordMaskDelay( int ms )
|
||||||
{
|
{
|
||||||
return m_data->textInput->setPasswordMaskDelay( ms );
|
m_data->textInput->setPasswordMaskDelay( ms );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskTextInput::resetPasswordMaskDelay()
|
void QskTextInput::resetPasswordMaskDelay()
|
||||||
{
|
{
|
||||||
return m_data->textInput->resetPasswordMaskDelay();
|
m_data->textInput->resetPasswordMaskDelay();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QskTextInput::displayText() const
|
QString QskTextInput::displayText() const
|
||||||
|
|
@ -781,7 +781,7 @@ QString QskTextInput::displayText() const
|
||||||
|
|
||||||
QString QskTextInput::preeditText() const
|
QString QskTextInput::preeditText() const
|
||||||
{
|
{
|
||||||
auto d = QQuickTextInputPrivate::get( m_data->textInput );
|
const auto d = QQuickTextInputPrivate::get( m_data->textInput );
|
||||||
return d->m_textLayout.preeditAreaText();
|
return d->m_textLayout.preeditAreaText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -816,7 +816,7 @@ QVariant QskTextInput::inputMethodQuery(
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant QskTextInput::inputMethodQuery(
|
QVariant QskTextInput::inputMethodQuery(
|
||||||
Qt::InputMethodQuery query, QVariant argument ) const
|
Qt::InputMethodQuery query, const QVariant& argument ) const
|
||||||
{
|
{
|
||||||
switch ( query )
|
switch ( query )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ class QSK_EXPORT QskTextInput : public QskControl
|
||||||
bool fixup();
|
bool fixup();
|
||||||
|
|
||||||
QVariant inputMethodQuery( Qt::InputMethodQuery ) const override;
|
QVariant inputMethodQuery( Qt::InputMethodQuery ) const override;
|
||||||
QVariant inputMethodQuery( Qt::InputMethodQuery, QVariant argument ) const;
|
QVariant inputMethodQuery( Qt::InputMethodQuery, const QVariant& argument ) const;
|
||||||
|
|
||||||
bool canUndo() const;
|
bool canUndo() const;
|
||||||
bool canRedo() const;
|
bool canRedo() const;
|
||||||
|
|
|
||||||
|
|
@ -21,14 +21,17 @@
|
||||||
#include <qvariantanimation.h>
|
#include <qvariantanimation.h>
|
||||||
|
|
||||||
QSK_QT_PRIVATE_BEGIN
|
QSK_QT_PRIVATE_BEGIN
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 6, 2, 0 )
|
#if QT_VERSION >= QT_VERSION_CHECK( 6, 2, 0 )
|
||||||
#ifndef emit
|
#ifndef emit
|
||||||
// qvariantanimation_p.h needs it
|
|
||||||
#define emit
|
#define emit
|
||||||
|
#include <private/qabstractanimation_p.h>
|
||||||
|
#undef emit
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <private/qvariantanimation_p.h>
|
#include <private/qvariantanimation_p.h>
|
||||||
|
|
||||||
QSK_QT_PRIVATE_END
|
QSK_QT_PRIVATE_END
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ static inline void qskSetVisualizationMode(
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QByteArray qskVisualizationMode( const QQuickWindow* window )
|
static inline const QByteArray& qskVisualizationMode( const QQuickWindow* window )
|
||||||
{
|
{
|
||||||
auto d = QQuickWindowPrivate::get( const_cast< QQuickWindow* >( window ) );
|
auto d = QQuickWindowPrivate::get( const_cast< QQuickWindow* >( window ) );
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 )
|
#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 )
|
||||||
|
|
@ -128,6 +128,7 @@ static inline QByteArray qskVisualizationMode( const QQuickWindow* window )
|
||||||
return d->customRenderMode;
|
return d->customRenderMode;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
class QskWindowPrivate : public QQuickWindowPrivate
|
class QskWindowPrivate : public QQuickWindowPrivate
|
||||||
{
|
{
|
||||||
Q_DECLARE_PUBLIC( QskWindow )
|
Q_DECLARE_PUBLIC( QskWindow )
|
||||||
|
|
@ -201,23 +202,6 @@ QskWindow::QskWindow( QQuickRenderControl* renderControl, QWindow* parent )
|
||||||
|
|
||||||
QskWindow::~QskWindow()
|
QskWindow::~QskWindow()
|
||||||
{
|
{
|
||||||
#if QT_VERSION < QT_VERSION_CHECK( 5, 12, 0 )
|
|
||||||
// When being used from Qml the item destruction would run in the most
|
|
||||||
// unefficient way, leading to lots of QQuickItem::ItemChildRemovedChange
|
|
||||||
// depending operations.
|
|
||||||
|
|
||||||
QVector< QPointer< QQuickItem > > items;
|
|
||||||
|
|
||||||
const auto children = contentItem()->childItems();
|
|
||||||
for ( auto child : children )
|
|
||||||
{
|
|
||||||
if ( child->parent() == contentItem() )
|
|
||||||
items += child;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( auto& item : qskAsConst( items ) )
|
|
||||||
delete item;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK( 5, 9, 0 )
|
#if QT_VERSION < QT_VERSION_CHECK( 5, 9, 0 )
|
||||||
|
|
@ -236,7 +220,8 @@ void QskWindow::setScreen( const QString& name )
|
||||||
{
|
{
|
||||||
if ( !name.isEmpty() )
|
if ( !name.isEmpty() )
|
||||||
{
|
{
|
||||||
for ( auto screen : QGuiApplication::screens() )
|
const auto screens = QGuiApplication::screens();
|
||||||
|
for ( auto screen : screens )
|
||||||
{
|
{
|
||||||
if ( screen->name() == name )
|
if ( screen->name() == name )
|
||||||
{
|
{
|
||||||
|
|
@ -579,7 +564,7 @@ void QskWindow::setCustomRenderMode( const char* mode )
|
||||||
class RenderJob final : public QRunnable
|
class RenderJob final : public QRunnable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RenderJob( QQuickWindow* window, const QByteArray mode )
|
RenderJob( QQuickWindow* window, const QByteArray& mode )
|
||||||
: m_window( window )
|
: m_window( window )
|
||||||
, m_mode( mode )
|
, m_mode( mode )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_WINDOW_H
|
#ifndef QSK_WINDOW_H
|
||||||
#define QSK_WINDOW_H 1
|
#define QSK_WINDOW_H
|
||||||
|
|
||||||
#include "QskGlobal.h"
|
#include "QskGlobal.h"
|
||||||
#include <qquickwindow.h>
|
#include <qquickwindow.h>
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
TEMPLATE = subdirs
|
|
||||||
SUBDIRS = ../
|
|
||||||
|
|
@ -19,6 +19,8 @@
|
||||||
#include <qpointer.h>
|
#include <qpointer.h>
|
||||||
#include <qquickwindow.h>
|
#include <qquickwindow.h>
|
||||||
|
|
||||||
|
#include <qpa/qplatformdialoghelper.h>
|
||||||
|
|
||||||
static QskDialog::Action qskActionCandidate( const QskDialogButtonBox* buttonBox )
|
static QskDialog::Action qskActionCandidate( const QskDialogButtonBox* buttonBox )
|
||||||
{
|
{
|
||||||
// not the fastest code ever, but usually we always
|
// not the fastest code ever, but usually we always
|
||||||
|
|
@ -45,7 +47,7 @@ static QskDialog::Action qskActionCandidate( const QskDialogButtonBox* buttonBox
|
||||||
static QskDialog::DialogCode qskExec( QskDialogWindow* dialogWindow )
|
static QskDialog::DialogCode qskExec( QskDialogWindow* dialogWindow )
|
||||||
{
|
{
|
||||||
#if 1
|
#if 1
|
||||||
QskFocusIndicator* focusIndicator = new QskFocusIndicator();
|
auto focusIndicator = new QskFocusIndicator();
|
||||||
focusIndicator->setObjectName( QStringLiteral( "DialogFocusIndicator" ) );
|
focusIndicator->setObjectName( QStringLiteral( "DialogFocusIndicator" ) );
|
||||||
dialogWindow->addItem( focusIndicator );
|
dialogWindow->addItem( focusIndicator );
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -58,7 +60,7 @@ static QQuickWindow* qskSomeQuickWindow()
|
||||||
// not the best code ever, but as it is a fallback only
|
// not the best code ever, but as it is a fallback only
|
||||||
// maybe we should also add the stacking order
|
// maybe we should also add the stacking order
|
||||||
|
|
||||||
QWindowList windows = QGuiApplication::topLevelWindows();
|
const auto windows = QGuiApplication::topLevelWindows();
|
||||||
for ( auto window : windows )
|
for ( auto window : windows )
|
||||||
{
|
{
|
||||||
if ( window->isVisible() )
|
if ( window->isVisible() )
|
||||||
|
|
@ -336,4 +338,12 @@ QString QskDialog::select(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QskDialog::ActionRole QskDialog::actionRole( Action action )
|
||||||
|
{
|
||||||
|
using Q = QPlatformDialogHelper;
|
||||||
|
|
||||||
|
const auto role = Q::buttonRole( static_cast< Q::StandardButton >( action ) );
|
||||||
|
return static_cast< ActionRole >( role );
|
||||||
|
}
|
||||||
|
|
||||||
#include "moc_QskDialog.cpp"
|
#include "moc_QskDialog.cpp"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_DIALOG_H
|
#ifndef QSK_DIALOG_H
|
||||||
#define QSK_DIALOG_H 1
|
#define QSK_DIALOG_H
|
||||||
|
|
||||||
#include "QskGlobal.h"
|
#include "QskGlobal.h"
|
||||||
|
|
||||||
|
|
@ -139,6 +139,8 @@ class QSK_EXPORT QskDialog : public QObject
|
||||||
const QString& title, const QString& text,
|
const QString& title, const QString& text,
|
||||||
const QStringList& entries, int selectedRow = 0 ) const;
|
const QStringList& entries, int selectedRow = 0 ) const;
|
||||||
|
|
||||||
|
static ActionRole actionRole( Action action );
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void transientParentChanged();
|
void transientParentChanged();
|
||||||
void policyChanged();
|
void policyChanged();
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include "QskDialogButton.h"
|
#include "QskDialogButton.h"
|
||||||
#include "QskDialogButtonBox.h"
|
#include "QskDialogButtonBox.h"
|
||||||
|
#include "QskSkin.h"
|
||||||
|
|
||||||
QSK_SUBCONTROL( QskDialogButton, Panel )
|
QSK_SUBCONTROL( QskDialogButton, Panel )
|
||||||
QSK_SUBCONTROL( QskDialogButton, Text )
|
QSK_SUBCONTROL( QskDialogButton, Text )
|
||||||
|
|
@ -15,7 +16,7 @@ QskDialogButton::QskDialogButton(
|
||||||
: QskPushButton( parent )
|
: QskPushButton( parent )
|
||||||
, m_action( action )
|
, m_action( action )
|
||||||
{
|
{
|
||||||
setText( QskDialogButtonBox::buttonText( m_action ) );
|
resetButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
QskDialogButton::QskDialogButton( QQuickItem* parent )
|
QskDialogButton::QskDialogButton( QQuickItem* parent )
|
||||||
|
|
@ -47,7 +48,7 @@ void QskDialogButton::setAction( QskDialog::Action action )
|
||||||
if ( action != m_action )
|
if ( action != m_action )
|
||||||
{
|
{
|
||||||
m_action = action;
|
m_action = action;
|
||||||
setText( QskDialogButtonBox::buttonText( m_action ) );
|
resetButton();
|
||||||
|
|
||||||
Q_EMIT actionChanged();
|
Q_EMIT actionChanged();
|
||||||
}
|
}
|
||||||
|
|
@ -60,10 +61,21 @@ QskDialog::Action QskDialogButton::action() const
|
||||||
|
|
||||||
void QskDialogButton::changeEvent( QEvent* event )
|
void QskDialogButton::changeEvent( QEvent* event )
|
||||||
{
|
{
|
||||||
if ( event->type() == QEvent::LocaleChange )
|
switch( static_cast< int >( event->type() ) )
|
||||||
setText( QskDialogButtonBox::buttonText( m_action ) );
|
{
|
||||||
|
case QEvent::LocaleChange:
|
||||||
|
case QEvent::StyleChange:
|
||||||
|
resetButton();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
Inherited::changeEvent( event );
|
Inherited::changeEvent( event );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskDialogButton::resetButton()
|
||||||
|
{
|
||||||
|
if ( const auto skin = effectiveSkin() )
|
||||||
|
setText( skin->dialogButtonText( m_action ) );
|
||||||
|
}
|
||||||
|
|
||||||
#include "moc_QskDialogButton.cpp"
|
#include "moc_QskDialogButton.cpp"
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@ class QSK_EXPORT QskDialogButton : public QskPushButton
|
||||||
QskAspect::Subcontrol ) const override;
|
QskAspect::Subcontrol ) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void resetButton();
|
||||||
|
|
||||||
QskDialog::Action m_action;
|
QskDialog::Action m_action;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,6 @@
|
||||||
#include <qvector.h>
|
#include <qvector.h>
|
||||||
|
|
||||||
#include <qpa/qplatformdialoghelper.h>
|
#include <qpa/qplatformdialoghelper.h>
|
||||||
#include <qpa/qplatformtheme.h>
|
|
||||||
|
|
||||||
QSK_QT_PRIVATE_BEGIN
|
|
||||||
#include <private/qguiapplication_p.h>
|
|
||||||
QSK_QT_PRIVATE_END
|
|
||||||
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
|
|
@ -31,14 +26,6 @@ static void qskSendEventTo( QObject* object, QEvent::Type type )
|
||||||
QCoreApplication::sendEvent( object, &event );
|
QCoreApplication::sendEvent( object, &event );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QskDialog::ActionRole qskActionRole( QskDialog::Action action )
|
|
||||||
{
|
|
||||||
const auto role = QPlatformDialogHelper::buttonRole(
|
|
||||||
static_cast< QPlatformDialogHelper::StandardButton >( action ) );
|
|
||||||
|
|
||||||
return static_cast< QskDialog::ActionRole >( role );
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
class LayoutEngine : public QskLinearLayoutEngine
|
class LayoutEngine : public QskLinearLayoutEngine
|
||||||
|
|
@ -131,7 +118,7 @@ QskDialogButtonBox::~QskDialogButtonBox()
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < QskDialog::NActionRoles; i++ )
|
for ( int i = 0; i < QskDialog::NActionRoles; i++ )
|
||||||
{
|
{
|
||||||
for ( auto button : qskAsConst( m_data->buttons[ i ] ) )
|
for ( auto button : qAsConst( m_data->buttons[ i ] ) )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
The destructor of QQuickItem sets the parentItem of
|
The destructor of QQuickItem sets the parentItem of
|
||||||
|
|
@ -346,9 +333,8 @@ void QskDialogButtonBox::addButton(
|
||||||
|
|
||||||
void QskDialogButtonBox::addAction( QskDialog::Action action )
|
void QskDialogButtonBox::addAction( QskDialog::Action action )
|
||||||
{
|
{
|
||||||
QskPushButton* button = createButton( action );
|
if ( auto button = createButton( action ) )
|
||||||
if ( button )
|
addButton( button, QskDialog::actionRole( action ) );
|
||||||
addButton( button, qskActionRole( action ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskDialogButtonBox::removeButton( QskPushButton* button )
|
void QskDialogButtonBox::removeButton( QskPushButton* button )
|
||||||
|
|
@ -579,32 +565,10 @@ void QskDialogButtonBox::itemChange(
|
||||||
|
|
||||||
bool QskDialogButtonBox::isDefaultButtonKeyEvent( const QKeyEvent* event )
|
bool QskDialogButtonBox::isDefaultButtonKeyEvent( const QKeyEvent* event )
|
||||||
{
|
{
|
||||||
if ( event->modifiers() & Qt::KeypadModifier && event->key() == Qt::Key_Enter )
|
if ( !event->modifiers() )
|
||||||
{
|
return ( event->key() == Qt::Key_Enter ) || ( event->key() == Qt::Key_Return );
|
||||||
return ( event->modifiers() & Qt::KeypadModifier )
|
|
||||||
&& ( event->key() == Qt::Key_Enter );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return ( event->key() == Qt::Key_Enter ) ||
|
|
||||||
( event->key() == Qt::Key_Return );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString QskDialogButtonBox::buttonText( QskDialog::Action action )
|
return ( event->modifiers() & Qt::KeypadModifier ) && ( event->key() == Qt::Key_Enter );
|
||||||
{
|
|
||||||
// should be redirected through the skin !
|
|
||||||
|
|
||||||
const QPlatformTheme* theme = QGuiApplicationPrivate::platformTheme();
|
|
||||||
QString text = theme->standardButtonText( action );
|
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK( 5, 7, 0 )
|
|
||||||
text.remove( '&' );
|
|
||||||
#else
|
|
||||||
text = QPlatformTheme::removeMnemonics( text );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return text;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "moc_QskDialogButtonBox.cpp"
|
#include "moc_QskDialogButtonBox.cpp"
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,6 @@ class QSK_EXPORT QskDialogButtonBox : public QskBox
|
||||||
QskPushButton* defaultButton() const;
|
QskPushButton* defaultButton() const;
|
||||||
|
|
||||||
static bool isDefaultButtonKeyEvent( const QKeyEvent* );
|
static bool isDefaultButtonKeyEvent( const QKeyEvent* );
|
||||||
static QString buttonText( QskDialog::Action );
|
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void clicked( QskPushButton* button );
|
void clicked( QskPushButton* button );
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include "QskDialogButtonBox.h"
|
#include "QskDialogButtonBox.h"
|
||||||
#include "QskPushButton.h"
|
#include "QskPushButton.h"
|
||||||
#include "QskQuick.h"
|
#include "QskQuick.h"
|
||||||
|
#include "QskEvent.h"
|
||||||
|
|
||||||
#include <qquickwindow.h>
|
#include <qquickwindow.h>
|
||||||
#include <qpointer.h>
|
#include <qpointer.h>
|
||||||
|
|
@ -280,7 +281,7 @@ void QskDialogSubWindow::keyPressEvent( QKeyEvent* event )
|
||||||
button->click();
|
button->click();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( event->matches( QKeySequence::Cancel ) )
|
if ( qskIsStandardKeyInput( event, QKeySequence::Cancel ) )
|
||||||
{
|
{
|
||||||
// using shortcuts instead ???
|
// using shortcuts instead ???
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_DIALOG_SUB_WINDOW_H
|
#ifndef QSK_DIALOG_SUB_WINDOW_H
|
||||||
#define QSK_DIALOG_SUB_WINDOW_H 1
|
#define QSK_DIALOG_SUB_WINDOW_H
|
||||||
|
|
||||||
#include "QskDialog.h"
|
#include "QskDialog.h"
|
||||||
#include "QskSubWindow.h"
|
#include "QskSubWindow.h"
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include "QskLinearBox.h"
|
#include "QskLinearBox.h"
|
||||||
#include "QskPushButton.h"
|
#include "QskPushButton.h"
|
||||||
#include "QskQuick.h"
|
#include "QskQuick.h"
|
||||||
|
#include "QskEvent.h"
|
||||||
|
|
||||||
#include <qeventloop.h>
|
#include <qeventloop.h>
|
||||||
#include <qpointer.h>
|
#include <qpointer.h>
|
||||||
|
|
@ -248,7 +249,7 @@ void QskDialogWindow::keyPressEvent( QKeyEvent* event )
|
||||||
button->click();
|
button->click();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( event->matches( QKeySequence::Cancel ) )
|
if ( qskIsStandardKeyInput( event, QKeySequence::Cancel ) )
|
||||||
{
|
{
|
||||||
// using shortcuts instead ???
|
// using shortcuts instead ???
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef QSK_DIALOG_WINDOW_H
|
#ifndef QSK_DIALOG_WINDOW_H
|
||||||
#define QSK_DIALOG_WINDOW_H 1
|
#define QSK_DIALOG_WINDOW_H
|
||||||
|
|
||||||
#include "QskDialog.h"
|
#include "QskDialog.h"
|
||||||
#include "QskWindow.h"
|
#include "QskWindow.h"
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue