ios build settings

This commit is contained in:
Jaquee 2017-04-03 18:51:55 +02:00
parent da6aad33a4
commit 2e53c524a1
20 changed files with 505 additions and 371 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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)
// }
// }
}

View File

@ -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
// }
// }
}

119
components/MobileHeader.qml Normal file
View File

@ -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"
}
}

View File

@ -75,6 +75,7 @@ Item {
}
function show(message) {
item.visible = true
item.message = message
item.active = true
hider.running = true

View File

@ -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

View File

@ -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)
}
}
}

281
main.qml
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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){

View File

@ -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("<style type='text/css'>a {text-decoration: none; color: #FF6C3C; font-size: 14px;}</style>\
Signing address <font size='2'> ( Paste in or select from </font> <a href='#'>Address book</a><font size='2'> )</font>")
+ 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"

View File

@ -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

View File

@ -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

View File

@ -139,5 +139,6 @@
<file>components/DaemonConsole.qml</file>
<file>components/QRCodeScanner.qml</file>
<file>components/Notifier.qml</file>
<file>components/MobileHeader.qml</file>
</qresource>
</RCC>

View File

@ -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);
}

View File

@ -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)

View File

@ -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 {