Browse Source

qml: use highlight pane for QR codes, refactor ReceiveDialog invoice select UI.

master
Sander van Grieken 2 years ago
parent
commit
3793a6b6b6
  1. 21
      electrum/gui/qml/components/ExportTxDialog.qml
  2. 46
      electrum/gui/qml/components/GenericShareDialog.qml
  3. 190
      electrum/gui/qml/components/ReceiveDialog.qml
  4. 4
      electrum/gui/qml/components/controls/ButtonContainer.qml
  5. 2
      electrum/gui/qml/components/controls/FlatButton.qml

21
electrum/gui/qml/components/ExportTxDialog.qml

@ -38,15 +38,20 @@ ElDialog {
width: parent.width
spacing: constants.paddingMedium
Item {
TextHighlightPane {
Layout.fillWidth: true
Layout.preferredHeight: qr.height
Layout.topMargin: constants.paddingSmall
Layout.bottomMargin: constants.paddingSmall
QRImage {
id: qr
qrdata: dialog.text_qr
anchors.centerIn: parent
Layout.leftMargin: constants.paddingMedium
Layout.rightMargin: constants.paddingMedium
padding: constants.paddingMedium
ColumnLayout {
width: parent.width
QRImage {
id: qr
qrdata: dialog.text_qr
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: constants.paddingMedium
Layout.bottomMargin: constants.paddingMedium
}
}
}

46
electrum/gui/qml/components/GenericShareDialog.qml

@ -42,28 +42,38 @@ ElDialog {
width: parent.width
spacing: constants.paddingMedium
QRImage {
id: qr
render: dialog.enter ? false : true
qrdata: dialog.text_qr ? dialog.text_qr : dialog.text
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: constants.paddingSmall
Layout.bottomMargin: constants.paddingSmall
}
TextHighlightPane {
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
Layout.leftMargin: constants.paddingMedium
Layout.rightMargin: constants.paddingMedium
Layout.fillWidth: true
visible: dialog.text
Label {
ColumnLayout {
width: parent.width
text: dialog.text
wrapMode: Text.Wrap
font.pixelSize: constants.fontSizeLarge
font.family: FixedFont
maximumLineCount: 4
elide: Text.ElideRight
QRImage {
id: qr
render: dialog.enter ? false : true
qrdata: dialog.text_qr ? dialog.text_qr : dialog.text
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: constants.paddingMedium
Layout.bottomMargin: constants.paddingMedium
}
TextHighlightPane {
Layout.fillWidth: true
visible: dialog.text
Label {
width: parent.width
text: dialog.text
wrapMode: Text.Wrap
font.pixelSize: constants.fontSizeLarge
font.family: FixedFont
maximumLineCount: 4
elide: Text.ElideRight
}
}
}
}

190
electrum/gui/qml/components/ReceiveDialog.qml

@ -52,112 +52,124 @@ ElDialog {
State {
name: 'bolt11'
PropertyChanges { target: qrloader; sourceComponent: qri_bolt11 }
PropertyChanges { target: bolt11label; color: Material.accentColor; font.underline: true }
// PropertyChanges { target: bolt11label; color: Material.accentColor; font.underline: true }
// PropertyChanges { target: bolt11Button; checked: true }
},
State {
name: 'bip21uri'
PropertyChanges { target: qrloader; sourceComponent: qri_bip21uri }
PropertyChanges { target: bip21label; color: Material.accentColor; font.underline: true }
// PropertyChanges { target: bip21label; color: Material.accentColor; font.underline: true }
// PropertyChanges { target: bip21Button; checked: true }
},
State {
name: 'address'
PropertyChanges { target: qrloader; sourceComponent: qri_address }
PropertyChanges { target: addresslabel; color: Material.accentColor; font.underline: true }
// PropertyChanges { target: addresslabel; color: Material.accentColor; font.underline: true }
// PropertyChanges { target: addressButton; checked: true }
}
]
Rectangle {
id: qrbg
TextHighlightPane {
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: constants.paddingSmall
Layout.bottomMargin: constants.paddingSmall
Layout.preferredWidth: dialog.width * 7/8
Layout.preferredHeight: dialog.width * 7/8
color: 'white'
Loader {
id: qrloader
anchors.centerIn: parent
Component {
id: qri_bolt11
QRImage {
qrdata: _bolt11
render: _render_qr
enableToggleText: true
}
}
Component {
id: qri_bip21uri
QRImage {
qrdata: _bip21uri
render: _render_qr
enableToggleText: true
}
}
Component {
id: qri_address
QRImage {
qrdata: _address
render: _render_qr
enableToggleText: true
Layout.fillWidth: true
ColumnLayout {
width: parent.width
Rectangle {
id: qrbg
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: constants.paddingSmall
Layout.bottomMargin: constants.paddingSmall
Layout.preferredWidth: dialog.width * 7/8
Layout.preferredHeight: dialog.width * 7/8
color: 'white'
Loader {
id: qrloader
anchors.centerIn: parent
Component {
id: qri_bolt11
QRImage {
qrdata: _bolt11
render: _render_qr
enableToggleText: true
}
}
Component {
id: qri_bip21uri
QRImage {
qrdata: _bip21uri
render: _render_qr
enableToggleText: true
}
}
Component {
id: qri_address
QRImage {
qrdata: _address
render: _render_qr
enableToggleText: true
}
}
}
}
}
}
RowLayout {
Layout.alignment: Qt.AlignHCenter
spacing: constants.paddingLarge
Label {
id: bolt11label
text: qsTr('Lightning')
color: _bolt11 ? Material.foreground : constants.mutedForeground
MouseArea {
anchors.fill: parent
enabled: _bolt11
onClicked: {
rootLayout.state = 'bolt11'
Config.preferredRequestType = 'bolt11'
ButtonContainer {
Layout.fillWidth: true
showSeparator: false
Component {
id: _ind
Rectangle {
color: Material.dialogColor
opacity: parent.checked ? 1 : 0
radius: 5
width: parent.width
height: parent.height
Behavior on opacity {
NumberAnimation { duration: 200 }
}
}
}
}
}
Rectangle {
Layout.preferredWidth: constants.paddingXXSmall
Layout.preferredHeight: constants.paddingXXSmall
radius: constants.paddingXXSmall / 2
color: Material.accentColor
}
Label {
id: bip21label
text: qsTr('URI')
color: _bip21uri ? Material.foreground : constants.mutedForeground
MouseArea {
anchors.fill: parent
enabled: _bip21uri
onClicked: {
rootLayout.state = 'bip21uri'
Config.preferredRequestType = 'bip21uri'
TabButton {
id: bolt11Button
Layout.fillWidth: true
Layout.preferredWidth: 1
text: qsTr('Lightning')
enabled: _bolt11
checked: rootLayout.state == 'bolt11'
indicator: _ind.createObject()
onClicked: {
rootLayout.state = 'bolt11'
Config.preferredRequestType = 'bolt11'
}
}
}
}
Rectangle {
Layout.preferredWidth: constants.paddingXXSmall
Layout.preferredHeight: constants.paddingXXSmall
radius: constants.paddingXXSmall / 2
color: Material.accentColor
}
Label {
id: addresslabel
text: qsTr('Address')
color: _address ? Material.foreground : constants.mutedForeground
MouseArea {
anchors.fill: parent
enabled: _address
onClicked: {
rootLayout.state = 'address'
Config.preferredRequestType = 'address'
TabButton {
id: bip21Button
Layout.fillWidth: true
Layout.preferredWidth: 1
text: qsTr('URI')
enabled: _bip21uri
checked: rootLayout.state == 'bip21uri'
indicator: _ind.createObject()
onClicked: {
rootLayout.state = 'bip21uri'
Config.preferredRequestType = 'bip21uri'
}
}
TabButton {
id: addressButton
Layout.fillWidth: true
Layout.preferredWidth: 1
text: qsTr('Address')
checked: rootLayout.state == 'address'
indicator: _ind.createObject()
onClicked: {
rootLayout.state = 'address'
Config.preferredRequestType = 'address'
}
}
}
}

4
electrum/gui/qml/components/controls/ButtonContainer.qml

@ -6,6 +6,8 @@ import QtQuick.Controls.Material
Container {
id: root
property bool showSeparator: true
property Item _layout
function fillContentItem() {
@ -48,7 +50,7 @@ Container {
required property int pheight
required property int master_idx
Layout.fillWidth: false
Layout.preferredWidth: 2
Layout.preferredWidth: showSeparator ? 2 : 0
Layout.preferredHeight: pheight
Layout.alignment: Qt.AlignVCenter
color: constants.darkerBackground

2
electrum/gui/qml/components/controls/FlatButton.qml

@ -11,6 +11,8 @@ TabButton {
property bool textUnderIcon: true
font.pixelSize: constants.fontSizeSmall
icon.width: constants.iconSizeMedium
icon.height: constants.iconSizeMedium
display: textUnderIcon ? IconLabel.TextUnderIcon : IconLabel.TextBesideIcon
contentItem: IconLabel {

Loading…
Cancel
Save