diff --git a/LeftPanel.qml b/LeftPanel.qml
index 043ce9e1..4c47c897 100644
--- a/LeftPanel.qml
+++ b/LeftPanel.qml
@@ -67,11 +67,12 @@ Rectangle {
menuColumn.previousButton.checked = true
}
- width: 260
+ width: (isMobile)? appWindow.width : 260
color: "#FFFFFF"
// Item with monero logo
Item {
+ visible: !isMobile
id: logoItem
anchors.left: parent.left
anchors.right: parent.right
@@ -115,7 +116,9 @@ Rectangle {
}
+
Column {
+ visible: !isMobile
id: column1
anchors.left: parent.left
anchors.right: parent.right
@@ -124,6 +127,7 @@ Rectangle {
spacing: 5
Label {
+ visible: !isMobile
id: balanceLabel
text: qsTr("Balance") + translationManager.emptyString
anchors.left: parent.left
@@ -132,6 +136,7 @@ Rectangle {
}
Row {
+ visible: !isMobile
Item {
anchors.verticalCenter: parent.verticalCenter
height: 26
@@ -144,6 +149,7 @@ Rectangle {
}
Text {
+ visible: !isMobile
id: balanceText
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
@@ -194,6 +200,7 @@ Rectangle {
}
}
+
Rectangle {
anchors.top: parent.top
anchors.left: parent.left
@@ -210,16 +217,26 @@ Rectangle {
color: "#DBDBDB"
}
+
+
Rectangle {
id: menuRect
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
- anchors.top: column1.bottom
- anchors.topMargin: 25
+ anchors.top: (isMobile)? parent.top : column1.bottom
+ anchors.topMargin: (isMobile)? 0 : 25
color: "#1C1C1C"
+
+ Flickable {
+ contentHeight: 500
+ anchors.fill: parent
+ clip: true
+
+
Column {
+
id: menuColumn
anchors.left: parent.left
anchors.right: parent.right
@@ -463,6 +480,8 @@ Rectangle {
}
+ }
+
NetworkStatusItem {
id: networkStatus
anchors.left: parent.left
@@ -478,6 +497,9 @@ Rectangle {
anchors.bottom: parent.bottom
}
}
+
+
+
// indicate disabled state
// Desaturate {
// anchors.fill: parent
diff --git a/MiddlePanel.qml b/MiddlePanel.qml
index 9951a1d6..1646f9e1 100644
--- a/MiddlePanel.qml
+++ b/MiddlePanel.qml
@@ -29,6 +29,7 @@
import QtQml 2.0
import QtQuick 2.2
+import QtQuick.Controls 2.0
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
@@ -41,11 +42,13 @@ Rectangle {
property Item currentView
property Item previousView
- property bool basicMode : false
+ property bool basicMode : isMobile
property string balanceLabelText: qsTr("Balance") + translationManager.emptyString
property string balanceText
property string unlockedBalanceLabelText: qsTr("Unlocked Balance") + translationManager.emptyString
property string unlockedBalanceText
+ property int minHeight: 800
+// property int headerHeight: header.height
property Transfer transferView: Transfer { }
property Receive receiveView: Receive { }
@@ -73,7 +76,6 @@ Rectangle {
previousView = currentView
if (currentView) {
stackView.replace(currentView)
-
// Component.onCompleted is called before wallet is initilized
if (typeof currentView.onPageCompleted === "function") {
currentView.onPageCompleted();
@@ -126,27 +128,35 @@ Rectangle {
name: "History"
PropertyChanges { target: root; currentView: historyView }
PropertyChanges { target: historyView; model: appWindow.currentWallet ? appWindow.currentWallet.historyModel : null }
+ PropertyChanges { target: mainFlickable; contentHeight: minHeight }
}, State {
name: "Transfer"
PropertyChanges { target: root; currentView: transferView }
+ PropertyChanges { target: mainFlickable; contentHeight: 1000 }
}, State {
name: "Receive"
PropertyChanges { target: root; currentView: receiveView }
+ PropertyChanges { target: mainFlickable; contentHeight: minHeight }
}, State {
name: "TxKey"
PropertyChanges { target: root; currentView: txkeyView }
+ PropertyChanges { target: mainFlickable; contentHeight: minHeight }
}, State {
name: "AddressBook"
PropertyChanges { target: root; currentView: addressBookView }
+ PropertyChanges { target: mainFlickable; contentHeight: minHeight }
}, State {
name: "Sign"
PropertyChanges { target: root; currentView: signView }
+ PropertyChanges { target: mainFlickable; contentHeight: minHeight }
}, State {
name: "Settings"
PropertyChanges { target: root; currentView: settingsView }
+ PropertyChanges { target: mainFlickable; contentHeight: 1200 }
}, State {
name: "Mining"
PropertyChanges { target: root; currentView: miningView }
+ PropertyChanges { target: mainFlickable; contentHeight: minHeight }
}
]
@@ -172,136 +182,46 @@ Rectangle {
anchors.topMargin: appWindow.persistentSettings.customDecorations ? 30 : 0
spacing: 0
-
- // BasicPanel header
- Rectangle {
- id: header
- anchors.leftMargin: 1
- anchors.rightMargin: 1
- Layout.fillWidth: true
- Layout.preferredHeight: 64
- color: "#FFFFFF"
- visible: basicMode
-
- Image {
- id: logo
- anchors.verticalCenter: parent.verticalCenter
- anchors.verticalCenterOffset: -5
- anchors.left: parent.left
- anchors.leftMargin: appWindow.persistentSettings.customDecorations ? 20 : 40
- source: "images/moneroLogo2.png"
- }
-
- Grid {
- anchors.verticalCenter: parent.verticalCenter
- anchors.top: parent.top
- anchors.right: parent.right
- anchors.topMargin: 10
- width: 256
- columns: 3
-
- Text {
- id: balanceLabel
- width: 116
- height: 20
- font.family: "Arial"
- font.pixelSize: 12
- elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignBottom
- color: "#535353"
- text: root.balanceLabelText + ":"
- }
-
- Text {
- id: balanceText
- width: 110
- height: 20
- font.family: "Arial"
- font.pixelSize: 18
- elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignBottom
- color: "#000000"
- text: root.balanceText
- }
-
- Item {
- height: 20
- width: 20
-
- Image {
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- source: "images/lockIcon.png"
- }
- }
-
- Text {
- id: availableBalanceLabel
- width: 116
- height: 20
- font.family: "Arial"
- font.pixelSize: 12
- elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignBottom
- color: "#535353"
- text: root.unlockedBalanceLabelText + ":"
- }
-
- Text {
- id: availableBalanceText
- width: 110
- height: 20
- font.family: "Arial"
- font.pixelSize: 14
- elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignBottom
- color: "#000000"
- text: root.unlockedBalanceText
- }
- }
-
- Rectangle {
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- height: 1
- color: "#DBDBDB"
- }
- }
-
- // Views container
- StackView {
- id: stackView
- initialItem: transferView
- anchors.topMargin: 30
+ Flickable {
+ id: mainFlickable
Layout.fillWidth: true
Layout.fillHeight: true
- anchors.margins: 4
- clip: true // otherwise animation will affect left panel
+ clip: true
+ ScrollIndicator.vertical: ScrollIndicator { }
+ ScrollBar.vertical: ScrollBar { } // uncomment to test
- delegate: StackViewDelegate {
- pushTransition: StackViewTransition {
- PropertyAnimation {
- target: enterItem
- property: "x"
- from: 0 - target.width
- to: 0
- duration: 300
- }
- PropertyAnimation {
- target: exitItem
- property: "x"
- from: 0
- to: target.width
- duration: 300
+ // Views container
+ StackView {
+ id: stackView
+ initialItem: transferView
+ // anchors.topMargin: 30
+ // Layout.fillWidth: true
+ // Layout.fillHeight: true
+ anchors.fill:parent
+ // anchors.margins: 4
+ clip: true // otherwise animation will affect left panel
+
+ delegate: StackViewDelegate {
+ pushTransition: StackViewTransition {
+ PropertyAnimation {
+ target: enterItem
+ property: "x"
+ from: 0 - target.width
+ to: 0
+ duration: 300
+ }
+ PropertyAnimation {
+ target: exitItem
+ property: "x"
+ from: 0
+ to: target.width
+ duration: 300
+ }
}
}
}
- }
+
+ }// flickable
}
// border
Rectangle {
diff --git a/components/IconButton.qml b/components/IconButton.qml
index 042439f1..eeb80267 100644
--- a/components/IconButton.qml
+++ b/components/IconButton.qml
@@ -50,23 +50,23 @@ Item {
z: 100
}
- MouseArea {
- id: buttonArea
- anchors.fill: parent
+// MouseArea {
+// id: buttonArea
+// anchors.fill: parent
- onPressed: {
- buttonImage.x = buttonImage.x + 2
- buttonImage.y = buttonImage.y + 2
- }
- onReleased: {
- buttonImage.x = buttonImage.x - 2
- buttonImage.y = buttonImage.y - 2
- }
+// onPressed: {
+// buttonImage.x = buttonImage.x + 2
+// buttonImage.y = buttonImage.y + 2
+// }
+// onReleased: {
+// buttonImage.x = buttonImage.x - 2
+// buttonImage.y = buttonImage.y - 2
+// }
- onClicked: {
- parent.clicked(mouse)
- }
- }
+// onClicked: {
+// parent.clicked(mouse)
+// }
+// }
}
diff --git a/components/Label.qml b/components/Label.qml
index bff37b57..30ff3d33 100644
--- a/components/Label.qml
+++ b/components/Label.qml
@@ -27,6 +27,7 @@
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
+import QtQuick.Layouts 1.1
Item {
id: item
@@ -35,6 +36,7 @@ Item {
property alias textFormat: label.textFormat
property string tipText: ""
property int fontSize: 12
+ property alias wrapMode: label.wrapMode
signal linkActivated()
width: icon.x + icon.width
height: icon.height
@@ -59,23 +61,23 @@ Item {
visible: appWindow.whatIsEnable
}
- MouseArea {
- anchors.fill: icon
- enabled: appWindow.whatIsEnable
- hoverEnabled: true
- onEntered: {
- icon.visible = false
- var pos = appWindow.mapFromItem(icon, 0, -15)
- tipItem.text = item.tipText
- tipItem.x = pos.x
- if(tipItem.height > 30)
- pos.y -= tipItem.height - 28
- tipItem.y = pos.y
- tipItem.visible = true
- }
- onExited: {
- icon.visible = Qt.binding(function(){ return appWindow.whatIsEnable; })
- tipItem.visible = false
- }
- }
+// MouseArea {
+// anchors.fill: icon
+// enabled: appWindow.whatIsEnable
+// hoverEnabled: true
+// onEntered: {
+// icon.visible = false
+// var pos = appWindow.mapFromItem(icon, 0, -15)
+// tipItem.text = item.tipText
+// tipItem.x = pos.x
+// if(tipItem.height > 30)
+// pos.y -= tipItem.height - 28
+// tipItem.y = pos.y
+// tipItem.visible = true
+// }
+// onExited: {
+// icon.visible = Qt.binding(function(){ return appWindow.whatIsEnable; })
+// tipItem.visible = false
+// }
+// }
}
diff --git a/components/MobileHeader.qml b/components/MobileHeader.qml
new file mode 100644
index 00000000..73b22430
--- /dev/null
+++ b/components/MobileHeader.qml
@@ -0,0 +1,119 @@
+import QtQuick 2.2
+import QtGraphicalEffects 1.0
+import QtQuick.Layouts 1.1
+import moneroComponents.Wallet 1.0
+
+
+// BasicPanel header
+Rectangle {
+ id: header
+ anchors.leftMargin: 1
+ anchors.rightMargin: 1
+ Layout.fillWidth: true
+ Layout.preferredHeight: 64
+ color: "#FFFFFF"
+// visible: basicMode
+
+ Image {
+ id: logo
+ visible: appWindow.width > 460
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.verticalCenterOffset: -5
+ anchors.left: parent.left
+ anchors.leftMargin: appWindow.persistentSettings.customDecorations ? 20 : 40
+ source: "../images/moneroLogo2.png"
+ }
+
+ Image {
+ id: icon
+ visible: !logo.visible
+ anchors.verticalCenter: parent.verticalCenter
+// anchors.verticalCenterOffset: -5
+ anchors.left: parent.left
+ anchors.leftMargin: appWindow.persistentSettings.customDecorations ? 20 : 40
+ source: "../images/moneroIcon.png"
+ }
+
+ Grid {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.topMargin: 10
+ width: 256
+ columns: 3
+
+ Text {
+ id: balanceLabel
+ width: 116
+ height: 20
+ font.family: "Arial"
+ font.pixelSize: 12
+ font.letterSpacing: -1
+ elide: Text.ElideRight
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignBottom
+ color: "#535353"
+ text: leftPanel.balanceLabelText + ":"
+ }
+
+ Text {
+ id: balanceText
+ width: 110
+ height: 20
+ font.family: "Arial"
+ font.pixelSize: 18
+ font.letterSpacing: -1
+ elide: Text.ElideRight
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignBottom
+ color: "#000000"
+ text: leftPanel.balanceText
+ }
+
+ Item {
+ height: 20
+ width: 20
+
+ Image {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ source: "../images/lockIcon.png"
+ }
+ }
+
+ Text {
+ width: 116
+ height: 20
+ font.family: "Arial"
+ font.pixelSize: 12
+ font.letterSpacing: -1
+ elide: Text.ElideRight
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignBottom
+ color: "#535353"
+ text: qsTr("Unlocked Balance:")
+ }
+
+ Text {
+ id: availableBalanceText
+ width: 110
+ height: 20
+ font.family: "Arial"
+ font.pixelSize: 14
+ font.letterSpacing: -1
+ elide: Text.ElideRight
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignBottom
+ color: "#000000"
+ text: leftPanel.unlockedBalanceText
+ }
+ }
+
+ Rectangle {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ height: 1
+ color: "#DBDBDB"
+ }
+}
diff --git a/components/Notifier.qml b/components/Notifier.qml
index 8edc71e5..f314a952 100644
--- a/components/Notifier.qml
+++ b/components/Notifier.qml
@@ -75,6 +75,7 @@ Item {
}
function show(message) {
+ item.visible = true
item.message = message
item.active = true
hider.running = true
diff --git a/components/StandardButton.qml b/components/StandardButton.qml
index 14f33e8f..33cedee7 100644
--- a/components/StandardButton.qml
+++ b/components/StandardButton.qml
@@ -45,8 +45,6 @@ Item {
// Dynamic label width
Layout.minimumWidth: (label.contentWidth > 80)? label.contentWidth + 20 : 100
-
-
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
diff --git a/components/TitleBar.qml b/components/TitleBar.qml
index 4a8bbb7c..34f25e73 100644
--- a/components/TitleBar.qml
+++ b/components/TitleBar.qml
@@ -58,14 +58,15 @@ Rectangle {
property bool checked: false
anchors.top: parent.top
anchors.left: parent.left
- color: basicMouseArea.containsMouse || checked ? "#FFE00A" : "#000000"
+ color: basicMouseArea.containsMouse || !leftPanel.visible ? "#FFE00A" : "#000000"
height: 30
width: height
+ visible: isMobile
Image {
anchors.centerIn: parent
- rotation: parent.checked ? 180 : 0
- source: parent.customDecorations || parent.checked ? "../images/goToBasicVersionHovered.png" :
+ rotation: !leftPanel.visible ? 180 : 0
+ source: parent.customDecorations || !leftPanel.visible ? "../images/goToBasicVersionHovered.png" :
"../images/gotoBasicVersion.png"
}
@@ -75,7 +76,7 @@ Rectangle {
anchors.fill: parent
onClicked: {
parent.checked = !parent.checked
- titleBar.goToBasicVersion(parent.checked)
+ titleBar.goToBasicVersion(leftPanel.visible)
}
}
}
diff --git a/ios_get_libwallet.api.sh b/ios_get_libwallet.api.sh
new file mode 100755
index 00000000..3592829c
--- /dev/null
+++ b/ios_get_libwallet.api.sh
@@ -0,0 +1,41 @@
+#!/bin/bash -e
+if [ -z $BUILD_TYPE ]; then
+ BUILD_TYPE=release
+fi
+
+ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+if [ -z $BOOST_LIBRARYDIR ]; then
+ BOOST_LIBRARYDIR=${ROOT_DIR}/../ofxiOSBoost/build/ios/prefix/lib
+fi
+if [ -z $BOOST_INCLUDEDIR ]; then
+ BOOST_INCLUDEDIR=${ROOT_DIR}/../ofxiOSBoost/build/ios/prefix/include
+fi
+if [ -z $OPENSSL_INCLUDE_DIR ]; then
+ OPENSSL_INCLUDE_DIR=${ROOT_DIR}/../openssl/1.0.2j/include
+fi
+if [ -z $OPENSSL_ROOT_DIR ]; then
+ OPENSSL_ROOT_DIR=${ROOT_DIR}/../openssl/1.0.2j
+fi
+
+echo "Building IOS armv7"
+rm -r monero/build
+mkdir -p monero/build/release
+pushd monero/build/release
+cmake -D IOS=ON -D ARCH=armv7 -D BOOST_LIBRARYDIR=${BOOST_INCLUDEDIR} -D BOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -D OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} -D OPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -D CMAKE_BUILD_TYPE=debug -D STATIC=ON -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON -D CMAKE_INSTALL_PREFIX="/Users/jacob/crypto/monero-core/monero" ../..
+make -j4 && make install
+popd
+echo "Building IOS arm64"
+rm -r monero/build
+mkdir -p monero/build/release
+pushd monero/build/release
+cmake -D IOS=ON -D ARCH=arm64 -D BOOST_LIBRARYDIR=${BOOST_INCLUDEDIR} -D BOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -D OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} -D OPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -D CMAKE_BUILD_TYPE=debug -D STATIC=ON -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON -D CMAKE_INSTALL_PREFIX="/Users/jacob/crypto/monero-core/monero" ../..
+make -j4 && make install
+popd
+
+echo "Creating fat library for armv7 and arm64"
+pushd monero
+mkdir -p lib-ios
+lipo -create lib-armv7/libwallet_merged.a lib-arm64/libwallet_merged.a -output lib-ios/libwallet_merged.a
+lipo -create lib-armv7/libunbound.a lib-arm64/libunbound.a -output lib-ios/libunbound.a
+lipo -create lib-armv7/libepee.a lib-arm64/libepee.a -output lib-ios/libepee.a
+popd
\ No newline at end of file
diff --git a/main.qml b/main.qml
index d52d1027..0b53a937 100644
--- a/main.qml
+++ b/main.qml
@@ -57,7 +57,7 @@ ApplicationWindow {
property bool isNewWallet: false
property int restoreHeight:0
property bool daemonSynced: false
- property int maxWindowHeight: (Screen.height < 900)? 720 : 800;
+ property int maxWindowHeight: Screen.height// (Screen.height < 900)? 720 : 800;
property bool daemonRunning: false
property alias toolTip: toolTip
property string walletName
@@ -211,6 +211,8 @@ ApplicationWindow {
delete wizard.settings['wallet']
} else {
var wallet_path = walletPath();
+ if(isIOS)
+ wallet_path = moneroAccountsDir + wallet_path;
// console.log("opening wallet at: ", wallet_path, "with password: ", appWindow.password);
console.log("opening wallet at: ", wallet_path, ", testnet: ", persistentSettings.testnet);
walletManager.openWalletAsync(wallet_path, appWindow.password,
@@ -235,7 +237,11 @@ ApplicationWindow {
middlePanel.checkPaymentClicked.disconnect(handleCheckPayment);
}
currentWallet = undefined;
- walletManager.closeWalletAsync();
+ if (isIOS) {
+ console.log("closing sync - ios")
+ walletManager.closeWallet();
+ } else
+ walletManager.closeWalletAsync();
}
function connectWallet(wallet) {
@@ -467,7 +473,10 @@ ApplicationWindow {
function walletsFound() {
if (persistentSettings.wallet_path.length > 0) {
- return walletManager.walletExists(persistentSettings.wallet_path);
+ if(isIOS)
+ return walletManager.walletExists(moneroAccountsDir + persistentSettings.wallet_path);
+ else
+ return walletManager.walletExists(persistentSettings.wallet_path);
}
return false;
}
@@ -769,10 +778,21 @@ ApplicationWindow {
leftPanel.balanceText = leftPanel.unlockedBalanceText = walletManager.displayAmount(0);
}
+ function hideMenu() {
+ goToBasicAnimation.start();
+ console.log(appWindow.width)
+ }
+
+ function showMenu() {
+ goToProAnimation.start();
+ console.log(appWindow.width)
+ }
+
+
objectName: "appWindow"
visible: true
- width: rightPanelExpanded ? 1269 : 1269 - 300
- height: maxWindowHeight;
+// width: Screen.width //rightPanelExpanded ? 1269 : 1269 - 300
+// height: 900 //300//maxWindowHeight;
color: "#FFFFFF"
flags: persistentSettings.customDecorations ? (Qt.FramelessWindowHint | Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint) : (Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint | Qt.WindowMaximizeButtonHint)
onWidthChanged: x -= 0
@@ -802,9 +822,13 @@ ApplicationWindow {
walletManager.walletOpened.connect(onWalletOpened);
walletManager.walletClosed.connect(onWalletClosed);
- daemonManager.daemonStarted.connect(onDaemonStarted);
- daemonManager.daemonStartFailure.connect(onDaemonStartFailure);
- daemonManager.daemonStopped.connect(onDaemonStopped);
+ if(typeof daemonManager != "undefined") {
+ daemonManager.daemonStarted.connect(onDaemonStarted);
+ daemonManager.daemonStartFailure.connect(onDaemonStartFailure);
+ daemonManager.daemonStopped.connect(onDaemonStopped);
+ }
+
+
// Connect app exit to qml window exit handling
mainApp.closing.connect(appWindow.close);
@@ -822,6 +846,11 @@ ApplicationWindow {
} else console.log("qrScannerEnabled disabled");
if(!walletsFound()) {
+ console.log("no wallet found")
+ console.log(persistentSettings.wallet_path)
+ //var/mobile/Containers/Data/Application/588FFCBE-8972-43AB-B096-FC38526A40B2/Documents/Monero/wallets/Aaa/Aaa
+ ///var/mobile/Containers/Data/Application/EA9EA534-5E09-41D2-BDEA-951BACB68765/Documents/Monero/wallets/BB/BB
+ walletManager.setLogLevel(2);
rootItem.state = "wizard"
} else {
rootItem.state = "normal"
@@ -965,55 +994,62 @@ ApplicationWindow {
PropertyChanges { target: leftPanel; visible: false }
PropertyChanges { target: rightPanel; visible: false }
PropertyChanges { target: middlePanel; visible: false }
- PropertyChanges { target: titleBar; basicButtonVisible: false }
+// PropertyChanges { target: titleBar; basicButtonVisible: false }
PropertyChanges { target: wizard; visible: true }
- PropertyChanges { target: appWindow; width: 930; }
- PropertyChanges { target: appWindow; height: 650; }
+// PropertyChanges { target: appWindow; width: (Screen.width < 930)? Screen.width : 930; }
+// PropertyChanges { target: appWindow; height: maxWindowHeight; }
PropertyChanges { target: resizeArea; visible: false }
PropertyChanges { target: titleBar; maximizeButtonVisible: false }
- PropertyChanges { target: frameArea; blocked: true }
+// PropertyChanges { target: frameArea; blocked: true }
PropertyChanges { target: titleBar; visible: false }
PropertyChanges { target: titleBar; y: 0 }
PropertyChanges { target: titleBar; title: qsTr("Program setup wizard") + translationManager.emptyString }
}, State {
name: "normal"
- PropertyChanges { target: leftPanel; visible: true }
+ PropertyChanges { target: leftPanel; visible: (isMobile)? false : true }
PropertyChanges { target: rightPanel; visible: true }
PropertyChanges { target: middlePanel; visible: true }
- PropertyChanges { target: titleBar; basicButtonVisible: true }
+// PropertyChanges { target: titleBar; basicButtonVisible: true }
PropertyChanges { target: wizard; visible: false }
- PropertyChanges { target: appWindow; width: rightPanelExpanded ? 1269 : 1269 - 300; }
- PropertyChanges { target: appWindow; height: maxWindowHeight; }
+// PropertyChanges { target: appWindow; width: (Screen.width < 969)? Screen.width : 969 } //rightPanelExpanded ? 1269 : 1269 - 300;
+// PropertyChanges { target: appWindow; height: maxWindowHeight; }
PropertyChanges { target: resizeArea; visible: true }
PropertyChanges { target: titleBar; maximizeButtonVisible: true }
- PropertyChanges { target: frameArea; blocked: false }
- PropertyChanges { target: titleBar; visible: true }
- PropertyChanges { target: titleBar; y: 0 }
+ PropertyChanges { target: frameArea; blocked: true }
+// PropertyChanges { target: titleBar; visible: true }
+// PropertyChanges { target: titleBar; y: 0 }
PropertyChanges { target: titleBar; title: qsTr("Monero") + translationManager.emptyString }
}
]
+ MobileHeader {
+ id: mobileHeader
+ visible: isMobile
+ anchors.left: parent.left
+ anchors.right: parent.right
+ height: visible? 65 : 0
+ }
+
LeftPanel {
id: leftPanel
+ anchors.top: mobileHeader.bottom
anchors.left: parent.left
anchors.bottom: parent.bottom
- height: parent.height
- onDashboardClicked: middlePanel.state = "Dashboard"
- onTransferClicked: middlePanel.state = "Transfer"
- onReceiveClicked: middlePanel.state = "Receive"
- onTxkeyClicked: middlePanel.state = "TxKey"
- onHistoryClicked: middlePanel.state = "History"
- onAddressBookClicked: middlePanel.state = "AddressBook"
- onMiningClicked: middlePanel.state = "Mining"
- onSignClicked: middlePanel.state = "Sign"
- onSettingsClicked: middlePanel.state = "Settings"
+ onDashboardClicked: {middlePanel.state = "Dashboard"; if(isMobile) hideMenu()}
+ onTransferClicked: {middlePanel.state = "Transfer"; if(isMobile) hideMenu()}
+ onReceiveClicked: {middlePanel.state = "Receive"; if(isMobile) hideMenu()}
+ onTxkeyClicked: {middlePanel.state = "TxKey"; if(isMobile) hideMenu()}
+ onHistoryClicked: {middlePanel.state = "History"; if(isMobile) hideMenu()}
+ onAddressBookClicked: {middlePanel.state = "AddressBook"; if(isMobile) hideMenu()}
+ onMiningClicked: {middlePanel.state = "Mining"; if(isMobile) hideMenu()}
+ onSignClicked: {middlePanel.state = "Sign"; if(isMobile) hideMenu()}
+ onSettingsClicked: {middlePanel.state = "Settings"; if(isMobile) hideMenu()}
}
RightPanel {
id: rightPanel
anchors.right: parent.right
anchors.bottom: parent.bottom
- height: parent.height
width: appWindow.rightPanelExpanded ? 300 : 0
visible: appWindow.rightPanelExpanded
}
@@ -1021,10 +1057,10 @@ ApplicationWindow {
MiddlePanel {
id: middlePanel
+ anchors.top: mobileHeader.bottom
anchors.bottom: parent.bottom
anchors.left: leftPanel.visible ? leftPanel.right : parent.left
- anchors.right: rightPanel.left
- height: parent.height
+ anchors.right: parent.right
state: "Transfer"
}
@@ -1034,54 +1070,54 @@ ApplicationWindow {
visible: false
}
- MouseArea {
- id: frameArea
- property bool blocked: false
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- height: 30
- z: 1
- hoverEnabled: true
- propagateComposedEvents: true
- onPressed: mouse.accepted = false
- onReleased: mouse.accepted = false
- onMouseXChanged: titleBar.mouseX = mouseX
- onContainsMouseChanged: titleBar.containsMouse = containsMouse
- }
+// MouseArea {
+// id: frameArea
+// property bool blocked: false
+// anchors.top: parent.top
+// anchors.left: parent.left
+// anchors.right: parent.right
+// height: 30
+// z: 1
+// hoverEnabled: true
+// propagateComposedEvents: true
+// onPressed: mouse.accepted = false
+// onReleased: mouse.accepted = false
+// onMouseXChanged: titleBar.mouseX = mouseX
+// onContainsMouseChanged: titleBar.containsMouse = containsMouse
+// }
SequentialAnimation {
id: goToBasicAnimation
- PropertyAction {
- target: appWindow
- properties: "visibility"
- value: Window.Windowed
- }
- PropertyAction {
- target: titleBar
- properties: "maximizeButtonVisible"
- value: false
- }
- PropertyAction {
- target: frameArea
- properties: "blocked"
- value: true
- }
+// PropertyAction {
+// target: appWindow
+// properties: "visibility"
+// value: Window.Windowed
+// }
+// PropertyAction {
+// target: titleBar
+// properties: "maximizeButtonVisible"
+// value: false
+// }
+// PropertyAction {
+// target: frameArea
+// properties: "blocked"
+// value: true
+// }
PropertyAction {
target: resizeArea
properties: "visible"
- value: false
- }
- PropertyAction {
- target: appWindow
- properties: "height"
- value: 30
- }
- PropertyAction {
- target: appWindow
- properties: "width"
- value: 470
+ value: true
}
+// PropertyAction {
+// target: appWindow
+// properties: "height"
+// value: 30
+// }
+// PropertyAction {
+// target: appWindow
+// properties: "width"
+// value: 326
+// }
PropertyAction {
targets: [leftPanel, rightPanel]
properties: "visible"
@@ -1093,11 +1129,11 @@ ApplicationWindow {
value: true
}
- PropertyAction {
- target: appWindow
- properties: "height"
- value: middlePanel.height
- }
+// PropertyAction {
+// target: appWindow
+// properties: "height"
+// value: middlePanel.height
+// }
onStopped: {
// middlePanel.visible = false
@@ -1108,11 +1144,11 @@ ApplicationWindow {
SequentialAnimation {
id: goToProAnimation
- PropertyAction {
- target: appWindow
- properties: "height"
- value: 30
- }
+// PropertyAction {
+// target: appWindow
+// properties: "height"
+// value: 30
+// }
PropertyAction {
target: middlePanel
properties: "basicMode"
@@ -1123,26 +1159,26 @@ ApplicationWindow {
properties: "visible"
value: true
}
- PropertyAction {
- target: appWindow
- properties: "width"
- value: rightPanelExpanded ? 1269 : 1269 - 300
- }
- PropertyAction {
- target: appWindow
- properties: "height"
- value: maxWindowHeight
- }
- PropertyAction {
- target: frameArea
- properties: "blocked"
- value: false
- }
- PropertyAction {
- target: titleBar
- properties: "maximizeButtonVisible"
- value: true
- }
+// PropertyAction {
+// target: appWindow
+// properties: "width"
+// value: rightPanelExpanded ? 1269 : 1269 - 300
+// }
+// PropertyAction {
+// target: appWindow
+// properties: "height"
+// value: maxWindowHeight
+// }
+// PropertyAction {
+// target: frameArea
+// properties: "blocked"
+// value: false
+// }
+// PropertyAction {
+// target: titleBar
+// properties: "maximizeButtonVisible"
+// value: true
+// }
}
WizardMain {
@@ -1159,7 +1195,7 @@ ApplicationWindow {
}
property int minWidth: 326
- property int minHeight: 720
+ property int minHeight: 400
MouseArea {
id: resizeArea
hoverEnabled: true
@@ -1220,24 +1256,24 @@ ApplicationWindow {
}
}
- MouseArea {
- enabled: persistentSettings.customDecorations
- property var previousPosition
- anchors.fill: parent
- propagateComposedEvents: true
- onPressed: previousPosition = globalCursor.getPosition()
- onPositionChanged: {
- if (pressedButtons == Qt.LeftButton) {
- var pos = globalCursor.getPosition()
- var dx = pos.x - previousPosition.x
- var dy = pos.y - previousPosition.y
+// MouseArea {
+// enabled: persistentSettings.customDecorations
+// property var previousPosition
+// anchors.fill: parent
+// propagateComposedEvents: true
+// onPressed: previousPosition = globalCursor.getPosition()
+// onPositionChanged: {
+// if (pressedButtons == Qt.LeftButton) {
+// var pos = globalCursor.getPosition()
+// var dx = pos.x - previousPosition.x
+// var dy = pos.y - previousPosition.y
- appWindow.x += dx
- appWindow.y += dy
- previousPosition = pos
- }
- }
- }
+// appWindow.x += dx
+// appWindow.y += dy
+// previousPosition = pos
+// }
+// }
+// }
}
// new ToolTip
@@ -1270,6 +1306,7 @@ ApplicationWindow {
}
Notifier {
+ visible:false
id: notifier
}
}
@@ -1277,7 +1314,7 @@ ApplicationWindow {
onClosing: {
// If daemon is running - prompt user before exiting
- if(typeof daemonManager != undefined && daemonManager.running(persistentSettings.testnet)) {
+ if(typeof daemonManager != "undefined" && daemonManager.running(persistentSettings.testnet)) {
close.accepted = false;
// Show confirmation dialog
diff --git a/monero-wallet-gui.pro b/monero-wallet-gui.pro
index 4a4ca5e9..727730c7 100644
--- a/monero-wallet-gui.pro
+++ b/monero-wallet-gui.pro
@@ -79,12 +79,12 @@ SOURCES = *.qml \
ios:armv7 {
message("target is armv7")
LIBS += \
- -L$$PWD/ofxiOSBoost/build/libs/boost/lib/armv7 \
+ -L$$PWD/../ofxiOSBoost/build/libs/boost/lib/armv7 \
}
ios:arm64 {
message("target is arm64")
LIBS += \
- -L$$PWD/ofxiOSBoost/build/libs/boost/lib/arm64 \
+ -L$$PWD/../ofxiOSBoost/build/libs/boost/lib/arm64 \
}
!ios {
LIBS += -L$$WALLET_ROOT/lib \
@@ -93,6 +93,7 @@ LIBS += -L$$WALLET_ROOT/lib \
-lunbound
}
+
ios {
message("Host is IOS")
@@ -105,7 +106,8 @@ ios {
-lunbound
LIBS+= \
- -L$$PWD/OpenSSL-for-iPhone/lib \
+ -L$$PWD/../OpenSSL-for-iPhone/lib \
+ -L$$PWD/../ofxiOSBoost/build/libs/boost/lib/arm64 \
-lboost_serialization \
-lboost_thread \
-lboost_system \
@@ -359,6 +361,7 @@ macx {
PRE_TARGETDEPS += langupd compiler_langrel_make_all
RESOURCES += qml.qrc
+CONFIG += qtquickcompiler
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
@@ -392,7 +395,8 @@ OTHER_FILES += \
DISTFILES += \
notes.txt \
- monero/src/wallet/CMakeLists.txt
+ monero/src/wallet/CMakeLists.txt \
+ components/MobileHeader.qml
# windows application icon
diff --git a/pages/History.qml b/pages/History.qml
index 241a22a9..378e9eca 100644
--- a/pages/History.qml
+++ b/pages/History.qml
@@ -120,6 +120,7 @@ Rectangle {
Text {
+ visible: !isMobile
id: filterHeaderText
anchors.left: parent.left
anchors.right: parent.right
@@ -135,6 +136,7 @@ Rectangle {
}
Label {
+ visible: !isMobile
id: selectedAmount
anchors.right: parent.right
anchors.top: parent.top
@@ -172,6 +174,7 @@ Rectangle {
// Filter by string
LineEdit {
+ visible: !isMobile
id: searchLine
anchors.left: parent.left
anchors.right: parent.right
@@ -213,6 +216,7 @@ Rectangle {
// DateFrom picker
Label {
+ visible: !isMobile
id: dateFromText
anchors.left: parent.left
anchors.top: searchLine.bottom // descriptionLine.bottom
@@ -225,6 +229,7 @@ Rectangle {
}
DatePicker {
+ visible: !isMobile
id: fromDatePicker
anchors.left: parent.left
anchors.top: dateFromText.bottom
@@ -239,6 +244,7 @@ Rectangle {
// DateTo picker
Label {
+ visible: !isMobile
id: dateToText
anchors.left: dateFromText.right
anchors.top: searchLine.bottom //descriptionLine.bottom
@@ -250,6 +256,7 @@ Rectangle {
}
DatePicker {
+ visible: !isMobile
id: toDatePicker
anchors.left: fromDatePicker.right
anchors.top: dateToText.bottom
@@ -265,6 +272,7 @@ Rectangle {
StandardButton {
+ visible: !isMobile
id: filterButton
anchors.bottom: toDatePicker.bottom
anchors.left: toDatePicker.right
@@ -306,6 +314,7 @@ Rectangle {
}
CheckBox {
+ visible: !isMobile
id: advancedFilteringCheckBox
text: qsTr("Advanced filtering") + translationManager.emptyString
anchors.left: filterButton.right
@@ -320,6 +329,7 @@ Rectangle {
}
Label {
+ visible: !isMobile
id: transactionTypeText
anchors.left: parent.left
anchors.top: fromDatePicker.bottom
@@ -340,6 +350,7 @@ Rectangle {
}
StandardDropdown {
+ visible: !isMobile
id: transactionTypeDropdown
anchors.left: parent.left
anchors.top: transactionTypeText.bottom
@@ -355,6 +366,7 @@ Rectangle {
}
Label {
+ visible: !isMobile
id: amountFromText
anchors.left: transactionTypeText.right
anchors.top: fromDatePicker.bottom
@@ -367,6 +379,7 @@ Rectangle {
}
LineEdit {
+ visible: !isMobile
id: amountFromLine
anchors.left: transactionTypeDropdown.right
anchors.top: amountFromText.bottom
@@ -387,6 +400,7 @@ Rectangle {
}
Label {
+ visible: !isMobile
id: amountToText
anchors.left: amountFromText.right
anchors.top: fromDatePicker.bottom
@@ -399,6 +413,7 @@ Rectangle {
}
LineEdit {
+ visible: !isMobile
id: amountToLine
anchors.left: amountFromLine.right
anchors.top: amountToText.bottom
@@ -420,6 +435,7 @@ Rectangle {
}
Item {
+ visible: !isMobile
id: expandItem
property bool expanded: false
@@ -455,10 +471,11 @@ Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
+// anchors.top: parent.top
color: "#FFFFFF"
z: 1
- height: middleHeight
+ height: (isMobile)? parent.height : middleHeight
onHeightChanged: {
if(height === middleHeight) z = 1
else if(height === collapsedHeight) z = 0
diff --git a/pages/Receive.qml b/pages/Receive.qml
index ec906a67..059b725b 100644
--- a/pages/Receive.qml
+++ b/pages/Receive.qml
@@ -168,8 +168,9 @@ Rectangle {
/* main layout */
ColumnLayout {
id: mainLayout
- anchors.margins: 17
+ anchors.margins: (isMobile)? 17 : 40
anchors.topMargin: 40
+
anchors.left: parent.left
anchors.top: parent.top
anchors.right: parent.right
@@ -181,9 +182,8 @@ Rectangle {
property int qrCodeSize: 240
- RowLayout {
+ ColumnLayout {
id: addressRow
-
Label {
id: addressLabel
fontSize: 14
@@ -204,6 +204,7 @@ Rectangle {
imageSource: "../images/copyToClipboard.png"
onClicked: {
if (addressLine.text.length > 0) {
+ console.log(addressLine.text + " copied to clipboard")
clipboard.setText(addressLine.text)
}
}
@@ -211,9 +212,11 @@ Rectangle {
}
}
- RowLayout {
+ GridLayout {
id: paymentIdRow
+ columns:2
Label {
+ Layout.columnSpan: 2
id: paymentIdLabel
fontSize: 14
text: qsTr("Payment ID") + translationManager.emptyString
@@ -264,8 +267,8 @@ Rectangle {
onClicked: updatePaymentId("")
}
}
-
- RowLayout {
+
+ ColumnLayout {
id: integratedAddressRow
Label {
id: integratedAddressLabel
@@ -298,7 +301,7 @@ Rectangle {
}
}
- RowLayout {
+ ColumnLayout {
id: amountRow
Label {
id: amountLabel
diff --git a/pages/Settings.qml b/pages/Settings.qml
index b3e9c9f6..26ae6054 100644
--- a/pages/Settings.qml
+++ b/pages/Settings.qml
@@ -40,6 +40,7 @@ import moneroComponents.Clipboard 1.0
Rectangle {
property var daemonAddress
property bool viewOnly: false
+ id: page
color: "#F0EEEE"
@@ -54,10 +55,9 @@ Rectangle {
// try connecting to daemon
}
-
ColumnLayout {
id: mainLayout
- anchors.margins: 40
+ anchors.margins: 17
anchors.left: parent.left
anchors.top: parent.top
anchors.right: parent.right
@@ -81,7 +81,8 @@ Rectangle {
color: "#DEDEDE"
}
- RowLayout {
+ GridLayout {
+ columns: (isMobile)? 2 : 3
StandardButton {
id: closeWalletButton
text: qsTr("Close wallet") + translationManager.emptyString
@@ -178,10 +179,9 @@ Rectangle {
color: "#DEDEDE"
}
- RowLayout {
+ GridLayout {
id: daemonStatusRow
- Layout.fillWidth: true
-
+ columns: (isMobile) ? 2 : 4
StandardButton {
visible: true
enabled: !appWindow.daemonRunning
@@ -228,7 +228,7 @@ Rectangle {
}
- RowLayout {
+ ColumnLayout {
id: daemonFlagsRow
Label {
id: daemonFlagsLabel
@@ -246,22 +246,27 @@ Rectangle {
}
RowLayout {
- id: daemonAddrRow
Layout.fillWidth: true
spacing: 10
Label {
id: daemonAddrLabel
-
Layout.fillWidth: true
color: "#4A4949"
text: qsTr("Daemon address") + translationManager.emptyString
fontSize: 16
}
+ }
+
+ GridLayout {
+ id: daemonAddrRow
+ Layout.fillWidth: true
+ columnSpacing: 10
+ columns: (isMobile) ? 2 : 3
LineEdit {
id: daemonAddr
- Layout.preferredWidth: 200
+ Layout.preferredWidth: 100
Layout.fillWidth: true
text: (daemonAddress !== undefined) ? daemonAddress[0] : ""
placeholderText: qsTr("Hostname / IP") + translationManager.emptyString
@@ -278,7 +283,8 @@ Rectangle {
}
RowLayout {
-
+ Layout.fillWidth: true
+ spacing: 10
Label {
id: daemonLoginLabel
Layout.fillWidth: true
@@ -287,6 +293,10 @@ Rectangle {
fontSize: 16
}
+ }
+
+ RowLayout {
+
LineEdit {
id: daemonUsername
Layout.preferredWidth: 100
@@ -314,7 +324,6 @@ Rectangle {
shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C"
pressedColor: "#FF4304"
- visible: true
onClicked: {
console.log("saving daemon adress settings")
var newDaemon = daemonAddr.text.trim() + ":" + daemonPort.text.trim()
@@ -360,14 +369,22 @@ Rectangle {
}
// Log level
+
RowLayout {
Label {
- id: logLevelLabel
color: "#4A4949"
text: qsTr("Log level") + translationManager.emptyString
fontSize: 16
+ anchors.topMargin: 30
+ Layout.topMargin: 30
}
-
+ }
+ Rectangle {
+ Layout.fillWidth: true
+ height: 1
+ color: "#DEDEDE"
+ }
+ ColumnLayout {
ComboBox {
id: logLevel
model: [0,1,2,3,4,"custom"]
@@ -500,12 +517,19 @@ Rectangle {
console.log("Settings page loaded");
initSettings();
viewOnly = currentWallet.viewOnly;
- appWindow.daemonRunning = daemonManager.running(persistentSettings.testnet)
+
+ if(typeof daemonManager != "undefined")
+ appWindow.daemonRunning = daemonManager.running(persistentSettings.testnet)
+
+ console.log(currentWallet.seed);
}
// fires only once
Component.onCompleted: {
- daemonManager.daemonConsoleUpdated.connect(onDaemonConsoleUpdated)
+ if(typeof daemonManager != "undefined")
+ daemonManager.daemonConsoleUpdated.connect(onDaemonConsoleUpdated)
+
+
}
function onDaemonConsoleUpdated(message){
diff --git a/pages/Sign.qml b/pages/Sign.qml
index 5edf0767..8a452cea 100644
--- a/pages/Sign.qml
+++ b/pages/Sign.qml
@@ -40,7 +40,7 @@ Rectangle {
id: mainLayout
property int labelWidth: 120
- property int editWidth: 400
+// property int editWidth: 400
property int lineEditFontSize: 12
color: "#F0EEEE"
@@ -92,7 +92,7 @@ Rectangle {
// sign / verify
ColumnLayout {
- anchors.margins: 10
+ anchors.margins: 17
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
@@ -100,21 +100,9 @@ Rectangle {
spacing: 20
- Rectangle {
- anchors.fill: signBox
- color: "#00000000"
- border.width: 2
- border.color: "#CCCCCC"
- anchors.margins: -15
- }
-
// sign
ColumnLayout {
id: signBox
- anchors.margins: 40
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.top: parent.top
RowLayout {
ColumnLayout {
@@ -122,6 +110,7 @@ Rectangle {
Label {
text: qsTr("Sign a message or file contents with your address:") + translationManager.emptyString
fontSize: 16
+ wrapMode: Text.Wrap
}
Label {}
}
@@ -147,7 +136,7 @@ Rectangle {
fontSize: mainLayout.lineEditFontSize
placeholderText: qsTr("Message to sign") + translationManager.emptyString;
readOnly: false
- Layout.fillWidth: true
+// Layout.fillWidth: true
onTextChanged: signSignatureLine.text = ""
IconButton {
@@ -254,21 +243,16 @@ Rectangle {
RowLayout {
id: signSignatureRow
- anchors.left: parent.left
- anchors.right: parent.right
anchors.topMargin: 17
Label {
id: signSignatureLabel
fontSize: 14
text: qsTr("Signature") + translationManager.emptyString
- width: mainLayout.labelWidth
}
LineEdit {
id: signSignatureLine
- anchors.left: signSignatureLabel.right
- anchors.right: parent.right
fontSize: mainLayout.lineEditFontSize
placeholderText: qsTr("Signature") + translationManager.emptyString;
readOnly: true
@@ -286,21 +270,10 @@ Rectangle {
}
}
- Rectangle {
- anchors.fill: verifyBox
- color: "#00000000"
- border.width: 2
- border.color: "#CCCCCC"
- anchors.margins: -15
- }
// verify
ColumnLayout {
id: verifyBox
- anchors.margins: 40
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.top: signBox.bottom
RowLayout {
ColumnLayout {
@@ -308,6 +281,8 @@ Rectangle {
Label {
text: qsTr("Verify a message or file signature from an address:") + translationManager.emptyString
fontSize: 16
+// Layout.fillWidth: true
+ wrapMode: Text.Wrap
}
Label {}
}
@@ -444,6 +419,8 @@ Rectangle {
text: qsTr("\
Signing address ( Paste in or select from Address book )")
+ translationManager.emptyString
+// Layout.fillWidth: true
+ wrapMode: Text.Wrap
onLinkActivated: appWindow.showPageRequest("AddressBook")
}
@@ -460,24 +437,21 @@ Rectangle {
RowLayout {
id: verifySignatureRow
- anchors.left: parent.left
- anchors.right: parent.right
anchors.topMargin: 17
Label {
id: verifySignatureLabel
fontSize: 14
text: qsTr("Signature") + translationManager.emptyString
- width: mainLayout.labelWidth
+ Layout.fillWidth: true
}
LineEdit {
id: verifySignatureLine
- anchors.left: verifySignatureLabel.right
- anchors.right: parent.right
fontSize: mainLayout.lineEditFontSize
placeholderText: qsTr("Signature") + translationManager.emptyString;
Layout.fillWidth: true
+ Layout.alignment: Qt.AlignLeft
IconButton {
imageSource: "../images/copyToClipboard.png"
diff --git a/pages/Transfer.qml b/pages/Transfer.qml
index bf120064..64f05473 100644
--- a/pages/Transfer.qml
+++ b/pages/Transfer.qml
@@ -434,15 +434,6 @@ Rectangle {
enabled: !viewOnly || pageRoot.enabled
RowLayout {
-// Label {
-// id: manageWalletLabel
-// Layout.fillWidth: true
-// color: "#4A4949"
-// text: qsTr("Advanced options") + translationManager.emptyString
-// fontSize: 16
-// Layout.topMargin: 20
-// }
-
CheckBox {
id: showAdvancedCheckbox
checked: persistentSettings.transferShowAdvanced
@@ -463,7 +454,6 @@ Rectangle {
Layout.bottomMargin: 30
}
-
RowLayout {
visible: persistentSettings.transferShowAdvanced
anchors.left: parent.left
@@ -493,9 +483,13 @@ Rectangle {
}
- RowLayout {
+ GridLayout {
visible: persistentSettings.transferShowAdvanced
Layout.topMargin: 50
+
+
+ columns: (isMobile) ? 2 : 6
+
StandardButton {
id: sweepUnmixableButton
text: qsTr("Sweep Unmixable") + translationManager.emptyString
@@ -722,7 +716,6 @@ Rectangle {
priorityDropdown.dataModel = priorityModel;
priorityDropdown.currentIndex = 0
}
-
}
//TODO: Add daemon sync status
diff --git a/pages/TxKey.qml b/pages/TxKey.qml
index a22d56e4..b51feea5 100644
--- a/pages/TxKey.qml
+++ b/pages/TxKey.qml
@@ -89,18 +89,22 @@ Rectangle {
Text {
text: qsTr("Verify that a third party made a payment by supplying:") + translationManager.emptyString
wrapMode: Text.Wrap
+ Layout.fillWidth: true;
}
Text {
text: qsTr(" - the recipient address") + translationManager.emptyString
wrapMode: Text.Wrap
+ Layout.fillWidth: true;
}
Text {
text: qsTr(" - the transaction ID") + translationManager.emptyString
wrapMode: Text.Wrap
+ Layout.fillWidth: true;
}
Text {
text: qsTr(" - the secret transaction key supplied by the sender") + translationManager.emptyString
wrapMode: Text.Wrap
+ Layout.fillWidth: true;
}
Text {
text: qsTr("If a payment had several transactions then each must be checked and the results combined.") + translationManager.emptyString
diff --git a/qml.qrc b/qml.qrc
index f49e4ff7..98f6cc5b 100644
--- a/qml.qrc
+++ b/qml.qrc
@@ -139,5 +139,6 @@
components/DaemonConsole.qml
components/QRCodeScanner.qml
components/Notifier.qml
+ components/MobileHeader.qml
diff --git a/wizard/WizardCreateWallet.qml b/wizard/WizardCreateWallet.qml
index 3f43fe94..99ee2478 100644
--- a/wizard/WizardCreateWallet.qml
+++ b/wizard/WizardCreateWallet.qml
@@ -59,6 +59,7 @@ ColumnLayout {
settingsObject['account_name'] = uiItem.accountNameText
settingsObject['words'] = uiItem.wordsTexttext
settingsObject['wallet_path'] = uiItem.walletPath
+ console.log("path " +uiItem.walletPath);
var walletFullPath = wizard.createWalletPath(uiItem.walletPath,uiItem.accountNameText);
return wizard.walletPathValid(walletFullPath);
}
diff --git a/wizard/WizardMain.qml b/wizard/WizardMain.qml
index 21169ac1..9064b875 100644
--- a/wizard/WizardMain.qml
+++ b/wizard/WizardMain.qml
@@ -162,10 +162,16 @@ ColumnLayout {
folder_path = folder_path.substring(0,folder_path.length -1)
}
+ // Store releative path on ios.
+ if(isIOS)
+ folder_path = "";
+
return folder_path + "/" + account_name + "/" + account_name
}
function walletPathValid(path){
+ if(isIOS)
+ path = moneroAccountsDir + path;
if (walletManager.walletExists(path)) {
walletErrorDialog.text = qsTr("A wallet with same name already exists. Please change wallet name") + translationManager.emptyString;
walletErrorDialog.open();
@@ -195,8 +201,16 @@ ColumnLayout {
function applySettings() {
// Save wallet files in user specified location
var new_wallet_filename = createWalletPath(settings.wallet_path,settings.account_name)
- console.log("saving in wizard: "+ new_wallet_filename)
- settings.wallet.store(new_wallet_filename);
+ if(isIOS) {
+ console.log("saving in ios: "+ moneroAccountsDir + new_wallet_filename)
+ settings.wallet.store(moneroAccountsDir + new_wallet_filename);
+ } else {
+ console.log("saving in wizard: "+ new_wallet_filename)
+ settings.wallet.store(new_wallet_filename);
+
+ }
+
+
// make sure temporary wallet files are deleted
console.log("Removing temporary wallet: "+ settings.tmp_wallet_filename)
diff --git a/wizard/WizardManageWalletUI.qml b/wizard/WizardManageWalletUI.qml
index 7c15f4d5..b2aa7e73 100644
--- a/wizard/WizardManageWalletUI.qml
+++ b/wizard/WizardManageWalletUI.qml
@@ -242,8 +242,7 @@ ColumnLayout {
Layout.fillWidth: true
Layout.topMargin: 20
fontSize: 14
- text: qsTr("Your wallet is stored in") + translationManager.emptyString
- + translationManager.emptyString
+ text: qsTr("Your wallet is stored in") + fileUrlInput.text;
}
LineEdit {