Browse Source

qml: make dialog content flickable for small displays for CloseChannelDialog, OpemChannelDialog and InvoiceDialog

master
Sander van Grieken 3 years ago
parent
commit
90d64a004b
  1. 192
      electrum/gui/qml/components/CloseChannelDialog.qml
  2. 472
      electrum/gui/qml/components/InvoiceDialog.qml
  3. 216
      electrum/gui/qml/components/OpenChannelDialog.qml

192
electrum/gui/qml/components/CloseChannelDialog.qml

@ -32,121 +32,129 @@ ElDialog {
anchors.fill: parent anchors.fill: parent
spacing: 0 spacing: 0
GridLayout { Flickable {
id: layout Layout.preferredWidth: parent.width
Layout.preferredWidth: parent.width - 2*constants.paddingLarge Layout.fillHeight: true
Layout.leftMargin: constants.paddingLarge
Layout.rightMargin: constants.paddingLarge
columns: 2
Label {
Layout.fillWidth: true
visible: channeldetails.name
text: qsTr('Channel name')
color: Material.accentColor
}
Label { leftMargin: constants.paddingLarge
Layout.fillWidth: true rightMargin: constants.paddingLarge
visible: channeldetails.name
text: channeldetails.name
}
Label { contentHeight: rootLayout.height
text: qsTr('Remote node ID') clip:true
Layout.columnSpan: 2 interactive: height < contentHeight
color: Material.accentColor
}
TextHighlightPane { GridLayout {
Layout.columnSpan: 2 id: rootLayout
Layout.fillWidth: true width: parent.width
padding: 0 columns: 2
leftPadding: constants.paddingSmall
Label { Label {
width: parent.width
text: channeldetails.pubkey
font.pixelSize: constants.fontSizeLarge
font.family: FixedFont
Layout.fillWidth: true Layout.fillWidth: true
wrapMode: Text.Wrap visible: channeldetails.name
text: qsTr('Channel name')
color: Material.accentColor
} }
}
Label {
text: qsTr('Short channel ID')
color: Material.accentColor
}
Label {
text: channeldetails.short_cid
}
Item { Layout.preferredHeight: constants.paddingMedium; Layout.preferredWidth: 1; Layout.columnSpan: 2 } Label {
Layout.fillWidth: true
InfoTextArea { visible: channeldetails.name
Layout.columnSpan: 2 text: channeldetails.name
Layout.fillWidth: true }
text: qsTr(channeldetails.message_force_close)
}
Label {
text: qsTr('Choose closing method')
Layout.columnSpan: 2
color: Material.accentColor
}
ColumnLayout { Label {
Layout.columnSpan: 2 text: qsTr('Remote node ID')
Layout.alignment: Qt.AlignHCenter Layout.columnSpan: 2
color: Material.accentColor
}
ButtonGroup { TextHighlightPane {
id: closetypegroup Layout.columnSpan: 2
Layout.fillWidth: true
padding: 0
leftPadding: constants.paddingSmall
Label {
width: parent.width
text: channeldetails.pubkey
font.pixelSize: constants.fontSizeLarge
font.family: FixedFont
Layout.fillWidth: true
wrapMode: Text.Wrap
}
} }
RadioButton { Label {
ButtonGroup.group: closetypegroup text: qsTr('Short channel ID')
property string closetype: 'cooperative' color: Material.accentColor
checked: true
enabled: !closing && channeldetails.canCoopClose
text: qsTr('Cooperative close')
} }
RadioButton {
ButtonGroup.group: closetypegroup Label {
property string closetype: 'remote_force' text: channeldetails.short_cid
enabled: !closing && channeldetails.canForceClose
text: qsTr('Request Force-close')
} }
RadioButton {
ButtonGroup.group: closetypegroup Item { Layout.preferredHeight: constants.paddingMedium; Layout.preferredWidth: 1; Layout.columnSpan: 2 }
property string closetype: 'local_force'
enabled: !closing && channeldetails.canForceClose && !channeldetails.isBackup InfoTextArea {
text: qsTr('Local Force-close') Layout.columnSpan: 2
Layout.fillWidth: true
text: qsTr(channeldetails.message_force_close)
} }
}
ColumnLayout {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
Label { Label {
id: errorText text: qsTr('Choose closing method')
visible: !closing && errorText Layout.columnSpan: 2
wrapMode: Text.Wrap color: Material.accentColor
Layout.preferredWidth: layout.width
} }
Label {
text: qsTr('Closing...') ColumnLayout {
visible: closing Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
ButtonGroup {
id: closetypegroup
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'cooperative'
checked: true
enabled: !closing && channeldetails.canCoopClose
text: qsTr('Cooperative close')
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'remote_force'
enabled: !closing && channeldetails.canForceClose
text: qsTr('Request Force-close')
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'local_force'
enabled: !closing && channeldetails.canForceClose && !channeldetails.isBackup
text: qsTr('Local Force-close')
}
} }
BusyIndicator {
visible: closing ColumnLayout {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
Label {
id: errorText
visible: !closing && errorText
wrapMode: Text.Wrap
Layout.preferredWidth: layout.width
}
Label {
text: qsTr('Closing...')
visible: closing
}
BusyIndicator {
visible: closing
}
} }
} }
} }
Item { Layout.fillHeight: true; Layout.preferredWidth: 1 }
FlatButton { FlatButton {
Layout.columnSpan: 2 Layout.columnSpan: 2
Layout.fillWidth: true Layout.fillWidth: true

472
electrum/gui/qml/components/InvoiceDialog.qml

@ -30,305 +30,313 @@ ElDialog {
property bool _canMax: invoice.invoiceType == Invoice.OnchainInvoice property bool _canMax: invoice.invoiceType == Invoice.OnchainInvoice
ColumnLayout { ColumnLayout {
width: parent.width anchors.fill: parent
height: parent.height
spacing: 0 spacing: 0
GridLayout { Flickable {
id: layout Layout.preferredWidth: parent.width
width: parent.width Layout.fillHeight: true
Layout.leftMargin: constants.paddingLarge
Layout.rightMargin: constants.paddingLarge
columns: 2
Label { leftMargin: constants.paddingLarge
text: qsTr('Type') rightMargin: constants.paddingLarge
color: Material.accentColor
}
RowLayout { contentHeight: rootLayout.height
Layout.fillWidth: true clip:true
Image { interactive: height < contentHeight
Layout.preferredWidth: constants.iconSizeSmall
Layout.preferredHeight: constants.iconSizeSmall GridLayout {
source: invoice.invoiceType == Invoice.LightningInvoice id: rootLayout
? "../../icons/lightning.png" width: parent.width
: "../../icons/bitcoin.png"
} columns: 2
Label { Label {
text: invoice.invoiceType == Invoice.OnchainInvoice text: qsTr('Type')
? qsTr('On chain') color: Material.accentColor
: invoice.invoiceType == Invoice.LightningInvoice }
? qsTr('Lightning')
: '' RowLayout {
Layout.fillWidth: true Layout.fillWidth: true
Image {
Layout.preferredWidth: constants.iconSizeSmall
Layout.preferredHeight: constants.iconSizeSmall
source: invoice.invoiceType == Invoice.LightningInvoice
? "../../icons/lightning.png"
: "../../icons/bitcoin.png"
}
Label {
text: invoice.invoiceType == Invoice.OnchainInvoice
? qsTr('On chain')
: invoice.invoiceType == Invoice.LightningInvoice
? qsTr('Lightning')
: ''
Layout.fillWidth: true
}
} }
}
Label { Label {
text: qsTr('Status') text: qsTr('Status')
color: Material.accentColor color: Material.accentColor
} }
Label { Label {
text: invoice.status_str text: invoice.status_str
} }
Label { Label {
visible: invoice.invoiceType == Invoice.OnchainInvoice visible: invoice.invoiceType == Invoice.OnchainInvoice
Layout.columnSpan: 2 Layout.columnSpan: 2
text: qsTr('Address') text: qsTr('Address')
color: Material.accentColor color: Material.accentColor
} }
TextHighlightPane {
visible: invoice.invoiceType == Invoice.OnchainInvoice
TextHighlightPane { Layout.columnSpan: 2
visible: invoice.invoiceType == Invoice.OnchainInvoice Layout.fillWidth: true
Layout.columnSpan: 2 padding: 0
Layout.fillWidth: true leftPadding: constants.paddingMedium
padding: 0 Label {
leftPadding: constants.paddingMedium width: parent.width
text: invoice.address
font.family: FixedFont
wrapMode: Text.Wrap
}
}
Label { Label {
width: parent.width visible: invoice.invoiceType == Invoice.LightningInvoice
text: invoice.address text: qsTr('Remote Pubkey')
font.family: FixedFont color: Material.accentColor
wrapMode: Text.Wrap
} }
}
Label { TextHighlightPane {
visible: invoice.invoiceType == Invoice.LightningInvoice visible: invoice.invoiceType == Invoice.LightningInvoice
text: qsTr('Remote Pubkey')
color: Material.accentColor
}
TextHighlightPane { Layout.columnSpan: 2
visible: invoice.invoiceType == Invoice.LightningInvoice Layout.fillWidth: true
Layout.columnSpan: 2 padding: 0
Layout.fillWidth: true leftPadding: constants.paddingMedium
padding: 0 Label {
leftPadding: constants.paddingMedium width: parent.width
text: 'pubkey' in invoice.lnprops ? invoice.lnprops.pubkey : ''
font.family: FixedFont
wrapMode: Text.Wrap
}
}
Label { Label {
width: parent.width visible: invoice.invoiceType == Invoice.LightningInvoice
text: 'pubkey' in invoice.lnprops ? invoice.lnprops.pubkey : '' text: qsTr('Payment hash')
font.family: FixedFont color: Material.accentColor
wrapMode: Text.Wrap
} }
}
Label { TextHighlightPane {
visible: invoice.invoiceType == Invoice.LightningInvoice visible: invoice.invoiceType == Invoice.LightningInvoice
text: qsTr('Payment hash')
color: Material.accentColor
}
TextHighlightPane { Layout.columnSpan: 2
visible: invoice.invoiceType == Invoice.LightningInvoice Layout.fillWidth: true
Layout.columnSpan: 2 padding: 0
Layout.fillWidth: true leftPadding: constants.paddingMedium
padding: 0 Label {
leftPadding: constants.paddingMedium width: parent.width
text: 'payment_hash' in invoice.lnprops ? invoice.lnprops.payment_hash : ''
font.family: FixedFont
wrapMode: Text.Wrap
}
}
Label { Label {
width: parent.width text: qsTr('Description')
text: 'payment_hash' in invoice.lnprops ? invoice.lnprops.payment_hash : '' visible: invoice.message
font.family: FixedFont Layout.columnSpan: 2
wrapMode: Text.Wrap color: Material.accentColor
} }
}
Label { TextHighlightPane {
text: qsTr('Description') visible: invoice.message
visible: invoice.message
Layout.columnSpan: 2
color: Material.accentColor
}
TextHighlightPane { Layout.columnSpan: 2
visible: invoice.message Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.columnSpan: 2 padding: 0
Layout.fillWidth: true leftPadding: constants.paddingMedium
Layout.alignment: Qt.AlignHCenter
padding: 0 Label {
leftPadding: constants.paddingMedium text: invoice.message
width: parent.width
font.pixelSize: constants.fontSizeXLarge
wrapMode: Text.Wrap
elide: Text.ElideRight
}
}
Label { Label {
text: invoice.message text: qsTr('Amount to send')
width: parent.width color: Material.accentColor
font.pixelSize: constants.fontSizeXLarge Layout.columnSpan: 2
wrapMode: Text.Wrap
elide: Text.ElideRight
} }
}
Label { TextHighlightPane {
text: qsTr('Amount to send') id: amountContainer
color: Material.accentColor
Layout.columnSpan: 2
}
TextHighlightPane { Layout.columnSpan: 2
id: amountContainer Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.columnSpan: 2 padding: 0
Layout.fillWidth: true leftPadding: constants.paddingXXLarge
Layout.alignment: Qt.AlignHCenter
padding: 0 property bool editmode: false
leftPadding: constants.paddingXXLarge
property bool editmode: false RowLayout {
id: amountLayout
width: parent.width
RowLayout { GridLayout {
id: amountLayout visible: !amountContainer.editmode
width: parent.width columns: 2
GridLayout {
visible: !amountContainer.editmode
columns: 2
Label {
visible: invoice.amount.isMax
Layout.columnSpan: 2
font.pixelSize: constants.fontSizeXLarge
font.bold: true
Layout.fillWidth: true
text: qsTr('All on-chain funds')
}
Label { Label {
visible: !invoice.amount.isMax visible: invoice.amount.isMax
font.pixelSize: constants.fontSizeXLarge Layout.columnSpan: 2
font.family: FixedFont font.pixelSize: constants.fontSizeXLarge
font.bold: true font.bold: true
text: Config.formatSats(invoice.amount, false) Layout.fillWidth: true
} text: qsTr('All on-chain funds')
}
Label { Label {
visible: !invoice.amount.isMax visible: !invoice.amount.isMax
Layout.fillWidth: true font.pixelSize: constants.fontSizeXLarge
text: Config.baseUnit font.family: FixedFont
color: Material.accentColor font.bold: true
font.pixelSize: constants.fontSizeXLarge text: Config.formatSats(invoice.amount, false)
} }
Label { Label {
id: fiatValue visible: !invoice.amount.isMax
visible: Daemon.fx.enabled && !invoice.amount.isMax Layout.fillWidth: true
text: Daemon.fx.fiatValue(invoice.amount, false) text: Config.baseUnit
font.pixelSize: constants.fontSizeMedium color: Material.accentColor
color: constants.mutedForeground font.pixelSize: constants.fontSizeXLarge
} }
Label { Label {
visible: Daemon.fx.enabled && !invoice.amount.isMax id: fiatValue
Layout.fillWidth: true visible: Daemon.fx.enabled && !invoice.amount.isMax
text: Daemon.fx.fiatCurrency text: Daemon.fx.fiatValue(invoice.amount, false)
font.pixelSize: constants.fontSizeMedium font.pixelSize: constants.fontSizeMedium
color: constants.mutedForeground color: constants.mutedForeground
} }
} Label {
visible: Daemon.fx.enabled && !invoice.amount.isMax
Layout.fillWidth: true
text: Daemon.fx.fiatCurrency
font.pixelSize: constants.fontSizeMedium
color: constants.mutedForeground
}
ToolButton {
visible: !amountContainer.editmode
icon.source: '../../icons/pen.png'
icon.color: 'transparent'
onClicked: {
amountBtc.text = invoice.amount.satsInt == 0 ? '' : Config.formatSats(invoice.amount)
amountMax.checked = invoice.amount.isMax
amountContainer.editmode = true
amountBtc.focus = true
}
}
GridLayout {
visible: amountContainer.editmode
Layout.fillWidth: true
columns: 3
BtcField {
id: amountBtc
fiatfield: amountFiat
enabled: !amountMax.checked
} }
Label { ToolButton {
text: Config.baseUnit visible: !amountContainer.editmode
color: Material.accentColor icon.source: '../../icons/pen.png'
Layout.fillWidth: amountMax.visible ? false : true icon.color: 'transparent'
Layout.columnSpan: amountMax.visible ? 1 : 2 onClicked: {
amountBtc.text = invoice.amount.satsInt == 0 ? '' : Config.formatSats(invoice.amount)
amountMax.checked = invoice.amount.isMax
amountContainer.editmode = true
amountBtc.focus = true
}
} }
Switch { GridLayout {
id: amountMax visible: amountContainer.editmode
text: qsTr('Max')
visible: _canMax
Layout.fillWidth: true Layout.fillWidth: true
checked: invoice.amount.isMax columns: 3
onCheckedChanged: { BtcField {
if (activeFocus) { id: amountBtc
invoice.amount.isMax = checked fiatfield: amountFiat
enabled: !amountMax.checked
}
Label {
text: Config.baseUnit
color: Material.accentColor
Layout.fillWidth: amountMax.visible ? false : true
Layout.columnSpan: amountMax.visible ? 1 : 2
}
Switch {
id: amountMax
text: qsTr('Max')
visible: _canMax
Layout.fillWidth: true
checked: invoice.amount.isMax
onCheckedChanged: {
if (activeFocus) {
invoice.amount.isMax = checked
}
} }
} }
}
FiatField { FiatField {
id: amountFiat id: amountFiat
btcfield: amountBtc btcfield: amountBtc
visible: Daemon.fx.enabled && !amountMax.checked visible: Daemon.fx.enabled && !amountMax.checked
enabled: !amountMax.checked enabled: !amountMax.checked
} }
Label { Label {
Layout.columnSpan: 2 Layout.columnSpan: 2
visible: Daemon.fx.enabled && !amountMax.checked visible: Daemon.fx.enabled && !amountMax.checked
text: Daemon.fx.fiatCurrency text: Daemon.fx.fiatCurrency
color: Material.accentColor color: Material.accentColor
}
} }
} ToolButton {
ToolButton { visible: amountContainer.editmode
visible: amountContainer.editmode Layout.fillWidth: false
Layout.fillWidth: false icon.source: '../../icons/confirmed.png'
icon.source: '../../icons/confirmed.png' icon.color: 'transparent'
icon.color: 'transparent' onClicked: {
onClicked: { amountContainer.editmode = false
amountContainer.editmode = false invoice.amount = amountMax.checked ? MAX : Config.unitsToSats(amountBtc.text)
invoice.amount = amountMax.checked ? MAX : Config.unitsToSats(amountBtc.text) invoiceAmountChanged()
invoiceAmountChanged() }
}
ToolButton {
visible: amountContainer.editmode
Layout.fillWidth: false
icon.source: '../../icons/closebutton.png'
icon.color: 'transparent'
onClicked: amountContainer.editmode = false
} }
} }
ToolButton {
visible: amountContainer.editmode
Layout.fillWidth: false
icon.source: '../../icons/closebutton.png'
icon.color: 'transparent'
onClicked: amountContainer.editmode = false
}
}
} }
Item { Layout.preferredHeight: constants.paddingLarge; Layout.preferredWidth: 1 } Item { Layout.preferredHeight: constants.paddingLarge; Layout.preferredWidth: 1 }
InfoTextArea { InfoTextArea {
Layout.columnSpan: 2 Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
Layout.preferredWidth: parent.width * 3/4 Layout.preferredWidth: parent.width * 3/4
visible: invoice.userinfo visible: invoice.userinfo
text: invoice.userinfo text: invoice.userinfo
}
} }
} }
Item { Layout.fillHeight: true; Layout.preferredWidth: 1 }
FlatButton { FlatButton {
Layout.fillWidth: true Layout.fillWidth: true
text: qsTr('Pay') text: qsTr('Pay')

216
electrum/gui/qml/components/OpenChannelDialog.qml

@ -29,136 +29,144 @@ ElDialog {
anchors.fill: parent anchors.fill: parent
spacing: 0 spacing: 0
GridLayout { Flickable {
id: form Layout.preferredWidth: parent.width
Layout.fillWidth: true Layout.fillHeight: true
Layout.leftMargin: constants.paddingLarge
Layout.rightMargin: constants.paddingLarge
columns: 4 leftMargin: constants.paddingLarge
rightMargin: constants.paddingLarge
Label { contentHeight: rootLayout.height
text: qsTr('Node') clip:true
color: Material.accentColor interactive: height < contentHeight
}
GridLayout {
id: rootLayout
width: parent.width
// gossip columns: 4
TextArea {
id: node Label {
visible: Config.useGossip text: qsTr('Node')
Layout.columnSpan: 2 color: Material.accentColor
Layout.fillWidth: true
font.family: FixedFont
wrapMode: Text.Wrap
placeholderText: qsTr('Paste or scan node uri/pubkey')
onActiveFocusChanged: {
if (!activeFocus)
channelopener.nodeid = text
} }
}
RowLayout { // gossip
visible: Config.useGossip TextArea {
spacing: 0 id: node
ToolButton { visible: Config.useGossip
icon.source: '../../icons/paste.png' Layout.columnSpan: 2
icon.height: constants.iconSizeMedium Layout.fillWidth: true
icon.width: constants.iconSizeMedium font.family: FixedFont
onClicked: { wrapMode: Text.Wrap
if (channelopener.validate_nodeid(AppController.clipboardToText())) { placeholderText: qsTr('Paste or scan node uri/pubkey')
channelopener.nodeid = AppController.clipboardToText() onActiveFocusChanged: {
node.text = channelopener.nodeid if (!activeFocus)
} channelopener.nodeid = text
} }
} }
ToolButton {
icon.source: '../../icons/qrcode.png' RowLayout {
icon.height: constants.iconSizeMedium visible: Config.useGossip
icon.width: constants.iconSizeMedium spacing: 0
scale: 1.2 ToolButton {
onClicked: { icon.source: '../../icons/paste.png'
var page = app.stack.push(Qt.resolvedUrl('Scan.qml')) icon.height: constants.iconSizeMedium
page.onFound.connect(function() { icon.width: constants.iconSizeMedium
if (channelopener.validate_nodeid(page.scanData)) { onClicked: {
channelopener.nodeid = page.scanData if (channelopener.validate_nodeid(AppController.clipboardToText())) {
channelopener.nodeid = AppController.clipboardToText()
node.text = channelopener.nodeid node.text = channelopener.nodeid
} }
app.stack.pop() }
}) }
ToolButton {
icon.source: '../../icons/qrcode.png'
icon.height: constants.iconSizeMedium
icon.width: constants.iconSizeMedium
scale: 1.2
onClicked: {
var page = app.stack.push(Qt.resolvedUrl('Scan.qml'))
page.onFound.connect(function() {
if (channelopener.validate_nodeid(page.scanData)) {
channelopener.nodeid = page.scanData
node.text = channelopener.nodeid
}
app.stack.pop()
})
}
} }
} }
}
// trampoline // trampoline
ComboBox { ComboBox {
visible: !Config.useGossip visible: !Config.useGossip
Layout.columnSpan: 3 Layout.columnSpan: 3
Layout.fillWidth: true Layout.fillWidth: true
model: channelopener.trampolineNodeNames model: channelopener.trampolineNodeNames
onCurrentValueChanged: { onCurrentValueChanged: {
if (activeFocus) if (activeFocus)
channelopener.nodeid = currentValue channelopener.nodeid = currentValue
} }
// preselect a random node // preselect a random node
Component.onCompleted: { Component.onCompleted: {
if (!Config.useGossip) { if (!Config.useGossip) {
currentIndex = Math.floor(Math.random() * channelopener.trampolineNodeNames.length) currentIndex = Math.floor(Math.random() * channelopener.trampolineNodeNames.length)
channelopener.nodeid = currentValue channelopener.nodeid = currentValue
}
} }
} }
}
Label {
text: qsTr('Amount')
color: Material.accentColor
}
BtcField {
id: amount
fiatfield: amountFiat
Layout.preferredWidth: parent.width /3
onTextChanged: channelopener.amount = Config.unitsToSats(amount.text)
enabled: !is_max.checked
}
RowLayout {
Layout.columnSpan: 2
Layout.fillWidth: true
Label { Label {
text: Config.baseUnit text: qsTr('Amount')
color: Material.accentColor color: Material.accentColor
} }
Switch {
id: is_max BtcField {
text: qsTr('Max') id: amount
onCheckedChanged: { fiatfield: amountFiat
channelopener.amount = checked ? MAX : Config.unitsToSats(amount.text) Layout.preferredWidth: parent.width /3
onTextChanged: channelopener.amount = Config.unitsToSats(amount.text)
enabled: !is_max.checked
}
RowLayout {
Layout.columnSpan: 2
Layout.fillWidth: true
Label {
text: Config.baseUnit
color: Material.accentColor
}
Switch {
id: is_max
text: qsTr('Max')
onCheckedChanged: {
channelopener.amount = checked ? MAX : Config.unitsToSats(amount.text)
}
} }
} }
}
Item { width: 1; height: 1; visible: Daemon.fx.enabled } Item { width: 1; height: 1; visible: Daemon.fx.enabled }
FiatField { FiatField {
id: amountFiat id: amountFiat
btcfield: amount btcfield: amount
visible: Daemon.fx.enabled visible: Daemon.fx.enabled
Layout.preferredWidth: parent.width /3 Layout.preferredWidth: parent.width /3
enabled: !is_max.checked enabled: !is_max.checked
} }
Label { Label {
visible: Daemon.fx.enabled visible: Daemon.fx.enabled
text: Daemon.fx.fiatCurrency text: Daemon.fx.fiatCurrency
color: Material.accentColor color: Material.accentColor
Layout.fillWidth: true Layout.fillWidth: true
} }
Item { visible: Daemon.fx.enabled ; height: 1; width: 1 } Item { visible: Daemon.fx.enabled ; height: 1; width: 1 }
}
} }
Item { Layout.fillHeight: true; Layout.preferredWidth: 1 }
FlatButton { FlatButton {
Layout.fillWidth: true Layout.fillWidth: true
text: qsTr('Open Channel') text: qsTr('Open Channel')

Loading…
Cancel
Save