mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
refactor(loginscreen, capslockindicator): Caps Lock indicator class was made independent
This commit is contained in:
parent
6489afaf4b
commit
af497a9efd
6
qtox.pro
6
qtox.pro
|
@ -378,7 +378,8 @@ HEADERS += \
|
||||||
src/widget/tool/movablewidget.h \
|
src/widget/tool/movablewidget.h \
|
||||||
src/widget/about/aboutuser.h \
|
src/widget/about/aboutuser.h \
|
||||||
src/widget/form/groupinviteform.h \
|
src/widget/form/groupinviteform.h \
|
||||||
src/widget/tool/profileimporter.h
|
src/widget/tool/profileimporter.h \
|
||||||
|
src/widget/capslockindicator.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
src/ipc.cpp \
|
src/ipc.cpp \
|
||||||
|
@ -494,4 +495,5 @@ SOURCES += \
|
||||||
src/widget/tool/removefrienddialog.cpp \
|
src/widget/tool/removefrienddialog.cpp \
|
||||||
src/widget/about/aboutuser.cpp \
|
src/widget/about/aboutuser.cpp \
|
||||||
src/widget/form/groupinviteform.cpp \
|
src/widget/form/groupinviteform.cpp \
|
||||||
src/widget/tool/profileimporter.cpp
|
src/widget/tool/profileimporter.cpp \
|
||||||
|
src/widget/capslockindicator.cpp
|
||||||
|
|
42
src/widget/capslockindicator.cpp
Normal file
42
src/widget/capslockindicator.cpp
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#include "capslockindicator.h"
|
||||||
|
#ifdef QTOX_PLATFORM_EXT
|
||||||
|
#include "src/platform/capslock.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
CapsLockIndicator::CapsLockIndicator(QWidget *parent) : QToolButton(parent) {
|
||||||
|
inputSize = QSize(130, 23);
|
||||||
|
cleanInputStyle = parentWidget()->styleSheet();
|
||||||
|
|
||||||
|
QIcon icon = QIcon(":img/caps_lock.svg");
|
||||||
|
setIcon(icon);
|
||||||
|
QSize iconSize(inputSize.height(), inputSize.height());
|
||||||
|
setIconSize(iconSize);
|
||||||
|
setCursor(Qt::ArrowCursor);
|
||||||
|
move(inputSize.width() - inputSize.height(), 0);
|
||||||
|
setStyleSheet("border: none; padding: 0;");
|
||||||
|
setToolTip("CAPS-LOCK ENABLED");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CapsLockIndicator::show() {
|
||||||
|
QToolButton::show();
|
||||||
|
|
||||||
|
QString style = QString("padding: -3px %1px -3px -6px").arg(iconSize().width() - 3);
|
||||||
|
parentWidget()->setStyleSheet(style);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CapsLockIndicator::hide() {
|
||||||
|
QToolButton::hide();
|
||||||
|
parentWidget()->setStyleSheet(cleanInputStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CapsLockIndicator::updateIndicator() {
|
||||||
|
bool caps = false;
|
||||||
|
// It doesn't needed for OSX, because it shows indicator by default
|
||||||
|
#if defined(QTOX_PLATFORM_EXT) && !defined(Q_OS_OSX)
|
||||||
|
caps = Platform::capsLockEnabled();
|
||||||
|
#endif
|
||||||
|
if (caps)
|
||||||
|
show();
|
||||||
|
else
|
||||||
|
hide();
|
||||||
|
}
|
19
src/widget/capslockindicator.h
Normal file
19
src/widget/capslockindicator.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef CAPSLOCKINDICATOR_H
|
||||||
|
#define CAPSLOCKINDICATOR_H
|
||||||
|
|
||||||
|
#include <QToolButton>
|
||||||
|
|
||||||
|
class CapsLockIndicator : QToolButton {
|
||||||
|
public:
|
||||||
|
CapsLockIndicator(QWidget *widget);
|
||||||
|
void updateIndicator();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void show();
|
||||||
|
void hide();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString cleanInputStyle;
|
||||||
|
QSize inputSize;
|
||||||
|
};
|
||||||
|
#endif // CAPSLOCKINDICATOR_H
|
|
@ -24,9 +24,6 @@
|
||||||
#include "src/persistence/profilelocker.h"
|
#include "src/persistence/profilelocker.h"
|
||||||
#include "src/nexus.h"
|
#include "src/nexus.h"
|
||||||
#include "src/persistence/settings.h"
|
#include "src/persistence/settings.h"
|
||||||
#ifdef QTOX_PLATFORM_EXT
|
|
||||||
#include "src/platform/capslock.h"
|
|
||||||
#endif
|
|
||||||
#include "src/widget/form/setpassworddialog.h"
|
#include "src/widget/form/setpassworddialog.h"
|
||||||
#include "src/widget/translator.h"
|
#include "src/widget/translator.h"
|
||||||
#include "src/widget/style.h"
|
#include "src/widget/style.h"
|
||||||
|
@ -71,44 +68,6 @@ LoginScreen::LoginScreen(QWidget *parent) :
|
||||||
Translator::registerHandler(std::bind(&LoginScreen::retranslateUi, this), this);
|
Translator::registerHandler(std::bind(&LoginScreen::retranslateUi, this), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
LoginScreen::CapsLockIndicator::CapsLockIndicator(QWidget *parent) : QToolButton(parent) {
|
|
||||||
inputSize = QSize(130, 23);
|
|
||||||
cleanInputStyle = parentWidget()->styleSheet();
|
|
||||||
|
|
||||||
QIcon icon = QIcon(":img/caps_lock.svg");
|
|
||||||
setIcon(icon);
|
|
||||||
QSize iconSize(inputSize.height(), inputSize.height());
|
|
||||||
setIconSize(iconSize);
|
|
||||||
setCursor(Qt::ArrowCursor);
|
|
||||||
move(inputSize.width() - inputSize.height(), 0);
|
|
||||||
setStyleSheet("border: none; padding: 0;");
|
|
||||||
setToolTip(tr("CAPS-LOCK ENABLED"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoginScreen::CapsLockIndicator::show() {
|
|
||||||
QToolButton::show();
|
|
||||||
|
|
||||||
QString style = QString("padding: -3px %1px -3px -6px").arg(iconSize().width() - 3);
|
|
||||||
parentWidget()->setStyleSheet(style);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoginScreen::CapsLockIndicator::hide() {
|
|
||||||
QToolButton::hide();
|
|
||||||
parentWidget()->setStyleSheet(cleanInputStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoginScreen::CapsLockIndicator::updateIndicator() {
|
|
||||||
bool caps = false;
|
|
||||||
// It doesn't needed for OSX, because it shows indicator by default
|
|
||||||
#ifdef QTOX_PLATFORM_EXT && !defined(Q_OS_OSX)
|
|
||||||
caps = Platform::capsLockEnabled();
|
|
||||||
#endif
|
|
||||||
if (caps)
|
|
||||||
show();
|
|
||||||
else
|
|
||||||
hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
LoginScreen::~LoginScreen()
|
LoginScreen::~LoginScreen()
|
||||||
{
|
{
|
||||||
Translator::unregister(this);
|
Translator::unregister(this);
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#ifndef LOGINSCREEN_H
|
#ifndef LOGINSCREEN_H
|
||||||
#define LOGINSCREEN_H
|
#define LOGINSCREEN_H
|
||||||
|
|
||||||
|
#include "capslockindicator.h"
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QShortcut>
|
#include <QShortcut>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
@ -63,21 +64,6 @@ private:
|
||||||
void hideCapsIndicator();
|
void hideCapsIndicator();
|
||||||
void checkCapsLock();
|
void checkCapsLock();
|
||||||
|
|
||||||
private:
|
|
||||||
class CapsLockIndicator : QToolButton {
|
|
||||||
public:
|
|
||||||
CapsLockIndicator(QWidget *widget);
|
|
||||||
void updateIndicator();
|
|
||||||
|
|
||||||
private:
|
|
||||||
void show();
|
|
||||||
void hide();
|
|
||||||
|
|
||||||
private:
|
|
||||||
QString cleanInputStyle;
|
|
||||||
QSize inputSize;
|
|
||||||
};
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::LoginScreen *ui;
|
Ui::LoginScreen *ui;
|
||||||
QShortcut quitShortcut;
|
QShortcut quitShortcut;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user