qskinny/src/layouts/QskLayoutItem.h

108 lines
2.6 KiB
C
Raw Normal View History

2017-07-21 18:21:34 +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_LAYOUT_ITEM_H
#define QSK_LAYOUT_ITEM_H
#include "QskGlobal.h"
2017-10-30 14:38:30 +01:00
QSK_QT_PRIVATE_BEGIN
/*
QskLayoutItem.h should be hidden into some cpp file
as it needs private headers. TODO
*/
#include <private/qgridlayoutengine_p.h>
QSK_QT_PRIVATE_END
2017-07-21 18:21:34 +02:00
class QQuickItem;
class QskLayoutItem : public QGridLayoutItem
{
using Inherited = QGridLayoutItem;
2018-08-03 08:15:28 +02:00
public:
2017-07-21 18:21:34 +02:00
enum UpdateMode
{
UpdateNone,
UpdateWhenVisible,
UpdateAlways
};
QskLayoutItem( QQuickItem* item, int row, int column,
int rowSpan = 1, int columnSpan = 1 );
QskLayoutItem( const QSizeF& size, int stretch, int row, int column );
2018-07-31 17:32:25 +02:00
~QskLayoutItem() override;
2017-07-21 18:21:34 +02:00
QQuickItem* item();
const QQuickItem* item() const;
2018-07-31 17:32:25 +02:00
QLayoutPolicy::Policy sizePolicy( Qt::Orientation ) const override final;
QSizeF sizeHint( Qt::SizeHint, const QSizeF& ) const override final;
void setGeometry( const QRectF& ) override final;
2017-07-21 18:21:34 +02:00
2018-07-31 17:32:25 +02:00
bool hasDynamicConstraint() const override final;
Qt::Orientation dynamicConstraintOrientation() const override final;
2017-07-21 18:21:34 +02:00
2018-07-31 17:32:25 +02:00
bool isIgnored() const override final;
QLayoutPolicy::ControlTypes controlTypes( LayoutSide side ) const override final;
2017-07-21 18:21:34 +02:00
bool retainSizeWhenHidden() const;
void setRetainSizeWhenHidden( bool on );
UpdateMode updateMode() const;
void setUpdateMode( UpdateMode );
QSizeF spacingHint() const;
void setSpacingHint( const QSizeF& );
bool isGeometryDirty() const;
bool hasUnlimitedSpan() const;
bool hasUnlimitedSpan( Qt::Orientation orientation ) const;
2018-08-03 08:15:28 +02:00
private:
2017-07-21 18:21:34 +02:00
bool m_isGeometryDirty : 1;
bool m_isStretchable : 1;
bool m_retainSizeWhenHidden : 1;
bool m_unlimitedRowSpan : 1;
bool m_unlimitedColumnSpan : 1;
UpdateMode m_updateMode : 2;
QSizeF m_spacingHint;
QQuickItem* m_item;
};
inline QQuickItem* QskLayoutItem::item()
{
return m_item;
}
inline const QQuickItem* QskLayoutItem::item() const
{
return m_item;
}
inline bool QskLayoutItem::isGeometryDirty() const
{
return m_isGeometryDirty;
}
inline bool QskLayoutItem::hasUnlimitedSpan( Qt::Orientation orientation ) const
{
return ( orientation == Qt::Horizontal )
? m_unlimitedColumnSpan : m_unlimitedRowSpan;
}
inline bool QskLayoutItem::hasUnlimitedSpan() const
{
return m_unlimitedColumnSpan || m_unlimitedRowSpan;
}
#endif