qskinny/src/controls/QskTextInput.h

117 lines
2.9 KiB
C++

/******************************************************************************
* QSkinny - Copyright (C) The authors
* SPDX-License-Identifier: BSD-3-Clause
*****************************************************************************/
#ifndef QSK_TEXT_INPUT_H
#define QSK_TEXT_INPUT_H
#include "QskAbstractTextInput.h"
#include "QskTextOptions.h"
class QValidator;
class QSK_EXPORT QskTextInput : public QskAbstractTextInput
{
Q_OBJECT
Q_PROPERTY( QString displayText READ displayText NOTIFY displayTextChanged )
Q_PROPERTY( int maximumLength READ maxLength
WRITE setMaxLength NOTIFY maximumLengthChanged )
Q_PROPERTY( QString inputMask READ inputMask
WRITE setInputMask NOTIFY inputMaskChanged )
Q_PROPERTY( bool acceptableInput READ hasAcceptableInput
NOTIFY acceptableInputChanged)
Q_PROPERTY( bool autoScroll READ autoScroll
WRITE setAutoScroll NOTIFY autoScrollChanged )
Q_PROPERTY( EchoMode echoMode READ echoMode
WRITE setEchoMode NOTIFY echoModeChanged )
Q_PROPERTY( QString passwordCharacter READ passwordCharacter
WRITE setPasswordCharacter RESET resetPasswordCharacter
NOTIFY passwordCharacterChanged )
Q_PROPERTY( int passwordMaskDelay READ passwordMaskDelay
WRITE setPasswordMaskDelay RESET resetPasswordMaskDelay
NOTIFY passwordMaskDelayChanged )
Q_PROPERTY( QValidator* validator READ validator
WRITE setValidator NOTIFY validatorChanged )
using Inherited = QskAbstractTextInput;
public:
QSK_SUBCONTROLS( TextPanel )
QSK_STATES( Error )
enum EchoMode : quint8
{
Normal,
NoEcho,
Password,
PasswordEchoOnEdit
};
Q_ENUM( EchoMode )
QskTextInput( QQuickItem* parent = nullptr );
~QskTextInput() override;
int maxLength() const;
void setMaxLength( int );
QValidator* validator() const;
void setValidator( QValidator* );
QString inputMask() const;
void setInputMask( const QString& );
bool autoScroll() const;
void setAutoScroll( bool );
EchoMode echoMode() const;
void setEchoMode( EchoMode );
QString passwordCharacter() const;
void setPasswordCharacter( const QString& );
void resetPasswordCharacter();
int passwordMaskDelay() const;
void setPasswordMaskDelay( int );
void resetPasswordMaskDelay();
QString displayText() const;
bool hasAcceptableInput() const;
bool fixup();
void ensureVisible( int position );
Q_SIGNALS:
void maximumLengthChanged( int );
void autoScrollChanged( bool );
void echoModeChanged( EchoMode );
void passwordMaskDelayChanged();
void passwordCharacterChanged();
void validatorChanged( const QValidator* );
void inputMaskChanged( const QString& );
void acceptableInputChanged( bool );
void displayTextChanged();
private:
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};
#endif