parent
3235d04626
commit
028eb322db
|
@ -0,0 +1,372 @@
|
||||||
|
From: =?utf-8?b?5p2o5pWP?= <yangmin@kylinos.cn>
|
||||||
|
Date: Wed, 12 Jun 2024 08:01:24 +0000
|
||||||
|
Subject: =?utf-8?b?ITg5IOS/ruaUueWIh+aNoueUqOaIt+S4uuiwg+eUqOmUgeWxjyBNZXJn?=
|
||||||
|
=?utf-8?b?ZSBwdWxsIHJlcXVlc3QgITg5IGZyb20gbGl1ZHVuZmEvb3Blbmt5bGluL25pbGU=?=
|
||||||
|
|
||||||
|
---
|
||||||
|
src/lock-backend/dbusupperinterface.cpp | 29 ++++++++++++++++++++++-------
|
||||||
|
src/lock-backend/dbusupperinterface.h | 6 +++++-
|
||||||
|
src/lock-command/main.cpp | 9 ++++++++-
|
||||||
|
src/lock-dialog/lockdialogmodel.cpp | 11 ++++++++++-
|
||||||
|
src/lock-dialog/lockdialogmodel.h | 6 ++++++
|
||||||
|
src/lock-dialog/main.cpp | 5 +++++
|
||||||
|
src/widgets/authdialog.cpp | 9 ++-------
|
||||||
|
src/widgets/fullbackgroundwidget.cpp | 19 +++++++++++++++++++
|
||||||
|
src/widgets/fullbackgroundwidget.h | 1 +
|
||||||
|
src/widgets/klabel.cpp | 1 +
|
||||||
|
src/widgets/lockwidget.cpp | 8 ++++++--
|
||||||
|
src/widgets/lockwidget.h | 3 ++-
|
||||||
|
12 files changed, 87 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/lock-backend/dbusupperinterface.cpp b/src/lock-backend/dbusupperinterface.cpp
|
||||||
|
index 800254c..227727c 100644
|
||||||
|
--- a/src/lock-backend/dbusupperinterface.cpp
|
||||||
|
+++ b/src/lock-backend/dbusupperinterface.cpp
|
||||||
|
@@ -257,6 +257,28 @@ void DbusUpperInterface::Lock()
|
||||||
|
emitLockState(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void DbusUpperInterface::SwitchUser()
|
||||||
|
+{
|
||||||
|
+ if (GetLockState())
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ if (m_procLockDialog.state() != QProcess::NotRunning) {
|
||||||
|
+ QDBusMessage message;
|
||||||
|
+ message = QDBusMessage::createSignal(SS_DBUS_PATH, SS_DBUS_INTERFACE, "SecondRunParam");
|
||||||
|
+ message << "CmdLock";
|
||||||
|
+ QDBusConnection::sessionBus().send(message);
|
||||||
|
+ emitLockState(true);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ qDebug() << "Lock requested";
|
||||||
|
+ m_bLockState = false;
|
||||||
|
+ QString cmd = QString("/usr/bin/ukui-screensaver-dialog --switchuser");
|
||||||
|
+ qDebug() << cmd;
|
||||||
|
+
|
||||||
|
+ m_procLockDialog.start(cmd);
|
||||||
|
+ emitLockState(true);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool DbusUpperInterface::CheckAppVersion()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
@@ -420,13 +442,6 @@ void DbusUpperInterface::Logout()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-void DbusUpperInterface::SwitchUser()
|
||||||
|
-{
|
||||||
|
- if (m_sessionHelper) {
|
||||||
|
- m_sessionHelper->doAction("SwitchUser");
|
||||||
|
- }
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
void DbusUpperInterface::UnLock()
|
||||||
|
{
|
||||||
|
if (m_procLockDialog.state() != QProcess::NotRunning)
|
||||||
|
diff --git a/src/lock-backend/dbusupperinterface.h b/src/lock-backend/dbusupperinterface.h
|
||||||
|
index 036bb86..c331650 100644
|
||||||
|
--- a/src/lock-backend/dbusupperinterface.h
|
||||||
|
+++ b/src/lock-backend/dbusupperinterface.h
|
||||||
|
@@ -87,6 +87,11 @@ public:
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void Lock();
|
||||||
|
+ /**
|
||||||
|
+ * @brief SwitchUser
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+ void SwitchUser();
|
||||||
|
/**
|
||||||
|
* @brief 解锁
|
||||||
|
*
|
||||||
|
@@ -124,7 +129,6 @@ public:
|
||||||
|
void MultiUserBlockWindow(QString actionType);
|
||||||
|
void Suspend();
|
||||||
|
void Logout();
|
||||||
|
- void SwitchUser();
|
||||||
|
void Reboot();
|
||||||
|
void PowerOff();
|
||||||
|
void Hibernate();
|
||||||
|
diff --git a/src/lock-command/main.cpp b/src/lock-command/main.cpp
|
||||||
|
index f4ae2b5..e3726a0 100644
|
||||||
|
--- a/src/lock-command/main.cpp
|
||||||
|
+++ b/src/lock-command/main.cpp
|
||||||
|
@@ -61,6 +61,8 @@ int main(int argc, char **argv)
|
||||||
|
"lid");
|
||||||
|
QCommandLineOption sessiontoolsOption(
|
||||||
|
{ "t", QStringLiteral("session-tools") }, QCoreApplication::translate("main", "show the session tools"));
|
||||||
|
+ QCommandLineOption switchuserOption(
|
||||||
|
+ QStringLiteral("switchuser"), QCoreApplication::translate("main", "show the switchuser window"));
|
||||||
|
QCommandLineOption appBlockOption(
|
||||||
|
{ "a", QStringLiteral("app-block") },
|
||||||
|
QCoreApplication::translate("main", "show the app block window"),
|
||||||
|
@@ -78,13 +80,14 @@ int main(int argc, char **argv)
|
||||||
|
parser.addOption(screensaverOption);
|
||||||
|
parser.addOption(blankOption);
|
||||||
|
parser.addOption(sessiontoolsOption);
|
||||||
|
+ parser.addOption(switchuserOption);
|
||||||
|
parser.addOption(appBlockOption);
|
||||||
|
parser.addOption(multiUsersOption);
|
||||||
|
parser.process(a);
|
||||||
|
|
||||||
|
if (!parser.isSet(lockOption) && !parser.isSet(queryOption) && !parser.isSet(unlockOption)
|
||||||
|
&& !parser.isSet(screensaverOption) && !parser.isSet(blankOption) && !parser.isSet(sessiontoolsOption)
|
||||||
|
- && !parser.isSet(appBlockOption) && !parser.isSet(multiUsersOption))
|
||||||
|
+ && !parser.isSet(appBlockOption) && !parser.isSet(multiUsersOption) && !parser.isSet(switchuserOption))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
QString displayNum = QString(qgetenv("DISPLAY")).replace(":", "").replace(".", "_");
|
||||||
|
@@ -151,6 +154,10 @@ int main(int argc, char **argv)
|
||||||
|
QDBusMessage msg = interface->call("SessionTools");
|
||||||
|
if (msg.type() == QDBusMessage::ErrorMessage)
|
||||||
|
qDebug() << msg.errorMessage();
|
||||||
|
+ } else if (parser.isSet(switchuserOption) && !stateReply) {
|
||||||
|
+ QDBusMessage msg = interface->call("SwitchUser");
|
||||||
|
+ if (msg.type() == QDBusMessage::ErrorMessage)
|
||||||
|
+ qDebug() << msg.errorMessage();
|
||||||
|
} else if (parser.isSet(appBlockOption) && !stateReply) {
|
||||||
|
QString opValue = parser.value(appBlockOption);
|
||||||
|
QDBusMessage msg = interface->call("AppBlockWindow", opValue);
|
||||||
|
diff --git a/src/lock-dialog/lockdialogmodel.cpp b/src/lock-dialog/lockdialogmodel.cpp
|
||||||
|
index 653bf0e..97a6e86 100644
|
||||||
|
--- a/src/lock-dialog/lockdialogmodel.cpp
|
||||||
|
+++ b/src/lock-dialog/lockdialogmodel.cpp
|
||||||
|
@@ -67,6 +67,8 @@ bool LockDialogModel::parseCmdArguments(QStringList args, CommandLineArgs &cmdAr
|
||||||
|
"1");
|
||||||
|
QCommandLineOption sessiontoolsOption(
|
||||||
|
{ "t", QStringLiteral("session-tools") }, QCoreApplication::translate("main", "show the session tools"));
|
||||||
|
+ QCommandLineOption switchuserOption(
|
||||||
|
+ QStringLiteral("switchuser"), QGuiApplication::translate("main", "show switch user window"));
|
||||||
|
QCommandLineOption appBlockOption(
|
||||||
|
{ "a", QStringLiteral("app-block") },
|
||||||
|
QCoreApplication::translate("main", "show the app block window"),
|
||||||
|
@@ -86,6 +88,7 @@ bool LockDialogModel::parseCmdArguments(QStringList args, CommandLineArgs &cmdAr
|
||||||
|
delayOption,
|
||||||
|
hasLockOption,
|
||||||
|
sessiontoolsOption,
|
||||||
|
+ switchuserOption,
|
||||||
|
appBlockOption,
|
||||||
|
multiUsersOption });
|
||||||
|
parser.process(args);
|
||||||
|
@@ -99,7 +102,8 @@ bool LockDialogModel::parseCmdArguments(QStringList args, CommandLineArgs &cmdAr
|
||||||
|
} else {
|
||||||
|
if (!parser.isSet(sessionIdleOption) && !parser.isSet(lockOption) && !parser.isSet(lstOption)
|
||||||
|
&& !parser.isSet(screensaverOption) && !parser.isSet(lscreensaverOption) && !parser.isSet(blankOption)
|
||||||
|
- && !parser.isSet(sessiontoolsOption) && !parser.isSet(appBlockOption) && !parser.isSet(multiUsersOption)) {
|
||||||
|
+ && !parser.isSet(sessiontoolsOption) && !parser.isSet(switchuserOption)
|
||||||
|
+ && !parser.isSet(appBlockOption) && !parser.isSet(multiUsersOption)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -110,6 +114,7 @@ bool LockDialogModel::parseCmdArguments(QStringList args, CommandLineArgs &cmdAr
|
||||||
|
cmdArgs.isLockScreensaver = parser.isSet(lscreensaverOption);
|
||||||
|
cmdArgs.isBlank = parser.isSet(blankOption);
|
||||||
|
cmdArgs.isSessionTools = parser.isSet(sessiontoolsOption);
|
||||||
|
+ cmdArgs.isSwitchUser = parser.isSet(switchuserOption);
|
||||||
|
if (parser.isSet(hasLockOption)) {
|
||||||
|
int nHasLockValue = parser.value(hasLockOption).toInt();
|
||||||
|
if (nHasLockValue == 0) {
|
||||||
|
@@ -205,6 +210,10 @@ void LockDialogModel::onRunningMessage(const QString &strMsg)
|
||||||
|
Q_EMIT showMultiUsersBlockWindow(cmdArgs.isMultiUserBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (cmdArgs.isSwitchUser) {
|
||||||
|
+ Q_EMIT showSwitchUserLock();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
KillFocusOfKydroid();
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/lock-dialog/lockdialogmodel.h b/src/lock-dialog/lockdialogmodel.h
|
||||||
|
index df32779..e8bda6b 100644
|
||||||
|
--- a/src/lock-dialog/lockdialogmodel.h
|
||||||
|
+++ b/src/lock-dialog/lockdialogmodel.h
|
||||||
|
@@ -49,6 +49,7 @@ public:
|
||||||
|
bool isSessionTools = false; /**< 显示session电源管理界面*/
|
||||||
|
int isAppBlock = -1; /**< 显示应用阻塞关机/重启界面*/
|
||||||
|
int isMultiUserBlock = -1; /**< 显示多用户登录阻塞关机/重启界面*/
|
||||||
|
+ int isSwitchUser = false; /**< 显示switchuser*/
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* @brief 构造
|
||||||
|
@@ -434,6 +435,11 @@ Q_SIGNALS:
|
||||||
|
* @param isStartup 是否为开机启动 true 是,否则不是
|
||||||
|
*/
|
||||||
|
void showLock(bool isStartup);
|
||||||
|
+ /**
|
||||||
|
+ * @brief 显示SwitchUser
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+ void showSwitchUserLock();
|
||||||
|
/**
|
||||||
|
* @brief 显示会话空闲状态
|
||||||
|
*
|
||||||
|
diff --git a/src/lock-dialog/main.cpp b/src/lock-dialog/main.cpp
|
||||||
|
index 7469e11..cf8a6e6 100644
|
||||||
|
--- a/src/lock-dialog/main.cpp
|
||||||
|
+++ b/src/lock-dialog/main.cpp
|
||||||
|
@@ -126,6 +126,7 @@ int main(int argc, char *argv[])
|
||||||
|
}
|
||||||
|
|
||||||
|
LockDialogModel::CommandLineArgs cmdArgs;
|
||||||
|
+
|
||||||
|
if (!lockDialogModel->parseCmdArguments(app.arguments(), cmdArgs)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -201,6 +202,10 @@ int main(int argc, char *argv[])
|
||||||
|
Q_EMIT lockDialogModel->showMultiUsersBlockWindow(cmdArgs.isMultiUserBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (cmdArgs.isSwitchUser) {
|
||||||
|
+ Q_EMIT lockDialogModel->showSwitchUserLock();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
KillFocusOfKydroid();
|
||||||
|
|
||||||
|
return app.exec();
|
||||||
|
diff --git a/src/widgets/authdialog.cpp b/src/widgets/authdialog.cpp
|
||||||
|
index e0e9eba..e16f711 100644
|
||||||
|
--- a/src/widgets/authdialog.cpp
|
||||||
|
+++ b/src/widgets/authdialog.cpp
|
||||||
|
@@ -769,17 +769,13 @@ void AuthDialog::onPamShowMessage(QString strMsg, int nType)
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} else if (strMsg.indexOf("No password received, please input password") != -1) {
|
||||||
|
- m_messageLabel->setText(tr("Password cannot be empty"));
|
||||||
|
- m_messageLabel->setToolTip(tr("Password cannot be empty"));
|
||||||
|
+ m_messageLabel->setTipText(tr("Password cannot be empty"));
|
||||||
|
} else {
|
||||||
|
QString strText = strMsg;
|
||||||
|
if (!m_preStrMessage.isEmpty() && m_preStrMessageType != nType && m_preStrMessageType != -1) {
|
||||||
|
strText = m_preStrMessage + "," + strText;
|
||||||
|
}
|
||||||
|
- QFontMetrics font(m_messageLabel->font());
|
||||||
|
- QString strDisplay = font.elidedText(strMsg, Qt::ElideRight, m_messageLabel->width() - 8);
|
||||||
|
- m_messageLabel->setText(strDisplay);
|
||||||
|
- m_messageLabel->setToolTip(strMsg);
|
||||||
|
+ m_messageLabel->setTipText(strText);
|
||||||
|
}
|
||||||
|
m_bHasUnacknowledgedMsg = true;
|
||||||
|
}
|
||||||
|
@@ -1835,7 +1831,6 @@ void AuthDialog::setUkeyTypeTip(QString text)
|
||||||
|
// QFontMetrics font(m_ukeyMessageLabel->font());
|
||||||
|
// QString textTip = font.elidedText(textTip, Qt::ElideRight, m_messageLabel->width()-8);
|
||||||
|
m_ukeyMessageLabel->setTipText(textTip);
|
||||||
|
- m_ukeyMessageLabel->setToolTip(text);
|
||||||
|
m_ukeyMessageLabel->show();
|
||||||
|
} else {
|
||||||
|
m_ukeyMessageLabel->hide();
|
||||||
|
diff --git a/src/widgets/fullbackgroundwidget.cpp b/src/widgets/fullbackgroundwidget.cpp
|
||||||
|
index c71510e..7a5d7b2 100644
|
||||||
|
--- a/src/widgets/fullbackgroundwidget.cpp
|
||||||
|
+++ b/src/widgets/fullbackgroundwidget.cpp
|
||||||
|
@@ -200,6 +200,7 @@ void FullBackgroundWidget::initConnections()
|
||||||
|
&LockDialogModel::showMultiUsersBlockWindow,
|
||||||
|
this,
|
||||||
|
&FullBackgroundWidget::onShowMultiUsersBlockWindows);
|
||||||
|
+ connect(m_modelLockDialog, &LockDialogModel::showSwitchUserLock, this, &FullBackgroundWidget::onShowSwitchUserLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullBackgroundWidget::setLockState()
|
||||||
|
@@ -315,6 +316,24 @@ void FullBackgroundWidget::onShowLock(bool isStartup)
|
||||||
|
m_lockWidget->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
+void FullBackgroundWidget::onShowSwitchUserLock()
|
||||||
|
+{
|
||||||
|
+ if (m_isSessionTools) {
|
||||||
|
+ m_isSessionTools = false;
|
||||||
|
+ if (m_lockWidget && !m_lockWidget->isHidden())
|
||||||
|
+ m_lockWidget->exitSubWidget();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ screenStatus = (ScreenStatus)(screenStatus | SCREEN_LOCK);
|
||||||
|
+ show();
|
||||||
|
+ Q_EMIT m_modelLockDialog->setCurrentUser(m_modelLockDialog->defaultUserName());
|
||||||
|
+ Q_EMIT m_modelLockDialog->lockStateChanged(true);
|
||||||
|
+ if (m_lockWidget && !m_lockWidget->isHidden()) {
|
||||||
|
+ m_lockWidget->show();
|
||||||
|
+ m_lockWidget->onShowUserListWidget(true);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void FullBackgroundWidget::onShowSessionTools()
|
||||||
|
{
|
||||||
|
screenStatus = (ScreenStatus)(screenStatus | SCREEN_LOCK);
|
||||||
|
diff --git a/src/widgets/fullbackgroundwidget.h b/src/widgets/fullbackgroundwidget.h
|
||||||
|
index fdc17f5..cf33a73 100644
|
||||||
|
--- a/src/widgets/fullbackgroundwidget.h
|
||||||
|
+++ b/src/widgets/fullbackgroundwidget.h
|
||||||
|
@@ -83,6 +83,7 @@ public Q_SLOTS:
|
||||||
|
void onShowSessionTools();
|
||||||
|
void onShowAppBlockWindow(int actionType);
|
||||||
|
void onShowMultiUsersBlockWindows(int actionType);
|
||||||
|
+ void onShowSwitchUserLock();
|
||||||
|
|
||||||
|
void onCurUserChanged(const QString &strUserName);
|
||||||
|
void onUpdateUserBackground(const QString &strUserName);
|
||||||
|
diff --git a/src/widgets/klabel.cpp b/src/widgets/klabel.cpp
|
||||||
|
index 6d30802..5cd3c0a 100644
|
||||||
|
--- a/src/widgets/klabel.cpp
|
||||||
|
+++ b/src/widgets/klabel.cpp
|
||||||
|
@@ -89,6 +89,7 @@ void KLabel::paintEvent(QPaintEvent *event)
|
||||||
|
QLabel::setText(m_strText);
|
||||||
|
} else if (strEText != m_strText) {
|
||||||
|
QLabel::setText(strEText);
|
||||||
|
+ QLabel::setToolTip(m_strText);
|
||||||
|
}
|
||||||
|
QLabel::paintEvent(event);
|
||||||
|
}
|
||||||
|
diff --git a/src/widgets/lockwidget.cpp b/src/widgets/lockwidget.cpp
|
||||||
|
index 9d8791e..53ab590 100644
|
||||||
|
--- a/src/widgets/lockwidget.cpp
|
||||||
|
+++ b/src/widgets/lockwidget.cpp
|
||||||
|
@@ -868,12 +868,11 @@ void LockWidget::onShowBatteryWidget()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-void LockWidget::onShowUserListWidget()
|
||||||
|
+void LockWidget::onShowUserListWidget(bool show)
|
||||||
|
{
|
||||||
|
initUserWidget();
|
||||||
|
if (m_userListWidget && m_userListWidget->isHidden()) {
|
||||||
|
m_userListWidget->show();
|
||||||
|
- // m_userListWidget->setFocus();
|
||||||
|
m_userButton->setClickedStatus(CLICKED);
|
||||||
|
if (m_networkWidget && m_networkWidget->isVisible()) {
|
||||||
|
m_networkWidget->hide();
|
||||||
|
@@ -887,6 +886,11 @@ void LockWidget::onShowUserListWidget()
|
||||||
|
m_sessionListWidget->hide();
|
||||||
|
m_sessionButton->setClickedStatus(NORMAL);
|
||||||
|
}
|
||||||
|
+ m_userListWidget->onUpdateListInfo();
|
||||||
|
+ m_userListWidget->setFocus();
|
||||||
|
+ } else if (show && m_userListWidget && m_userListWidget->isVisible()) {
|
||||||
|
+ m_userListWidget->onUpdateListInfo();
|
||||||
|
+ m_userListWidget->setFocus();
|
||||||
|
} else {
|
||||||
|
m_userListWidget->hide();
|
||||||
|
m_userButton->setClickedStatus(NORMAL);
|
||||||
|
diff --git a/src/widgets/lockwidget.h b/src/widgets/lockwidget.h
|
||||||
|
index 4f4e57e..7c07485 100644
|
||||||
|
--- a/src/widgets/lockwidget.h
|
||||||
|
+++ b/src/widgets/lockwidget.h
|
||||||
|
@@ -69,6 +69,8 @@ public:
|
||||||
|
|
||||||
|
void onSwitchuserClicked();
|
||||||
|
|
||||||
|
+ void onShowUserListWidget(bool show = false);
|
||||||
|
+
|
||||||
|
protected:
|
||||||
|
void paintEvent(QPaintEvent *event);
|
||||||
|
bool eventFilter(QObject *obj, QEvent *event);
|
||||||
|
@@ -142,7 +144,6 @@ private Q_SLOTS:
|
||||||
|
|
||||||
|
void onShowSessionListWidget();
|
||||||
|
void onShowBatteryWidget();
|
||||||
|
- void onShowUserListWidget();
|
||||||
|
void onShowNetworkWidget();
|
||||||
|
void onShowVirtualKeyboard();
|
||||||
|
void onShowVirtualKeyboard(bool tabletMode);
|
|
@ -34,3 +34,4 @@
|
||||||
0034-86.patch
|
0034-86.patch
|
||||||
0035-87-fixbug.patch
|
0035-87-fixbug.patch
|
||||||
0036-88.patch
|
0036-88.patch
|
||||||
|
0037-89.patch
|
||||||
|
|
Loading…
Reference in New Issue