Add Keyboard.
This commit is contained in:
@@ -1,17 +1,67 @@
|
||||
#include "ULineEdit.h"
|
||||
#include <QEvent>
|
||||
#include "keyboard/KeyboardManager.h"
|
||||
|
||||
#include <QTimer>
|
||||
#include <QApplication>
|
||||
|
||||
#include "Keyboard/KeyboardManager.h"
|
||||
#include "ULineEditMenu.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
const int REPEAT_DELAY_TIME = 500;
|
||||
}
|
||||
|
||||
ULineEdit::ULineEdit(QWidget* aParent)
|
||||
: QLineEdit(aParent)
|
||||
, mTimer(new QTimer(this))
|
||||
{
|
||||
mTimer->setSingleShot(true);
|
||||
setFocusPolicy(Qt::ClickFocus);
|
||||
connect(mTimer, &QTimer::timeout, [this]()
|
||||
{
|
||||
selectAll();
|
||||
ULineEditMenu::getInstance()->setCurrentEdit(this);
|
||||
QPoint position = mapToGlobal(QPoint(0, 0));
|
||||
ULineEditMenu::getInstance()->move(position.x(), position.y() - ULineEditMenu::getInstance()->height());
|
||||
ULineEditMenu::getInstance()->show();
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
ULineEdit::~ULineEdit()
|
||||
{
|
||||
}
|
||||
|
||||
void ULineEdit::mouseReleaseEvent(QMouseEvent* /*aEvent*/)
|
||||
void ULineEdit::mousePressEvent(QMouseEvent* aEvent)
|
||||
{
|
||||
KeyboardManager::getInstance()->showKeyboardPanel(this);
|
||||
mTimer->start(REPEAT_DELAY_TIME);
|
||||
|
||||
QLineEdit::mousePressEvent(aEvent);
|
||||
}
|
||||
|
||||
void ULineEdit::mouseReleaseEvent(QMouseEvent* aEvent)
|
||||
{
|
||||
if (mTimer->isActive())
|
||||
{
|
||||
mTimer->stop();
|
||||
KeyboardManager::getInstance()->showKeyboard(this);
|
||||
}
|
||||
|
||||
QLineEdit::mouseReleaseEvent(aEvent);
|
||||
}
|
||||
|
||||
void ULineEdit::focusOutEvent(QFocusEvent* aEvent)
|
||||
{
|
||||
QLineEdit::focusOutEvent(aEvent);
|
||||
ULineEditMenu::getInstance()->hide();
|
||||
QWidget* widget = QApplication::focusWidget();
|
||||
if (nullptr == widget)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!widget->inherits("ULineEdit") && !widget->inherits("UTextEdit"))
|
||||
{
|
||||
KeyboardManager::getInstance()->hideKeyboard();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user