Add SessionFrame
This commit is contained in:
parent
b4394123ab
commit
87c2f85788
|
@ -2,6 +2,18 @@ import QtQuick 2.0
|
|||
import SddmComponents 2.0
|
||||
|
||||
Rectangle {
|
||||
property int m_sessionIndex: sessionModel.lastIndex
|
||||
|
||||
readonly property int m_powerButtonSize: 40
|
||||
|
||||
function getIconByName(name) {
|
||||
for (var i = 0; i < userModel.count; i ++) {
|
||||
if (userModel.get(i).name === name) {
|
||||
return userModel.get(i).icon
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
Image {
|
||||
id: powerBackground
|
||||
|
@ -88,7 +100,7 @@ Rectangle {
|
|||
KeyNavigation.backtab: userButton; KeyNavigation.tab: shutdownButton
|
||||
Keys.onPressed: {
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||
sddm.login(userNameText.text, passwdInput.text, 1/*session.index*/)
|
||||
sddm.login(userNameText.text, passwdInput.text, m_sessionIndex)
|
||||
event.accepted = true
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +115,7 @@ Rectangle {
|
|||
// Fixme, This is vary strange
|
||||
source: "icons/login_normal.png"
|
||||
onClicked: {
|
||||
sddm.login(userNameText.text, passwdInput.text, 1/*session.index*/)
|
||||
sddm.login(userNameText.text, passwdInput.text, m_sessionIndex)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -181,34 +193,44 @@ Rectangle {
|
|||
|
||||
readonly property int itemSpacing: 20;
|
||||
|
||||
ImageButton {
|
||||
id: userButton
|
||||
visible: userModel.count > 1
|
||||
anchors {
|
||||
right: shutdownButton.left
|
||||
rightMargin: powerArea.itemSpacing
|
||||
verticalCenter: parent.verticalCenter
|
||||
Row {
|
||||
spacing: 20
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: hMargin
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
ImageButton {
|
||||
id: sessionButton
|
||||
width: m_powerButtonSize
|
||||
height: m_powerButtonSize
|
||||
visible: sessionFrame.isMultipleSessions()
|
||||
source: sessionFrame.getCurrentSessionIconPath()
|
||||
onClicked: root.state = "stateSession"
|
||||
}
|
||||
|
||||
source: "icons/switchframe/userswitch_normal.png"
|
||||
onClicked: {
|
||||
console.log("Switch User...")
|
||||
}
|
||||
}
|
||||
ImageButton {
|
||||
id: userButton
|
||||
width: m_powerButtonSize
|
||||
height: m_powerButtonSize
|
||||
visible: true//userModel.count > 1
|
||||
|
||||
ImageButton {
|
||||
id: shutdownButton
|
||||
visible: sddm.canPowerOff
|
||||
anchors {
|
||||
right: parent.right
|
||||
rightMargin: hMargin + powerArea.itemSpacing
|
||||
verticalCenter: parent.verticalCenter
|
||||
source: "icons/switchframe/userswitch_normal.png"
|
||||
onClicked: {
|
||||
console.log("Switch User...")
|
||||
}
|
||||
}
|
||||
|
||||
source: "icons/switchframe/powermenu.png"
|
||||
onClicked: {
|
||||
console.log("Show shutdown menu")
|
||||
root.state = "statePower"
|
||||
ImageButton {
|
||||
id: shutdownButton
|
||||
width: m_powerButtonSize
|
||||
height: m_powerButtonSize
|
||||
visible: true//sddm.canPowerOff
|
||||
|
||||
source: "icons/switchframe/powermenu.png"
|
||||
onClicked: {
|
||||
console.log("Show shutdown menu")
|
||||
root.state = "statePower"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
29
Main.qml
29
Main.qml
|
@ -16,30 +16,24 @@ Rectangle {
|
|||
|
||||
TextConstants { id: textConstants }
|
||||
|
||||
function getIconByName(name) {
|
||||
for (var i = 0; i < userModel.count; i ++) {
|
||||
if (userModel.get(i).name === userNameText.text) {
|
||||
return userModel.get(i).icon
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "statePower"
|
||||
PropertyChanges { target: loginFrame; opacity: 0}
|
||||
PropertyChanges { target: powerFrame; opacity: 1}
|
||||
PropertyChanges { target: sessionFrame; opacity: 0}
|
||||
},
|
||||
State {
|
||||
name: "stateSession"
|
||||
PropertyChanges { target: loginFrame; opacity: 1}
|
||||
PropertyChanges { target: loginFrame; opacity: 0}
|
||||
PropertyChanges { target: powerFrame; opacity: 0}
|
||||
PropertyChanges { target: sessionFrame; opacity: 1}
|
||||
},
|
||||
State {
|
||||
name: "stateLogin"
|
||||
PropertyChanges { target: loginFrame; opacity: 1}
|
||||
PropertyChanges { target: powerFrame; opacity: 0}
|
||||
PropertyChanges { target: sessionFrame; opacity: 0}
|
||||
}
|
||||
|
||||
]
|
||||
|
@ -63,6 +57,7 @@ Rectangle {
|
|||
|
||||
PowerFrame {
|
||||
id: powerFrame
|
||||
enabled: root.state == "statePower"
|
||||
property variant geometry: screenModel.geometry(screenModel.primary)
|
||||
x: geometry.x; y: geometry.y; width: geometry.width; height: geometry.height
|
||||
opacity: 1
|
||||
|
@ -72,8 +67,22 @@ Rectangle {
|
|||
onNeedSuspend: sddm.suspend()
|
||||
}
|
||||
|
||||
SessionFrame {
|
||||
id: sessionFrame
|
||||
enabled: root.state == "stateSession"
|
||||
property variant geometry: screenModel.geometry(screenModel.primary)
|
||||
x: geometry.x; y: geometry.y; width: geometry.width; height: geometry.height
|
||||
onSelected: {
|
||||
console.log("Selected :", index)
|
||||
root.state = "stateLogin"
|
||||
loginFrame.m_sessionIndex = index
|
||||
}
|
||||
onNeedClose: root.state = "stateLogin"
|
||||
}
|
||||
|
||||
LoginFrame {
|
||||
id: loginFrame
|
||||
enabled: root.state == "stateLogin"
|
||||
property variant geometry: screenModel.geometry(screenModel.primary)
|
||||
x: geometry.x; y: geometry.y; width: geometry.width; height: geometry.height
|
||||
color: "transparent"
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
import QtQuick 2.0
|
||||
import QtGraphicalEffects 1.0
|
||||
|
||||
Rectangle {
|
||||
id: frame
|
||||
signal selected(var index)
|
||||
signal needClose()
|
||||
|
||||
property var sessionTypeList: ["deepin", "enlightenment", "fluxbox", "gnome", "kde", "lxde", "ubuntu"]
|
||||
function getIconName(sessionName) {
|
||||
for (var item in sessionTypeList) {
|
||||
var str = sessionTypeList[item]
|
||||
var index = sessionName.toLowerCase().indexOf(str)
|
||||
if (index >= 0) {
|
||||
return str
|
||||
}
|
||||
}
|
||||
|
||||
return "unknow"
|
||||
}
|
||||
|
||||
function getCurrentSessionIconPath() {
|
||||
return sessionList.currentItem.iconPath
|
||||
}
|
||||
|
||||
function isMultipleSessions() {
|
||||
return sessionList.count > 1
|
||||
}
|
||||
|
||||
Image {
|
||||
id: sessionBackground
|
||||
anchors.fill: parent
|
||||
source: "background.jpg"
|
||||
}
|
||||
|
||||
FastBlur {
|
||||
anchors.fill: sessionBackground
|
||||
source: sessionBackground
|
||||
radius: 20
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: sessionList
|
||||
anchors.centerIn: parent
|
||||
width: childrenRect.width
|
||||
height: 80
|
||||
model: sessionModel
|
||||
currentIndex: sessionModel.lastIndex
|
||||
orientation: ListView.Horizontal
|
||||
delegate: Item {
|
||||
property string iconPath: iconButton.normalImg
|
||||
|
||||
width: 150
|
||||
height: 120
|
||||
|
||||
ImageButton {
|
||||
id: iconButton
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
property var prefix: ("icons/%1_indicator_").arg(getIconName(name));
|
||||
normalImg: ("%1normal.png").arg(prefix)
|
||||
hoverImg: ("%1hover.png").arg(prefix)
|
||||
pressImg: ("%1press.png").arg(prefix)
|
||||
onClicked: {
|
||||
selected(index)
|
||||
sessionList.currentIndex = index
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
width: parent.width
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: name
|
||||
font.pointSize: 15
|
||||
color: "white"
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
z: -1
|
||||
anchors.fill: parent
|
||||
onClicked: needClose()
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
[SddmGreeterTheme]
|
||||
Name=Deepin
|
||||
Name=SDDM Deepin
|
||||
Description=Deepin SDDM theme.
|
||||
Screenshot=screenshot.png
|
||||
License=CC-BY-SA
|
||||
|
@ -9,5 +9,5 @@ Screenshot=screenshot.png
|
|||
MainScript=Main.qml
|
||||
ConfigFile=theme.conf
|
||||
TranslationsDirectory=translations
|
||||
Theme-Id=deepin
|
||||
Theme-Id=sddm-deepin
|
||||
Theme-API=2.0
|
||||
|
|
Loading…
Reference in New Issue