diff --git a/pages/settings/SettingsInfo.qml b/pages/settings/SettingsInfo.qml
new file mode 100644
index 00000000..4c5806e0
--- /dev/null
+++ b/pages/settings/SettingsInfo.qml
@@ -0,0 +1,212 @@
+import QtQuick 2.7
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.0
+
+import "../../js/Utils.js" as Utils
+import "../../components" as MoneroComponents
+
+
+Rectangle {
+ color: "transparent"
+ height: 1400
+ Layout.fillWidth: true
+
+ ColumnLayout {
+ id: infoLayout
+ Layout.fillWidth: true
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.margins: (isMobile)? 17 : 20
+ anchors.topMargin: 0
+ spacing: 0
+
+ GridLayout {
+ columns: 2
+ columnSpacing: 0
+
+ MoneroComponents.TextBlock {
+ font.pixelSize: 14
+ text: qsTr("GUI version: ") + translationManager.emptyString
+ }
+
+ MoneroComponents.TextBlock {
+ font.pixelSize: 14
+ text: Version.GUI_VERSION + " (Qt " + qtRuntimeVersion + ")" + translationManager.emptyString
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ MoneroComponents.TextBlock {
+ id: guiMoneroVersion
+ font.pixelSize: 14
+ text: qsTr("Embedded Monero version: ") + translationManager.emptyString
+ }
+
+ MoneroComponents.TextBlock {
+ font.pixelSize: 14
+ text: Version.GUI_MONERO_VERSION + translationManager.emptyString
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ MoneroComponents.TextBlock {
+ Layout.fillWidth: true
+ font.pixelSize: 14
+ text: qsTr("Wallet name: ") + translationManager.emptyString
+ }
+
+ MoneroComponents.TextBlock {
+ Layout.fillWidth: true
+ font.pixelSize: 14
+ text: walletName + translationManager.emptyString
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ MoneroComponents.TextBlock {
+ id: restoreHeight
+ font.pixelSize: 14
+ textFormat: Text.RichText
+ text: (typeof currentWallet == "undefined") ? "" : qsTr("Wallet creation height: ") + translationManager.emptyString
+ }
+
+ MoneroComponents.TextBlock {
+ id: restoreHeightText
+ textFormat: Text.RichText
+ font.pixelSize: 14
+ property var style: ""
+ text: (currentWallet ? currentWallet.walletCreationHeight : "") + style + qsTr(" (change)") + translationManager.emptyString
+ onLinkActivated: {
+ inputDialog.labelText = qsTr("Set a new restore height:") + translationManager.emptyString;
+ inputDialog.inputText = currentWallet ? currentWallet.walletCreationHeight : "0";
+ inputDialog.onAcceptedCallback = function() {
+ var _restoreHeight = inputDialog.inputText;
+ if(Utils.isNumeric(_restoreHeight)){
+ _restoreHeight = parseInt(_restoreHeight);
+ if(_restoreHeight >= 0) {
+ currentWallet.walletCreationHeight = _restoreHeight
+ // Restore height is saved in .keys file. Set password to trigger rewrite.
+ currentWallet.setPassword(appWindow.walletPassword)
+
+ // Show confirmation dialog
+ confirmationDialog.title = qsTr("Rescan wallet cache") + translationManager.emptyString;
+ confirmationDialog.text = qsTr("Are you sure you want to rebuild the wallet cache?\n"
+ + "The following information will be deleted\n"
+ + "- Recipient addresses\n"
+ + "- Tx keys\n"
+ + "- Tx descriptions\n\n"
+ + "The old wallet cache file will be renamed and can be restored later.\n"
+ );
+ confirmationDialog.icon = StandardIcon.Question
+ confirmationDialog.cancelText = qsTr("Cancel")
+ confirmationDialog.onAcceptedCallback = function() {
+ walletManager.closeWallet();
+ walletManager.clearWalletCache(persistentSettings.wallet_path);
+ walletManager.openWalletAsync(persistentSettings.wallet_path, appWindow.walletPassword,
+ persistentSettings.nettype);
+ }
+
+ confirmationDialog.onRejectedCallback = null;
+ confirmationDialog.open()
+ return;
+ }
+ }
+
+ appWindow.showStatusMessage(qsTr("Invalid restore height specified. Must be a number."),3);
+ }
+ inputDialog.onRejectedCallback = null;
+ inputDialog.open()
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ acceptedButtons: Qt.NoButton
+ cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
+ }
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ Rectangle {
+ height: 1
+ Layout.topMargin: 2 * scaleRatio
+ Layout.bottomMargin: 2 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ MoneroComponents.TextBlock {
+ Layout.fillWidth: true
+ font.pixelSize: 14
+ text: qsTr("Wallet log path: ") + translationManager.emptyString
+ }
+
+ MoneroComponents.TextBlock {
+ Layout.fillWidth: true
+ font.pixelSize: 14
+ text: walletLogPath
+ }
+ }
+ }
+
+ Component.onCompleted: {
+
+ }
+}