qskinny/src/controls/QskControlPrivate.h

89 lines
2.3 KiB
C
Raw Normal View History

2019-09-04 06:59:43 +02:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_CONTROL_PRIVATE_H
#define QSK_CONTROL_PRIVATE_H
#include "QskGlobal.h"
#include "QskControl.h"
#include "QskQuickItemPrivate.h"
class QskControlPrivate : public QskQuickItemPrivate
{
using Inherited = QskQuickItemPrivate;
public:
static bool inheritLocale( QskControl*, const QLocale& );
static void resolveLocale( QskControl* );
2022-06-29 16:15:38 +02:00
static bool inheritSection( QskControl*, QskAspect::Section );
static void resolveSection( QskControl* );
2019-09-04 06:59:43 +02:00
protected:
QskControlPrivate();
~QskControlPrivate() override;
private:
void setExplicitSizeHint( Qt::SizeHint, const QSizeF& );
void resetExplicitSizeHint( Qt::SizeHint );
QSizeF explicitSizeHint( Qt::SizeHint ) const;
QSizeF implicitSizeHint( Qt::SizeHint, const QSizeF& ) const;
2019-09-04 06:59:43 +02:00
QSizeF implicitSizeHint() const override final;
2019-09-04 06:59:43 +02:00
void implicitSizeChanged() override final;
void layoutConstraintChanged() override final;
2019-09-04 06:59:43 +02:00
bool maybeGesture( QQuickItem*, QEvent* );
2022-04-08 16:46:20 +02:00
QskPlacementPolicy::Policy placementPolicy( bool visible ) const noexcept;
void setPlacementPolicy( bool visible, QskPlacementPolicy::Policy );
2019-09-04 06:59:43 +02:00
private:
Q_DECLARE_PUBLIC( QskControl )
QSizeF* explicitSizeHints;
QLocale locale;
2019-09-04 06:59:43 +02:00
QskSizePolicy sizePolicy;
2022-04-08 16:46:20 +02:00
unsigned int visiblePlacementPolicy : 1;
unsigned int hiddenPlacementPolicy : 2;
unsigned int layoutAlignmentHint : 8;
2022-06-29 16:15:38 +02:00
unsigned int section : 4;
2019-09-04 06:59:43 +02:00
bool explicitLocale : 1;
2022-06-29 16:15:38 +02:00
bool explicitSection : 1;
2019-09-04 06:59:43 +02:00
bool autoLayoutChildren : 1;
uint focusPolicy : 4;
bool isWheelEnabled : 1;
mutable bool blockLayoutRequestEvents : 1;
2019-09-04 06:59:43 +02:00
};
2022-04-08 16:46:20 +02:00
inline QskPlacementPolicy::Policy
QskControlPrivate::placementPolicy( const bool visible ) const noexcept
{
using PP = QskPlacementPolicy;
if ( visible )
{
if ( isTransparentForPositioner() )
return PP::Ignore;
return this->visiblePlacementPolicy ? PP::Reserve : PP::Adjust;
}
else
{
return static_cast< PP::Policy >( this->hiddenPlacementPolicy );
}
}
2019-09-04 06:59:43 +02:00
#endif