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 {