Merge branch 'master' into patch-1

This commit is contained in:
Matthias Tarasiewicz 2017-03-25 17:22:13 +01:00 committed by GitHub
commit 0836bd9cfd
48 changed files with 9134 additions and 5191 deletions

View File

@ -90,7 +90,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom
@ -104,7 +103,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom
@ -128,7 +126,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom
@ -142,7 +139,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 14 font.pixelSize: 14
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom

View File

@ -86,6 +86,18 @@ Rectangle {
source: "images/moneroLogo.png" source: "images/moneroLogo.png"
} }
Text {
id: testnetLabel
visible: persistentSettings.testnet
text: qsTr("Testnet") + translationManager.emptyString
anchors.top: logo.bottom
anchors.topMargin: 5
anchors.left: parent.left
anchors.leftMargin: 50
font.bold: true
color: "red"
}
/* Disable twitter/news panel /* Disable twitter/news panel
Image { Image {
anchors.left: parent.left anchors.left: parent.left
@ -204,7 +216,7 @@ Rectangle {
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.top: column1.bottom anchors.top: column1.bottom
anchors.topMargin: 50 anchors.topMargin: 25
color: "#1C1C1C" color: "#1C1C1C"
Column { Column {

View File

@ -206,7 +206,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom
@ -220,7 +219,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom
@ -245,7 +243,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom
@ -259,7 +256,6 @@ Rectangle {
height: 20 height: 20
font.family: "Arial" font.family: "Arial"
font.pixelSize: 14 font.pixelSize: 14
font.letterSpacing: -1
elide: Text.ElideRight elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom verticalAlignment: Text.AlignBottom

View File

@ -1,3 +1,5 @@
# Monero GUI
Copyright (c) 2014-2017, The Monero Project Copyright (c) 2014-2017, The Monero Project
## Development Resources ## Development Resources
@ -62,7 +64,7 @@ Packaging for your favorite distribution would be a welcome contribution!
### On Linux: ### On Linux:
(Tested on Ubuntu 16.04 i386 and Linux Mint 18 "Sarah" - Cinnamon (64-bit)) (Tested on Ubuntu 16.04 x86, 16.10 x64 and Linux Mint 18 "Sarah" - Cinnamon x64)
1. Install Monero dependencies. 1. Install Monero dependencies.
@ -83,17 +85,17 @@ Packaging for your favorite distribution would be a welcome contribution!
5. Install the GUI dependencies. 5. Install the GUI dependencies.
- For Ubuntu 16.04 i386 - For Ubuntu 16.04 x86
`sudo apt-get install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-xmllistmodel qttools5-dev-tools qml-module-qtquick-dialogs libzbar-dev` `sudo apt-get install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-xmllistmodel qttools5-dev-tools qml-module-qtquick-dialogs`
- For Ubuntu 16.04 x64 - For Ubuntu 16.04+ x64
`sudo apt-get install qtbase5-dev qt5-default qtdeclarative5-dev qtmultimedia5-dev qml-module-qtquick-controls qml-module-qtquick-xmllistmodel qttools5-dev-tools qml-module-qtquick-dialogs qml-module-qt-labs-settings libqt5qml-graphicaleffects libzbar-dev` `sudo apt-get install qtbase5-dev qt5-default qtdeclarative5-dev qtmultimedia5-dev qml-module-qtquick-controls qml-module-qtquick-xmllistmodel qttools5-dev-tools qml-module-qtquick-dialogs qml-module-qt-labs-settings libqt5qml-graphicaleffects qml-module-qtmultimedia`
- For Linux Mint 18 "Sarah" - Cinnamon (64-bit) - For Linux Mint 18 "Sarah" - Cinnamon x64
`sudo apt install qml-module-qt-labs-settings qml-module-qtgraphicaleffects libzbar-dev` `sudo apt install qml-module-qt-labs-settings qml-module-qtgraphicaleffects`
6. Build the GUI. 6. Build the GUI.
@ -101,7 +103,7 @@ Packaging for your favorite distribution would be a welcome contribution!
7. Run the GUI client. 7. Run the GUI client.
`./release/bin/monero-wallet-gui` `./build/release/bin/monero-wallet-gui`
### On OS X: ### On OS X:
@ -109,28 +111,38 @@ Packaging for your favorite distribution would be a welcome contribution!
2. Install [homebrew](http://brew.sh/) 2. Install [homebrew](http://brew.sh/)
3. Install [monero](https://github.com/monero-project/monero) dependencies: 3. Install [monero](https://github.com/monero-project/monero) dependencies:
`brew install boost --c++11` `brew install boost --c++11`
`brew install openssl` - to install openssl headers `brew install openssl` - to install openssl headers
`brew install pkgconfig` `brew install pkgconfig`
`brew install cmake` `brew install cmake`
`brew install qt5` (or download QT 5.8+ from [qt.io](https://www.qt.io/download-open-source/))
If you have an older version of Qt installed via homebrew, you can force it to use 5.x like so:
`brew link --force --overwrite qt5`
4. Install latest Qt using official installer from [qt.io](https://www.qt.io/download-open-source/) (homebrew version might be outdated). 4. Install latest Qt using official installer from [qt.io](https://www.qt.io/download-open-source/) (homebrew version might be outdated).
5. Add Qt bin dir to your path (check first if directory exists; 5.8 is the current version) 5. Add Qt bin dir to your path (check first if directory exists; 5.8 is the current version)
`export PATH=$PATH:$HOME/Qt/5.8/clang_64/bin` `export PATH=$PATH:$HOME/Qt/5.8/clang_64/bin`
where ```Qt``` is the folder you selected to install Qt. 5. Add Qt bin dir to your path. Example:
`export PATH=$PATH:/usr/local/opt/qt5/bin`
make sure this is where Qt 5.x is installed on **your** system eg `$HOME/Qt/5.8/clang_64/bin` if you downloaded from qt.io.
6. Grab an up-to-date copy of the monero-core repository. 6. Grab an up-to-date copy of the monero-core repository.
`git clone https://github.com/monero-project/monero-core.git` `git clone https://github.com/monero-project/monero-core.git`
7. Go into the repository. 7. Go into the repository.
`cd monero-core` `cd monero-core`
8. Build libwallet 8. Build libwallet

View File

@ -87,7 +87,6 @@ ListView {
anchors.rightMargin: 40 anchors.rightMargin: 40
font.family: "Arial" font.family: "Arial"
font.pixelSize: 16 font.pixelSize: 16
font.letterSpacing: -1
color: "#545454" color: "#545454"
text: address text: address
} }
@ -101,7 +100,6 @@ ListView {
width: 139 width: 139
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
color: "#535353" color: "#535353"
text: qsTr("Payment ID:") + translationManager.emptyString text: qsTr("Payment ID:") + translationManager.emptyString
} }
@ -117,7 +115,6 @@ ListView {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 13 font.pixelSize: 13
font.letterSpacing: -1
color: "#545454" color: "#545454"
text: paymentId text: paymentId
} }

View File

@ -27,6 +27,7 @@
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0 import QtQuick 2.0
import QtQuick.Layouts 1.1
Item { Item {
id: checkBox id: checkBox
@ -40,6 +41,7 @@ Item {
signal clicked() signal clicked()
height: 25 height: 25
width: label.x + label.width width: label.x + label.width
Layout.minimumWidth: label.x + label.contentWidth
clip: true clip: true
Rectangle { Rectangle {
@ -74,7 +76,6 @@ Item {
anchors.leftMargin: 25 + 12 anchors.leftMargin: 25 + 12
font.family: "Arial" font.family: "Arial"
font.pixelSize: checkBox.fontSize font.pixelSize: checkBox.fontSize
font.letterSpacing: -1
color: "#525252" color: "#525252"
} }

View File

@ -145,7 +145,6 @@ ListView {
Text { Text {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: "#000000" color: "#000000"
text: date text: date
} }
@ -153,7 +152,6 @@ ListView {
Text { Text {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: "#000000" color: "#000000"
text: time text: time
} }
@ -175,7 +173,6 @@ ListView {
Text { Text {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: "#000000" color: "#000000"
text: balance text: balance
} }
@ -208,7 +205,6 @@ ListView {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: out ? "#FF4F41" : "#36B05B" color: out ? "#FF4F41" : "#36B05B"
text: amount text: amount
} }

View File

@ -285,7 +285,6 @@ Item {
anchors.centerIn: parent anchors.centerIn: parent
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
font.bold: dayArea.pressed font.bold: dayArea.pressed
text: styleData.date.getDate() text: styleData.date.getDate()
color: { color: {
@ -322,7 +321,6 @@ Item {
elide: Text.ElideRight elide: Text.ElideRight
font.family: "Arial" font.family: "Arial"
font.pixelSize: 9 font.pixelSize: 9
font.letterSpacing: -1
color: "#535353" color: "#535353"
text: { text: {
var locale = Qt.locale() var locale = Qt.locale()
@ -339,7 +337,6 @@ Item {
anchors.centerIn: parent anchors.centerIn: parent
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
color: "#4A4646" color: "#4A4646"
text: styleData.title text: styleData.title
} }

View File

@ -199,7 +199,6 @@ ListView {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
color: "#535353" color: "#535353"
text: paymentId !== "" ? qsTr("Payment ID:") + translationManager.emptyString : "" text: paymentId !== "" ? qsTr("Payment ID:") + translationManager.emptyString : ""
} }
@ -213,7 +212,6 @@ ListView {
//elide: Text.ElideRight //elide: Text.ElideRight
font.family: "Arial" font.family: "Arial"
font.pixelSize:13 font.pixelSize:13
font.letterSpacing: -1
color: "#545454" color: "#545454"
text: paymentId text: paymentId
@ -228,7 +226,6 @@ ListView {
//elide: Text.ElideRight //elide: Text.ElideRight
font.family: "Arial" font.family: "Arial"
font.pixelSize:13 font.pixelSize:13
font.letterSpacing: -1
color: "#545454" color: "#545454"
text: "(" + lookupPaymentID(paymentId) + ")" text: "(" + lookupPaymentID(paymentId) + ")"
visible: text !== "()" visible: text !== "()"
@ -250,7 +247,6 @@ ListView {
width: 86 width: 86
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
color: "#535353" color: "#535353"
text: qsTr("BlockHeight:") + translationManager.emptyString text: qsTr("BlockHeight:") + translationManager.emptyString
} }
@ -312,7 +308,6 @@ ListView {
Text { Text {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: "#000000" color: "#000000"
text: date text: date
} }
@ -320,7 +315,6 @@ ListView {
Text { Text {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: "#000000" color: "#000000"
text: time text: time
} }
@ -345,7 +339,6 @@ ListView {
Text { Text {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: "#000000" color: "#000000"
text: balance text: balance
} }
@ -380,7 +373,6 @@ ListView {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: isOut ? "#FF4F41" : "#36B05B" color: isOut ? "#FF4F41" : "#36B05B"
text: displayAmount text: displayAmount
} }
@ -406,7 +398,6 @@ ListView {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
font.family: "Arial" font.family: "Arial"
font.pixelSize: 18 font.pixelSize: 18
font.letterSpacing: -1
color: "#FF4F41" color: "#FF4F41"
text: fee text: fee
} }

View File

@ -100,7 +100,6 @@ Item {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.bold: true font.bold: true
font.letterSpacing: -1
color: "#4A4747" color: "#4A4747"
text: "NAME" text: "NAME"
} }
@ -195,7 +194,6 @@ Item {
anchors.rightMargin: 12 anchors.rightMargin: 12
font.family: "Arial" font.family: "Arial"
font.bold: true font.bold: true
font.letterSpacing: -1
font.pixelSize: 12 font.pixelSize: 12
color: delegateArea.pressed || parent.isCurrent ? "#FFFFFF" : "#4A4646" color: delegateArea.pressed || parent.isCurrent ? "#FFFFFF" : "#4A4646"
text: name text: name

View File

@ -43,7 +43,7 @@ Item {
signal clicked() signal clicked()
// Dynamic label width // Dynamic label width
Layout.minimumWidth: (label.contentWidth > 100)? label.contentWidth + 20 : 100 Layout.minimumWidth: (label.contentWidth > 80)? label.contentWidth + 20 : 100
@ -88,7 +88,7 @@ Item {
font.pixelSize: button.fontSize font.pixelSize: button.fontSize
color: parent.textColor color: parent.textColor
visible: parent.icon === "" visible: parent.icon === ""
font.capitalization : Font.Capitalize // font.capitalization : Font.Capitalize
} }
Image { Image {

View File

@ -197,6 +197,9 @@ Item {
property string stringLow: qsTr("Low (x1 fee)") + translationManager.emptyString property string stringLow: qsTr("Low (x1 fee)") + translationManager.emptyString
property string stringMedium: qsTr("Medium (x20 fee)") + translationManager.emptyString property string stringMedium: qsTr("Medium (x20 fee)") + translationManager.emptyString
property string stringHigh: qsTr("High (x166 fee)") + translationManager.emptyString property string stringHigh: qsTr("High (x166 fee)") + translationManager.emptyString
property string stringAll: qsTr("All") + translationManager.emptyString
property string stringSent: qsTr("Sent") + translationManager.emptyString
property string stringReceived: qsTr("Received") + translationManager.emptyString
delegate: Rectangle { delegate: Rectangle {

View File

@ -177,6 +177,13 @@ Item {
Repeater { Repeater {
id: repeater id: repeater
// Workaround for translations in listElements. All translated strings needs to be listed in this file.
property string stringCopy: qsTr("<b>Copy address to clipboard</b>") + translationManager.emptyString
property string stringSend: qsTr("<b>Send to same destination</b>") + translationManager.emptyString
property string stringFind: qsTr("<b>Find similar transactions</b>") + translationManager.emptyString
property string stringRemove: qsTr("<b>Remove from address book</b>") + translationManager.emptyString
delegate: Rectangle { delegate: Rectangle {
id: delegate id: delegate
property bool containsMouse: index === mouseArea.currentIndex property bool containsMouse: index === mouseArea.currentIndex
@ -211,7 +218,7 @@ Item {
onContainsMouseChanged: { onContainsMouseChanged: {
if(containsMouse) { if(containsMouse) {
var pos = rootItem.mapFromItem(delegate, 30, -25) var pos = rootItem.mapFromItem(delegate, 30, -25)
appWindow.toolTip.text = name appWindow.toolTip.text = qsTr(name) + translationManager.emptyString
appWindow.toolTip.x = pos.x - appWindow.toolTip.width appWindow.toolTip.x = pos.x - appWindow.toolTip.width
// if(appWindow.toolTip.height > 30) // if(appWindow.toolTip.height > 30)
// pos.y -= appWindow.toolTip.height - 30 // pos.y -= appWindow.toolTip.height - 30

View File

@ -60,6 +60,13 @@ Rectangle {
Repeater { Repeater {
id: columnsRepeater id: columnsRepeater
// Workaround for translations in listElements. All translated strings needs to be listed in this file.
property string stringPaymentID: qsTr("Payment ID") + translationManager.emptyString
property string stringDate: qsTr("Date") + translationManager.emptyString
property string stringBlockHeight: qsTr("Block height") + translationManager.emptyString
property string stringAmount: qsTr("Amount") + translationManager.emptyString
delegate: Rectangle { delegate: Rectangle {
id: delegate id: delegate
property bool desc: false property bool desc: false
@ -81,7 +88,7 @@ Rectangle {
return "#FF4304" return "#FF4304"
return index === header.activeSortColumn || delegateArea.containsMouse ? "#FF6C3C" : "#4A4949" return index === header.activeSortColumn || delegateArea.containsMouse ? "#FF6C3C" : "#4A4949"
} }
text: columnName text: qsTr(columnName) + translationManager.emptyString
} }
MouseArea { MouseArea {

View File

@ -65,7 +65,6 @@ Window {
lineHeight: 0.7 lineHeight: 0.7
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
color: "#FFFFFF" color: "#FFFFFF"
} }
} }

View File

@ -47,7 +47,6 @@ Rectangle {
anchors.centerIn: parent anchors.centerIn: parent
font.family: "Arial" font.family: "Arial"
font.pixelSize: 15 font.pixelSize: 15
font.letterSpacing: -1
color: "#FFFFFF" color: "#FFFFFF"
text: titleBar.title text: titleBar.title
visible: customDecorations visible: customDecorations

View File

@ -15,7 +15,9 @@ BUILD_LIBWALLET=false
if [ ! -d $MONERO_DIR/src ]; then if [ ! -d $MONERO_DIR/src ]; then
git submodule init monero git submodule init monero
fi fi
git submodule update --remote #git submodule update
git -C $MONERO_DIR fetch --tags
git -C $MONERO_DIR checkout v0.10.3
# get monero core tag # get monero core tag
get_tag get_tag

BIN
lang/flags/taiwan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<languages> <languages>
<!-- <!--
@ -14,20 +14,21 @@ List of available languages for your wallet's seed:
<language display_name="English (US)" locale="en_US" wallet_language="English" flag="/lang/flags/usa.png" qs="none"/> <language display_name="English (US)" locale="en_US" wallet_language="English" flag="/lang/flags/usa.png" qs="none"/>
<!-- <language display_name="English (GB)" locale="en_GB" wallet_language="English" flag="/lang/flags/uk.png" qs="none"/> --> <!-- <language display_name="English (GB)" locale="en_GB" wallet_language="English" flag="/lang/flags/uk.png" qs="none"/> -->
<!-- <language display_name="English (ZA)" locale="en_SA" wallet_language="English" flag="/lang/flags/rpa.png" qs="none"/> --> <!-- <language display_name="English (ZA)" locale="en_SA" wallet_language="English" flag="/lang/flags/rpa.png" qs="none"/> -->
<language display_name="العربية (PS)" locale="ar_PS" wallet_language="English" flag="/lang/flags/palestine.png" qs="none"/> <!-- <language display_name="العربية (PS)" locale="ar_PS" wallet_language="English" flag="/lang/flags/palestine.png" qs="none"/> -->
<language display_name="Deutsch" locale="de_DE" wallet_language="German" flag="/lang/flags/german.png" qs="none"/> <!-- <language display_name="Deutsch" locale="de_DE" wallet_language="German" flag="/lang/flags/german.png" qs="none"/> -->
<language display_name="Esperanto" locale="eo" wallet_language="English" flag="/lang/flags/esperanto.png" qs="none"/> <language display_name="Esperanto" locale="eo" wallet_language="English" flag="/lang/flags/esperanto.png" qs="none"/>
<language display_name="Español" locale="es_ES" wallet_language="Spanish" flag="/lang/flags/spain.png" qs="none"/> <!-- <language display_name="Español" locale="es_ES" wallet_language="Spanish" flag="/lang/flags/spain.png" qs="none"/> -->
<language display_name="Suomen kieli" locale="fi" wallet_language="English" flag="/lang/flags/finland.png" qs="none"/> <!-- <language display_name="Suomen kieli" locale="fi" wallet_language="English" flag="/lang/flags/finland.png" qs="none"/> -->
<language display_name="Français" locale="fr_FR" wallet_language="English" flag="/lang/flags/france.png" qs="none"/> <language display_name="Français" locale="fr_FR" wallet_language="French" flag="/lang/flags/france.png" qs="none"/>
<language display_name="Hrvatski" locale="hr_HR" wallet_language="English" flag="/lang/flags/croatia.png" qs="none"/> <!-- <language display_name="Hrvatski" locale="hr_HR" wallet_language="English" flag="/lang/flags/croatia.png" qs="none"/> -->
<language display_name="हिन्दी" locale="hi_IN" wallet_language="English" flag="/lang/flags/india.png" qs="none"/> <!-- <language display_name="हिन्दी" locale="hi_IN" wallet_language="English" flag="/lang/flags/india.png" qs="none"/> -->
<language display_name="Bahasa Indonesia" locale="id_ID" wallet_language="English" flag="/lang/flags/indonesia.png" qs="none"/> <language display_name="Bahasa Indonesia" locale="id_ID" wallet_language="English" flag="/lang/flags/indonesia.png" qs="none"/>
<language display_name="Italiano" locale="it_IT" wallet_language="Italian" flag="/lang/flags/italy.png" qs="none"/> <language display_name="Italiano" locale="it_IT" wallet_language="Italian" flag="/lang/flags/italy.png" qs="none"/>
<language display_name="日本語" locale="ja_JP" wallet_language="Japanese" flag="/lang/flags/japan.png" qs="none"/> <language display_name="日本語" locale="ja_JP" wallet_language="Japanese" flag="/lang/flags/japan.png" qs="none"/>
<language display_name="Nederlands" locale="nl_NL" wallet_language="English" flag="/lang/flags/netherlands.png" qs="none"/> <language display_name="Nederlands" locale="nl_NL" wallet_language="English" flag="/lang/flags/netherlands.png" qs="none"/>
<language display_name="Polski" locale="pl_PL" wallet_language="English" flag="/lang/flags/poland.png" qs="none"/> <!-- <language display_name="Polski" locale="pl_PL" wallet_language="English" flag="/lang/flags/poland.png" qs="none"/> -->
<language display_name="Português (BR)" locale="pt_BR" wallet_language="Portuguese" flag="/lang/flags/brazil.png" qs="none"/> <!-- <language display_name="Português (BR)" locale="pt-br_BR" wallet_language="Portuguese" flag="/lang/flags/brazil.png" qs="none"/> -->
<language display_name="русский язык" locale="ru_RU" wallet_language="Russian" flag="/lang/flags/russia.png" qs="none"/> <!-- <language display_name="русский язык" locale="ru_RU" wallet_language="Russian" flag="/lang/flags/russia.png" qs="none"/> -->
<language display_name="中文 (漢字)" locale="zh_TW" wallet_language="English" flag="/lang/flags/china.png" qs="none"/> <language display_name="简体中文 (中国)" locale="zh-cn_CN" wallet_language="English" flag="/lang/flags/china.png" qs="none"/>
<language display_name="繁體中文 (台灣)" locale="zh-tw_CN" wallet_language="English" flag="/lang/flags/taiwan.png" qs="none"/>
</languages> </languages>

View File

@ -286,6 +286,9 @@ ApplicationWindow {
leftPanel.networkStatus.connected = status leftPanel.networkStatus.connected = status
leftPanel.progressBar.visible = (status === Wallet.ConnectionStatus_Connected) && !daemonSynced leftPanel.progressBar.visible = (status === Wallet.ConnectionStatus_Connected) && !daemonSynced
// Update fee multiplier dropdown on transfer page
middlePanel.transferView.updatePriorityDropdown();
// If wallet isnt connected and no daemon is running - Ask // If wallet isnt connected and no daemon is running - Ask
if(!walletInitialized && status === Wallet.ConnectionStatus_Disconnected && !daemonManager.running(persistentSettings.testnet)){ if(!walletInitialized && status === Wallet.ConnectionStatus_Disconnected && !daemonManager.running(persistentSettings.testnet)){
daemonManagerDialog.open(); daemonManagerDialog.open();
@ -537,6 +540,7 @@ ApplicationWindow {
console.log("integer amount: ", amountxmr); console.log("integer amount: ", amountxmr);
console.log("integer unlocked",currentWallet.unlockedBalance) console.log("integer unlocked",currentWallet.unlockedBalance)
if (amountxmr <= 0) { if (amountxmr <= 0) {
hideProcessingSplash()
informationPopup.title = qsTr("Error") + translationManager.emptyString; informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.text = qsTr("Amount is wrong: expected number from %1 to %2") informationPopup.text = qsTr("Amount is wrong: expected number from %1 to %2")
.arg(walletManager.displayAmount(0)) .arg(walletManager.displayAmount(0))
@ -548,8 +552,9 @@ ApplicationWindow {
informationPopup.open() informationPopup.open()
return; return;
} else if (amountxmr > currentWallet.unlockedBalance) { } else if (amountxmr > currentWallet.unlockedBalance) {
hideProcessingSplash()
informationPopup.title = qsTr("Error") + translationManager.emptyString; informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.text = qsTr("insufficient funds. Unlocked balance: %1") informationPopup.text = qsTr("Insufficient funds. Unlocked balance: %1")
.arg(walletManager.displayAmount(currentWallet.unlockedBalance)) .arg(walletManager.displayAmount(currentWallet.unlockedBalance))
+ translationManager.emptyString + translationManager.emptyString
@ -1253,7 +1258,6 @@ ApplicationWindow {
lineHeight: 0.7 lineHeight: 0.7
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 font.pixelSize: 12
font.letterSpacing: -1
color: "#FFFFFF" color: "#FFFFFF"
} }
} }

2
monero

@ -1 +1 @@
Subproject commit daf66621dcf43f36067465a1f1c99f5b1390c400 Subproject commit 72f38bcc91ac45f88e192f7f0ca3ec2d6df76663

View File

@ -277,7 +277,7 @@ macx {
# translation stuff # translation stuff
TRANSLATIONS = \ # English is default language, no explicit translation file TRANSLATIONS = \ # English is default language, no explicit translation file
$$PWD/translations/monero-core_ar.ts \ # Arabic $$PWD/translations/monero-core_ar.ts \ # Arabic
$$PWD/translations/monero-core_br.ts \ # Portuguese (Brazil) $$PWD/translations/monero-core_pt-br.ts \ # Portuguese (Brazil)
$$PWD/translations/monero-core_de.ts \ # German $$PWD/translations/monero-core_de.ts \ # German
$$PWD/translations/monero-core_eo.ts \ # Esperanto $$PWD/translations/monero-core_eo.ts \ # Esperanto
$$PWD/translations/monero-core_es.ts \ # Spanish $$PWD/translations/monero-core_es.ts \ # Spanish
@ -285,13 +285,14 @@ TRANSLATIONS = \ # English is default language, no explicit translation file
$$PWD/translations/monero-core_fr.ts \ # French $$PWD/translations/monero-core_fr.ts \ # French
$$PWD/translations/monero-core_hr.ts \ # Croatian $$PWD/translations/monero-core_hr.ts \ # Croatian
$$PWD/translations/monero-core_id.ts \ # Indonesian $$PWD/translations/monero-core_id.ts \ # Indonesian
$$PWD/translations/monero-core_in.ts \ # Hindi $$PWD/translations/monero-core_hi.ts \ # Hindi
$$PWD/translations/monero-core_it.ts \ # Italian $$PWD/translations/monero-core_it.ts \ # Italian
$$PWD/translations/monero-core_ja.ts \ # Japanese $$PWD/translations/monero-core_ja.ts \ # Japanese
$$PWD/translations/monero-core_nl.ts \ # Dutch $$PWD/translations/monero-core_nl.ts \ # Dutch
$$PWD/translations/monero-core_pl.ts \ # Polish $$PWD/translations/monero-core_pl.ts \ # Polish
$$PWD/translations/monero-core_ru.ts \ # Russian $$PWD/translations/monero-core_ru.ts \ # Russian
$$PWD/translations/monero-core_zh.ts \ # Chinese (Traditional) $$PWD/translations/monero-core_zh-cn.ts \ # Chinese (Simplified-China)
$$PWD/translations/monero-core_zh-tw.ts \ # Chinese (Traditional-Taiwan)
CONFIG(release, debug|release) { CONFIG(release, debug|release) {
DESTDIR = release/bin DESTDIR = release/bin

View File

@ -50,7 +50,9 @@ Rectangle {
/* main layout */ /* main layout */
ColumnLayout { ColumnLayout {
id: mainLayout id: mainLayout
anchors.margins: 10 anchors.margins: 40
anchors.bottomMargin: 10
anchors.left: parent.left anchors.left: parent.left
anchors.top: parent.top anchors.top: parent.top
anchors.right: parent.right anchors.right: parent.right
@ -60,7 +62,6 @@ Rectangle {
// solo // solo
ColumnLayout { ColumnLayout {
id: soloBox id: soloBox
anchors.margins: 40
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.top: parent.top anchors.top: parent.top
@ -82,13 +83,9 @@ Rectangle {
Text { Text {
id: soloMainLabel id: soloMainLabel
text: qsTr("Mining helps the Monero network build resilience.<br>") text: qsTr("Mining with your computer helps strengthen the Monero network. The more that people mine, the harder it is for the network to be attacked, and every little bit helps.<br> <br>Mining also gives you a small chance to earn some Monero. Your computer will create hashes looking for block solutions. If you find a block, you will get the associated reward. Good luck!") + translationManager.emptyString
+ qsTr("The more mining is done, the harder it is to attack the network.<br>")
+ qsTr("Mining also gives you a small chance to earn some Monero.<br>")
+ qsTr("Your computer will search for Monero block solutions.<br>")
+ qsTr("If you find a block, you will get the associated reward.<br>")
+ translationManager.emptyString
wrapMode: Text.Wrap wrapMode: Text.Wrap
Layout.fillWidth: true
} }
RowLayout { RowLayout {
@ -193,7 +190,6 @@ Rectangle {
Text { Text {
id: statusText id: statusText
anchors.leftMargin: 40
anchors.topMargin: 17 anchors.topMargin: 17
text: qsTr("Status: not mining") text: qsTr("Status: not mining")
textFormat: Text.RichText textFormat: Text.RichText

View File

@ -51,16 +51,23 @@ Rectangle {
function updatePaymentId(payment_id) { function updatePaymentId(payment_id) {
if (typeof appWindow.currentWallet === 'undefined' || appWindow.currentWallet == null) if (typeof appWindow.currentWallet === 'undefined' || appWindow.currentWallet == null)
return return
// generate a new one if not given as argument // generate a new one if not given as argument
if (typeof payment_id === 'undefined') { if (typeof payment_id === 'undefined') {
payment_id = appWindow.currentWallet.generatePaymentId() payment_id = appWindow.currentWallet.generatePaymentId()
appWindow.persistentSettings.payment_id = payment_id
paymentIdLine.text = payment_id paymentIdLine.text = payment_id
} }
addressLine.text = appWindow.currentWallet.address
integratedAddressLine.text = appWindow.currentWallet.integratedAddress(payment_id) if (payment_id.length > 0) {
if (integratedAddressLine.text === "") integratedAddressLine.text = appWindow.currentWallet.integratedAddress(payment_id)
integratedAddressLine.text = qsTr("Invalid payment ID") if (integratedAddressLine.text === "")
integratedAddressLine.text = qsTr("Invalid payment ID")
}
else {
paymentIdLine.text = ""
integratedAddressLine.text = ""
}
update() update()
} }
@ -161,7 +168,8 @@ Rectangle {
/* main layout */ /* main layout */
ColumnLayout { ColumnLayout {
id: mainLayout id: mainLayout
anchors.margins: 40 anchors.margins: 17
anchors.topMargin: 40
anchors.left: parent.left anchors.left: parent.left
anchors.top: parent.top anchors.top: parent.top
anchors.right: parent.right anchors.right: parent.right
@ -236,20 +244,27 @@ Rectangle {
StandardButton { StandardButton {
id: generatePaymentId id: generatePaymentId
width: 80 width: 80
fontSize: 14
shadowReleasedColor: "#FF4304" shadowReleasedColor: "#FF4304"
shadowPressedColor: "#B32D00" shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C" releasedColor: "#FF6C3C"
pressedColor: "#FF4304" pressedColor: "#FF4304"
text: qsTr("Generate") + translationManager.emptyString; text: qsTr("Generate") + translationManager.emptyString;
anchors.right: parent.right onClicked: updatePaymentId()
onClicked: { }
appWindow.persistentSettings.payment_id = appWindow.currentWallet.generatePaymentId();
updatePaymentId() StandardButton {
} id: clearPaymentId
enabled: !!paymentIdLine.text
width: 80
shadowReleasedColor: "#FF4304"
shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C"
pressedColor: "#FF4304"
text: qsTr("Clear") + translationManager.emptyString;
onClicked: updatePaymentId("")
} }
} }
RowLayout { RowLayout {
id: integratedAddressRow id: integratedAddressRow
Label { Label {
@ -264,7 +279,7 @@ Rectangle {
id: integratedAddressLine id: integratedAddressLine
fontSize: mainLayout.lineEditFontSize fontSize: mainLayout.lineEditFontSize
placeholderText: qsTr("ReadOnly wallet integrated address displayed here") + translationManager.emptyString placeholderText: qsTr("Generate payment ID for integrated address") + translationManager.emptyString
readOnly: true readOnly: true
width: mainLayout.editWidth width: mainLayout.editWidth
Layout.fillWidth: true Layout.fillWidth: true
@ -296,7 +311,7 @@ Rectangle {
LineEdit { LineEdit {
id: amountLine id: amountLine
fontSize: mainLayout.lineEditFontSize fontSize: mainLayout.lineEditFontSize
placeholderText: qsTr("Amount") + translationManager.emptyString placeholderText: qsTr("Amount to receive") + translationManager.emptyString
readOnly: false readOnly: false
width: mainLayout.editWidth width: mainLayout.editWidth
Layout.fillWidth: true Layout.fillWidth: true
@ -414,12 +429,14 @@ Rectangle {
function onPageCompleted() { function onPageCompleted() {
console.log("Receive page loaded"); console.log("Receive page loaded");
if(addressLine.text.length === 0 || addressLine.text !== appWindow.currentWallet.address) { if (appWindow.currentWallet) {
updatePaymentId() if (addressLine.text.length === 0 || addressLine.text !== appWindow.currentWallet.address) {
addressLine.text = appWindow.currentWallet.address
}
} }
update() update()
timer.running = true timer.running = true
} }
function onPageClosed() { function onPageClosed() {

View File

@ -127,6 +127,7 @@ Rectangle {
RowLayout { RowLayout {
Label { Label {
id: manageDaemonLabel id: manageDaemonLabel
Layout.fillWidth: true
color: "#4A4949" color: "#4A4949"
text: qsTr("Manage daemon") + translationManager.emptyString text: qsTr("Manage daemon") + translationManager.emptyString
fontSize: 16 fontSize: 16
@ -141,6 +142,9 @@ Rectangle {
} }
RowLayout { RowLayout {
id: daemonStatusRow
Layout.fillWidth: true
StandardButton { StandardButton {
visible: true visible: true
enabled: !appWindow.daemonRunning enabled: !appWindow.daemonRunning
@ -268,7 +272,7 @@ Rectangle {
id: daemonAddrSave id: daemonAddrSave
Layout.fillWidth: false Layout.fillWidth: false
Layout.leftMargin: 30 Layout.leftMargin: 30
text: qsTr("Save") + translationManager.emptyString text: qsTr("Connect") + translationManager.emptyString
shadowReleasedColor: "#FF4304" shadowReleasedColor: "#FF4304"
shadowPressedColor: "#B32D00" shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C" releasedColor: "#FF6C3C"

View File

@ -172,7 +172,7 @@ Rectangle {
//anchors.top: amountLine.top //anchors.top: amountLine.top
//anchors.bottom: amountLine.bottom //anchors.bottom: amountLine.bottom
width: 60 width: 60
text: qsTr("all") + translationManager.emptyString text: qsTr("All") + translationManager.emptyString
shadowReleasedColor: "#FF4304" shadowReleasedColor: "#FF4304"
shadowPressedColor: "#B32D00" shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C" releasedColor: "#FF6C3C"
@ -195,6 +195,17 @@ Rectangle {
ListElement { column1: qsTr("High (x166 fee)") ; column2: ""; priority: PendingTransaction.Priority_High } ListElement { column1: qsTr("High (x166 fee)") ; column2: ""; priority: PendingTransaction.Priority_High }
} }
// Priorites after v5
ListModel {
id: priorityModelV5
ListElement { column1: qsTr("Low (x1 fee)") ; column2: ""; priority: 1}
ListElement { column1: qsTr("Default (x4 fee)") ; column2: ""; priority: 2 }
ListElement { column1: qsTr("Medium (x20 fee)") ; column2: ""; priority: 3 }
ListElement { column1: qsTr("High (x166 fee)") ; column2: ""; priority: 4 }
}
StandardDropdown { StandardDropdown {
id: priorityDropdown id: priorityDropdown
anchors.top: transactionPriority.bottom anchors.top: transactionPriority.bottom
@ -206,7 +217,6 @@ Rectangle {
shadowPressedColor: "#B32D00" shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C" releasedColor: "#FF6C3C"
pressedColor: "#FF4304" pressedColor: "#FF4304"
dataModel: priorityModel
z: 1 z: 1
} }
@ -524,7 +534,7 @@ Rectangle {
StandardButton { StandardButton {
id: signTxButton id: signTxButton
text: qsTr("sign tx file") + translationManager.emptyString text: qsTr("Sign tx file") + translationManager.emptyString
shadowReleasedColor: "#FF4304" shadowReleasedColor: "#FF4304"
shadowPressedColor: "#B32D00" shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C" releasedColor: "#FF6C3C"
@ -538,7 +548,7 @@ Rectangle {
StandardButton { StandardButton {
id: submitTxButton id: submitTxButton
text: qsTr("submit tx file") + translationManager.emptyString text: qsTr("Submit tx file") + translationManager.emptyString
shadowReleasedColor: "#FF4304" shadowReleasedColor: "#FF4304"
shadowPressedColor: "#B32D00" shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C" releasedColor: "#FF6C3C"
@ -700,6 +710,19 @@ Rectangle {
console.log("transfer page loaded") console.log("transfer page loaded")
updateStatus(); updateStatus();
updateMixin(); updateMixin();
updatePriorityDropdown()
}
function updatePriorityDropdown() {
// Use new fee multipliers after v5 fork
if (typeof currentWallet != "undefined" && currentWallet.useForkRules(5)) {
priorityDropdown.dataModel = priorityModelV5;
priorityDropdown.currentIndex = 1
} else {
priorityDropdown.dataModel = priorityModel;
priorityDropdown.currentIndex = 0
}
} }
//TODO: Add daemon sync status //TODO: Add daemon sync status

View File

@ -114,6 +114,7 @@
<file>lang/flags/rpa.png</file> <file>lang/flags/rpa.png</file>
<file>lang/flags/russia.png</file> <file>lang/flags/russia.png</file>
<file>lang/flags/spain.png</file> <file>lang/flags/spain.png</file>
<file>lang/flags/taiwan.png</file>
<file>lang/flags/uk.png</file> <file>lang/flags/uk.png</file>
<file>lang/flags/usa.png</file> <file>lang/flags/usa.png</file>
<file>lang/flags/indonesia.png</file> <file>lang/flags/indonesia.png</file>

View File

@ -587,6 +587,11 @@ bool Wallet::rescanSpent()
return m_walletImpl->rescanSpent(); return m_walletImpl->rescanSpent();
} }
bool Wallet::useForkRules(quint8 required_version, quint64 earlyBlocks) const
{
return m_walletImpl->useForkRules(required_version,earlyBlocks);
}
Wallet::Wallet(Monero::Wallet *w, QObject *parent) Wallet::Wallet(Monero::Wallet *w, QObject *parent)
: QObject(parent) : QObject(parent)
, m_walletImpl(w) , m_walletImpl(w)

View File

@ -228,6 +228,9 @@ public:
// Rescan spent outputs // Rescan spent outputs
Q_INVOKABLE bool rescanSpent(); Q_INVOKABLE bool rescanSpent();
// check if fork rules should be used
Q_INVOKABLE bool useForkRules(quint8 version, quint64 earlyBlocks) const;
// TODO: setListenter() when it implemented in API // TODO: setListenter() when it implemented in API
signals: signals:
// emitted on every event happened with wallet // emitted on every event happened with wallet

View File

@ -1233,7 +1233,7 @@ Description: </source>
</message> </message>
<message> <message>
<location filename="../main.qml" line="442"/> <location filename="../main.qml" line="442"/>
<source>insufficient funds. Unlocked balance: %1</source> <source>Insufficient funds. Unlocked balance: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -124,7 +124,7 @@ ColumnLayout {
//renderType: Text.NativeRendering //renderType: Text.NativeRendering
color: "#4A4646" color: "#4A4646"
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
text: qsTr("Note: this password cannot be recovered. If you forget it then the wallet will have to be restored from its 25 word mnemonic seed.<br/><br/> text: qsTr(" <br>Note: this password cannot be recovered. If you forget it then the wallet will have to be restored from its 25 word mnemonic seed.<br/><br/>
<b>Enter a strong password</b> (using letters, numbers, and/or symbols):") <b>Enter a strong password</b> (using letters, numbers, and/or symbols):")
+ translationManager.emptyString + translationManager.emptyString
} }