qskinny/examples/gallery/FocusIndicator.h
2023-12-01 18:43:31 +01:00

61 lines
1.3 KiB
C++

#pragma once
#include <QskFocusIndicator.h>
/*
A focus indicator, that becomes temporarily visible when using the keyboard
It is intended to move the code to QskFocusIndicator later.
*/
class FocusIndicator : public QskFocusIndicator
{
Q_OBJECT
Q_PROPERTY( bool exposed READ isExposed
WRITE setExposed NOTIFY exposedChanged )
Q_PROPERTY( int exposedTimeout READ exposedTimeout
WRITE setExposedTimeout NOTIFY exposedTimeoutChanged )
using Inherited = QskFocusIndicator;
public:
QSK_STATES( Concealed )
FocusIndicator( QQuickItem* parent = nullptr );
~FocusIndicator() override;
bool isExposed() const;
bool isConcealed() const;
bool eventFilter( QObject*, QEvent* ) override;
void setExposedTimeout( int ms );
int exposedTimeout() const;
public Q_SLOTS:
void setExposed( bool = true );
void setConcealed( bool = true );
Q_SIGNALS:
void exposedChanged( bool );
void exposedTimeoutChanged( int );
protected:
void windowChangeEvent( QskWindowChangeEvent* ) override;
void timerEvent( QTimerEvent* ) override;
private:
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};
inline void FocusIndicator::setConcealed( bool on )
{
setExposed( !on );
}
inline bool FocusIndicator::isConcealed() const
{
return !isExposed();
}