[QML modules] add Qt6 needed files
use alias for all -qt6.qrc QML files, so no change is needed for Qml.cpp searchQML files most QMl does not need QtGraphicalEffects keyboardq duplicate all .xml files too
This commit is contained in:
parent
7abbcd685e
commit
2d2436f9a5
@ -24,7 +24,7 @@ calamares_add_plugin(finishedq
|
|||||||
FinishedQmlViewStep.cpp
|
FinishedQmlViewStep.cpp
|
||||||
${_finished}/Config.cpp
|
${_finished}/Config.cpp
|
||||||
RESOURCES
|
RESOURCES
|
||||||
finishedq.qrc
|
finishedq${QT_VERSION_SUFFIX}.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
${qtname}::DBus
|
${qtname}::DBus
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
|
98
src/modules/finishedq/finishedq-qt6.qml
Normal file
98
src/modules/finishedq/finishedq-qt6.qml
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 - 2023 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
* License-Filename: LICENSE
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
|
Page {
|
||||||
|
|
||||||
|
id: finished
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
header: Kirigami.Heading {
|
||||||
|
width: parent.width
|
||||||
|
height: 100
|
||||||
|
id: header
|
||||||
|
Layout.fillWidth: true
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
level: 1
|
||||||
|
text: qsTr("Installation Completed")
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.top: header.bottom
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
font.pointSize: 12
|
||||||
|
text: qsTr("%1 has been installed on your computer.<br/>
|
||||||
|
You may now restart into your new system, or continue using the Live environment.").arg(Branding.string(Branding.ProductName))
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
source: "seedling.svg"
|
||||||
|
anchors.top: header.bottom
|
||||||
|
anchors.topMargin: 80
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
width: 64
|
||||||
|
height: 64
|
||||||
|
mipmap: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.alignment: Qt.AlignRight|Qt.AlignVCenter
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: 6
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: button
|
||||||
|
text: qsTr("Close Installer")
|
||||||
|
icon.name: "application-exit"
|
||||||
|
onClicked: { ViewManager.quit(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: qsTr("Restart System")
|
||||||
|
icon.name: "system-reboot"
|
||||||
|
onClicked: { config.doRestart(true); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.bottomMargin : 100
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
anchors.top: parent.top
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
text: qsTr("<p>A full log of the install is available as installation.log in the home directory of the Live user.<br/>
|
||||||
|
This log is copied to /var/log/installation.log of the target system.</p>")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onActivate() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLeave() {
|
||||||
|
}
|
||||||
|
}
|
6
src/modules/finishedq/finishedq-qt6.qrc
Normal file
6
src/modules/finishedq/finishedq-qt6.qrc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file alias="finishedq.qml">finishedq-qt6.qml</file>
|
||||||
|
<file>seedling.svg</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -22,7 +22,7 @@ calamares_add_plugin(keyboardq
|
|||||||
${_keyboard}/SetKeyboardLayoutJob.cpp
|
${_keyboard}/SetKeyboardLayoutJob.cpp
|
||||||
${_keyboard}/keyboardwidget/keyboardglobal.cpp
|
${_keyboard}/keyboardwidget/keyboardglobal.cpp
|
||||||
RESOURCES
|
RESOURCES
|
||||||
keyboardq.qrc
|
keyboardq${QT_VERSION_SUFFIX}.qrc
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
LINK_LIBRARIES
|
LINK_LIBRARIES
|
||||||
${qtname}::DBus
|
${qtname}::DBus
|
||||||
|
180
src/modules/keyboardq/data/Key-qt6.qml
Normal file
180
src/modules/keyboardq/data/Key-qt6.qml
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 - 2023 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: key
|
||||||
|
|
||||||
|
property string mainLabel: "A"
|
||||||
|
property var secondaryLabels: [];
|
||||||
|
|
||||||
|
property var iconSource;
|
||||||
|
|
||||||
|
property var keyImageLeft: ""
|
||||||
|
property var keyImageRight: ""
|
||||||
|
property var keyImageCenter: ""
|
||||||
|
|
||||||
|
property color keyColor: "#404040"
|
||||||
|
property color keyPressedColor: "grey"
|
||||||
|
property int keyBounds: 2
|
||||||
|
property var keyPressedColorOpacity: 1
|
||||||
|
|
||||||
|
property var mainFontFamily: "Roboto"
|
||||||
|
property color mainFontColor: "white"
|
||||||
|
property int mainFontSize: 18
|
||||||
|
|
||||||
|
property var secondaryFontFamily: "Roboto"
|
||||||
|
property color secondaryFontColor: "white"
|
||||||
|
property int secondaryFontSize: 10
|
||||||
|
|
||||||
|
property bool secondaryLabelVisible: true
|
||||||
|
|
||||||
|
property bool isChekable;
|
||||||
|
property bool isChecked;
|
||||||
|
|
||||||
|
property bool upperCase;
|
||||||
|
|
||||||
|
signal clicked()
|
||||||
|
signal alternatesClicked(string symbol)
|
||||||
|
|
||||||
|
Item {
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: key.keyBounds
|
||||||
|
visible: key.keyImageLeft != "" || key.keyImageCenter != "" || key.keyImageRight != "" ? 1 : 0
|
||||||
|
Image {
|
||||||
|
id: backgroundImage_left
|
||||||
|
anchors.left: parent.left
|
||||||
|
height: parent.height
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: key.keyImageLeft
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
id: backgroundImage_right
|
||||||
|
anchors.right: parent.right
|
||||||
|
height: parent.height
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: key.keyImageRight
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
id: backgroundImage_center
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.leftMargin: backgroundImage_left.width - 1
|
||||||
|
anchors.rightMargin: backgroundImage_right.width - 1
|
||||||
|
height: parent.height
|
||||||
|
fillMode: Image.Stretch
|
||||||
|
source: key.keyImageCenter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: backgroundItem
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: key.keyBounds
|
||||||
|
color: key.isChecked || mouseArea.pressed ? key.keyPressedColor : key.keyColor;
|
||||||
|
opacity: key.keyPressedColorOpacity
|
||||||
|
}
|
||||||
|
|
||||||
|
Column
|
||||||
|
{
|
||||||
|
anchors.centerIn: backgroundItem
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: secondaryLabelsItem
|
||||||
|
smooth: true
|
||||||
|
anchors.right: parent.right
|
||||||
|
visible: true //secondaryLabelVisible
|
||||||
|
text: secondaryLabels.length > 0 ? secondaryLabels : ""
|
||||||
|
color: secondaryFontColor
|
||||||
|
|
||||||
|
font.pixelSize: secondaryFontSize
|
||||||
|
font.weight: Font.Light
|
||||||
|
font.family: secondaryFontFamily
|
||||||
|
font.capitalization: upperCase ? Font.AllUppercase :
|
||||||
|
Font.MixedCase
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: icon
|
||||||
|
smooth: true
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
source: iconSource
|
||||||
|
//sourceSize.width: key.width * 0.6
|
||||||
|
sourceSize.height: key.height * 0.4
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: mainLabelItem
|
||||||
|
smooth: true
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
text: mainLabel
|
||||||
|
color: mainFontColor
|
||||||
|
visible: iconSource ? false : true
|
||||||
|
|
||||||
|
font.pixelSize: mainFontSize
|
||||||
|
font.weight: Font.Light
|
||||||
|
font.family: mainFontFamily
|
||||||
|
font.capitalization: upperCase ? Font.AllUppercase :
|
||||||
|
Font.MixedCase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: alternatesRow
|
||||||
|
property int selectedIndex: -1
|
||||||
|
visible: false
|
||||||
|
anchors.bottom: backgroundItem.top
|
||||||
|
anchors.left: backgroundItem.left
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
model: secondaryLabels.length
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
property bool isSelected: alternatesRow.selectedIndex === index
|
||||||
|
color: isSelected ? mainLabelItem.color : key.keyPressedColor
|
||||||
|
height: backgroundItem.height
|
||||||
|
width: backgroundItem.width
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: secondaryLabels[ index ]
|
||||||
|
font: mainLabelItem.font
|
||||||
|
color: isSelected ? key.keyPressedColor : mainLabelItem.color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
anchors.fill: parent
|
||||||
|
onPressAndHold: alternatesRow.visible = true
|
||||||
|
onClicked: {
|
||||||
|
if (key.isChekable) key.isChecked = !key.isChecked
|
||||||
|
key.clicked()
|
||||||
|
}
|
||||||
|
|
||||||
|
onReleased: {
|
||||||
|
alternatesRow.visible = false
|
||||||
|
if (alternatesRow.selectedIndex > -1)
|
||||||
|
key.alternatesClicked(secondaryLabels[alternatesRow.selectedIndex])
|
||||||
|
}
|
||||||
|
|
||||||
|
onMouseXChanged: {
|
||||||
|
alternatesRow.selectedIndex =
|
||||||
|
(mouseY < 0 && mouseX > 0 && mouseY < alternatesRow.width) ?
|
||||||
|
Math.floor(mouseX / backgroundItem.width) :
|
||||||
|
-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
224
src/modules/keyboardq/data/Keyboard-qt6.qml
Normal file
224
src/modules/keyboardq/data/Keyboard-qt6.qml
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 - 2023 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQml.XmlListModel
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: keyboard
|
||||||
|
|
||||||
|
width: 1024
|
||||||
|
height: 640
|
||||||
|
|
||||||
|
property int rows: 4;
|
||||||
|
property int columns: 10;
|
||||||
|
|
||||||
|
property string source: "generic.xml"
|
||||||
|
property var target;
|
||||||
|
|
||||||
|
property color backgroundColor: "black"
|
||||||
|
|
||||||
|
property var keyImageLeft: ""
|
||||||
|
property var keyImageRight: ""
|
||||||
|
property var keyImageCenter: ""
|
||||||
|
|
||||||
|
property color keyColor: "#404040"
|
||||||
|
property color keyPressedColor: "grey"
|
||||||
|
property int keyBounds: 2
|
||||||
|
property var keyPressedColorOpacity: 1
|
||||||
|
|
||||||
|
property var mainFontFamily: "Roboto"
|
||||||
|
property color mainFontColor: "white"
|
||||||
|
property int mainFontSize: 59
|
||||||
|
|
||||||
|
property var secondaryFontFamily: "Roboto"
|
||||||
|
property color secondaryFontColor: "white"
|
||||||
|
property int secondaryFontSize: 30
|
||||||
|
|
||||||
|
property bool secondaryLabelsVisible: false
|
||||||
|
property bool doSwitchSource: true
|
||||||
|
|
||||||
|
property bool allUpperCase: false
|
||||||
|
|
||||||
|
signal keyClicked(string key)
|
||||||
|
signal switchSource(string source)
|
||||||
|
signal enterClicked()
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: root
|
||||||
|
anchors.fill: parent
|
||||||
|
color: backgroundColor
|
||||||
|
|
||||||
|
property int keyWidth: keyboard.width / columns;
|
||||||
|
property int keyHeight: keyboard.height / rows;
|
||||||
|
|
||||||
|
property int xmlIndex: 1
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: proxyMainTextItem
|
||||||
|
color: keyboard.mainFontColor
|
||||||
|
font.pixelSize: keyboard.mainFontSize
|
||||||
|
font.weight: Font.Light
|
||||||
|
font.family: keyboard.mainFontFamily
|
||||||
|
font.capitalization: keyboard.allUpperCase ? Font.AllUppercase :
|
||||||
|
Font.MixedCase
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: proxySecondaryTextItem
|
||||||
|
color: keyboard.secondaryFontColor
|
||||||
|
font.pixelSize: keyboard.secondaryFontSize
|
||||||
|
font.weight: Font.Light
|
||||||
|
font.family: keyboard.secondaryFontFamily
|
||||||
|
font.capitalization: keyboard.allUpperCase ? Font.AllUppercase :
|
||||||
|
Font.MixedCase
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: column
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: rowRepeater
|
||||||
|
|
||||||
|
model: 4
|
||||||
|
//model: XmlListModel {
|
||||||
|
// id: keyboardModel
|
||||||
|
// source: keyboard.source
|
||||||
|
// query: "/Keyboard/Row"
|
||||||
|
|
||||||
|
//Behavior on source {
|
||||||
|
// NumberAnimation {
|
||||||
|
// easing.type: Easing.InOutSine
|
||||||
|
// duration: 100
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: keyRow
|
||||||
|
property int rowIndex: index
|
||||||
|
anchors.horizontalCenter: if(parent) parent.horizontalCenter
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: keyRepeater
|
||||||
|
|
||||||
|
model: XmlListModel {
|
||||||
|
source: keyboard.source
|
||||||
|
query: "/Keyboard/Row" + keyRow.rowIndex + "/Key"
|
||||||
|
|
||||||
|
XmlListModelRole { name: "labels"; attributeName: "labels"; elementName: "" }
|
||||||
|
XmlListModelRole { name: "ratio"; attributeName: "ratio"; elementName: "" }
|
||||||
|
XmlListModelRole { name: "icon"; attributeName: "icon"; elementName: "" }
|
||||||
|
XmlListModelRole { name: "checkable"; attributeName: "checkable"; elementName: "" }
|
||||||
|
}
|
||||||
|
|
||||||
|
Key {
|
||||||
|
id: key
|
||||||
|
width: root.keyWidth * ratio
|
||||||
|
height: root.keyHeight
|
||||||
|
iconSource: icon
|
||||||
|
mainFontFamily: proxyMainTextItem.font
|
||||||
|
mainFontColor: proxyMainTextItem.color
|
||||||
|
secondaryFontFamily: proxySecondaryTextItem.font
|
||||||
|
secondaryFontColor: proxySecondaryTextItem.color
|
||||||
|
secondaryLabelVisible: keyboard.secondaryLabelsVisible
|
||||||
|
keyColor: keyboard.keyColor
|
||||||
|
keyImageLeft: keyboard.keyImageLeft
|
||||||
|
keyImageRight: keyboard.keyImageRight
|
||||||
|
keyImageCenter: keyboard.keyImageCenter
|
||||||
|
keyPressedColor: keyboard.keyPressedColor
|
||||||
|
keyPressedColorOpacity: keyboard.keyPressedColorOpacity
|
||||||
|
keyBounds: keyboard.keyBounds
|
||||||
|
isChekable: checkable
|
||||||
|
isChecked: isChekable &&
|
||||||
|
command &&
|
||||||
|
command === "shift" &&
|
||||||
|
keyboard.allUpperCase
|
||||||
|
upperCase: keyboard.allUpperCase
|
||||||
|
|
||||||
|
property var command
|
||||||
|
property var params: labels
|
||||||
|
|
||||||
|
onParamsChanged: {
|
||||||
|
var labelSplit;
|
||||||
|
|
||||||
|
if(params[0] === '|')
|
||||||
|
{
|
||||||
|
mainLabel = '|'
|
||||||
|
labelSplit = params
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
labelSplit = params.split(/[|]+/)
|
||||||
|
|
||||||
|
if (labelSplit[0] === '!')
|
||||||
|
mainLabel = '!';
|
||||||
|
else
|
||||||
|
mainLabel = params.split(/[!|]+/)[0].toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (labelSplit[1]) secondaryLabels = labelSplit[1];
|
||||||
|
|
||||||
|
if (labelSplit[0] === '!')
|
||||||
|
command = params.split(/[!|]+/)[1];
|
||||||
|
else
|
||||||
|
command = params.split(/[!]+/)[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
if (command)
|
||||||
|
{
|
||||||
|
var commandList = command.split(":");
|
||||||
|
|
||||||
|
switch(commandList[0])
|
||||||
|
{
|
||||||
|
case "source":
|
||||||
|
keyboard.switchSource(commandList[1])
|
||||||
|
if(doSwitchSource) keyboard.source = commandList[1]
|
||||||
|
return;
|
||||||
|
case "shift":
|
||||||
|
keyboard.allUpperCase = !keyboard.allUpperCase
|
||||||
|
return;
|
||||||
|
case "backspace":
|
||||||
|
keyboard.keyClicked('\b');
|
||||||
|
target.text = target.text.substring(0,target.text.length-1)
|
||||||
|
return;
|
||||||
|
case "enter":
|
||||||
|
keyboard.enterClicked()
|
||||||
|
return;
|
||||||
|
case "tab":
|
||||||
|
keyboard.keyClicked('\t');
|
||||||
|
target.text = target.text + " "
|
||||||
|
return;
|
||||||
|
default: return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mainLabel.length === 1)
|
||||||
|
root.emitKeyClicked(mainLabel);
|
||||||
|
}
|
||||||
|
onAlternatesClicked: root.emitKeyClicked(symbol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function emitKeyClicked(text) {
|
||||||
|
var emitText = keyboard.allUpperCase ? text.toUpperCase() : text;
|
||||||
|
keyClicked( emitText );
|
||||||
|
target.text = target.text + emitText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
65
src/modules/keyboardq/data/afgani-qt6.xml
Normal file
65
src/modules/keyboardq/data/afgani-qt6.xml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".6"/>
|
||||||
|
<Key labels = "ض|" ratio = ".7"/>
|
||||||
|
<Key labels = "ص|" ratio = ".7"/>
|
||||||
|
<Key labels = "ث|" ratio = ".7"/>
|
||||||
|
<Key labels = "ق|" ratio = ".7"/>
|
||||||
|
<Key labels = "ف|" ratio = ".7"/>
|
||||||
|
<Key labels = "غ|" ratio = ".7"/>
|
||||||
|
<Key labels = "ع|" ratio = ".7"/>
|
||||||
|
<Key labels = "ه|" ratio = ".7"/>
|
||||||
|
<Key labels = "خ|" ratio = ".7"/>
|
||||||
|
<Key labels = "ح|" ratio = ".7"/>
|
||||||
|
<Key labels = "ج|" ratio = ".7"/>
|
||||||
|
<Key labels = "چ|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "ش|" ratio = ".7"/>
|
||||||
|
<Key labels = "س|" ratio = ".7"/>
|
||||||
|
<Key labels = "ی|" ratio = ".7"/>
|
||||||
|
<Key labels = "ب|" ratio = ".7"/>
|
||||||
|
<Key labels = "ل|" ratio = ".7"/>
|
||||||
|
<Key labels = "ا|" ratio = ".7"/>
|
||||||
|
<Key labels = "ت|" ratio = ".7"/>
|
||||||
|
<Key labels = "ن|" ratio = ".7"/>
|
||||||
|
<Key labels = "م|" ratio = ".7"/>
|
||||||
|
<Key labels = "ک|" ratio = ".7"/>
|
||||||
|
<Key labels = "ګ|" ratio = ".7"/>
|
||||||
|
<Key labels = "\|" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = ".8"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "ط|" ratio = ".7"/>
|
||||||
|
<Key labels = "ې|" ratio = ".7"/>
|
||||||
|
<Key labels = "ز|" ratio = ".7"/>
|
||||||
|
<Key labels = "ر|" ratio = ".7"/>
|
||||||
|
<Key labels = "ذ|" ratio = ".7"/>
|
||||||
|
<Key labels = "ړ|" ratio = ".7"/>
|
||||||
|
<Key labels = "و|" ratio = ".7"/>
|
||||||
|
<Key labels = "ږ|" ratio = ".7"/>
|
||||||
|
<Key labels = "/|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
65
src/modules/keyboardq/data/ar-qt6.xml
Normal file
65
src/modules/keyboardq/data/ar-qt6.xml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".6"/>
|
||||||
|
<Key labels = "ض|" ratio = ".7"/>
|
||||||
|
<Key labels = "ص|" ratio = ".7"/>
|
||||||
|
<Key labels = "ث|" ratio = ".7"/>
|
||||||
|
<Key labels = "ق|" ratio = ".7"/>
|
||||||
|
<Key labels = "ف|" ratio = ".7"/>
|
||||||
|
<Key labels = "غ|" ratio = ".7"/>
|
||||||
|
<Key labels = "ع|" ratio = ".7"/>
|
||||||
|
<Key labels = "ه|" ratio = ".7"/>
|
||||||
|
<Key labels = "خ|" ratio = ".7"/>
|
||||||
|
<Key labels = "ح|" ratio = ".7"/>
|
||||||
|
<Key labels = "ج|" ratio = ".7"/>
|
||||||
|
<Key labels = "د|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "ش|" ratio = ".7"/>
|
||||||
|
<Key labels = "س|" ratio = ".7"/>
|
||||||
|
<Key labels = "ي|" ratio = ".7"/>
|
||||||
|
<Key labels = "ب|" ratio = ".7"/>
|
||||||
|
<Key labels = "ل|" ratio = ".7"/>
|
||||||
|
<Key labels = "ا|" ratio = ".7"/>
|
||||||
|
<Key labels = "ت|" ratio = ".7"/>
|
||||||
|
<Key labels = "ن|" ratio = ".7"/>
|
||||||
|
<Key labels = "م|" ratio = ".7"/>
|
||||||
|
<Key labels = "ك|" ratio = ".7"/>
|
||||||
|
<Key labels = "ط|" ratio = ".7"/>
|
||||||
|
<Key labels = "\|" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = ".8"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "ئ|" ratio = ".7"/>
|
||||||
|
<Key labels = "ء|" ratio = ".7"/>
|
||||||
|
<Key labels = "ؤ|" ratio = ".7"/>
|
||||||
|
<Key labels = "ر|" ratio = ".7"/>
|
||||||
|
<Key labels = "لا|" ratio = ".7"/>
|
||||||
|
<Key labels = "ى|" ratio = ".7"/>
|
||||||
|
<Key labels = "و|" ratio = ".7"/>
|
||||||
|
<Key labels = "ز|" ratio = ".7"/>
|
||||||
|
<Key labels = "ظ|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
66
src/modules/keyboardq/data/de-qt6.xml
Normal file
66
src/modules/keyboardq/data/de-qt6.xml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".6"/>
|
||||||
|
<Key labels = "q|" ratio = ".7"/>
|
||||||
|
<Key labels = "w|" ratio = ".7"/>
|
||||||
|
<Key labels = "e|" ratio = ".7"/>
|
||||||
|
<Key labels = "r|" ratio = ".7"/>
|
||||||
|
<Key labels = "t|" ratio = ".7"/>
|
||||||
|
<Key labels = "z|" ratio = ".7"/>
|
||||||
|
<Key labels = "u|" ratio = ".7"/>
|
||||||
|
<Key labels = "i|" ratio = ".7"/>
|
||||||
|
<Key labels = "o|" ratio = ".7"/>
|
||||||
|
<Key labels = "p|" ratio = ".7"/>
|
||||||
|
<Key labels = "ü |" ratio = ".7"/>
|
||||||
|
<Key labels = "+|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = "1.0"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = ".9"/>
|
||||||
|
<Key labels = "a|" ratio = ".7"/>
|
||||||
|
<Key labels = "s|" ratio = ".7"/>
|
||||||
|
<Key labels = "d|" ratio = ".7"/>
|
||||||
|
<Key labels = "f|" ratio = ".7"/>
|
||||||
|
<Key labels = "g|" ratio = ".7"/>
|
||||||
|
<Key labels = "h|" ratio = ".7"/>
|
||||||
|
<Key labels = "j|" ratio = ".7"/>
|
||||||
|
<Key labels = "k|" ratio = ".7"/>
|
||||||
|
<Key labels = "l|" ratio = ".7"/>
|
||||||
|
<Key labels = "ö|" ratio = ".7"/>
|
||||||
|
<Key labels = "ä|" ratio = ".7"/>
|
||||||
|
<Key labels = "#|" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = ".7"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = ".7" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "<|" ratio = ".7"/>
|
||||||
|
<Key labels = "y|" ratio = ".7"/>
|
||||||
|
<Key labels = "x|" ratio = ".7"/>
|
||||||
|
<Key labels = "c|" ratio = ".7"/>
|
||||||
|
<Key labels = "v|" ratio = ".7"/>
|
||||||
|
<Key labels = "b|" ratio = ".7"/>
|
||||||
|
<Key labels = "n|" ratio = ".7"/>
|
||||||
|
<Key labels = "m|" ratio = ".7"/>
|
||||||
|
<Key labels = ",|" ratio = ".7"/>
|
||||||
|
<Key labels = ".|" ratio = ".7"/>
|
||||||
|
<Key labels = "-|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = ".9" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
64
src/modules/keyboardq/data/empty-qt6.xml
Normal file
64
src/modules/keyboardq/data/empty-qt6.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = "1.3"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
64
src/modules/keyboardq/data/en-qt6.xml
Normal file
64
src/modules/keyboardq/data/en-qt6.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "q|" ratio = ".7"/>
|
||||||
|
<Key labels = "w|" ratio = ".7"/>
|
||||||
|
<Key labels = "e|" ratio = ".7"/>
|
||||||
|
<Key labels = "r|" ratio = ".7"/>
|
||||||
|
<Key labels = "t|" ratio = ".7"/>
|
||||||
|
<Key labels = "y|" ratio = ".7"/>
|
||||||
|
<Key labels = "u|" ratio = ".7"/>
|
||||||
|
<Key labels = "i|" ratio = ".7"/>
|
||||||
|
<Key labels = "o|" ratio = ".7"/>
|
||||||
|
<Key labels = "p|" ratio = ".7"/>
|
||||||
|
<Key labels = "[|" ratio = ".7"/>
|
||||||
|
<Key labels = "]|" ratio = ".7"/>
|
||||||
|
<Key labels = "\|" ratio = ".8"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = "1.3"/>
|
||||||
|
<Key labels = "a|" ratio = ".7"/>
|
||||||
|
<Key labels = "s|" ratio = ".7"/>
|
||||||
|
<Key labels = "d|" ratio = ".7"/>
|
||||||
|
<Key labels = "f|" ratio = ".7"/>
|
||||||
|
<Key labels = "g|" ratio = ".7"/>
|
||||||
|
<Key labels = "h|" ratio = ".7"/>
|
||||||
|
<Key labels = "j|" ratio = ".7"/>
|
||||||
|
<Key labels = "k|" ratio = ".7"/>
|
||||||
|
<Key labels = "l|" ratio = ".7"/>
|
||||||
|
<Key labels = ";|" ratio = ".7"/>
|
||||||
|
<Key labels = "'|" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "z|" ratio = ".7"/>
|
||||||
|
<Key labels = "x|" ratio = ".7"/>
|
||||||
|
<Key labels = "c|" ratio = ".7"/>
|
||||||
|
<Key labels = "v|" ratio = ".7"/>
|
||||||
|
<Key labels = "b|" ratio = ".7"/>
|
||||||
|
<Key labels = "n|" ratio = ".7"/>
|
||||||
|
<Key labels = "m|" ratio = ".7"/>
|
||||||
|
<Key labels = ",|" ratio = ".7"/>
|
||||||
|
<Key labels = ".|" ratio = ".7"/>
|
||||||
|
<Key labels = "/|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
64
src/modules/keyboardq/data/es-qt6.xml
Normal file
64
src/modules/keyboardq/data/es-qt6.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "q|" ratio = ".7"/>
|
||||||
|
<Key labels = "w|" ratio = ".7"/>
|
||||||
|
<Key labels = "e|" ratio = ".7"/>
|
||||||
|
<Key labels = "r|" ratio = ".7"/>
|
||||||
|
<Key labels = "t|" ratio = ".7"/>
|
||||||
|
<Key labels = "y|" ratio = ".7"/>
|
||||||
|
<Key labels = "u|" ratio = ".7"/>
|
||||||
|
<Key labels = "i|" ratio = ".7"/>
|
||||||
|
<Key labels = "o|" ratio = ".7"/>
|
||||||
|
<Key labels = "p|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = "1.3"/>
|
||||||
|
<Key labels = "a|" ratio = ".7"/>
|
||||||
|
<Key labels = "s|" ratio = ".7"/>
|
||||||
|
<Key labels = "d|" ratio = ".7"/>
|
||||||
|
<Key labels = "f|" ratio = ".7"/>
|
||||||
|
<Key labels = "g|" ratio = ".7"/>
|
||||||
|
<Key labels = "h|" ratio = ".7"/>
|
||||||
|
<Key labels = "j|" ratio = ".7"/>
|
||||||
|
<Key labels = "k|" ratio = ".7"/>
|
||||||
|
<Key labels = "l|" ratio = ".7"/>
|
||||||
|
<Key labels = "ñ|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "z|" ratio = ".7"/>
|
||||||
|
<Key labels = "x|" ratio = ".7"/>
|
||||||
|
<Key labels = "c|" ratio = ".7"/>
|
||||||
|
<Key labels = "v|" ratio = ".7"/>
|
||||||
|
<Key labels = "b|" ratio = ".7"/>
|
||||||
|
<Key labels = "n|" ratio = ".7"/>
|
||||||
|
<Key labels = "m|" ratio = ".7"/>
|
||||||
|
<Key labels = "," ratio = ".7"/>
|
||||||
|
<Key labels = ".|" ratio = ".7"/>
|
||||||
|
<Key labels = "-|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
66
src/modules/keyboardq/data/fr-qt6.xml
Normal file
66
src/modules/keyboardq/data/fr-qt6.xml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "a|" ratio = ".7"/>
|
||||||
|
<Key labels = "z|" ratio = ".7"/>
|
||||||
|
<Key labels = "e|" ratio = ".7"/>
|
||||||
|
<Key labels = "r|" ratio = ".7"/>
|
||||||
|
<Key labels = "t|" ratio = ".7"/>
|
||||||
|
<Key labels = "y|" ratio = ".7"/>
|
||||||
|
<Key labels = "u|" ratio = ".7"/>
|
||||||
|
<Key labels = "i|" ratio = ".7"/>
|
||||||
|
<Key labels = "o|" ratio = ".7"/>
|
||||||
|
<Key labels = "p|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = ".9"/>
|
||||||
|
<Key labels = "q|" ratio = ".7"/>
|
||||||
|
<Key labels = "s|" ratio = ".7"/>
|
||||||
|
<Key labels = "d|" ratio = ".7"/>
|
||||||
|
<Key labels = "f|" ratio = ".7"/>
|
||||||
|
<Key labels = "g|" ratio = ".7"/>
|
||||||
|
<Key labels = "h|" ratio = ".7"/>
|
||||||
|
<Key labels = "j|" ratio = ".7"/>
|
||||||
|
<Key labels = "k|" ratio = ".7"/>
|
||||||
|
<Key labels = "l|" ratio = ".7"/>
|
||||||
|
<Key labels = "m|" ratio = ".7"/>
|
||||||
|
<Key labels = "ù|" ratio = ".7"/>
|
||||||
|
<Key labels = "*|" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = ".7"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = ".5" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "<|" ratio = ".7"/>
|
||||||
|
<Key labels = "w|" ratio = ".7"/>
|
||||||
|
<Key labels = "x|" ratio = ".7"/>
|
||||||
|
<Key labels = "c|" ratio = ".7"/>
|
||||||
|
<Key labels = "v|" ratio = ".7"/>
|
||||||
|
<Key labels = "b|" ratio = ".7"/>
|
||||||
|
<Key labels = "n|" ratio = ".7"/>
|
||||||
|
<Key labels = ",|" ratio = ".7"/>
|
||||||
|
<Key labels = ";|" ratio = ".7"/>
|
||||||
|
<Key labels = ":|" ratio = ".7"/>
|
||||||
|
<Key labels = "!|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
64
src/modules/keyboardq/data/generic-qt6.xml
Normal file
64
src/modules/keyboardq/data/generic-qt6.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "q|" ratio = ".7"/>
|
||||||
|
<Key labels = "w|" ratio = ".7"/>
|
||||||
|
<Key labels = "e|" ratio = ".7"/>
|
||||||
|
<Key labels = "r|" ratio = ".7"/>
|
||||||
|
<Key labels = "t|" ratio = ".7"/>
|
||||||
|
<Key labels = "y|" ratio = ".7"/>
|
||||||
|
<Key labels = "u|" ratio = ".7"/>
|
||||||
|
<Key labels = "i|" ratio = ".7"/>
|
||||||
|
<Key labels = "o|" ratio = ".7"/>
|
||||||
|
<Key labels = "p|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = "1.3"/>
|
||||||
|
<Key labels = "a|" ratio = ".7"/>
|
||||||
|
<Key labels = "s|" ratio = ".7"/>
|
||||||
|
<Key labels = "d|" ratio = ".7"/>
|
||||||
|
<Key labels = "f|" ratio = ".7"/>
|
||||||
|
<Key labels = "g|" ratio = ".7"/>
|
||||||
|
<Key labels = "h|" ratio = ".7"/>
|
||||||
|
<Key labels = "j|" ratio = ".7"/>
|
||||||
|
<Key labels = "k|" ratio = ".7"/>
|
||||||
|
<Key labels = "l|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "z|" ratio = ".7"/>
|
||||||
|
<Key labels = "x|" ratio = ".7"/>
|
||||||
|
<Key labels = "c|" ratio = ".7"/>
|
||||||
|
<Key labels = "v|" ratio = ".7"/>
|
||||||
|
<Key labels = "b|" ratio = ".7"/>
|
||||||
|
<Key labels = "n|" ratio = ".7"/>
|
||||||
|
<Key labels = "m|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
66
src/modules/keyboardq/data/generic_qz-qt6.xml
Normal file
66
src/modules/keyboardq/data/generic_qz-qt6.xml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".6"/>
|
||||||
|
<Key labels = "q|" ratio = ".7"/>
|
||||||
|
<Key labels = "w|" ratio = ".7"/>
|
||||||
|
<Key labels = "e|" ratio = ".7"/>
|
||||||
|
<Key labels = "r|" ratio = ".7"/>
|
||||||
|
<Key labels = "t|" ratio = ".7"/>
|
||||||
|
<Key labels = "z|" ratio = ".7"/>
|
||||||
|
<Key labels = "u|" ratio = ".7"/>
|
||||||
|
<Key labels = "i|" ratio = ".7"/>
|
||||||
|
<Key labels = "o|" ratio = ".7"/>
|
||||||
|
<Key labels = "p|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = "1.0"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = ".9"/>
|
||||||
|
<Key labels = "a|" ratio = ".7"/>
|
||||||
|
<Key labels = "s|" ratio = ".7"/>
|
||||||
|
<Key labels = "d|" ratio = ".7"/>
|
||||||
|
<Key labels = "f|" ratio = ".7"/>
|
||||||
|
<Key labels = "g|" ratio = ".7"/>
|
||||||
|
<Key labels = "h|" ratio = ".7"/>
|
||||||
|
<Key labels = "j|" ratio = ".7"/>
|
||||||
|
<Key labels = "k|" ratio = ".7"/>
|
||||||
|
<Key labels = "l|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = ".7"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = ".7" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "<|" ratio = ".7"/>
|
||||||
|
<Key labels = "y|" ratio = ".7"/>
|
||||||
|
<Key labels = "x|" ratio = ".7"/>
|
||||||
|
<Key labels = "c|" ratio = ".7"/>
|
||||||
|
<Key labels = "v|" ratio = ".7"/>
|
||||||
|
<Key labels = "b|" ratio = ".7"/>
|
||||||
|
<Key labels = "n|" ratio = ".7"/>
|
||||||
|
<Key labels = "m|" ratio = ".7"/>
|
||||||
|
<Key labels = ",|" ratio = ".7"/>
|
||||||
|
<Key labels = ".|" ratio = ".7"/>
|
||||||
|
<Key labels = "-|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = ".9" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
64
src/modules/keyboardq/data/pt-qt6.xml
Normal file
64
src/modules/keyboardq/data/pt-qt6.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "q|" ratio = ".7"/>
|
||||||
|
<Key labels = "w|" ratio = ".7"/>
|
||||||
|
<Key labels = "e|" ratio = ".7"/>
|
||||||
|
<Key labels = "r|" ratio = ".7"/>
|
||||||
|
<Key labels = "t|" ratio = ".7"/>
|
||||||
|
<Key labels = "y|" ratio = ".7"/>
|
||||||
|
<Key labels = "u|" ratio = ".7"/>
|
||||||
|
<Key labels = "i|" ratio = ".7"/>
|
||||||
|
<Key labels = "o|" ratio = ".7"/>
|
||||||
|
<Key labels = "p|" ratio = ".7"/>
|
||||||
|
<Key labels = "+|" ratio = ".7"/>
|
||||||
|
<Key labels = "]|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = "1.3"/>
|
||||||
|
<Key labels = "a|" ratio = ".7"/>
|
||||||
|
<Key labels = "s|" ratio = ".7"/>
|
||||||
|
<Key labels = "d|" ratio = ".7"/>
|
||||||
|
<Key labels = "f|" ratio = ".7"/>
|
||||||
|
<Key labels = "g|" ratio = ".7"/>
|
||||||
|
<Key labels = "h|" ratio = ".7"/>
|
||||||
|
<Key labels = "j|" ratio = ".7"/>
|
||||||
|
<Key labels = "k|" ratio = ".7"/>
|
||||||
|
<Key labels = "l|" ratio = ".7"/>
|
||||||
|
<Key labels = "ç|" ratio = ".7"/>
|
||||||
|
<Key labels = "º|" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "z|" ratio = ".7"/>
|
||||||
|
<Key labels = "x|" ratio = ".7"/>
|
||||||
|
<Key labels = "c|" ratio = ".7"/>
|
||||||
|
<Key labels = "v|" ratio = ".7"/>
|
||||||
|
<Key labels = "b|" ratio = ".7"/>
|
||||||
|
<Key labels = "n|" ratio = ".7"/>
|
||||||
|
<Key labels = "m|" ratio = ".7"/>
|
||||||
|
<Key labels = ",|" ratio = ".7"/>
|
||||||
|
<Key labels = ".|" ratio = ".7"/>
|
||||||
|
<Key labels = "-|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
64
src/modules/keyboardq/data/ru-qt6.xml
Normal file
64
src/modules/keyboardq/data/ru-qt6.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above. -->
|
||||||
|
<Keyboard>
|
||||||
|
<Row0>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
<Key labels = "й|" ratio = ".7"/>
|
||||||
|
<Key labels = "ц|" ratio = ".7"/>
|
||||||
|
<Key labels = "у|" ratio = ".7"/>
|
||||||
|
<Key labels = "к|" ratio = ".7"/>
|
||||||
|
<Key labels = "е|" ratio = ".7"/>
|
||||||
|
<Key labels = "н|" ratio = ".7"/>
|
||||||
|
<Key labels = "г|" ratio = ".7"/>
|
||||||
|
<Key labels = "ш|" ratio = ".7"/>
|
||||||
|
<Key labels = "щ|" ratio = ".7"/>
|
||||||
|
<Key labels = "з|" ratio = ".7"/>
|
||||||
|
<Key labels = "х|" ratio = ".7"/>
|
||||||
|
<Key labels = "Ъ|" ratio = ".7"/>
|
||||||
|
<Key labels = " |" ratio = ".8"/>
|
||||||
|
</Row0>
|
||||||
|
<Row1>
|
||||||
|
<Key labels = " |" ratio = "1.3"/>
|
||||||
|
<Key labels = "ф|" ratio = ".7"/>
|
||||||
|
<Key labels = "ы|" ratio = ".7"/>
|
||||||
|
<Key labels = "в|" ratio = ".7"/>
|
||||||
|
<Key labels = "а|" ratio = ".7"/>
|
||||||
|
<Key labels = "п|" ratio = ".7"/>
|
||||||
|
<Key labels = "р|" ratio = ".7"/>
|
||||||
|
<Key labels = "о|" ratio = ".7"/>
|
||||||
|
<Key labels = "л|" ratio = ".7"/>
|
||||||
|
<Key labels = "д|" ratio = ".7"/>
|
||||||
|
<Key labels = "ж|" ratio = ".7"/>
|
||||||
|
<Key labels = "э|" ratio = ".7"/>
|
||||||
|
<Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
|
||||||
|
</Row1>
|
||||||
|
<Row2>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "я|" ratio = ".7"/>
|
||||||
|
<Key labels = "ч|" ratio = ".7"/>
|
||||||
|
<Key labels = "с|" ratio = ".7"/>
|
||||||
|
<Key labels = "м|" ratio = ".7"/>
|
||||||
|
<Key labels = "и|" ratio = ".7"/>
|
||||||
|
<Key labels = "т|" ratio = ".7"/>
|
||||||
|
<Key labels = "ь|" ratio = ".7"/>
|
||||||
|
<Key labels = "б|" ratio = ".7"/>
|
||||||
|
<Key labels = "ю|" ratio = ".7"/>
|
||||||
|
<Key labels = ".|" ratio = ".7"/>
|
||||||
|
<Key labels = "↑!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
|
||||||
|
<Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
|
||||||
|
</Row2>
|
||||||
|
<Row3>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "4"/>
|
||||||
|
<Key labels = "Alt|" ratio = "1"/>
|
||||||
|
<Key labels = " |" ratio = "1"/>
|
||||||
|
<Key labels = "Ctrl" ratio = "1"/>
|
||||||
|
</Row3>
|
||||||
|
</Keyboard>
|
356
src/modules/keyboardq/keyboardq-qt6.qml
Normal file
356
src/modules/keyboardq/keyboardq-qt6.qml
Normal file
@ -0,0 +1,356 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020 - 2023 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Window
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
import "data"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: 800 //parent.width
|
||||||
|
height: 600
|
||||||
|
|
||||||
|
readonly property color backgroundColor: "#E6E9EA" //Kirigami.Theme.backgroundColor
|
||||||
|
readonly property color listBackgroundColor: "white"
|
||||||
|
readonly property color textFieldColor: "#121212"
|
||||||
|
readonly property color textFieldBackgroundColor: "#F8F8F8"
|
||||||
|
readonly property color textColor: Kirigami.Theme.textColor
|
||||||
|
readonly property color highlightedTextColor: Kirigami.Theme.highlightedTextColor
|
||||||
|
readonly property color highlightColor: Kirigami.Theme.highlightColor
|
||||||
|
|
||||||
|
property var langXml: ["de", "en", "es", "fr", "ru",]
|
||||||
|
property var arXml: ["Arabic"]
|
||||||
|
property var ruXml: ["Azerba", "Belaru", "Kazakh", "Kyrgyz", "Mongol",
|
||||||
|
"Russia", "Tajik", "Ukrain"]
|
||||||
|
property var frXml: ["Bambar", "Belgia","French", "Wolof"]
|
||||||
|
property var enXml: ["Bikol", "Chines", "Englis", "Irish", "Lithua", "Maori"]
|
||||||
|
property var esXml: ["Spanis"]
|
||||||
|
property var deXml: ["German"]
|
||||||
|
property var ptXml: ["Portug"]
|
||||||
|
property var scanXml: ["Danish", "Finnis", "Norweg", "Swedis"]
|
||||||
|
property var afganiXml: ["Afghan"]
|
||||||
|
property var genericXml: ["Armeni", "Bulgar", "Dutch", "Estoni", "Icelan",
|
||||||
|
"Indone", "Italia", "Latvia", "Maltes", "Moldav", "Romani", "Swahil", "Turkis"]
|
||||||
|
property var genericQzXml: ["Albani", "Bosnia", "Croati", "Czech", "Hungar",
|
||||||
|
"Luxemb", "Monten", "Polish", "Serbia", "Sloven", "Slovak"]
|
||||||
|
property var genericAzXml: []
|
||||||
|
|
||||||
|
property var keyIndex: []
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: backgroundItem
|
||||||
|
anchors.fill: parent
|
||||||
|
width: 800
|
||||||
|
color: backgroundColor
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: header
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
text: qsTr("To activate keyboard preview, select a layout.")
|
||||||
|
color: textColor
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Drawer {
|
||||||
|
id: drawer
|
||||||
|
width: 0.4 * backgroundItem.width
|
||||||
|
height: backgroundItem.height
|
||||||
|
edge: Qt.RightEdge
|
||||||
|
|
||||||
|
ScrollView {
|
||||||
|
id: scroll1
|
||||||
|
anchors.fill: parent
|
||||||
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: models
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
model: config.keyboardModelsModel
|
||||||
|
Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
|
||||||
|
currentIndex: model.currentIndex
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
property variant currentModel: model
|
||||||
|
hoverEnabled: true
|
||||||
|
width: 0.4 * backgroundItem.width
|
||||||
|
implicitHeight: 24
|
||||||
|
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 {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? "#3498DB" : "#ffffff"
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.9
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
hoverEnabled: true
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: {
|
||||||
|
models.currentIndex = index
|
||||||
|
drawer.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onCurrentItemChanged: { config.keyboardModels = model[currentIndex] } /* This works because model is a stringlist */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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";
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: mouseBar
|
||||||
|
anchors.fill: parent;
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: variants
|
||||||
|
|
||||||
|
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("Variant")
|
||||||
|
anchors.centerIn: parent
|
||||||
|
color: textColor
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
z: parent.z - 1
|
||||||
|
anchors.fill: parent
|
||||||
|
color: listBackgroundColor
|
||||||
|
opacity: 0.7
|
||||||
|
}
|
||||||
|
|
||||||
|
model: config.keyboardVariantsModel
|
||||||
|
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 {
|
||||||
|
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: {
|
||||||
|
variants.model.currentIndex = index
|
||||||
|
variants.positionViewAtIndex(index, ListView.Center)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: textInput
|
||||||
|
placeholderText: qsTr("Type here to test your keyboard")
|
||||||
|
height: 36
|
||||||
|
width: parent.width / 1.6
|
||||||
|
horizontalAlignment: TextInput.AlignHCenter
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.bottom: keyboard.top
|
||||||
|
anchors.bottomMargin: parent.height / 25
|
||||||
|
color: textFieldColor
|
||||||
|
|
||||||
|
background:Rectangle {
|
||||||
|
z: parent.z - 1
|
||||||
|
anchors.fill: parent
|
||||||
|
color: textFieldBackgroundColor
|
||||||
|
radius: 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Keyboard {
|
||||||
|
id: keyboard
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height / 3
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
source: langXml.includes(keyIndex) ? (keyIndex + ".xml") :
|
||||||
|
afganiXml.includes(keyIndex) ? "afgani.xml" :
|
||||||
|
scanXml.includes(keyIndex) ? "scan.xml" :
|
||||||
|
genericXml.includes(keyIndex) ? "generic.xml" :
|
||||||
|
genericQzXml.includes(keyIndex) ? "generic_qz.xml" :
|
||||||
|
arXml.includes(keyIndex) ? "ar.xml" :
|
||||||
|
deXml.includes(keyIndex) ? "de.xml" :
|
||||||
|
enXml.includes(keyIndex) ? "en.xml" :
|
||||||
|
esXml.includes(keyIndex) ? "es.xml" :
|
||||||
|
frXml.includes(keyIndex) ? "fr.xml" :
|
||||||
|
ptXml.includes(keyIndex) ? "pt.xml" :
|
||||||
|
ruXml.includes(keyIndex) ? "ru.xml" :"empty.xml"
|
||||||
|
rows: 4
|
||||||
|
columns: 10
|
||||||
|
keyColor: "transparent"
|
||||||
|
keyPressedColorOpacity: 0.2
|
||||||
|
keyImageLeft: "button_bkg_left.png"
|
||||||
|
keyImageRight: "button_bkg_right.png"
|
||||||
|
keyImageCenter: "button_bkg_center.png"
|
||||||
|
target: textInput
|
||||||
|
onEnterClicked: console.log("Enter!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29
src/modules/keyboardq/keyboardq-qt6.qrc
Normal file
29
src/modules/keyboardq/keyboardq-qt6.qrc
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file alias="kbd-model-map">../keyboard/kbd-model-map</file>
|
||||||
|
<file alias="images/restore.png">../keyboard/images/restore.png</file>
|
||||||
|
<file alias="non-ascii-layouts">../keyboard/non-ascii-layouts</file>
|
||||||
|
<file alias="keyboardq.qml">keyboardq-qt6.qml</file>
|
||||||
|
<file alias="data/Keyboard.qml">data/Keyboard-qt6.qml</file>
|
||||||
|
<file alias="data/Key.qml">data/Key-qt6.qml</file>
|
||||||
|
<file>data/backspace.svg</file>
|
||||||
|
<file>data/enter.svg</file>
|
||||||
|
<file>data/shift.svg</file>
|
||||||
|
<file alias="data/afgani.xml">data/afgani-qt6.xml</file>
|
||||||
|
<file alias="data/ar.xml">data/ar-qt6.xml</file>
|
||||||
|
<file alias="data/de.xml">data/de-qt6.xml</file>
|
||||||
|
<file alias="data/en.xml">data/en-qt6.xml</file>
|
||||||
|
<file alias="data/empty.xml">data/empty-qt6.xml</file>
|
||||||
|
<file alias="data/es.xml">data/es-qt6.xml</file>
|
||||||
|
<file alias="data/fr.xml">data/fr-qt6.xml</file>
|
||||||
|
<file alias="data/generic_qz.xml">data/generic_qz-qt6.xml</file>
|
||||||
|
<file alias="data/generic.xml">data/generic-qt6.xml</file>
|
||||||
|
<file alias="data/pt.xml">data/pt-qt6.xml</file>
|
||||||
|
<file alias="data/ru.xml">data/ru-qt6.xml</file>
|
||||||
|
<file>data/scan.xml</file>
|
||||||
|
<file>data/button_bkg_center.png</file>
|
||||||
|
<file>data/button_bkg_left.png</file>
|
||||||
|
<file>data/button_bkg_right.png</file>
|
||||||
|
<file>data/pan-end-symbolic.svg</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -36,7 +36,7 @@ calamares_add_plugin(localeq
|
|||||||
${_locale}/LocaleNames.cpp
|
${_locale}/LocaleNames.cpp
|
||||||
${_locale}/SetTimezoneJob.cpp
|
${_locale}/SetTimezoneJob.cpp
|
||||||
RESOURCES
|
RESOURCES
|
||||||
localeq.qrc
|
localeq${QT_VERSION_SUFFIX}.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
${qtname}::Network
|
${qtname}::Network
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
|
263
src/modules/localeq/Map-qt6.qml
Normal file
263
src/modules/localeq/Map-qt6.qml
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020 - 2022 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Window
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
|
||||||
|
import QtLocation
|
||||||
|
import QtPositioning
|
||||||
|
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
// These are used by the map query to initially center the
|
||||||
|
// map on the user's likely location. They are updated by
|
||||||
|
// getIp() which does a more accurate GeoIP lookup than
|
||||||
|
// the default one in Calamares
|
||||||
|
property var cityName: ""
|
||||||
|
property var countryName: ""
|
||||||
|
|
||||||
|
/* This is an extra GeoIP lookup, which will find better-accuracy
|
||||||
|
* location data for the user's IP, and then sets the current timezone
|
||||||
|
* and map location. Call it from Component.onCompleted so that
|
||||||
|
* it happens "on time" before the page is shown.
|
||||||
|
*/
|
||||||
|
function getIpOnline() {
|
||||||
|
var xhr = new XMLHttpRequest
|
||||||
|
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState === XMLHttpRequest.DONE) {
|
||||||
|
var responseJSON = JSON.parse(xhr.responseText)
|
||||||
|
var tz = responseJSON.timezone
|
||||||
|
var ct = responseJSON.city
|
||||||
|
var cy = responseJSON.country
|
||||||
|
|
||||||
|
cityName = ct
|
||||||
|
countryName = cy
|
||||||
|
|
||||||
|
config.setCurrentLocation(tz)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the target of the request
|
||||||
|
xhr.open("GET", "https://get.geojs.io/v1/ip/geo.json")
|
||||||
|
// Execute the request
|
||||||
|
xhr.send()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an "offline" GeoIP lookup -- it just follows what
|
||||||
|
* Calamares itself has figured out with its GeoIP or configuration.
|
||||||
|
* Call it from the **Component** onActivate() -- in localeq.qml --
|
||||||
|
* so it happens as the page is shown.
|
||||||
|
*/
|
||||||
|
function getIpOffline() {
|
||||||
|
cityName = config.currentLocation.zone
|
||||||
|
countryName = config.currentLocation.countryCode
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an **accurate** TZ lookup method: it queries an
|
||||||
|
* online service for the TZ at the given coordinates. It
|
||||||
|
* requires an internet connection, though, and the distribution
|
||||||
|
* will need to have an account with geonames to not hit the
|
||||||
|
* daily query limit.
|
||||||
|
*
|
||||||
|
* See below, in MouseArea, for calling the right method.
|
||||||
|
*/
|
||||||
|
function getTzOnline() {
|
||||||
|
var xhr = new XMLHttpRequest
|
||||||
|
var latC = map.center.latitude
|
||||||
|
var lonC = map.center.longitude
|
||||||
|
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState === XMLHttpRequest.DONE) {
|
||||||
|
var responseJSON = JSON.parse(xhr.responseText)
|
||||||
|
var tz2 = responseJSON.timezoneId
|
||||||
|
|
||||||
|
config.setCurrentLocation(tz2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Online lookup", latC, lonC)
|
||||||
|
// Needs to move to localeq.conf, each distribution will need their own account
|
||||||
|
xhr.open("GET", "http://api.geonames.org/timezoneJSON?lat=" + latC + "&lng=" + lonC + "&username=SOME_USERNAME")
|
||||||
|
xhr.send()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is a quick TZ lookup method: it uses the existing
|
||||||
|
* Calamares "closest TZ" code, which has lots of caveats.
|
||||||
|
*
|
||||||
|
* See below, in MouseArea, for calling the right method.
|
||||||
|
*/
|
||||||
|
function getTzOffline() {
|
||||||
|
var latC = map.center.latitude
|
||||||
|
var lonC = map.center.longitude
|
||||||
|
var tz = config.zonesModel.lookup(latC, lonC)
|
||||||
|
console.log("Offline lookup", latC, lonC)
|
||||||
|
config.setCurrentLocation(tz.region, tz.zone)
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height / 1.28
|
||||||
|
|
||||||
|
Plugin {
|
||||||
|
id: mapPlugin
|
||||||
|
preferred: ["osm", "esri"] // "esri", "here", "itemsoverlay", "mapbox", "mapboxgl", "osm"
|
||||||
|
}
|
||||||
|
|
||||||
|
Map {
|
||||||
|
id: map
|
||||||
|
anchors.fill: parent
|
||||||
|
plugin: mapPlugin
|
||||||
|
activeMapType: supportedMapTypes[0]
|
||||||
|
//might be desirable to set zoom level configurable?
|
||||||
|
zoomLevel: 7
|
||||||
|
bearing: 0
|
||||||
|
tilt: 0
|
||||||
|
copyrightsVisible : true
|
||||||
|
fieldOfView : 0
|
||||||
|
|
||||||
|
GeocodeModel {
|
||||||
|
id: geocodeModel
|
||||||
|
plugin: mapPlugin
|
||||||
|
autoUpdate: true
|
||||||
|
query: Address {
|
||||||
|
id: address
|
||||||
|
city: cityName
|
||||||
|
country: countryName
|
||||||
|
}
|
||||||
|
|
||||||
|
onLocationsChanged: {
|
||||||
|
if (count == 1) {
|
||||||
|
map.center.latitude = get(0).coordinate.latitude
|
||||||
|
map.center.longitude = get(0).coordinate.longitude
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MapQuickItem {
|
||||||
|
id: marker
|
||||||
|
anchorPoint.x: image.width/4
|
||||||
|
anchorPoint.y: image.height
|
||||||
|
coordinate: QtPositioning.coordinate(
|
||||||
|
map.center.latitude,
|
||||||
|
map.center.longitude)
|
||||||
|
//coordinate: QtPositioning.coordinate(40.730610, -73.935242) // New York
|
||||||
|
|
||||||
|
sourceItem: Image {
|
||||||
|
id: image
|
||||||
|
width: 32
|
||||||
|
height: 32
|
||||||
|
source: "img/pin.svg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
acceptedButtons: Qt.LeftButton
|
||||||
|
anchors.fill: map
|
||||||
|
hoverEnabled: true
|
||||||
|
property var coordinate: map.toCoordinate(Qt.point(mouseX, mouseY))
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
marker.coordinate = coordinate
|
||||||
|
map.center.latitude = coordinate.latitude
|
||||||
|
map.center.longitude = coordinate.longitude
|
||||||
|
|
||||||
|
// Pick a TZ lookup method here (quick:offline, accurate:online)
|
||||||
|
getTzOffline();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottomMargin: 5
|
||||||
|
anchors.rightMargin: 10
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
width: 32
|
||||||
|
height:32
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
Image {
|
||||||
|
source: "img/plus.png"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 36
|
||||||
|
height: 36
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: map.zoomLevel++
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
width: 32
|
||||||
|
height:32
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
Image {
|
||||||
|
source: "img/minus.png"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 32
|
||||||
|
height: 32
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: map.zoomLevel--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: 100
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: location
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 300
|
||||||
|
height: 30
|
||||||
|
color: Kirigami.Theme.backgroundColor
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: tzText
|
||||||
|
text: qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If you want an extra (and accurate) GeoIP lookup,
|
||||||
|
* enable this one and disable the offline lookup in
|
||||||
|
* onActivate().
|
||||||
|
Component.onCompleted: getIpOnline();
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.top: location.bottom
|
||||||
|
anchors.topMargin: 20
|
||||||
|
padding: 10
|
||||||
|
width: parent.width
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
Kirigami.Theme.backgroundColor: Kirigami.Theme.backgroundColor
|
||||||
|
text: qsTr("Please select your preferred location on the map so the installer can suggest the locale
|
||||||
|
and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging
|
||||||
|
to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
243
src/modules/localeq/Offline-qt6.qml
Normal file
243
src/modules/localeq/Offline-qt6.qml
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020-2022 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Window
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
|
||||||
|
Page {
|
||||||
|
width: 800 //parent.width
|
||||||
|
height: 500
|
||||||
|
|
||||||
|
id: control
|
||||||
|
property string currentRegion
|
||||||
|
property string currentZone
|
||||||
|
|
||||||
|
readonly property color backgroundColor: Kirigami.Theme.backgroundColor //"#F5F5F5"
|
||||||
|
readonly property color backgroundLighterColor: "#ffffff"
|
||||||
|
readonly property color highlightColor: Kirigami.Theme.highlightColor //"#3498DB"
|
||||||
|
readonly property color textColor: Kirigami.Theme.textColor
|
||||||
|
readonly property color highlightedTextColor: Kirigami.Theme.highlightedTextColor
|
||||||
|
|
||||||
|
StackView {
|
||||||
|
id: stack
|
||||||
|
anchors.fill: parent
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
initialItem: Item {
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
id: region
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
color: textColor
|
||||||
|
horizontalAlignment: Text.AlignCenter
|
||||||
|
text: qsTr("Select your preferred Region, or use the default settings.")
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
|
||||||
|
id: list
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
active: true
|
||||||
|
}
|
||||||
|
|
||||||
|
width: parent.width / 2
|
||||||
|
height: parent.height / 1.5
|
||||||
|
anchors.centerIn: parent
|
||||||
|
anchors.verticalCenterOffset: -30
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
spacing: 2
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
z: parent.z - 1
|
||||||
|
anchors.fill: parent
|
||||||
|
color: backgroundLighterColor
|
||||||
|
}
|
||||||
|
|
||||||
|
model: config.regionModel
|
||||||
|
currentIndex: 1 // offline install, means locale from config
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
width: parent.width
|
||||||
|
height: 28
|
||||||
|
highlighted: ListView.isCurrentItem
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
height: 28
|
||||||
|
color: highlighted ? highlightedTextColor : textColor
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? highlightColor : backgroundLighterColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
|
||||||
|
list.currentIndex = index
|
||||||
|
control.currentRegion = model.name
|
||||||
|
config.regionalZonesModel.region = control.currentRegion
|
||||||
|
tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
stack.push(zoneView)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: zoneView
|
||||||
|
|
||||||
|
Item {
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
id: zone
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
color: textColor
|
||||||
|
text: qsTr("Select your preferred Zone within your Region.")
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
|
||||||
|
id: list2
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
active: true
|
||||||
|
}
|
||||||
|
|
||||||
|
width: parent.width / 2
|
||||||
|
height: parent.height / 1.5
|
||||||
|
anchors.centerIn: parent
|
||||||
|
anchors.verticalCenterOffset: -30
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
spacing: 2
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
z: parent.z - 1
|
||||||
|
anchors.fill: parent
|
||||||
|
color: backgroundLighterColor
|
||||||
|
//radius: 5
|
||||||
|
//opacity: 0.7
|
||||||
|
}
|
||||||
|
|
||||||
|
model: config.regionalZonesModel
|
||||||
|
currentIndex : 99 // index of New York
|
||||||
|
Component.onCompleted: positionViewAtIndex(currentIndex, ListView.Center)
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
width: parent.width
|
||||||
|
height: 24
|
||||||
|
highlighted: ListView.isCurrentItem
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
height: 24
|
||||||
|
color: highlighted ? highlightedTextColor : textColor
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? highlightColor : backgroundLighterColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
|
||||||
|
list2.currentIndex = index
|
||||||
|
list2.positionViewAtIndex(index, ListView.Center)
|
||||||
|
control.currentZone = model.name
|
||||||
|
config.setCurrentLocation(control.currentRegion, control.currentZone)
|
||||||
|
tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.verticalCenterOffset: -30
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: parent.width / 15
|
||||||
|
icon.name: "go-previous"
|
||||||
|
text: qsTr("Zones")
|
||||||
|
onClicked: stack.pop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
|
height: 60
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
|
||||||
|
Item {
|
||||||
|
|
||||||
|
id: location
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 300
|
||||||
|
height: 30
|
||||||
|
color: Kirigami.Theme.backgroundColor
|
||||||
|
|
||||||
|
Text {
|
||||||
|
|
||||||
|
id: tztext
|
||||||
|
text: qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
|
||||||
|
anchors.top: location.bottom
|
||||||
|
anchors.topMargin: 20
|
||||||
|
padding: 10
|
||||||
|
width: parent.width
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
Kirigami.Theme.backgroundColor: Kirigami.Theme.backgroundColor
|
||||||
|
text: qsTr("You can fine-tune Language and Locale settings below.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
259
src/modules/localeq/localeq-qt6.qml
Normal file
259
src/modules/localeq/localeq-qt6.qml
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2020 - 2022 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
readonly property color headerBackgroundColor: Kirigami.Theme.alternateBackgroundColor //"#eff0f1"
|
||||||
|
readonly property color backgroundLighterColor: "#ffffff"
|
||||||
|
readonly property color highlightColor: Kirigami.Theme.highlightColor //"#3498DB"
|
||||||
|
readonly property color textColor: Kirigami.Theme.textColor //"#1F1F1F"
|
||||||
|
readonly property color highlightedTextColor: Kirigami.Theme.highlightedTextColor
|
||||||
|
|
||||||
|
function onActivate() {
|
||||||
|
/* If you want the map to follow Calamares's GeoIP
|
||||||
|
* lookup or configuration, call the update function
|
||||||
|
* here, and disable the one at onCompleted in Map.qml.
|
||||||
|
*/
|
||||||
|
if (Network.hasInternet) { image.item.getIpOffline() }
|
||||||
|
}
|
||||||
|
|
||||||
|
Loader {
|
||||||
|
id: image
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height / 1.28
|
||||||
|
// Network is in io.calamares.core
|
||||||
|
source: Network.hasInternet ? "Map.qml" : "Offline.qml"
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.bottomMargin : 20
|
||||||
|
width: parent.width
|
||||||
|
spacing: 50
|
||||||
|
|
||||||
|
GridLayout {
|
||||||
|
rowSpacing: Kirigami.Units.largeSpacing
|
||||||
|
columnSpacing: Kirigami.Units.largeSpacing
|
||||||
|
|
||||||
|
Kirigami.Icon {
|
||||||
|
source: "qrc:/img/locale.svg"
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.maximumHeight: Kirigami.Units.iconSizes.large
|
||||||
|
Layout.preferredWidth: height
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
Label {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
text: config.currentLanguageStatus
|
||||||
|
}
|
||||||
|
Kirigami.Separator {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
Layout.alignment: Qt.AlignRight|Qt.AlignVCenter
|
||||||
|
Layout.columnSpan: 2
|
||||||
|
text: qsTr("Change")
|
||||||
|
onClicked: {
|
||||||
|
drawerLanguage.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GridLayout {
|
||||||
|
rowSpacing: Kirigami.Units.largeSpacing
|
||||||
|
columnSpacing: Kirigami.Units.largeSpacing
|
||||||
|
|
||||||
|
Kirigami.Icon {
|
||||||
|
source: "qrc:/img/locale.svg"
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.maximumHeight: Kirigami.Units.iconSizes.large
|
||||||
|
Layout.preferredWidth: height
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
Label {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
text: config.currentLCStatus
|
||||||
|
}
|
||||||
|
Kirigami.Separator {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
Layout.alignment: Qt.AlignRight|Qt.AlignVCenter
|
||||||
|
Layout.columnSpan: 2
|
||||||
|
text: qsTr("Change")
|
||||||
|
onClicked: {
|
||||||
|
drawerLocale.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Drawer {
|
||||||
|
id: drawerLanguage
|
||||||
|
width: 0.33 * root.width
|
||||||
|
height: root.height
|
||||||
|
edge: Qt.LeftEdge
|
||||||
|
|
||||||
|
ScrollView {
|
||||||
|
id: scroll1
|
||||||
|
anchors.fill: parent
|
||||||
|
contentHeight: 800
|
||||||
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: list1
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
model: config.supportedLocales
|
||||||
|
currentIndex: -1 //config.localeIndex
|
||||||
|
|
||||||
|
header: Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: 100
|
||||||
|
color: "#eff0f1" //headerBackgroundColor
|
||||||
|
Text {
|
||||||
|
anchors.fill: parent
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
text: qsTr("<h3>Languages</h3> </br>
|
||||||
|
The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>.").arg(config.currentLanguageCode)
|
||||||
|
font.pointSize: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
property variant myData: model
|
||||||
|
hoverEnabled: true
|
||||||
|
width: drawerLanguage.width
|
||||||
|
implicitHeight: 24
|
||||||
|
highlighted: ListView.isCurrentItem
|
||||||
|
Label {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
width: parent.width
|
||||||
|
height: 24
|
||||||
|
color: highlighted ? "#eff0f1" : "#1F1F1F" // headerBackgroundColor : textColor
|
||||||
|
text: modelData
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? highlightColor : backgroundLighterColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.9
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
hoverEnabled: true
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: {
|
||||||
|
list1.currentIndex = index
|
||||||
|
drawerLanguage.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onCurrentItemChanged: { config.currentLanguageCode = model[currentIndex] } /* This works because model is a stringlist */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Drawer {
|
||||||
|
id: drawerLocale
|
||||||
|
width: 0.33 * root.width
|
||||||
|
height: root.height
|
||||||
|
edge: Qt.RightEdge
|
||||||
|
|
||||||
|
ScrollView {
|
||||||
|
id: scroll2
|
||||||
|
anchors.fill: parent
|
||||||
|
contentHeight: 800
|
||||||
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: list2
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
model: config.supportedLocales
|
||||||
|
currentIndex: -1 //model.currentLCCodeIndex
|
||||||
|
|
||||||
|
header: Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: 100
|
||||||
|
color: "#eff0f1" // headerBackgroundColor
|
||||||
|
Text {
|
||||||
|
anchors.fill: parent
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
text: qsTr("<h3>Locales</h3> </br>
|
||||||
|
The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>.").arg(config.currentLCCode)
|
||||||
|
font.pointSize: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
width: drawerLocale.width
|
||||||
|
implicitHeight: 24
|
||||||
|
highlighted: ListView.isCurrentItem
|
||||||
|
Label {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
width: parent.width
|
||||||
|
height: 24
|
||||||
|
color: highlighted ? "#eff0f1" : "#1F1F1F" // headerBackgroundColor : textColor
|
||||||
|
text: modelData
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? highlightColor : backgroundLighterColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.9
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
hoverEnabled: true
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: {
|
||||||
|
list2.currentIndex = index
|
||||||
|
drawerLocale.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onCurrentItemChanged: { config.currentLCCode = model[currentIndex]; } /* This works because model is a stringlist */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loader {
|
||||||
|
id:load
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
}
|
11
src/modules/localeq/localeq-qt6.qrc
Normal file
11
src/modules/localeq/localeq-qt6.qrc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file alias="localeq.qml">localeq-qt6.qml</file>
|
||||||
|
<file alias="Map.qml">Map-qt6.qml</file>
|
||||||
|
<file alias="Offline.qml">Offline-qt6.qml</file>
|
||||||
|
<file>img/locale.svg</file>
|
||||||
|
<file>img/minus.png</file>
|
||||||
|
<file>img/pin.svg</file>
|
||||||
|
<file>img/plus.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -61,7 +61,7 @@ calamares_add_plugin(packagechooserq
|
|||||||
${_packagechooser}/PackageModel.cpp
|
${_packagechooser}/PackageModel.cpp
|
||||||
${_extra_src}
|
${_extra_src}
|
||||||
RESOURCES
|
RESOURCES
|
||||||
packagechooserq.qrc
|
packagechooserq${QT_VERSION_SUFFIX}.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
calamaresui
|
calamaresui
|
||||||
${_extra_libraries}
|
${_extra_libraries}
|
||||||
|
241
src/modules/packagechooserq/packagechooserq-qt6.qml
Normal file
241
src/modules/packagechooserq/packagechooserq-qt6.qml
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#f2f2f2"
|
||||||
|
|
||||||
|
ButtonGroup {
|
||||||
|
id: switchGroup
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: column
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: 5
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
//id: rectangle
|
||||||
|
width: 700
|
||||||
|
height: 150
|
||||||
|
color: "#ffffff"
|
||||||
|
radius: 10
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
width: 450
|
||||||
|
height: 104
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/>
|
||||||
|
Default option.")
|
||||||
|
font.pointSize: 10
|
||||||
|
anchors.verticalCenterOffset: -10
|
||||||
|
anchors.horizontalCenterOffset: 100
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
|
||||||
|
Switch {
|
||||||
|
id: element2
|
||||||
|
x: 500
|
||||||
|
y: 110
|
||||||
|
width: 187
|
||||||
|
height: 14
|
||||||
|
text: qsTr("LibreOffice")
|
||||||
|
checked: true
|
||||||
|
hoverEnabled: true
|
||||||
|
ButtonGroup.group: switchGroup
|
||||||
|
|
||||||
|
indicator: Rectangle {
|
||||||
|
implicitWidth: 40
|
||||||
|
implicitHeight: 14
|
||||||
|
radius: 10
|
||||||
|
color: element2.checked ? "#3498db" : "#B9B9B9"
|
||||||
|
border.color: element2.checked ? "#3498db" : "#cccccc"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
x: element2.checked ? parent.width - width : 0
|
||||||
|
y: (parent.height - height) / 2
|
||||||
|
width: 20
|
||||||
|
height: 20
|
||||||
|
radius: 10
|
||||||
|
color: element2.down ? "#cccccc" : "#ffffff"
|
||||||
|
border.color: element2.checked ? (element1.down ? "#3498db" : "#3498db") : "#999999"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
if ( checked ) {
|
||||||
|
config.packageChoice = "libreoffice"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image2
|
||||||
|
x: 8
|
||||||
|
y: 25
|
||||||
|
height: 100
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "images/libreoffice.jpg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 700
|
||||||
|
height: 150
|
||||||
|
radius: 10
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
width: 450
|
||||||
|
height: 104
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives.")
|
||||||
|
font.pointSize: 10
|
||||||
|
anchors.verticalCenterOffset: -10
|
||||||
|
anchors.horizontalCenterOffset: 100
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
|
||||||
|
Switch {
|
||||||
|
id: element1
|
||||||
|
x: 500
|
||||||
|
y: 110
|
||||||
|
width: 187
|
||||||
|
height: 14
|
||||||
|
text: qsTr("No Office Suite")
|
||||||
|
checked: false
|
||||||
|
hoverEnabled: true
|
||||||
|
ButtonGroup.group: switchGroup
|
||||||
|
|
||||||
|
indicator: Rectangle {
|
||||||
|
implicitWidth: 40
|
||||||
|
implicitHeight: 14
|
||||||
|
radius: 10
|
||||||
|
color: element1.checked ? "#3498db" : "#B9B9B9"
|
||||||
|
border.color: element1.checked ? "#3498db" : "#cccccc"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
x: element1.checked ? parent.width - width : 0
|
||||||
|
y: (parent.height - height) / 2
|
||||||
|
width: 20
|
||||||
|
height: 20
|
||||||
|
radius: 10
|
||||||
|
color: element1.down ? "#cccccc" : "#ffffff"
|
||||||
|
border.color: element1.checked ? (element1.down ? "#3498db" : "#3498db") : "#999999"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
if ( checked ) {
|
||||||
|
config.packageChoice = "no_office_suite"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
x: 8
|
||||||
|
y: 25
|
||||||
|
height: 100
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "images/no-selection.png"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 700
|
||||||
|
height: 150
|
||||||
|
color: "#ffffff"
|
||||||
|
radius: 10
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
width: 450
|
||||||
|
height: 104
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser.")
|
||||||
|
font.pointSize: 10
|
||||||
|
anchors.verticalCenterOffset: -10
|
||||||
|
anchors.horizontalCenterOffset: 100
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
|
||||||
|
Switch {
|
||||||
|
id: element3
|
||||||
|
x: 500
|
||||||
|
y: 110
|
||||||
|
width: 187
|
||||||
|
height: 14
|
||||||
|
text: qsTr("Minimal Install")
|
||||||
|
checked: false
|
||||||
|
hoverEnabled: true
|
||||||
|
ButtonGroup.group: switchGroup
|
||||||
|
|
||||||
|
indicator: Rectangle {
|
||||||
|
implicitWidth: 40
|
||||||
|
implicitHeight: 14
|
||||||
|
radius: 10
|
||||||
|
color: element3.checked ? "#3498db" : "#B9B9B9"
|
||||||
|
border.color: element3.checked ? "#3498db" : "#cccccc"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
x: element3.checked ? parent.width - width : 0
|
||||||
|
y: (parent.height - height) / 2
|
||||||
|
width: 20
|
||||||
|
height: 20
|
||||||
|
radius: 10
|
||||||
|
color: element3.down ? "#cccccc" : "#ffffff"
|
||||||
|
border.color: element3.checked ? (element3.down ? "#3498db" : "#3498db") : "#999999"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
if ( checked ) {
|
||||||
|
config.packageChoice = "minimal_install"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image3
|
||||||
|
x: 8
|
||||||
|
y: 25
|
||||||
|
height: 100
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "images/plasma.png"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 700
|
||||||
|
height: 25
|
||||||
|
color: "#f2f2f2"
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
height: 25
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("Please select an option for your install, or use the default: LibreOffice included.")
|
||||||
|
font.pointSize: 10
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
8
src/modules/packagechooserq/packagechooserq-qt6.qrc
Normal file
8
src/modules/packagechooserq/packagechooserq-qt6.qrc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file alias="packagechooserq.qml">packagechooserq-qt6.qml</file>
|
||||||
|
<file>images/libreoffice.jpg</file>
|
||||||
|
<file>images/no-selection.png</file>
|
||||||
|
<file>images/plasma.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -19,7 +19,7 @@ calamares_add_plugin(summaryq
|
|||||||
${_summary}/Config.cpp
|
${_summary}/Config.cpp
|
||||||
UI
|
UI
|
||||||
RESOURCES
|
RESOURCES
|
||||||
summaryq.qrc
|
summaryq${QT_VERSION_SUFFIX}.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
calamaresui
|
calamaresui
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
|
111
src/modules/summaryq/summaryq-qt6.qml
Normal file
111
src/modules/summaryq/summaryq-qt6.qml
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
|
Kirigami.ScrollablePage {
|
||||||
|
width: 860 //parent.width
|
||||||
|
height: 640 //parent.height
|
||||||
|
|
||||||
|
Kirigami.Theme.backgroundColor: "#EFF0F1"
|
||||||
|
Kirigami.Theme.textColor: "#1F1F1F"
|
||||||
|
|
||||||
|
header: Kirigami.Heading {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: 100
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
font.weight: Font.Medium
|
||||||
|
font.pointSize: 12
|
||||||
|
text: config.message
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: _delegate
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: rect
|
||||||
|
border.color: "#BDC3C7"
|
||||||
|
width: parent.width - 80
|
||||||
|
implicitHeight: message.implicitHeight + title.implicitHeight + 20
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width - 80
|
||||||
|
implicitHeight: message.implicitHeight + title.implicitHeight + 20
|
||||||
|
|
||||||
|
Kirigami.FormLayout {
|
||||||
|
|
||||||
|
GridLayout {
|
||||||
|
anchors {
|
||||||
|
//left: parent.left
|
||||||
|
top: parent.top
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
rowSpacing: Kirigami.Units.largeSpacing
|
||||||
|
columnSpacing: Kirigami.Units.largeSpacing
|
||||||
|
columns: width > Kirigami.Units.gridUnit * 20 ? 4 : 2
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
Layout.maximumHeight: Kirigami.Units.iconSizes.huge
|
||||||
|
Layout.preferredWidth: height
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: index === 0 ? "img/lokalize.svg"
|
||||||
|
: ( index === 1 ? "img/keyboard.svg"
|
||||||
|
: ( index === 2 ? "qrc:/data/images/partition-manual.svg"
|
||||||
|
: "qrc:/data/images/partition-partition.svg" ) )
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: title
|
||||||
|
Layout.fillWidth: true
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
text: model.title
|
||||||
|
font.weight: Font.Medium
|
||||||
|
font.pointSize: 16
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
height: 2
|
||||||
|
width: 200
|
||||||
|
border.color: "#BDC3C7"
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: message
|
||||||
|
Layout.fillWidth: true
|
||||||
|
text: model.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 20
|
||||||
|
model: config.summaryModel
|
||||||
|
delegate: _delegate
|
||||||
|
}
|
||||||
|
}
|
7
src/modules/summaryq/summaryq-qt6.qrc
Normal file
7
src/modules/summaryq/summaryq-qt6.qrc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file alias="summaryq.qml">summaryq-qt6.qml</file>
|
||||||
|
<file>img/keyboard.svg</file>
|
||||||
|
<file>img/lokalize.svg</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -41,7 +41,7 @@ calamares_add_plugin(usersq
|
|||||||
SOURCES
|
SOURCES
|
||||||
UsersQmlViewStep.cpp
|
UsersQmlViewStep.cpp
|
||||||
RESOURCES
|
RESOURCES
|
||||||
usersq.qrc
|
usersq${QT_VERSION_SUFFIX}.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
users_internal
|
users_internal
|
||||||
${CRYPT_LIBRARIES}
|
${CRYPT_LIBRARIES}
|
||||||
|
425
src/modules/usersq/usersq-qt6.qml
Normal file
425
src/modules/usersq/usersq-qt6.qml
Normal file
@ -0,0 +1,425 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020 - 2022 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
|
Kirigami.ScrollablePage {
|
||||||
|
// You can hard-code a color here, or bind to a Kirigami theme color,
|
||||||
|
// or use a color from Calamares branding, or ..
|
||||||
|
readonly property color unfilledFieldColor: "#FBFBFB" //Kirigami.Theme.backgroundColor
|
||||||
|
readonly property color positiveFieldColor: "#F0FFF0" //Kirigami.Theme.positiveBackgroundColor
|
||||||
|
readonly property color negativeFieldColor: "#EBCED1" //Kirigami.Theme.negativeBackgroundColor
|
||||||
|
readonly property color unfilledFieldOutlineColor: "#F1F1F1"
|
||||||
|
readonly property color positiveFieldOutlineColor: "#DCFFDC"
|
||||||
|
readonly property color negativeFieldOutlineColor: "#BE5F68"
|
||||||
|
readonly property color headerTextColor: "#1F1F1F"
|
||||||
|
readonly property color commentsColor: "#6D6D6D"
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
header: Kirigami.Heading {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: 50
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
color: headerTextColor
|
||||||
|
font.weight: Font.Medium
|
||||||
|
font.pointSize: 12
|
||||||
|
text: qsTr("Pick your user name and credentials to login and perform admin tasks")
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: _formLayout
|
||||||
|
spacing: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
|
Column {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("What is your name?")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: _userNameField
|
||||||
|
width: parent.width
|
||||||
|
enabled: config.isEditable("fullName")
|
||||||
|
placeholderText: qsTr("Your Full Name")
|
||||||
|
text: config.fullName
|
||||||
|
onTextChanged: config.setFullName(text)
|
||||||
|
|
||||||
|
palette.base: _userNameField.text.length
|
||||||
|
? positiveFieldColor : unfilledFieldColor
|
||||||
|
palette.highlight : _userNameField.text.length
|
||||||
|
? positiveFieldOutlineColor : unfilledFieldOutlineColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("What name do you want to use to log in?")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: _userLoginField
|
||||||
|
width: parent.width
|
||||||
|
enabled: config.isEditable("loginName")
|
||||||
|
placeholderText: qsTr("Login Name")
|
||||||
|
text: config.loginName
|
||||||
|
validator: RegularExpressionValidator { regularExpression: /[a-z_][a-z0-9_-]*[$]?$/ }
|
||||||
|
|
||||||
|
onTextChanged: acceptableInput
|
||||||
|
? ( _userLoginField.text === "root"
|
||||||
|
? forbiddenMessage.visible=true
|
||||||
|
: ( config.setLoginName(text),
|
||||||
|
userMessage.visible = false,forbiddenMessage.visible=false ) )
|
||||||
|
: ( userMessage.visible = true,console.log("Invalid") )
|
||||||
|
|
||||||
|
palette.base: _userLoginField.text.length
|
||||||
|
? ( acceptableInput
|
||||||
|
? ( _userLoginField.text === "root"
|
||||||
|
? negativeFieldColor
|
||||||
|
: positiveFieldColor )
|
||||||
|
: negativeFieldColor )
|
||||||
|
: unfilledFieldColor
|
||||||
|
palette.highlight : _userLoginField.text.length
|
||||||
|
? ( acceptableInput
|
||||||
|
? ( _userLoginField.text === "root"
|
||||||
|
? negativeFieldOutlineColor
|
||||||
|
: positiveFieldOutlineColor )
|
||||||
|
: negativeFieldOutlineColor )
|
||||||
|
: unfilledFieldOutlineColor
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("If more than one person will use this computer, you can create multiple accounts after installation.")
|
||||||
|
font.weight: Font.Thin
|
||||||
|
font.pointSize: 8
|
||||||
|
color: commentsColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: userMessage
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: Kirigami.MessageType.Error
|
||||||
|
text: qsTr("Only lowercase letters, numbers, underscore and hyphen are allowed.")
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: forbiddenMessage
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: Kirigami.MessageType.Error
|
||||||
|
text: qsTr("root is not allowed as username.")
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("What is the name of this computer?")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: _hostName
|
||||||
|
width: parent.width
|
||||||
|
placeholderText: qsTr("Computer Name")
|
||||||
|
text: config.hostname
|
||||||
|
validator: RegularExpressionValidator { regularExpression: /[a-zA-Z0-9][-a-zA-Z0-9_]+/ }
|
||||||
|
|
||||||
|
onTextChanged: acceptableInput
|
||||||
|
? ( _hostName.text === "localhost"
|
||||||
|
? forbiddenHost.visible=true
|
||||||
|
: ( config.setHostName(text),
|
||||||
|
hostMessage.visible = false,forbiddenHost.visible = false ) )
|
||||||
|
: hostMessage.visible = true
|
||||||
|
|
||||||
|
palette.base: _hostName.text.length
|
||||||
|
? ( acceptableInput
|
||||||
|
? ( _hostName.text === "localhost"
|
||||||
|
? negativeFieldColor : positiveFieldColor )
|
||||||
|
: negativeFieldColor)
|
||||||
|
: unfilledFieldColor
|
||||||
|
palette.highlight : _hostName.text.length
|
||||||
|
? ( acceptableInput
|
||||||
|
? ( _hostName.text === "localhost"
|
||||||
|
? negativeFieldOutlineColor : positiveFieldOutlineColor )
|
||||||
|
: negativeFieldOutlineColor)
|
||||||
|
: unfilledFieldOutlineColor
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("This name will be used if you make the computer visible to others on a network.")
|
||||||
|
font.weight: Font.Thin
|
||||||
|
font.pointSize: 8
|
||||||
|
color: commentsColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: hostMessage
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: Kirigami.MessageType.Error
|
||||||
|
text: qsTr("Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.")
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: forbiddenHost
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: Kirigami.MessageType.Error
|
||||||
|
text: qsTr("localhost is not allowed as hostname.")
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("Choose a password to keep your account safe.")
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
width: parent.width
|
||||||
|
spacing: 20
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: _passwordField
|
||||||
|
width: parent.width / 2 - 10
|
||||||
|
placeholderText: qsTr("Password")
|
||||||
|
text: config.userPassword
|
||||||
|
onTextChanged: config.setUserPassword(text)
|
||||||
|
|
||||||
|
palette.base: _passwordField.text.length
|
||||||
|
? positiveFieldColor : unfilledFieldColor
|
||||||
|
palette.highlight : _passwordField.text.length
|
||||||
|
? positiveFieldOutlineColor : unfilledFieldOutlineColor
|
||||||
|
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
passwordMaskDelay: 300
|
||||||
|
inputMethodHints: Qt.ImhNoAutoUppercase
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: _verificationPasswordField
|
||||||
|
width: parent.width / 2 - 10
|
||||||
|
placeholderText: qsTr("Repeat Password")
|
||||||
|
text: config.userPasswordSecondary
|
||||||
|
|
||||||
|
onTextChanged: _passwordField.text === _verificationPasswordField.text
|
||||||
|
? ( config.setUserPasswordSecondary(text),
|
||||||
|
passMessage.visible = false,
|
||||||
|
validityMessage.visible = true )
|
||||||
|
: ( passMessage.visible = true,
|
||||||
|
validityMessage.visible = false )
|
||||||
|
|
||||||
|
palette.base: _verificationPasswordField.text.length
|
||||||
|
? ( _passwordField.text === _verificationPasswordField.text
|
||||||
|
? positiveFieldColor : negativeFieldColor )
|
||||||
|
: unfilledFieldColor
|
||||||
|
palette.highlight : _verificationPasswordField.text.length
|
||||||
|
? ( _passwordField.text === _verificationPasswordField.text
|
||||||
|
? positiveFieldOutlineColor : negativeFieldOutlineColor )
|
||||||
|
: unfilledFieldOutlineColor
|
||||||
|
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
passwordMaskDelay: 300
|
||||||
|
inputMethodHints: Qt.ImhNoAutoUppercase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.")
|
||||||
|
font.weight: Font.Thin
|
||||||
|
font.pointSize: 8
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
color: commentsColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: passMessage
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: Kirigami.MessageType.Error
|
||||||
|
text: config.userPasswordMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: validityMessage
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: config.userPasswordValidity
|
||||||
|
? ( config.requireStrongPasswords
|
||||||
|
? Kirigami.MessageType.Error : Kirigami.MessageType.Warning )
|
||||||
|
: Kirigami.MessageType.Positive
|
||||||
|
text: config.userPasswordMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckBox {
|
||||||
|
id: root
|
||||||
|
visible: config.writeRootPassword
|
||||||
|
text: qsTr("Reuse user password as root password")
|
||||||
|
checked: config.reuseUserPasswordForRoot
|
||||||
|
onCheckedChanged: config.setReuseUserPasswordForRoot(checked)
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
visible: root.checked
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("Use the same password for the administrator account.")
|
||||||
|
font.weight: Font.Thin
|
||||||
|
font.pointSize: 8
|
||||||
|
color: commentsColor
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
visible: ! root.checked
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
|
Label {
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("Choose a root password to keep your account safe.")
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
width: parent.width
|
||||||
|
spacing: 20
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: _rootPasswordField
|
||||||
|
width: parent.width / 2 -10
|
||||||
|
placeholderText: qsTr("Root Password")
|
||||||
|
text: config.rootPassword
|
||||||
|
|
||||||
|
onTextChanged: config.setRootPassword(text)
|
||||||
|
|
||||||
|
palette.base: _rootPasswordField.text.length
|
||||||
|
? positiveFieldColor : unfilledFieldColor
|
||||||
|
palette.highlight : _rootPasswordField.text.length
|
||||||
|
? positiveFieldOutlineColor : unfilledFieldOutlineColor
|
||||||
|
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
passwordMaskDelay: 300
|
||||||
|
inputMethodHints: Qt.ImhNoAutoUppercase
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: _verificationRootPasswordField
|
||||||
|
width: parent.width / 2 -10
|
||||||
|
placeholderText: qsTr("Repeat Root Password")
|
||||||
|
text: config.rootPasswordSecondary
|
||||||
|
|
||||||
|
onTextChanged: _rootPasswordField.text === _verificationRootPasswordField.text
|
||||||
|
? ( config.setRootPasswordSecondary(text),
|
||||||
|
rootPassMessage.visible = false,rootValidityMessage.visible = true )
|
||||||
|
: ( rootPassMessage.visible = true,rootValidityMessage.visible = false )
|
||||||
|
|
||||||
|
palette.base: _verificationRootPasswordField.text.length
|
||||||
|
? ( _rootPasswordField.text === _verificationRootPasswordField.text
|
||||||
|
? positiveFieldColor : negativeFieldColor)
|
||||||
|
: unfilledFieldColor
|
||||||
|
palette.highlight : _verificationRootPasswordField.text.length
|
||||||
|
? ( _rootPasswordField.text === _verificationRootPasswordField.text
|
||||||
|
? positiveFieldOutlineColor : negativeFieldOutlineColor)
|
||||||
|
: unfilledFieldOutlineColor
|
||||||
|
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
passwordMaskDelay: 300
|
||||||
|
inputMethodHints: Qt.ImhNoAutoUppercase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
visible: ! root.checked
|
||||||
|
width: parent.width
|
||||||
|
text: qsTr("Enter the same password twice, so that it can be checked for typing errors.")
|
||||||
|
font.weight: Font.Thin
|
||||||
|
font.pointSize: 8
|
||||||
|
color: commentsColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: rootPassMessage
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: Kirigami.MessageType.Error
|
||||||
|
text: config.rootPasswordMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
id: rootValidityMessage
|
||||||
|
Layout.fillWidth: true
|
||||||
|
showCloseButton: true
|
||||||
|
visible: false
|
||||||
|
type: config.rootPasswordValidity
|
||||||
|
? ( config.requireStrongPasswords
|
||||||
|
? Kirigami.MessageType.Error : Kirigami.MessageType.Warning )
|
||||||
|
: Kirigami.MessageType.Positive
|
||||||
|
text: config.rootPasswordMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckBox {
|
||||||
|
Layout.alignment: Qt.AlignCenter
|
||||||
|
text: qsTr("Log in automatically without asking for the password")
|
||||||
|
checked: config.doAutoLogin
|
||||||
|
onCheckedChanged: config.setAutoLogin(checked)
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckBox {
|
||||||
|
visible: config.permitWeakPasswords
|
||||||
|
Layout.alignment: Qt.AlignCenter
|
||||||
|
text: qsTr("Validate passwords quality")
|
||||||
|
checked: config.requireStrongPasswords
|
||||||
|
onCheckedChanged: config.setRequireStrongPasswords(checked),
|
||||||
|
rootPassMessage.visible = false
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
visible: config.permitWeakPasswords
|
||||||
|
width: parent.width
|
||||||
|
Layout.alignment: Qt.AlignCenter
|
||||||
|
text: qsTr("When this box is checked, password-strength checking is done and you will not be able to use a weak password.")
|
||||||
|
font.weight: Font.Thin
|
||||||
|
font.pointSize: 8
|
||||||
|
color: commentsColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
5
src/modules/usersq/usersq-qt6.qrc
Normal file
5
src/modules/usersq/usersq-qt6.qrc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file alias="usersq.qml">usersq-qt6.qml</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
Loading…
Reference in New Issue
Block a user