[keyboardq] Move to using a Drawer
no longer use a ComboBox or stack view if accepted, other QML models using a ComboBox will move to Drawer too
This commit is contained in:
parent
065647154e
commit
7876cdc71a
15
src/modules/keyboardq/data/pan-end-symbolic.svg
Normal file
15
src/modules/keyboardq/data/pan-end-symbolic.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||||
|
<svg height="16" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" version="1.1" width="16" xmlns="http://www.w3.org/2000/svg" enable-background="new">
|
||||||
|
<metadata id="metadata90"/>
|
||||||
|
<defs id="defs7386">
|
||||||
|
<linearGradient id="linearGradient5606" osb:paint="solid">
|
||||||
|
<stop id="stop5608"/>
|
||||||
|
</linearGradient>
|
||||||
|
<filter inkscape:collect="always" color-interpolation-filters="sRGB" id="filter7554">
|
||||||
|
<feBlend inkscape:collect="always" id="feBlend7556" in2="BackgroundImage" mode="darken"/>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<g inkscape:groupmode="layer" id="layer12" inkscape:label="actions" transform="translate(-445.0002,-129)">
|
||||||
|
<path inkscape:connector-curvature="0" d="m 451.0002,142 5,-5 -5,-5 z" id="path6412" sodipodi:nodetypes="cccc" fill="#555555"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 896 B |
@ -12,7 +12,7 @@ import io.calamares.ui 1.0
|
|||||||
|
|
||||||
import QtQuick 2.15
|
import QtQuick 2.15
|
||||||
import QtQuick.Controls 2.15
|
import QtQuick.Controls 2.15
|
||||||
import QtQuick.Window 2.14
|
import QtQuick.Window 2.15
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
|
|
||||||
import org.kde.kirigami 2.7 as Kirigami
|
import org.kde.kirigami 2.7 as Kirigami
|
||||||
@ -52,6 +52,7 @@ Item {
|
|||||||
Rectangle {
|
Rectangle {
|
||||||
id: backgroundItem
|
id: backgroundItem
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
width: 800
|
||||||
color: backgroundColor
|
color: backgroundColor
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
@ -62,199 +63,244 @@ Item {
|
|||||||
font.bold: true
|
font.bold: true
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
Drawer {
|
||||||
id: intro
|
id: drawer
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
width: 0.4 * backgroundItem.width
|
||||||
anchors.top: header.bottom
|
height: backgroundItem.height
|
||||||
color: textColor
|
edge: Qt.RightEdge
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
width: parent.width / 1.2
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
text: ( config.prettyStatus)
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout {
|
ScrollView {
|
||||||
id: models
|
id: scroll1
|
||||||
anchors.top: intro.bottom
|
anchors.fill: parent
|
||||||
anchors.topMargin: 10
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
width: parent.width /1.5
|
|
||||||
spacing: 10
|
|
||||||
|
|
||||||
Label {
|
|
||||||
Layout.alignment: Qt.AlignCenter
|
|
||||||
text: qsTr("Keyboard Model:")
|
|
||||||
color: textColor
|
|
||||||
font.bold: true
|
|
||||||
}
|
|
||||||
|
|
||||||
ComboBox {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
textRole: "label"
|
|
||||||
model: config.keyboardModelsModel
|
|
||||||
currentIndex: model.currentIndex
|
|
||||||
onCurrentIndexChanged: config.keyboardModels = currentIndex
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StackView {
|
|
||||||
id: stack
|
|
||||||
anchors.top: models.bottom
|
|
||||||
anchors.topMargin: 10
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
clip: true
|
|
||||||
|
|
||||||
initialItem: Item {
|
|
||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
id: layouts
|
id: models
|
||||||
|
|
||||||
ScrollBar.vertical: ScrollBar {
|
|
||||||
active: true
|
|
||||||
}
|
|
||||||
|
|
||||||
width: parent.width / 2
|
|
||||||
height: 200
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
focus: true
|
focus: true
|
||||||
clip: true
|
clip: true
|
||||||
boundsBehavior: Flickable.StopAtBounds
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
spacing: 2
|
width: parent.width
|
||||||
|
|
||||||
Rectangle {
|
model: config.keyboardModelsModel
|
||||||
z: parent.z - 1
|
|
||||||
anchors.fill: parent
|
|
||||||
color: listBackgroundColor
|
|
||||||
opacity: 0.7
|
|
||||||
}
|
|
||||||
|
|
||||||
model: config.keyboardLayoutsModel
|
|
||||||
currentIndex: model.currentIndex
|
|
||||||
Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
|
Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
|
||||||
|
currentIndex: model.currentIndex
|
||||||
delegate: ItemDelegate {
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
property variant currentModel: model
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
width: parent.width
|
width: 0.4 * backgroundItem.width
|
||||||
height: 18
|
implicitHeight: 24
|
||||||
highlighted: ListView.isCurrentItem
|
highlighted: ListView.isCurrentItem
|
||||||
|
Label {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
width: parent.width
|
||||||
|
height: 24
|
||||||
|
color: highlighted ? "#eff0f1" : "#1F1F1F"
|
||||||
|
text: model.label
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
RowLayout {
|
color: highlighted || hovered ? "#3498DB" : "#ffffff"
|
||||||
anchors.fill: parent
|
opacity: highlighted || hovered ? 0.5 : 0.9
|
||||||
|
}
|
||||||
|
|
||||||
Label {
|
MouseArea {
|
||||||
id: label1
|
hoverEnabled: true
|
||||||
text: model.label
|
anchors.fill: parent
|
||||||
Layout.fillHeight: true
|
cursorShape: Qt.PointingHandCursor
|
||||||
Layout.fillWidth: true
|
onClicked: {
|
||||||
padding: 10
|
models.currentIndex = index
|
||||||
width: parent.width
|
drawer.close()
|
||||||
height: 32
|
|
||||||
color: highlighted ? highlightedTextColor : textColor
|
|
||||||
|
|
||||||
background: Rectangle {
|
|
||||||
color: highlighted || hovered ? highlightColor : listBackgroundColor
|
|
||||||
opacity: highlighted || hovered ? 0.5 : 0.3
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
onCurrentItemChanged: { config.keyboardModels = model[currentIndex] } /* This works because model is a stringlist */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onClicked: {
|
Rectangle {
|
||||||
|
id: modelLabel
|
||||||
|
anchors.top: header.bottom
|
||||||
|
anchors.topMargin: 10
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
width: parent.width / 1.5
|
||||||
|
height: 36
|
||||||
|
color: mouseBar.containsMouse ? "#eff0f1" : "transparent";
|
||||||
|
|
||||||
layouts.model.currentIndex = index
|
MouseArea {
|
||||||
keyIndex = label1.text.substring(0,6)
|
id: mouseBar
|
||||||
stack.push(variantsList)
|
anchors.fill: parent;
|
||||||
layouts.positionViewAtIndex(index, ListView.Center)
|
cursorShape: Qt.PointingHandCursor
|
||||||
}
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
drawer.open()
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("<b>Keyboard Model: </b>") + models.currentItem.currentModel.label
|
||||||
|
color: textColor
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
source: "data/pan-end-symbolic.svg"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
anchors.horizontalCenterOffset : parent.width / 2.5
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
height: 22
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
id: stack
|
||||||
|
anchors.top: modelLabel.bottom
|
||||||
|
anchors.topMargin: 10
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
width: parent.width / 1.1
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: layouts
|
||||||
|
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
active: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Layout.preferredWidth: parent.width / 2
|
||||||
|
height: 220
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
spacing: 2
|
||||||
|
headerPositioning: ListView.OverlayHeader
|
||||||
|
header: Rectangle{
|
||||||
|
height: 24
|
||||||
|
width: parent.width
|
||||||
|
z: 2
|
||||||
|
color:backgroundColor
|
||||||
|
Text {
|
||||||
|
text: qsTr("Layout")
|
||||||
|
anchors.centerIn: parent
|
||||||
|
color: textColor
|
||||||
|
font.bold: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Button {
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Rectangle {
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
z: parent.z - 1
|
||||||
anchors.verticalCenterOffset: -parent.height / 3.5
|
anchors.fill: parent
|
||||||
anchors.left: parent.left
|
color: listBackgroundColor
|
||||||
anchors.leftMargin: parent.width / 15
|
opacity: 0.7
|
||||||
icon.name: "go-next"
|
}
|
||||||
text: qsTr("Variants")
|
|
||||||
onClicked: stack.push(variantsList)
|
model: config.keyboardLayoutsModel
|
||||||
|
currentIndex: model.currentIndex
|
||||||
|
Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
width: parent.width
|
||||||
|
implicitHeight: 24
|
||||||
|
highlighted: ListView.isCurrentItem
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: label1
|
||||||
|
text: model.label
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
width: parent.width
|
||||||
|
height: 24
|
||||||
|
color: highlighted ? highlightedTextColor : textColor
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: highlighted || hovered ? highlightColor : listBackgroundColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
|
||||||
|
layouts.model.currentIndex = index
|
||||||
|
keyIndex = label1.text.substring(0,6)
|
||||||
|
layouts.positionViewAtIndex(index, ListView.Center)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
ListView {
|
||||||
id: variantsList
|
id: variants
|
||||||
|
|
||||||
Item {
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
active: true
|
||||||
|
}
|
||||||
|
|
||||||
ListView {
|
Layout.preferredWidth: parent.width / 2
|
||||||
id: variants
|
height: 220
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
spacing: 2
|
||||||
|
headerPositioning: ListView.OverlayHeader
|
||||||
|
header: Rectangle{
|
||||||
|
height: 24
|
||||||
|
width: parent.width
|
||||||
|
z: 2
|
||||||
|
color:backgroundColor
|
||||||
|
Text {
|
||||||
|
text: qsTr("Variant")
|
||||||
|
anchors.centerIn: parent
|
||||||
|
color: textColor
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScrollBar.vertical: ScrollBar {
|
Rectangle {
|
||||||
active: true
|
z: parent.z - 1
|
||||||
}
|
anchors.fill: parent
|
||||||
|
color: listBackgroundColor
|
||||||
|
opacity: 0.7
|
||||||
|
}
|
||||||
|
|
||||||
width: parent.width / 2
|
model: config.keyboardVariantsModel
|
||||||
height: 200
|
currentIndex: model.currentIndex
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
|
||||||
anchors.topMargin: 10
|
|
||||||
focus: true
|
|
||||||
clip: true
|
|
||||||
boundsBehavior: Flickable.StopAtBounds
|
|
||||||
spacing: 2
|
|
||||||
|
|
||||||
Rectangle {
|
delegate: ItemDelegate {
|
||||||
z: parent.z - 1
|
hoverEnabled: true
|
||||||
anchors.fill: parent
|
width: parent.width
|
||||||
color: listBackgroundColor
|
implicitHeight: 24
|
||||||
opacity: 0.7
|
highlighted: ListView.isCurrentItem
|
||||||
}
|
|
||||||
|
|
||||||
model: config.keyboardVariantsModel
|
RowLayout {
|
||||||
currentIndex: model.currentIndex
|
anchors.fill: parent
|
||||||
Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
|
|
||||||
|
|
||||||
delegate: ItemDelegate {
|
Label {
|
||||||
hoverEnabled: true
|
text: model.label
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: 18
|
height: 24
|
||||||
highlighted: ListView.isCurrentItem
|
color: highlighted ? highlightedTextColor : textColor
|
||||||
|
|
||||||
RowLayout {
|
background: Rectangle {
|
||||||
anchors.fill: parent
|
color: highlighted || hovered ? highlightColor : listBackgroundColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.3
|
||||||
Label {
|
|
||||||
text: model.label
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
padding: 10
|
|
||||||
width: parent.width
|
|
||||||
height: 30
|
|
||||||
color: highlighted ? highlightedTextColor : textColor
|
|
||||||
|
|
||||||
background: Rectangle {
|
|
||||||
color: highlighted || hovered ? highlightColor : listBackgroundColor
|
|
||||||
opacity: highlighted || hovered ? 0.5 : 0.3
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onClicked: {
|
|
||||||
variants.model.currentIndex = index
|
|
||||||
variants.positionViewAtIndex(index, ListView.Center)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
onClicked: {
|
||||||
Layout.fillWidth: true
|
variants.model.currentIndex = index
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
variants.positionViewAtIndex(index, ListView.Center)
|
||||||
anchors.verticalCenterOffset: -parent.height / 3.5
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: parent.width / 15
|
|
||||||
icon.name: "go-previous"
|
|
||||||
text: qsTr("Layouts")
|
|
||||||
onClicked: stack.pop()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -264,7 +310,7 @@ Item {
|
|||||||
id: textInput
|
id: textInput
|
||||||
placeholderText: qsTr("Type here to test your keyboard")
|
placeholderText: qsTr("Type here to test your keyboard")
|
||||||
height: 36
|
height: 36
|
||||||
width: parent.width / 1.5
|
width: parent.width / 1.6
|
||||||
horizontalAlignment: TextInput.AlignHCenter
|
horizontalAlignment: TextInput.AlignHCenter
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.bottom: keyboard.top
|
anchors.bottom: keyboard.top
|
||||||
|
@ -24,5 +24,6 @@
|
|||||||
<file>data/button_bkg_center.png</file>
|
<file>data/button_bkg_center.png</file>
|
||||||
<file>data/button_bkg_left.png</file>
|
<file>data/button_bkg_left.png</file>
|
||||||
<file>data/button_bkg_right.png</file>
|
<file>data/button_bkg_right.png</file>
|
||||||
|
<file>data/pan-end-symbolic.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
Loading…
Reference in New Issue
Block a user