区分登录与锁屏的确认按钮图标
This commit is contained in:
parent
8af2f48f49
commit
cad3d82aea
|
@ -21,7 +21,6 @@
|
|||
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
#include <QTranslator>
|
||||
#include <QPixmap>
|
||||
#include <QGSettings>
|
||||
|
||||
|
|
|
@ -223,6 +223,13 @@ void LightDMHelper::updateUsersInfo()
|
|||
bool isLoggedIn = m_modelUsers->index(i).data(QLightDM::UsersModel::LoggedInRole).toBool();
|
||||
userInfoPtr->updateLoggedIn(isLoggedIn);
|
||||
|
||||
if (m_accountServiceHelper) {
|
||||
QString strLang = m_accountServiceHelper->getUserLanguageByName(name);
|
||||
if (!strLang.isEmpty()){
|
||||
userInfoPtr->updateLang(strLang);
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasSameUser(userInfoPtr)) {
|
||||
m_listUsers.append(userInfoPtr);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
#include "languagesetting.h"
|
||||
#include <QApplication>
|
||||
#include "definetypes.h"
|
||||
#include <QDebug>
|
||||
|
||||
LanguageSetting* LanguageSetting::m_singleInstance = nullptr;
|
||||
|
||||
LanguageSetting::LanguageSetting(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
LanguageSetting::~LanguageSetting()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
LanguageSetting* LanguageSetting::instance(QObject *parent)
|
||||
{
|
||||
if(m_singleInstance == nullptr)
|
||||
m_singleInstance = new LanguageSetting(parent);
|
||||
return m_singleInstance;
|
||||
}
|
||||
|
||||
void LanguageSetting::onLanguageChanged(QString languageCode)
|
||||
{
|
||||
if(languageCode == "")
|
||||
return ;
|
||||
|
||||
if(m_strLanguageCode == languageCode) {
|
||||
return;
|
||||
}
|
||||
|
||||
qDebug()<<"onLanguageChanged "<<languageCode;
|
||||
Q_EMIT languageChanged(false);
|
||||
if (m_translator) {
|
||||
qApp->removeTranslator(m_translator);
|
||||
delete m_translator;
|
||||
m_translator = nullptr;
|
||||
}
|
||||
m_translator = new QTranslator(this);
|
||||
QString qmFile;
|
||||
|
||||
if (languageCode.startsWith("zh_CN")) { /*这里写的有问题,忘记之前为什么写了,会导致繁体也会加载zh_CN*/
|
||||
qmFile = QString(WORKING_DIRECTORY"/i18n_qm/%1.qm").arg("zh_CN");
|
||||
setenv("LANGUAGE","zh_CN",1);
|
||||
setenv("LANG","zh_CN",1);
|
||||
setlocale(LC_ALL,"zh_CN.utf8");
|
||||
QLocale lang("zh_CN");
|
||||
/*这里设置一个QLocale的默认值,用来影响插件的语言。插件加载翻译文件时,不使用QLocale::system().name()来获取语言,
|
||||
* 应该使用QLocale local; local.name() 来获取语言,这样可以识别到登录界面设置的的语言环境*/
|
||||
QLocale::setDefault(lang);
|
||||
} else {
|
||||
qmFile = QString(WORKING_DIRECTORY"/i18n_qm/%1.qm").arg(languageCode);
|
||||
setenv("LANGUAGE",languageCode.toLatin1().data(),1);
|
||||
setenv("LANG",languageCode.toLatin1().data(),1);
|
||||
setlocale(LC_ALL,"");
|
||||
QLocale lang(languageCode);
|
||||
/*这里设置一个QLocale的默认值,用来影响插件的语言。插件加载翻译文件时,不使用QLocale::system().name()来获取语言,
|
||||
* 应该使用QLocale local; local.name() 来获取语言,这样可以识别到登录界面设置的的语言环境*/
|
||||
QLocale::setDefault(languageCode);
|
||||
}
|
||||
|
||||
m_translator->load(qmFile);
|
||||
qApp->installTranslator(m_translator);
|
||||
qDebug() << "load translation file " << qmFile;
|
||||
|
||||
m_strLanguageCode = languageCode;
|
||||
Q_EMIT languageChanged(true);
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef LANGUAGESETTING_H
|
||||
#define LANGUAGESETTING_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QTranslator>
|
||||
|
||||
class LanguageSetting : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static LanguageSetting *instance(QObject *parent = nullptr);
|
||||
|
||||
void onLanguageChanged(QString languageCode);
|
||||
|
||||
Q_SIGNALS:
|
||||
void languageChanged(bool isCompleted);
|
||||
|
||||
private:
|
||||
LanguageSetting(QObject *parent = nullptr);
|
||||
virtual ~LanguageSetting();
|
||||
|
||||
private:
|
||||
static LanguageSetting *m_singleInstance;
|
||||
QTranslator *m_translator = nullptr;
|
||||
QString m_strLanguageCode;
|
||||
};
|
||||
|
||||
#endif // LANGUAGESETTING_H
|
|
@ -42,6 +42,7 @@
|
|||
#include "screensaverwndadaptor.h"
|
||||
#include "pluginsloader.h"
|
||||
#include "msysdbus.h"
|
||||
#include "languagesetting.h"
|
||||
|
||||
FullBackgroundWidget *window = nullptr;
|
||||
|
||||
|
@ -122,12 +123,7 @@ int main(int argc, char *argv[])
|
|||
qInfo()<<"Start "<<app.arguments();
|
||||
|
||||
//加载翻译文件
|
||||
QString locale = QLocale::system().name();
|
||||
QTranslator translator;
|
||||
QString qmFile = QString(WORKING_DIRECTORY"/i18n_qm/%1.qm").arg(locale);
|
||||
translator.load(qmFile);
|
||||
app.installTranslator(&translator);
|
||||
qDebug() << "load translation file " << qmFile;
|
||||
LanguageSetting::instance()->onLanguageChanged(QLocale::system().name());
|
||||
|
||||
window = new FullBackgroundWidget(lockDialogModel);
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
#include "../lock-dialog/pam-tally.h"
|
||||
#include "global_utils.h"
|
||||
|
||||
AuthDialog::AuthDialog(LockDialogModel *model, UserInfo userInfo, QWidget *parent)
|
||||
: QWidget(parent)
|
||||
|
@ -348,6 +349,26 @@ void AuthDialog::updateUI()
|
|||
"QPushButton::pressed {background-color: rgba(255,255,255,40%);}").arg((int)(77*scale)));
|
||||
m_fRetryButton->setFixedSize(154*scale, 154*scale);
|
||||
m_fRetryButton->setIconSize(QSize(48*scale, 48*scale));
|
||||
qDebug()<<"AuthDialog updateUI:"<<isGreeterMode() << ","<<m_curUserInfo.isLoggedIn();
|
||||
if (!isGreeterMode() && m_curUserInfo.isLoggedIn()) {
|
||||
QPixmap iconLogin = QIcon::fromTheme("system-lock-screen-symbolic").pixmap(12,12);
|
||||
iconLogin = drawSymbolicColoredPixmap(iconLogin, "white");
|
||||
if (m_passwordEdit) {
|
||||
m_passwordEdit->setIcon(iconLogin, iconLogin.size());
|
||||
}
|
||||
if (m_ukeyPasswordEdit) {
|
||||
m_ukeyPasswordEdit->setIcon(iconLogin, iconLogin.size());
|
||||
}
|
||||
} else {
|
||||
QPixmap iconLogin = QIcon::fromTheme("go-next-symbolic").pixmap(20,20);
|
||||
iconLogin = drawSymbolicColoredPixmap(iconLogin, "white");
|
||||
if (m_passwordEdit) {
|
||||
m_passwordEdit->setIcon(iconLogin, iconLogin.size());
|
||||
}
|
||||
if (m_ukeyPasswordEdit) {
|
||||
m_ukeyPasswordEdit->setIcon(iconLogin, iconLogin.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AuthDialog::startLoadingUkey()
|
||||
|
|
|
@ -63,12 +63,9 @@ IconEdit::IconEdit(LockDialogModel *model, QWidget *parent)
|
|||
|
||||
m_iconButton = new QPushButton(this);
|
||||
m_iconButton->installEventFilter(this);
|
||||
m_iconButton->setFixedSize(24, 24);
|
||||
m_iconButton->setIconSize(QSize(24, 24));
|
||||
m_iconButton->setFixedSize(24*scale, 24*scale);
|
||||
m_iconButton->setProperty("isRoundButton", true);
|
||||
m_iconButton->setProperty("isImportant", true);
|
||||
setIcon(QIcon::fromTheme("go-next-symbolic"));
|
||||
|
||||
|
||||
QHBoxLayout *layout = new QHBoxLayout(this);
|
||||
layout->setContentsMargins(1, 1, 8, 1);
|
||||
|
@ -141,11 +138,12 @@ bool IconEdit::eventFilter(QObject *obj, QEvent *event)
|
|||
return false;
|
||||
}
|
||||
|
||||
void IconEdit::setIcon(const QIcon &icon)
|
||||
void IconEdit::setIcon(const QIcon &icon, const QSize &size)
|
||||
{
|
||||
m_iconButton->setIcon(icon);
|
||||
m_iconButton->setText("");
|
||||
m_iconButton->setIconSize(QSize(24, 24));
|
||||
m_sizeIconBtn = size;
|
||||
m_iconButton->setIconSize(QSize(m_sizeIconBtn.width()*scale, m_sizeIconBtn.height()*scale));
|
||||
m_icon = icon;
|
||||
m_iconText = "";
|
||||
}
|
||||
|
@ -230,7 +228,7 @@ void IconEdit::stopWaiting()
|
|||
m_edit->setReadOnly(false);
|
||||
if (!m_icon.isNull()) {
|
||||
m_iconButton->setIcon(m_icon);
|
||||
m_iconButton->setIconSize(QSize(24*scale, 24*scale));
|
||||
m_iconButton->setIconSize(QSize(m_sizeIconBtn.width()*scale, m_sizeIconBtn.height()*scale));
|
||||
} else {
|
||||
m_iconButton->setText(m_iconText);
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ class IconEdit : public QWidget
|
|||
public:
|
||||
IconEdit(LockDialogModel *model,QWidget *parent = 0);
|
||||
|
||||
void setIcon(const QIcon &icon);
|
||||
void setIcon(const QIcon &icon, const QSize &size);
|
||||
void clear();
|
||||
void clearText();
|
||||
void setPrompt(const QString &);
|
||||
|
@ -79,6 +79,7 @@ private:
|
|||
QTimer *m_timer = nullptr;
|
||||
QPixmap m_waitingPixmap;
|
||||
bool m_capsState = false;
|
||||
QSize m_sizeIconBtn;
|
||||
};
|
||||
|
||||
#endif // ICONEDIT_H
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "blockwidget.h"
|
||||
#include "pluginsloader.h"
|
||||
#include "global_utils.h"
|
||||
#include "../lock-dialog/languagesetting.h"
|
||||
|
||||
#define BLUR_RADIUS 300
|
||||
#define RIGHT_MARGIN 24
|
||||
|
@ -654,9 +655,14 @@ void LockWidget::onUsersInfoChanged()
|
|||
void LockWidget::onCurUserChanged(const QString &strUserName)
|
||||
{
|
||||
UserInfoPtr ptrUser = m_modelLockDialog->findUserByName(strUserName);
|
||||
if (ptrUser && authDialog) {
|
||||
if (ptrUser) {
|
||||
m_curUserInfo = *ptrUser;
|
||||
authDialog->onCurUserChanged(m_curUserInfo);
|
||||
qDebug()<<"CurUserInfo:"<<m_curUserInfo;
|
||||
if (isGreeterMode()) {
|
||||
LanguageSetting::instance()->onLanguageChanged(m_curUserInfo.lang());
|
||||
}
|
||||
if (authDialog)
|
||||
authDialog->onCurUserChanged(m_curUserInfo);
|
||||
}
|
||||
if (m_btnItemSession && m_curUserInfo.isLoggedIn()) {
|
||||
buttonListWidget->setItemHidden(m_btnItemSession, true);
|
||||
|
|
Loading…
Reference in New Issue