QskPopup::fading renamed to QskPopup::transitioning
This commit is contained in:
parent
4cbd0d62a5
commit
b3c7eb7412
@ -204,7 +204,7 @@ namespace
|
|||||||
bool isAcceptedPos( const QPointF& pos ) const override
|
bool isAcceptedPos( const QPointF& pos ) const override
|
||||||
{
|
{
|
||||||
auto drawer = qobject_cast< const QskDrawer* >( targetItem() );
|
auto drawer = qobject_cast< const QskDrawer* >( targetItem() );
|
||||||
if ( drawer->isFading() )
|
if ( drawer->isTransitioning() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
auto rect = qskItemRect( watchedItem() );
|
auto rect = qskItemRect( watchedItem() );
|
||||||
@ -271,7 +271,7 @@ QskDrawer::QskDrawer( QQuickItem* parentItem )
|
|||||||
setInteractive( true );
|
setInteractive( true );
|
||||||
|
|
||||||
setPopupFlag( PopupFlag::CloseOnPressOutside, true );
|
setPopupFlag( PopupFlag::CloseOnPressOutside, true );
|
||||||
setFaderAspect( Panel | QskAspect::Position | QskAspect::Metric );
|
setTransitionAspect( Panel | QskAspect::Position | QskAspect::Metric );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The drawer wants to be on top of the parent - not being
|
The drawer wants to be on top of the parent - not being
|
||||||
@ -281,8 +281,8 @@ QskDrawer::QskDrawer( QQuickItem* parentItem )
|
|||||||
setPlacementPolicy( QskPlacementPolicy::Ignore );
|
setPlacementPolicy( QskPlacementPolicy::Ignore );
|
||||||
m_data->resetListener( this );
|
m_data->resetListener( this );
|
||||||
|
|
||||||
connect( this, &QskPopup::openChanged, this, &QskDrawer::setFading );
|
connect( this, &QskPopup::openChanged, this, &QskDrawer::setSliding );
|
||||||
connect( this, &QskPopup::fadingChanged, this, &QskDrawer::setIntermediate );
|
connect( this, &QskPopup::transitioningChanged, this, &QskDrawer::setIntermediate );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskDrawer::~QskDrawer()
|
QskDrawer::~QskDrawer()
|
||||||
@ -436,8 +436,8 @@ QRectF QskDrawer::layoutRectForSize( const QSizeF& size ) const
|
|||||||
{
|
{
|
||||||
qreal ratio;
|
qreal ratio;
|
||||||
|
|
||||||
if ( isFading() )
|
if ( isTransitioning() )
|
||||||
ratio = metric( faderAspect() );
|
ratio = metric( transitionAspect() );
|
||||||
else
|
else
|
||||||
ratio = isOpen() ? 1.0 : 0.0;
|
ratio = isOpen() ? 1.0 : 0.0;
|
||||||
|
|
||||||
@ -467,15 +467,12 @@ void QskDrawer::itemChange( QQuickItem::ItemChange change,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskDrawer::setFading( bool on )
|
void QskDrawer::setSliding( bool on )
|
||||||
{
|
{
|
||||||
if ( !hasFaderEffect() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
const qreal from = on ? 0.0 : 1.0;
|
const qreal from = on ? 0.0 : 1.0;
|
||||||
const qreal to = on ? 1.0 : 0.0;
|
const qreal to = on ? 1.0 : 0.0;
|
||||||
|
|
||||||
const auto aspect = faderAspect();
|
const auto aspect = transitionAspect();
|
||||||
|
|
||||||
auto hint = animationHint( aspect );
|
auto hint = animationHint( aspect );
|
||||||
hint.updateFlags = QskAnimationHint::UpdatePolish;
|
hint.updateFlags = QskAnimationHint::UpdatePolish;
|
||||||
@ -485,7 +482,7 @@ void QskDrawer::setFading( bool on )
|
|||||||
|
|
||||||
QRectF QskDrawer::clipRect() const
|
QRectF QskDrawer::clipRect() const
|
||||||
{
|
{
|
||||||
if ( !isFading() )
|
if ( !isTransitioning() )
|
||||||
return Inherited::clipRect();
|
return Inherited::clipRect();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -534,7 +531,7 @@ void QskDrawer::setIntermediate( bool on )
|
|||||||
|
|
||||||
QRectF QskDrawer::focusIndicatorRect() const
|
QRectF QskDrawer::focusIndicatorRect() const
|
||||||
{
|
{
|
||||||
if ( isFading() )
|
if ( isTransitioning() )
|
||||||
return QRectF();
|
return QRectF();
|
||||||
|
|
||||||
return Inherited::focusIndicatorRect();
|
return Inherited::focusIndicatorRect();
|
||||||
|
@ -55,8 +55,7 @@ class QSK_EXPORT QskDrawer : public QskPopup
|
|||||||
void keyPressEvent( QKeyEvent* ) override;
|
void keyPressEvent( QKeyEvent* ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setFading( bool );
|
void setSliding( bool );
|
||||||
void setFadingClip( bool );
|
|
||||||
|
|
||||||
void setIntermediate( bool );
|
void setIntermediate( bool );
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ QskMenu::QskMenu( QQuickItem* parent )
|
|||||||
, m_data( new PrivateData )
|
, m_data( new PrivateData )
|
||||||
{
|
{
|
||||||
setModal( true );
|
setModal( true );
|
||||||
setFaderAspect( QskMenu::Panel | QskAspect::Position | QskAspect::Metric );
|
setTransitionAspect( QskMenu::Panel | QskAspect::Position | QskAspect::Metric );
|
||||||
|
|
||||||
setPopupFlag( QskPopup::CloseOnPressOutside, true );
|
setPopupFlag( QskPopup::CloseOnPressOutside, true );
|
||||||
setPopupFlag( QskPopup::DeleteOnClose, true );
|
setPopupFlag( QskPopup::DeleteOnClose, true );
|
||||||
@ -67,8 +67,8 @@ QskMenu::QskMenu( QQuickItem* parent )
|
|||||||
|
|
||||||
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Fixed );
|
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Fixed );
|
||||||
|
|
||||||
// we hide the focus indicator while fading
|
// we hide the focus indicator while sliding
|
||||||
connect( this, &QskMenu::fadingChanged, this,
|
connect( this, &QskMenu::transitioningChanged, this,
|
||||||
&QskControl::focusIndicatorRectChanged );
|
&QskControl::focusIndicatorRectChanged );
|
||||||
|
|
||||||
connect( this, &QskMenu::opened, this,
|
connect( this, &QskMenu::opened, this,
|
||||||
@ -452,7 +452,7 @@ void QskMenu::aboutToShow()
|
|||||||
|
|
||||||
QRectF QskMenu::focusIndicatorRect() const
|
QRectF QskMenu::focusIndicatorRect() const
|
||||||
{
|
{
|
||||||
if ( isFading() )
|
if ( isTransitioning() )
|
||||||
return QRectF();
|
return QRectF();
|
||||||
|
|
||||||
if( currentIndex() >= 0 )
|
if( currentIndex() >= 0 )
|
||||||
|
@ -236,7 +236,7 @@ QSGNode* QskMenuSkinlet::updateSubNode(
|
|||||||
|
|
||||||
auto slideInNode = QskSGNode::ensureNode< QskSlideInNode >( node );
|
auto slideInNode = QskSGNode::ensureNode< QskSlideInNode >( node );
|
||||||
|
|
||||||
const auto progress = popup->metric( popup->faderAspect() );
|
const auto progress = popup->metric( popup->transitionAspect() );
|
||||||
slideInNode->updateTranslation( rect, Qt::TopEdge, progress );
|
slideInNode->updateTranslation( rect, Qt::TopEdge, progress );
|
||||||
|
|
||||||
auto contentsNode = updateContentsNode( popup, slideInNode->contentsNode() );
|
auto contentsNode = updateContentsNode( popup, slideInNode->contentsNode() );
|
||||||
|
@ -130,7 +130,6 @@ class QskPopup::PrivateData
|
|||||||
PrivateData()
|
PrivateData()
|
||||||
: flags( 0 )
|
: flags( 0 )
|
||||||
, isModal( false )
|
, isModal( false )
|
||||||
, hasFaderEffect( true )
|
|
||||||
, autoGrabFocus( true )
|
, autoGrabFocus( true )
|
||||||
, handoverFocus( true )
|
, handoverFocus( true )
|
||||||
{
|
{
|
||||||
@ -139,11 +138,10 @@ class QskPopup::PrivateData
|
|||||||
InputGrabber* inputGrabber = nullptr;
|
InputGrabber* inputGrabber = nullptr;
|
||||||
|
|
||||||
uint priority = 0;
|
uint priority = 0;
|
||||||
QskAspect faderAspect;
|
QskAspect transitionAspect;
|
||||||
|
|
||||||
int flags : 4;
|
int flags : 4;
|
||||||
bool isModal : 1;
|
bool isModal : 1;
|
||||||
bool hasFaderEffect : 1;
|
|
||||||
|
|
||||||
const bool autoGrabFocus : 1;
|
const bool autoGrabFocus : 1;
|
||||||
const bool handoverFocus : 1;
|
const bool handoverFocus : 1;
|
||||||
@ -218,9 +216,9 @@ void QskPopup::setOpen( bool on )
|
|||||||
else
|
else
|
||||||
Q_EMIT closed();
|
Q_EMIT closed();
|
||||||
|
|
||||||
if ( isFading() )
|
if ( isTransitioning() )
|
||||||
{
|
{
|
||||||
Q_EMIT fadingChanged( true );
|
Q_EMIT transitioningChanged( true );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -239,13 +237,13 @@ bool QskPopup::isOpen() const
|
|||||||
return !hasSkinState( QskPopup::Closed );
|
return !hasSkinState( QskPopup::Closed );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskPopup::isFading() const
|
bool QskPopup::isTransitioning() const
|
||||||
{
|
{
|
||||||
if ( m_data->faderAspect.value() == 0 )
|
if ( m_data->transitionAspect.value() == 0 )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
QskSkinHintStatus status;
|
QskSkinHintStatus status;
|
||||||
(void) effectiveSkinHint( m_data->faderAspect, &status );
|
(void) effectiveSkinHint( m_data->transitionAspect, &status );
|
||||||
|
|
||||||
return status.source == QskSkinHintStatus::Animator;
|
return status.source == QskSkinHintStatus::Animator;
|
||||||
}
|
}
|
||||||
@ -298,37 +296,37 @@ void QskPopup::updateInputGrabber()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QskAspect QskPopup::faderAspect() const
|
QskAspect QskPopup::transitionAspect() const
|
||||||
{
|
{
|
||||||
return m_data->faderAspect;
|
return m_data->transitionAspect;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskPopup::setFaderAspect( QskAspect aspect )
|
void QskPopup::setTransitionAspect( QskAspect aspect )
|
||||||
{
|
{
|
||||||
auto faderAspect = aspect;
|
auto transitionAspect = aspect;
|
||||||
faderAspect.clearStates(); // animated values are always stateless
|
transitionAspect.clearStates(); // animated values are always stateless
|
||||||
|
|
||||||
if ( faderAspect == m_data->faderAspect )
|
if ( transitionAspect == m_data->transitionAspect )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isFading() )
|
if ( isTransitioning() )
|
||||||
{
|
{
|
||||||
// stop the running animation TODO ...
|
// stop the running animation TODO ...
|
||||||
}
|
}
|
||||||
|
|
||||||
m_data->faderAspect = faderAspect;
|
m_data->transitionAspect = transitionAspect;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskPopup::isTransitionAccepted( QskAspect aspect ) const
|
bool QskPopup::isTransitionAccepted( QskAspect aspect ) const
|
||||||
{
|
{
|
||||||
if ( isVisible() && m_data->hasFaderEffect )
|
if ( isVisible() )
|
||||||
{
|
{
|
||||||
if ( ( aspect.value() == 0 ) )
|
if ( ( aspect.value() == 0 ) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( aspect == m_data->faderAspect )
|
if ( aspect == m_data->transitionAspect )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( aspect.isColor() )
|
if ( aspect.isColor() )
|
||||||
@ -371,20 +369,6 @@ bool QskPopup::isModal() const
|
|||||||
return m_data->isModal;
|
return m_data->isModal;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskPopup::setFaderEffect( bool on )
|
|
||||||
{
|
|
||||||
if ( on != m_data->hasFaderEffect )
|
|
||||||
{
|
|
||||||
m_data->hasFaderEffect = on;
|
|
||||||
Q_EMIT faderEffectChanged( on );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool QskPopup::hasFaderEffect() const
|
|
||||||
{
|
|
||||||
return m_data->hasFaderEffect;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QskPopup::setPopupFlags( PopupFlags flags )
|
void QskPopup::setPopupFlags( PopupFlags flags )
|
||||||
{
|
{
|
||||||
const auto newFlags = static_cast< int >( flags );
|
const auto newFlags = static_cast< int >( flags );
|
||||||
@ -496,7 +480,7 @@ bool QskPopup::event( QEvent* event )
|
|||||||
const auto animtorEvent = static_cast< QskAnimatorEvent* >( event );
|
const auto animtorEvent = static_cast< QskAnimatorEvent* >( event );
|
||||||
|
|
||||||
if ( ( animtorEvent->state() == QskAnimatorEvent::Terminated )
|
if ( ( animtorEvent->state() == QskAnimatorEvent::Terminated )
|
||||||
&& ( animtorEvent->aspect() == m_data->faderAspect ) )
|
&& ( animtorEvent->aspect() == m_data->transitionAspect ) )
|
||||||
{
|
{
|
||||||
if ( !isOpen() )
|
if ( !isOpen() )
|
||||||
{
|
{
|
||||||
@ -506,7 +490,7 @@ bool QskPopup::event( QEvent* event )
|
|||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_EMIT fadingChanged( false );
|
Q_EMIT transitioningChanged( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -643,7 +627,7 @@ int QskPopup::execPopup()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
connect( popup, &QObject::destroyed, this, &EventLoop::reject );
|
connect( popup, &QObject::destroyed, this, &EventLoop::reject );
|
||||||
connect( popup, &QskPopup::fadingChanged, this, &EventLoop::maybeQuit );
|
connect( popup, &QskPopup::transitioningChanged, this, &EventLoop::maybeQuit );
|
||||||
connect( popup, &QskPopup::openChanged, this, &EventLoop::maybeQuit );
|
connect( popup, &QskPopup::openChanged, this, &EventLoop::maybeQuit );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -658,7 +642,7 @@ int QskPopup::execPopup()
|
|||||||
{
|
{
|
||||||
if ( auto popup = qobject_cast< const QskPopup* >( parent() ) )
|
if ( auto popup = qobject_cast< const QskPopup* >( parent() ) )
|
||||||
{
|
{
|
||||||
if ( popup->isOpen() || popup->isFading() )
|
if ( popup->isOpen() || popup->isTransitioning() )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -666,7 +650,7 @@ int QskPopup::execPopup()
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if ( isOpen() || isFading() )
|
if ( isOpen() || isTransitioning() )
|
||||||
{
|
{
|
||||||
qWarning() << "QskPopup::exec: popup is already opened";
|
qWarning() << "QskPopup::exec: popup is already opened";
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -14,13 +14,11 @@ class QSK_EXPORT QskPopup : public QskControl
|
|||||||
|
|
||||||
Q_PROPERTY( bool open READ isOpen WRITE setOpen NOTIFY openChanged )
|
Q_PROPERTY( bool open READ isOpen WRITE setOpen NOTIFY openChanged )
|
||||||
Q_PROPERTY( bool modal READ isModal WRITE setModal NOTIFY modalChanged )
|
Q_PROPERTY( bool modal READ isModal WRITE setModal NOTIFY modalChanged )
|
||||||
|
Q_PROPERTY( bool transitioning READ isTransitioning NOTIFY transitioningChanged )
|
||||||
|
|
||||||
Q_PROPERTY( bool overlay READ hasOverlay
|
Q_PROPERTY( bool overlay READ hasOverlay
|
||||||
WRITE setOverlay RESET resetOverlay NOTIFY overlayChanged )
|
WRITE setOverlay RESET resetOverlay NOTIFY overlayChanged )
|
||||||
|
|
||||||
Q_PROPERTY( bool faderEffect READ hasFaderEffect
|
|
||||||
WRITE setFaderEffect NOTIFY faderEffectChanged )
|
|
||||||
|
|
||||||
Q_PROPERTY( uint priority READ priority WRITE setPriority NOTIFY priorityChanged )
|
Q_PROPERTY( uint priority READ priority WRITE setPriority NOTIFY priorityChanged )
|
||||||
|
|
||||||
using Inherited = QskControl;
|
using Inherited = QskControl;
|
||||||
@ -58,16 +56,16 @@ class QSK_EXPORT QskPopup : public QskControl
|
|||||||
void setPriority( uint );
|
void setPriority( uint );
|
||||||
uint priority() const;
|
uint priority() const;
|
||||||
|
|
||||||
void setFaderEffect( bool );
|
// transitions between open/closed states
|
||||||
bool hasFaderEffect() const;
|
QskAspect transitionAspect() const;
|
||||||
|
void setTransitionAspect( QskAspect );
|
||||||
|
|
||||||
QskAspect faderAspect() const;
|
bool isTransitioning() const;
|
||||||
void setFaderAspect( QskAspect );
|
|
||||||
|
|
||||||
virtual QRectF overlayRect() const;
|
|
||||||
|
|
||||||
bool isOpen() const;
|
bool isOpen() const;
|
||||||
bool isFading() const;
|
bool isClosed() const;
|
||||||
|
|
||||||
|
virtual QRectF overlayRect() const;
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void open();
|
void open();
|
||||||
@ -80,12 +78,11 @@ class QSK_EXPORT QskPopup : public QskControl
|
|||||||
void opened();
|
void opened();
|
||||||
void closed();
|
void closed();
|
||||||
void openChanged( bool );
|
void openChanged( bool );
|
||||||
void fadingChanged( bool );
|
void transitioningChanged( bool );
|
||||||
|
|
||||||
void modalChanged( bool );
|
void modalChanged( bool );
|
||||||
void overlayChanged( bool );
|
void overlayChanged( bool );
|
||||||
void priorityChanged( uint );
|
void priorityChanged( uint );
|
||||||
void faderEffectChanged( bool );
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void aboutToShow() override;
|
void aboutToShow() override;
|
||||||
@ -115,6 +112,11 @@ class QSK_EXPORT QskPopup : public QskControl
|
|||||||
std::unique_ptr< PrivateData > m_data;
|
std::unique_ptr< PrivateData > m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline bool QskPopup::isClosed() const
|
||||||
|
{
|
||||||
|
return !isOpen();
|
||||||
|
}
|
||||||
|
|
||||||
Q_DECLARE_OPERATORS_FOR_FLAGS( QskPopup::PopupFlags )
|
Q_DECLARE_OPERATORS_FOR_FLAGS( QskPopup::PopupFlags )
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user