qskinny/src/controls/QskPopup.h

91 lines
2.2 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_POPUP_H
#define QSK_POPUP_H 1
#include "QskControl.h"
class QSK_EXPORT QskPopup : public QskControl
{
Q_OBJECT
Q_PROPERTY( bool modal READ isModal WRITE setModal NOTIFY modalChanged )
Q_PROPERTY( bool overlay READ hasOverlay WRITE setOverlay NOTIFY overlayChanged )
Q_PROPERTY( uint priority READ priority WRITE setPriority NOTIFY priorityChanged )
2017-07-21 18:21:34 +02:00
using Inherited = QskControl;
2018-08-03 08:15:28 +02:00
public:
2017-07-21 18:21:34 +02:00
QSK_SUBCONTROLS( Overlay )
2018-07-02 08:08:38 +02:00
enum PopupFlag
{
CloseOnHide = 1 << 0,
DeleteOnClose = 1 << 1,
CloseOnPressOutside = 1 << 2
};
Q_ENUM( PopupFlag )
Q_DECLARE_FLAGS( PopupFlags, PopupFlag )
2017-07-21 18:21:34 +02:00
QskPopup( QQuickItem* parent = nullptr );
2018-07-31 17:32:25 +02:00
~QskPopup() override;
2017-07-21 18:21:34 +02:00
2018-07-02 08:08:38 +02:00
void setPopupFlags( PopupFlags );
PopupFlags popupFlags() const;
void setPopupFlag( PopupFlag, bool on = true );
bool testPopupFlag( PopupFlag ) const;
void setModal( bool on = true );
bool isModal() const;
2017-07-21 18:21:34 +02:00
void setOverlay( bool on = true );
bool hasOverlay() const;
// allows for stacking according to priorities
void setPriority( uint );
uint priority() const;
2017-07-21 18:21:34 +02:00
virtual QRectF overlayRect() const;
2018-07-02 08:08:38 +02:00
bool isOpen() const;
2018-08-03 08:15:28 +02:00
public Q_SLOTS:
2018-07-02 08:08:38 +02:00
void open();
void close();
2017-07-21 18:21:34 +02:00
2018-08-03 08:15:28 +02:00
Q_SIGNALS:
2018-07-02 08:08:38 +02:00
void closed();
void modalChanged( bool );
void overlayChanged( bool );
void priorityChanged( uint );
2017-07-21 18:21:34 +02:00
2018-08-03 08:15:28 +02:00
protected:
2018-07-31 17:32:25 +02:00
void aboutToShow() override;
2018-07-02 08:08:38 +02:00
virtual void setFading( bool on );
2018-07-31 17:32:25 +02:00
bool event( QEvent* ) override;
2018-08-03 08:15:28 +02:00
void focusInEvent( QFocusEvent* ) override;
void focusOutEvent( QFocusEvent* ) override;
void windowChangeEvent( QskWindowChangeEvent* ) override;
2017-07-21 18:21:34 +02:00
2018-07-31 17:32:25 +02:00
void itemChange( QQuickItem::ItemChange,
2017-07-21 18:21:34 +02:00
const QQuickItem::ItemChangeData& ) override;
virtual QQuickItem* focusSuccessor() const;
2017-11-02 16:25:15 +01:00
void grabFocus( bool );
2018-08-03 08:15:28 +02:00
private:
2017-07-21 18:21:34 +02:00
void updateInputGrabber();
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};
#endif