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
|
||||
0035-87-fixbug.patch
|
||||
0036-88.patch
|
||||
0037-89.patch
|
||||
|
|
Loading…
Reference in New Issue