diff --git a/electrum/gui/qml/components/NetworkOverview.qml b/electrum/gui/qml/components/NetworkOverview.qml new file mode 100644 index 000000000..a837ee14d --- /dev/null +++ b/electrum/gui/qml/components/NetworkOverview.qml @@ -0,0 +1,213 @@ +import QtQuick 2.6 +import QtQuick.Layouts 1.0 +import QtQuick.Controls 2.3 +import QtQuick.Controls.Material 2.0 + +import "controls" + +Pane { + id: root + padding: 0 + + ColumnLayout { + anchors.fill: parent + spacing: 0 + + Flickable { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.topMargin: constants.paddingLarge + Layout.leftMargin: constants.paddingLarge + Layout.rightMargin: constants.paddingLarge + + contentHeight: contentLayout.height + clip: true + interactive: height < contentHeight + + GridLayout { + id: contentLayout + width: parent.width + columns: 2 + + Label { + Layout.columnSpan: 2 + text: qsTr('Network') + font.pixelSize: constants.fontSizeLarge + color: Material.accentColor + } + + Rectangle { + Layout.columnSpan: 2 + Layout.fillWidth: true + height: 1 + color: Material.accentColor + } + + Label { + text: qsTr('Proxy:'); + color: Material.accentColor + } + Label { + text: 'mode' in Network.proxy ? qsTr('enabled') : qsTr('disabled') + } + + Label { + visible: 'mode' in Network.proxy + text: qsTr('Proxy server:'); + color: Material.accentColor + } + Label { + visible: 'mode' in Network.proxy + text: Network.proxy['host'] ? Network.proxy['host'] + ':' + Network.proxy['port'] : '' + } + + Label { + Layout.columnSpan: 2 + text: qsTr('On-chain') + font.pixelSize: constants.fontSizeLarge + color: Material.accentColor + } + + Rectangle { + Layout.columnSpan: 2 + Layout.fillWidth: true + height: 1 + color: Material.accentColor + } + + Label { + text: qsTr('Network:'); + color: Material.accentColor + } + Label { + text: Network.networkName + } + + Label { + text: qsTr('Server:'); + color: Material.accentColor + } + Label { + text: Network.server + } + + Label { + text: qsTr('Local Height:'); + color: Material.accentColor + } + Label { + text: Network.height + } + + Label { + text: qsTr('Status:'); + color: Material.accentColor + } + + RowLayout { + NetworkStatusIndicator {} + + Label { + text: Network.status + } + } + + Label { + text: qsTr('Network fees:'); + color: Material.accentColor + } + Label { + id: feeHistogram + } + + Label { + Layout.columnSpan: 2 + text: qsTr('Lightning') + font.pixelSize: constants.fontSizeLarge + color: Material.accentColor + } + + Rectangle { + Layout.columnSpan: 2 + Layout.fillWidth: true + height: 1 + color: Material.accentColor + } + + Label { + text: qsTr('Gossip:'); + color: Material.accentColor + } + ColumnLayout { + visible: Config.useGossip + Label { + text: qsTr('%1 peers').arg(Network.gossipInfo.peers) + } + Label { + text: qsTr('%1 channels to fetch').arg(Network.gossipInfo.unknown_channels) + } + Label { + text: qsTr('%1 nodes, %2 channels').arg(Network.gossipInfo.db_nodes).arg(Network.gossipInfo.db_channels) + } + } + Label { + text: qsTr('disabled'); + visible: !Config.useGossip + } + } + + } + + FlatButton { + Layout.fillWidth: true + text: qsTr('Server Settings'); + icon.source: '../../icons/network.png' + onClicked: { + var dialog = serverConfig.createObject(root) + dialog.open() + } + } + + FlatButton { + Layout.fillWidth: true + text: qsTr('Proxy Settings'); + icon.source: '../../icons/status_connected_proxy.png' + onClicked: { + var dialog = proxyConfig.createObject(root) + dialog.open() + } + } + + } + + function setFeeHistogram() { + var txt = '' + Network.feeHistogram.forEach(function(item) { + txt = txt + item[0] + ': ' + item[1] + '\n'; + }) + feeHistogram.text = txt.trim() + } + + Connections { + target: Network + function onFeeHistogramUpdated() { + setFeeHistogram() + } + } + + Component { + id: serverConfig + ServerConfigDialog { + onClosed: destroy() + } + } + + Component { + id: proxyConfig + ProxyConfigDialog { + onClosed: destroy() + } + } + + Component.onCompleted: setFeeHistogram() +} diff --git a/electrum/gui/qml/components/NetworkStats.qml b/electrum/gui/qml/components/NetworkStats.qml deleted file mode 100644 index 83e164ead..000000000 --- a/electrum/gui/qml/components/NetworkStats.qml +++ /dev/null @@ -1,152 +0,0 @@ -import QtQuick 2.6 -import QtQuick.Layouts 1.0 -import QtQuick.Controls 2.3 -import QtQuick.Controls.Material 2.0 -import QtQml 2.6 - -import "controls" - -Pane { - id: root - - property string title: qsTr('Network') - - property QtObject menu: Menu { - id: menu - parent: Overlay.overlay - dim: true - Overlay.modeless: Rectangle { - color: "#44000000" - } - MenuItem { - icon.color: 'transparent' - action: Action { - text: qsTr('Server Settings'); - onTriggered: menu.openPage(sc_comp); - icon.source: '../../icons/network.png' - } - } - MenuItem { - icon.color: 'transparent' - action: Action { - text: qsTr('Proxy Settings'); - onTriggered: menu.openPage(pc_comp); - icon.source: '../../icons/status_connected_proxy.png' - } - } - - function openPage(comp) { - var dialog = comp.createObject(root) - dialog.open() - currentIndex = -1 - } - } - - Component { - id: sc_comp - ServerConfigDialog { - onClosed: destroy() - } - } - - Component { - id: pc_comp - ProxyConfigDialog { - onClosed: destroy() - } - } - - GridLayout { - columns: 2 - - Label { - text: qsTr("Network: "); - color: Material.primaryHighlightedTextColor; - font.bold: true - } - Label { - text: Network.networkName - } - - Label { - text: qsTr("Server: "); - color: Material.primaryHighlightedTextColor; - font.bold: true - } - Label { - text: Network.server - } - - Label { - text: qsTr("Local Height: "); - color: Material.primaryHighlightedTextColor; - font.bold: true - - } - Label { - text: Network.height - } - - Label { - text: qsTr("Status: "); - color: Material.primaryHighlightedTextColor; - font.bold: true - } - - RowLayout { - NetworkStatusIndicator {} - - Label { - text: Network.status - } - } - - Label { - text: qsTr("Network fees: "); - color: Material.primaryHighlightedTextColor; - font.bold: true - } - Label { - id: feeHistogram - } - - Label { - text: qsTr("Gossip: "); - color: Material.primaryHighlightedTextColor; - font.bold: true - } - ColumnLayout { - visible: Config.useGossip - Label { - text: qsTr('%1 peers').arg(Network.gossipInfo.peers) - } - Label { - text: qsTr('%1 channels to fetch').arg(Network.gossipInfo.unknown_channels) - } - Label { - text: qsTr('%1 nodes, %2 channels').arg(Network.gossipInfo.db_nodes).arg(Network.gossipInfo.db_channels) - } - } - Label { - text: qsTr("disabled"); - visible: !Config.useGossip - } - } - - function setFeeHistogram() { - var txt = '' - Network.feeHistogram.forEach(function(item) { - txt = txt + item[0] + ': ' + item[1] + '\n'; - }) - feeHistogram.text = txt.trim() - } - - Connections { - target: Network - function onFeeHistogramUpdated() { - setFeeHistogram() - } - } - - Component.onCompleted: setFeeHistogram() -} diff --git a/electrum/gui/qml/components/WalletMainView.qml b/electrum/gui/qml/components/WalletMainView.qml index e66a0da49..8b1816d39 100644 --- a/electrum/gui/qml/components/WalletMainView.qml +++ b/electrum/gui/qml/components/WalletMainView.qml @@ -75,7 +75,7 @@ Item { icon.color: 'transparent' action: Action { text: qsTr('Network'); - onTriggered: menu.openPage(Qt.resolvedUrl('NetworkStats.qml')) + onTriggered: menu.openPage(Qt.resolvedUrl('NetworkOverview.qml')) icon.source: '../../icons/network.png' } }