区分登录与锁屏的确认按钮图标

This commit is contained in:
yangmin100 2023-12-15 17:36:19 +08:00
parent 8af2f48f49
commit cad3d82aea
9 changed files with 145 additions and 17 deletions

View File

@ -21,7 +21,6 @@
#include <QObject>
#include <QSettings>
#include <QTranslator>
#include <QPixmap>
#include <QGSettings>

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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

View File

@ -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);

View File

@ -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()

View File

@ -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);
}

View File

@ -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

View File

@ -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);