From 060dd3c35bfbedc1bde8c1fbe326f029292a60f3 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Fri, 1 Nov 2019 07:33:21 -0700 Subject: [PATCH 01/36] Create dir if it doesn't exist. Fixes #17 --- lib/Cargo.lock | 6 +++--- lib/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Cargo.lock b/lib/Cargo.lock index 21ff07d..55a869b 100644 --- a/lib/Cargo.lock +++ b/lib/Cargo.lock @@ -1051,7 +1051,7 @@ version = "0.1.0" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", - "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=bc9bef6ec16b9c852134b1f3f54f53ed49114a86)", + "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=af0e0b9b2bcc131804d5e940f94d45c6fef74481)", ] [[package]] @@ -2266,7 +2266,7 @@ dependencies = [ [[package]] name = "zecwalletlitelib" version = "0.1.0" -source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=bc9bef6ec16b9c852134b1f3f54f53ed49114a86#bc9bef6ec16b9c852134b1f3f54f53ed49114a86" +source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=af0e0b9b2bcc131804d5e940f94d45c6fef74481#af0e0b9b2bcc131804d5e940f94d45c6fef74481" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bellman 0.1.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)", @@ -2562,4 +2562,4 @@ dependencies = [ "checksum zcash_client_backend 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_primitives 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_proofs 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" -"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=bc9bef6ec16b9c852134b1f3f54f53ed49114a86)" = "" +"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=af0e0b9b2bcc131804d5e940f94d45c6fef74481)" = "" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 5ce7610..bec009e 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -11,4 +11,4 @@ crate-type = ["staticlib"] [dependencies] libc = "0.2.58" lazy_static = "1.4.0" -zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "bc9bef6ec16b9c852134b1f3f54f53ed49114a86" } +zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "af0e0b9b2bcc131804d5e940f94d45c6fef74481" } From ba32344eb23d0e6253e2939287a5df001d6ebc7f Mon Sep 17 00:00:00 2001 From: adityapk00 <31996805+adityapk00@users.noreply.github.com> Date: Fri, 1 Nov 2019 12:26:58 -0700 Subject: [PATCH 02/36] Update README.md --- README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6260847..d232f6d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,21 @@ -Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash +Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash. + +**Zecwallet-Lite is currently in beta** + + +## Privacy +* While all the keys and transaction detection happens on the client, the server can learn what blocks contain your shielded transactions. +* The server also learns other metadata about you like your ip address etc... +* Also remember that t-addresses don't provide any privacy protection. + + +### Note Management +Zecwallet-Lite does automatic note and utxo management, which means it doesn't allow you to manually select which address to send outgoing transactions from. It follows these principles: +* Defaults to sending shielded transactions, even if you're sending to a transparent address +* Sapling funds need at least 5 confirmations before they can be spent +* Can select funds from multiple shielded addresses in the same transaction +* Will automatically shield your transparent funds at the first opportunity + * When sending an outgoing transaction to a shielded address, Zecwallet-Lite can decide to use the transaction to additionally shield your transparent funds (i.e., send your transparent funds to your own shielded address in the same transaction) ## Compiling from source * ZecWallet is written in C++ 14, and can be compiled with g++/clang++/visual c++. From 0bbe7ec39cad9fe64023bccfc3ee2c7ce6f37121 Mon Sep 17 00:00:00 2001 From: adityapk00 <31996805+adityapk00@users.noreply.github.com> Date: Fri, 1 Nov 2019 12:29:30 -0700 Subject: [PATCH 03/36] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d232f6d..74e7ad2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ -Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash. - **Zecwallet-Lite is currently in beta** +Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash. It has full support for all Zcash features: +- Send + Receive fully shileded transactions +- Supports transparent addresses and transactions +- Full support for incoming and outgoing memos +- Fully encrypt your private keys, using viewkeys to sync the blockchain + ## Privacy * While all the keys and transaction detection happens on the client, the server can learn what blocks contain your shielded transactions. From 9590b531e0ff05e67310e125044aa0f0110c4883 Mon Sep 17 00:00:00 2001 From: adityapk00 <31996805+adityapk00@users.noreply.github.com> Date: Thu, 7 Nov 2019 10:29:35 -0800 Subject: [PATCH 04/36] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 74e7ad2..a72f907 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -**Zecwallet-Lite is currently in beta** - Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash. It has full support for all Zcash features: - Send + Receive fully shileded transactions - Supports transparent addresses and transactions From 2cc39a9c79ac3a921f2bb3a4b820679d7bf600f8 Mon Sep 17 00:00:00 2001 From: adityapk00 <31996805+adityapk00@users.noreply.github.com> Date: Thu, 7 Nov 2019 10:31:01 -0800 Subject: [PATCH 05/36] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a72f907..215d45d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash. It has full support for all Zcash features: -- Send + Receive fully shileded transactions +- Send + Receive fully shielded transactions - Supports transparent addresses and transactions - Full support for incoming and outgoing memos - Fully encrypt your private keys, using viewkeys to sync the blockchain From ff84078e9571a5b4f3a850e81a1e0accc5eb7b7f Mon Sep 17 00:00:00 2001 From: adityapk00 <31996805+adityapk00@users.noreply.github.com> Date: Thu, 7 Nov 2019 10:31:48 -0800 Subject: [PATCH 06/36] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 215d45d..52b1077 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash. - Full support for incoming and outgoing memos - Fully encrypt your private keys, using viewkeys to sync the blockchain +## Download +Download compiled binaries from our [release page](https://github.com/adityapk00/zecwallet-lite/releases) ## Privacy * While all the keys and transaction detection happens on the client, the server can learn what blocks contain your shielded transactions. From cf72b366bd995f97c085eb2b3875894343cc40f7 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Fri, 8 Nov 2019 13:52:40 -0800 Subject: [PATCH 07/36] Update UI strings --- src/connection.ui | 2 +- src/mainwindow.ui | 2 +- src/version.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/connection.ui b/src/connection.ui index d2eb84f..4e14c8c 100644 --- a/src/connection.ui +++ b/src/connection.ui @@ -14,7 +14,7 @@ - ZecWallet + ZecWallet-Lite true diff --git a/src/mainwindow.ui b/src/mainwindow.ui index b66cf15..cb8260e 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -11,7 +11,7 @@ - ZecWallet + ZecWallet-Lite diff --git a/src/version.h b/src/version.h index 3e7162c..c404d2b 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define APP_VERSION "1.0-beta1" +#define APP_VERSION "1.0.1" From abf488b2004cc79c08c305c2369a1c1e8dadfe57 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Fri, 8 Nov 2019 14:15:11 -0800 Subject: [PATCH 08/36] Fix unified build --- res/Info.plist | 4 ++-- src/scripts/dounifiedbuild.ps1 | 26 ++++++++++++++------------ src/scripts/mkwininstaller.ps1 | 13 +++++-------- src/scripts/signbinaries.sh | 2 +- src/scripts/zec-qt-wallet.wxs | 27 ++++++++++++--------------- 5 files changed, 34 insertions(+), 38 deletions(-) diff --git a/res/Info.plist b/res/Info.plist index 6fb916a..143d3f3 100644 --- a/res/Info.plist +++ b/res/Info.plist @@ -9,7 +9,7 @@ CFBundleIconFile logo.icns CFBundleIdentifier - com.yourcompany.zecwallet + com.yourcompany.zecwallet-lite CFBundlePackageType APPL CFBundleSignature @@ -39,4 +39,4 @@ NSUIElement - \ No newline at end of file + diff --git a/src/scripts/dounifiedbuild.ps1 b/src/scripts/dounifiedbuild.ps1 index 42858dc..c12032f 100644 --- a/src/scripts/dounifiedbuild.ps1 +++ b/src/scripts/dounifiedbuild.ps1 @@ -7,11 +7,11 @@ param ( ) Write-Host "[Initializing]" -Remove-Item -Force -ErrorAction Ignore ./artifacts/linux-binaries-zecwallet-v$version.tar.gz -Remove-Item -Force -ErrorAction Ignore ./artifacts/linux-deb-zecwallet-v$version.deb -Remove-Item -Force -ErrorAction Ignore ./artifacts/Windows-binaries-zecwallet-v$version.zip -Remove-Item -Force -ErrorAction Ignore ./artifacts/Windows-installer-zecwallet-v$version.msi -Remove-Item -Force -ErrorAction Ignore ./artifacts/macOS-zecwallet-v$version.dmg +Remove-Item -Force -ErrorAction Ignore ./artifacts/linux-binaries-zecwallet-lite-v$version.tar.gz +Remove-Item -Force -ErrorAction Ignore ./artifacts/linux-deb-zecwallet-lite-v$version.deb +Remove-Item -Force -ErrorAction Ignore ./artifacts/Windows-binaries-lite-zecwallet-v$version.zip +Remove-Item -Force -ErrorAction Ignore ./artifacts/Windows-installer-lite-zecwallet-v$version.msi +Remove-Item -Force -ErrorAction Ignore ./artifacts/macOS-zecwallet--litev$version.dmg Remove-Item -Force -ErrorAction Ignore ./artifacts/signatures-v$version.tar.gz @@ -27,7 +27,7 @@ Write-Host "" Write-Host "[Building on Mac]" -bash src/scripts/mkmacdmg.sh --qt_path ~/Qt/5.11.1/clang_64/ --version $version --zcash_path ~/prod/zcash +bash src/scripts/mkmacdmg.sh --qt_path ~/Qt/5.11.1/clang_64/ --version $version if (! $?) { Write-Output "[Error]" exit 1; @@ -37,9 +37,11 @@ Write-Host "" Write-Host "[Building Linux + Windows]" Write-Host -NoNewline "Copying files.........." +# Cleanup some local files to aid copying +rm -rf lib/target/ ssh $server "rm -rf /tmp/zqwbuild" ssh $server "mkdir /tmp/zqwbuild" -scp -r src/ singleapplication/ res/ ./zec-qt-wallet.pro ./application.qrc ./LICENSE ./README.md ${server}:/tmp/zqwbuild/ | Out-Null +scp -r src/ singleapplication/ res/ lib/ ./zecwallet-lite.pro ./application.qrc ./LICENSE ./README.md ${server}:/tmp/zqwbuild/ | Out-Null ssh $server "dos2unix -q /tmp/zqwbuild/src/scripts/mkrelease.sh" | Out-Null ssh $server "dos2unix -q /tmp/zqwbuild/src/version.h" Write-Host "[OK]" @@ -86,11 +88,11 @@ Write-Host "[OK]" # Finally, test to make sure all files exist Write-Host -NoNewline "Checking Build........." -if (! (Test-Path ./artifacts/linux-binaries-zecwallet-v$version.tar.gz) -or - ! (Test-Path ./artifacts/linux-deb-zecwallet-v$version.deb) -or - ! (Test-Path ./artifacts/Windows-binaries-zecwallet-v$version.zip) -or - ! (Test-Path ./artifacts/macOS-zecwallet-v$version.dmg) -or - ! (Test-Path ./artifacts/Windows-installer-zecwallet-v$version.msi) ) { +if (! (Test-Path ./artifacts/linux-binaries-zecwallet-lite-v$version.tar.gz) -or + ! (Test-Path ./artifacts/linux-deb-zecwallet-lite-v$version.deb) -or + ! (Test-Path ./artifacts/Windows-binaries-zecwallet-lite-v$version.zip) -or + ! (Test-Path ./artifacts/macOS-zecwallet-lite-v$version.dmg) -or + ! (Test-Path ./artifacts/Windows-installer-zecwallet-lite-v$version.msi) ) { Write-Host "[Error]" exit 1; } diff --git a/src/scripts/mkwininstaller.ps1 b/src/scripts/mkwininstaller.ps1 index 603d05c..af72eb1 100644 --- a/src/scripts/mkwininstaller.ps1 +++ b/src/scripts/mkwininstaller.ps1 @@ -2,16 +2,13 @@ param ( [Parameter(Mandatory=$true)][string]$version ) -$target="zecwallet-v$version" +$target="zecwallet-lite-v$version" Remove-Item -Path release/wininstaller -Recurse -ErrorAction Ignore | Out-Null New-Item release/wininstaller -itemtype directory | Out-Null -Copy-Item release/$target/zecwallet.exe release/wininstaller/ -Copy-Item release/$target/LICENSE release/wininstaller/ -Copy-Item release/$target/README.md release/wininstaller/ -Copy-Item release/$target/zcashd.exe release/wininstaller/ -Copy-Item release/$target/zcash-cli.exe release/wininstaller/ +Copy-Item release/$target/zecwallet-lite.exe release/wininstaller/ +Copy-Item release/$target/LICENSE release/wininstaller/ Get-Content src/scripts/zec-qt-wallet.wxs | ForEach-Object { $_ -replace "RELEASE_VERSION", "$version" } | Out-File -Encoding utf8 release/wininstaller/zec-qt-wallet.wxs @@ -20,10 +17,10 @@ if (!$?) { exit 1; } -light.exe -ext WixUIExtension -cultures:en-us release/wininstaller/zec-qt-wallet.wixobj -out release/wininstaller/zecwallet.msi +light.exe -ext WixUIExtension -cultures:en-us release/wininstaller/zec-qt-wallet.wixobj -out release/wininstaller/zecwallet-lite.msi if (!$?) { exit 1; } New-Item artifacts -itemtype directory -Force | Out-Null -Copy-Item release/wininstaller/zecwallet.msi ./artifacts/Windows-installer-$target.msi \ No newline at end of file +Copy-Item release/wininstaller/zecwallet-lite.msi ./artifacts/Windows-installer-$target.msi \ No newline at end of file diff --git a/src/scripts/signbinaries.sh b/src/scripts/signbinaries.sh index 679b279..657c04f 100755 --- a/src/scripts/signbinaries.sh +++ b/src/scripts/signbinaries.sh @@ -35,7 +35,7 @@ rm -f signatures-v$APP_VERSION.tar.gz # sha256sum the binaries gsha256sum *$APP_VERSION* > sha256sum-v$APP_VERSION.txt -for i in $( ls *zecwallet-v$APP_VERSION* sha256sum-v$APP_VERSION* ); do +for i in $( ls *zecwallet-lite-v$APP_VERSION* sha256sum-v$APP_VERSION* ); do echo "Signing" $i gpg --batch --output ../release/signatures/$i.sig --detach-sig $i done diff --git a/src/scripts/zec-qt-wallet.wxs b/src/scripts/zec-qt-wallet.wxs index a781c8f..d97688c 100644 --- a/src/scripts/zec-qt-wallet.wxs +++ b/src/scripts/zec-qt-wallet.wxs @@ -1,15 +1,15 @@ - + - - + + - + @@ -37,13 +37,13 @@ - + - - + + - @@ -55,24 +55,21 @@ - + + Name="ZecWallet" WorkingDirectory="INSTALLFOLDER" Icon="zecwalletliteicon.exe" > - - - - + - + From 4d93418cc39ad56d80bc4456f1666f8ee694d265 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Fri, 8 Nov 2019 14:24:55 -0800 Subject: [PATCH 09/36] Add macos code signing --- src/scripts/dounifiedbuild.ps1 | 3 ++- src/scripts/mkmacdmg.sh | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/scripts/dounifiedbuild.ps1 b/src/scripts/dounifiedbuild.ps1 index c12032f..0173c1e 100644 --- a/src/scripts/dounifiedbuild.ps1 +++ b/src/scripts/dounifiedbuild.ps1 @@ -2,6 +2,7 @@ param ( [Parameter(Mandatory=$true)][string]$version, [Parameter(Mandatory=$true)][string]$prev, + [Parameter(Mandatory=$true)][string]$certificate, [Parameter(Mandatory=$true)][string]$server, [Parameter(Mandatory=$true)][string]$winserver ) @@ -27,7 +28,7 @@ Write-Host "" Write-Host "[Building on Mac]" -bash src/scripts/mkmacdmg.sh --qt_path ~/Qt/5.11.1/clang_64/ --version $version +bash src/scripts/mkmacdmg.sh --qt_path ~/Qt/5.11.1/clang_64/ --version $version --certificate "$certificate" if (! $?) { Write-Output "[Error]" exit 1; diff --git a/src/scripts/mkmacdmg.sh b/src/scripts/mkmacdmg.sh index 3592266..6dea8e6 100755 --- a/src/scripts/mkmacdmg.sh +++ b/src/scripts/mkmacdmg.sh @@ -12,8 +12,8 @@ case $key in shift # past argument shift # past value ;; - -z|--zcash_path) - ZCASH_DIR="$2" + -c|--certificate) + CERTIFICATE="$2" shift # past argument shift # past value ;; @@ -35,6 +35,11 @@ if [ -z $QT_PATH ]; then exit 1; fi +if [ -z $CERTIFICATE ]; then + echo "CERTIFICATE is not set. Please set it the name of the MacOS developer certificate to sign the binary with"; + exit 1; +fi + if [ -z $APP_VERSION ]; then echo "APP_VERSION is not set. Please set it to the current release version of the app"; exit 1; @@ -71,6 +76,7 @@ mkdir artifacts >/dev/null 2>&1 rm -f artifcats/zecwallet-lite.dmg >/dev/null 2>&1 rm -f artifacts/rw* >/dev/null 2>&1 $QT_PATH/bin/macdeployqt zecwallet-lite.app +codesign --deep --force --verify --verbose -s "$CERTIFICATE" --options runtime --timestamp Zecwallet-Lite.app/ echo "[OK]" From c98da96b976a5c038a28acea9c9328e2200600eb Mon Sep 17 00:00:00 2001 From: adityapk00 <31996805+adityapk00@users.noreply.github.com> Date: Tue, 12 Nov 2019 17:30:26 -0800 Subject: [PATCH 10/36] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 52b1077..4a2538c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash. It has full support for all Zcash features: +## ZecWallet Lite +Zecwallet-Lite is z-Addr first, Sapling compatible lightwallet client for Zcash. It has full support for all Zcash features: - Send + Receive fully shielded transactions - Supports transparent addresses and transactions - Full support for incoming and outgoing memos From 740e7132819c95a7d215f608be230dde5ed0b495 Mon Sep 17 00:00:00 2001 From: Denio Date: Wed, 13 Nov 2019 06:21:58 +0100 Subject: [PATCH 11/36] fix travis.yml for building test --- .travis.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5391c6f..443442f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,43 @@ + language: rust matrix: include: # works on Precise and Trusty - os: linux + - dist: xenial compiler: clang + + addons: apt: sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7'] - packages: ['clang-3.7', 'g++-8'] + packages: ['clang-3.7', 'g++-5'] + + + + +before_script: +- export PATH="$PATH:$HOME/.cargo/bin" + before_install: + + - gem install bundler + - curl -sSL https://sh.rustup.rs | sh -s -- -y --default-toolchain=nightly --profile=minimal + - export PATH="$PATH:$HOME/.cargo/bin" - sudo add-apt-repository ppa:beineri/opt-qt591-xenial -y - sudo apt-get update -qq - sudo apt-get install qt59base qt59websockets libgl1-mesa-dev - source /opt/qt59/bin/qt59-env.sh - + script: + - qmake -v - clang++ -v - - g++-8 -v + - g++-5 -v - qmake silentdragon-lite.pro CONFIG+=release -spec linux-clang - make CC=clang CXX=clang++ -j2 - make distclean - qmake silentdragon-lite.pro CONFIG+=release -spec linux-g++ - res/libsodium/buildlibsodium.sh - - make CC=gcc-8 CXX=g++-8 -j2 + - make CC=gcc-5 CXX=g++-5 -j2 From bcf2d4e9d6e46e0cbd81c761f7e523dcaeae39eb Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Wed, 13 Nov 2019 15:11:11 -0800 Subject: [PATCH 12/36] Use latest block instead of info --- lib/Cargo.lock | 6 +++--- lib/Cargo.toml | 2 +- src/connection.cpp | 5 +++-- src/connection.h | 6 +++++- src/controller.cpp | 44 ++++++++++++++++++++++++------------------- src/controller.h | 1 + src/liteinterface.cpp | 9 +++++++++ src/liteinterface.h | 3 +++ src/settings.cpp | 4 ++-- src/settings.h | 11 +++++------ src/txtablemodel.cpp | 17 ++++++++++------- 11 files changed, 67 insertions(+), 41 deletions(-) diff --git a/lib/Cargo.lock b/lib/Cargo.lock index 55a869b..2a9ad8f 100644 --- a/lib/Cargo.lock +++ b/lib/Cargo.lock @@ -1051,7 +1051,7 @@ version = "0.1.0" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", - "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=af0e0b9b2bcc131804d5e940f94d45c6fef74481)", + "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=61dc063fe155d1510e9a074e5a3577a0621f8c3a)", ] [[package]] @@ -2266,7 +2266,7 @@ dependencies = [ [[package]] name = "zecwalletlitelib" version = "0.1.0" -source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=af0e0b9b2bcc131804d5e940f94d45c6fef74481#af0e0b9b2bcc131804d5e940f94d45c6fef74481" +source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=61dc063fe155d1510e9a074e5a3577a0621f8c3a#61dc063fe155d1510e9a074e5a3577a0621f8c3a" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bellman 0.1.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)", @@ -2562,4 +2562,4 @@ dependencies = [ "checksum zcash_client_backend 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_primitives 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_proofs 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" -"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=af0e0b9b2bcc131804d5e940f94d45c6fef74481)" = "" +"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=61dc063fe155d1510e9a074e5a3577a0621f8c3a)" = "" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index bec009e..a2f32a9 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -11,4 +11,4 @@ crate-type = ["staticlib"] [dependencies] libc = "0.2.58" lazy_static = "1.4.0" -zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "af0e0b9b2bcc131804d5e940f94d45c6fef74481" } +zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "61dc063fe155d1510e9a074e5a3577a0621f8c3a" } diff --git a/src/connection.cpp b/src/connection.cpp index a2a882d..41ea1d6 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -49,7 +49,7 @@ void ConnectionLoader::doAutoConnect() { main->logger->write(QObject::tr("Attempting to initialize library with ") + config->server); // Check to see if there's an existing wallet - if (litelib_wallet_exists(Settings::getChainName().toStdString().c_str())) { + if (litelib_wallet_exists(Settings::getDefaultChainName().toStdString().c_str())) { main->logger->write(QObject::tr("Using existing wallet.")); char* resp = litelib_initialize_existing(config->dangerous, config->server.toStdString().c_str()); QString response = litelib_process_response(resp); @@ -68,9 +68,10 @@ void ConnectionLoader::doAutoConnect() { auto me = this; // After the lib is initialized, try to do get info - connection->doRPC("info", "", [=](auto) { + connection->doRPC("info", "", [=](auto reply) { // If success, set the connection main->logger->write("Connection is online."); + connection->setInfo(reply); isSyncing = new QAtomicInteger(); isSyncing->store(true); diff --git a/src/connection.h b/src/connection.h index 7ea28b1..636dd73 100644 --- a/src/connection.h +++ b/src/connection.h @@ -123,8 +123,12 @@ public: void showTxError(const QString& error); + json getInfo() { return serverInfo; } + void setInfo(const json& info) { serverInfo = info; } + private: - bool shutdownInProgress = false; + bool shutdownInProgress = false; + json serverInfo; }; #endif diff --git a/src/controller.cpp b/src/controller.cpp index d482f38..8459236 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -67,6 +67,8 @@ void Controller::setConnection(Connection* c) { ui->statusBar->showMessage("Ready!"); + processInfo(c->getInfo()); + // If we're allowed to get the Zec Price, get the prices if (Settings::getInstance()->getAllowFetchPrices()) refreshZECPrice(); @@ -137,42 +139,46 @@ void Controller::refresh(bool force) { getInfoThenRefresh(force); } +void Controller::processInfo(const json& info) { + // Testnet? + QString chainName; + if (!info["chain_name"].is_null()) { + chainName = QString::fromStdString(info["chain_name"].get()); + Settings::getInstance()->setTestnet(chainName == "test"); + }; + + + QString version = QString::fromStdString(info["version"].get()); + Settings::getInstance()->setZcashdVersion(version); + + // Recurring pamynets are testnet only + if (!Settings::getInstance()->isTestnet()) + main->disableRecurring(); +} + void Controller::getInfoThenRefresh(bool force) { if (!zrpc->haveConnection()) return noConnection(); static bool prevCallSucceeded = false; - zrpc->fetchInfo([=] (const json& reply) { - prevCallSucceeded = true; - - // Testnet? - QString chainName; - if (!reply["chain_name"].is_null()) { - chainName = QString::fromStdString(reply["chain_name"].get()); - Settings::getInstance()->setTestnet(chainName == "test"); - }; + zrpc->fetchLatestBlock([=] (const json& reply) { + prevCallSucceeded = true; - // Recurring pamynets are testnet only - if (!Settings::getInstance()->isTestnet()) - main->disableRecurring(); - - int curBlock = reply["latest_block_height"].get(); + int curBlock = reply["height"].get(); bool doUpdate = force || (model->getLatestBlock() != curBlock); model->setLatestBlock(curBlock); // Connected, so display checkmark. - auto tooltip = Settings::getInstance()->getSettings().server + "\n" + QString::fromStdString(reply.dump()); + auto tooltip = Settings::getInstance()->getSettings().server + "\n" + + QString::fromStdString(zrpc->getConnection()->getInfo().dump()); QIcon i(":/icons/res/connected.gif"); + QString chainName = Settings::getInstance()->isTestnet() ? "test" : "main"; main->statusLabel->setText(chainName + "(" + QString::number(curBlock) + ")"); main->statusLabel->setToolTip(tooltip); main->statusIcon->setPixmap(i.pixmap(16, 16)); main->statusIcon->setToolTip(tooltip); - //int version = reply["version"].get(); - int version = 1; - Settings::getInstance()->setZcashdVersion(version); - // See if recurring payments needs anything Recurring::getInstance()->processPending(main); diff --git a/src/controller.h b/src/controller.h index 1394fad..981730d 100644 --- a/src/controller.h +++ b/src/controller.h @@ -107,6 +107,7 @@ public: QString getDefaultTAddress(); private: + void processInfo(const json&); void refreshBalances(); void refreshTransactions(); diff --git a/src/liteinterface.cpp b/src/liteinterface.cpp index 30f1a0b..0f4bfe9 100644 --- a/src/liteinterface.cpp +++ b/src/liteinterface.cpp @@ -130,6 +130,15 @@ void LiteInterface::fetchInfo(const std::function& cb, conn->doRPC("info", "", cb, err); } + +void LiteInterface::fetchLatestBlock(const std::function& cb, + const std::function& err) { + if (conn == nullptr) + return; + + conn->doRPC("height", "", cb, err); +} + /** * Method to get all the private keys for both z and t addresses. It will make 2 batch calls, * combine the result, and call the callback with a single list containing both the t-addr and z-addr diff --git a/src/liteinterface.h b/src/liteinterface.h index 203967f..70b5732 100644 --- a/src/liteinterface.h +++ b/src/liteinterface.h @@ -44,6 +44,9 @@ public: void fetchInfo(const std::function& cb, const std::function& err); + + void fetchLatestBlock(const std::function& cb, + const std::function& err); void fetchBalance(const std::function& cb); diff --git a/src/settings.cpp b/src/settings.cpp index a96b7af..ed1891f 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -74,11 +74,11 @@ bool Settings::isTAddress(QString addr) { return addr.startsWith("t"); } -int Settings::getZcashdVersion() { +QString Settings::getZcashdVersion() { return _zcashdVersion; } -void Settings::setZcashdVersion(int version) { +void Settings::setZcashdVersion(QString version) { _zcashdVersion = version; } diff --git a/src/settings.h b/src/settings.h index d2cbfbf..a031d89 100644 --- a/src/settings.h +++ b/src/settings.h @@ -42,8 +42,8 @@ public: bool isSyncing(); void setSyncing(bool syncing); - int getZcashdVersion(); - void setZcashdVersion(int version); + QString getZcashdVersion(); + void setZcashdVersion(QString version); void setUseEmbedded(bool r) { _useEmbedded = r; } bool useEmbedded() { return _useEmbedded; } @@ -95,12 +95,11 @@ public: static bool isValidAddress(QString addr); - static QString getChainName() { return QString("main"); } + static QString getDefaultChainName() { return QString("main"); } static const QString labelRegExp; - static const int updateSpeed = 20 * 1000; // 20 sec - static const int quickUpdateSpeed = 5 * 1000; // 5 sec + static const int updateSpeed = 60 * 1000; // 60 sec static const int priceRefreshSpeed = 60 * 60 * 1000; // 1 hr private: @@ -114,7 +113,7 @@ private: bool _isTestnet = false; bool _isSyncing = false; int _blockNumber = 0; - int _zcashdVersion = 0; + QString _zcashdVersion = 0; bool _useEmbedded = false; bool _headless = false; diff --git a/src/txtablemodel.cpp b/src/txtablemodel.cpp index 9df59e4..07815dc 100644 --- a/src/txtablemodel.cpp +++ b/src/txtablemodel.cpp @@ -70,15 +70,18 @@ bool TxTableModel::exportToCsv(QString fileName) const { } QString TxTableModel::concatMultipleMemos(const TransactionItem& dat) const { - // Concat all the memos - QString memo; - for (auto item : dat.items) { - if (!item.memo.trimmed().isEmpty()) { - memo += item.address + ": \"" + item.memo + "\"\n"; + if (dat.items.length() == 1) { + return dat.items[0].memo; + } else { + // Concat all the memos + QString memo; + for (auto item : dat.items) { + if (!item.memo.trimmed().isEmpty()) { + memo += item.address + ": \"" + item.memo + "\"\n"; + } } + return memo; } - - return memo; }; QVariant TxTableModel::data(const QModelIndex &index, int role) const { From b32a1d4732cb07b4e855c028cceae2b77761253c Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Wed, 13 Nov 2019 15:12:46 -0800 Subject: [PATCH 13/36] Naming --- src/about.ui | 2 +- src/main.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/about.ui b/src/about.ui index 962f36b..056bd55 100644 --- a/src/about.ui +++ b/src/about.ui @@ -17,7 +17,7 @@ - Zecwallet Lightclient + Zecwallet Lite diff --git a/src/main.cpp b/src/main.cpp index f4f6a0f..982280b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -205,7 +205,7 @@ public: w = new MainWindow(); - w->setWindowTitle("Zecwallet Lightclient v" + QString(APP_VERSION)); + w->setWindowTitle("Zecwallet Lite v" + QString(APP_VERSION)); // If there was a payment URI on the command line, pay it if (parser.positionalArguments().length() > 0) { From ae546b701514652638ac487b48b7ae15b3e22c72 Mon Sep 17 00:00:00 2001 From: greg Date: Thu, 14 Nov 2019 01:05:06 -0800 Subject: [PATCH 14/36] Fix compiler warning pertaining to deprecated method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously when compiling, the following deprecation warning would be encountered: ``` src/mainwindow.cpp:447:70: warning: ‘QList QObject::findChildren(const QRegExp&, Qt::FindChildOptions) const [with T = QLineEdit*; Qt::FindChildOptions = QFlags]’ is deprecated: Use findChildren(const QRegularExpression &, ...) instead. [-Wdeprecated-declarations] ``` This commit updates this line to the non-deprecated QT5 version of this method, which uses QRegularExpression rather than QRegExp, thus removing the warning. --- src/mainwindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 6d40796..eafdbac 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -16,6 +16,7 @@ #include "connection.h" #include "requestdialog.h" #include "websockets.h" +#include using json = nlohmann::json; @@ -443,7 +444,7 @@ void MainWindow::setupSettingsModal() { void MainWindow::addressBook() { // Check to see if there is a target. - QRegExp re("Address[0-9]+", Qt::CaseInsensitive); + QRegularExpression re("Address[0-9]+", QRegularExpression::CaseInsensitiveOption); for (auto target: ui->sendToWidgets->findChildren(re)) { if (target->hasFocus()) { AddressBook::open(this, target); From add46f996099ab632044b249f9e251d0fc1b282c Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Thu, 14 Nov 2019 09:21:00 -0800 Subject: [PATCH 15/36] Fix regular exp warning --- src/sendtab.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sendtab.cpp b/src/sendtab.cpp index 6c8023d..8b3e5d9 100644 --- a/src/sendtab.cpp +++ b/src/sendtab.cpp @@ -158,7 +158,7 @@ void MainWindow::updateLabelsAutoComplete() { labelCompleter->setCaseSensitivity(Qt::CaseInsensitive); // Then, find all the address fields and update the completer. - QRegExp re("Address[0-9]+", Qt::CaseInsensitive); + QRegularExpression re("Address[0-9]+", QRegularExpression::CaseInsensitiveOption); for (auto target: ui->sendToWidgets->findChildren(re)) { target->setCompleter(labelCompleter); } From 6520a09e6d790940e67ef035cbc229f63b43d607 Mon Sep 17 00:00:00 2001 From: Arjun Date: Fri, 15 Nov 2019 10:31:50 -0800 Subject: [PATCH 16/36] Init logging with yeclite --- lib/Cargo.toml | 2 +- lib/src/lib.rs | 9 +++++++++ src/controller.cpp | 2 ++ src/settings.h | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/Cargo.toml b/lib/Cargo.toml index a2f32a9..ccab1bf 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -11,4 +11,4 @@ crate-type = ["staticlib"] [dependencies] libc = "0.2.58" lazy_static = "1.4.0" -zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "61dc063fe155d1510e9a074e5a3577a0621f8c3a" } +zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "96997c5a467b710286bc9c6fea818b9d7d76f254" } diff --git a/lib/src/lib.rs b/lib/src/lib.rs index afe5456..39c5989 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -57,6 +57,9 @@ pub extern fn litelib_initialize_new(dangerous: bool, server: *const c_char) -> } }; + // Initialize logging + let _ = lightclient.init_logging(); + let seed = match lightclient.do_seed_phrase() { Ok(s) => s.dump(), Err(e) => { @@ -105,6 +108,9 @@ pub extern fn litelib_initialize_new_from_phrase(dangerous: bool, server: *const } }; + // Initialize logging + let _ = lightclient.init_logging(); + LIGHTCLIENT.lock().unwrap().replace(Some(Arc::new(lightclient))); let c_str = CString::new("OK").unwrap(); @@ -137,6 +143,9 @@ pub extern fn litelib_initialize_existing(dangerous: bool, server: *const c_char } }; + // Initialize logging + let _ = lightclient.init_logging(); + LIGHTCLIENT.lock().unwrap().replace(Some(Arc::new(lightclient))); let c_str = CString::new("OK").unwrap(); diff --git a/src/controller.cpp b/src/controller.cpp index 8459236..3b9b045 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -169,6 +169,8 @@ void Controller::getInfoThenRefresh(bool force) { bool doUpdate = force || (model->getLatestBlock() != curBlock); model->setLatestBlock(curBlock); + main->logger->write(QString("Refresh. curblock ") % QString::number(curBlock) % ", update=" % (doUpdate ? "true" : "false") ); + // Connected, so display checkmark. auto tooltip = Settings::getInstance()->getSettings().server + "\n" + QString::fromStdString(zrpc->getConnection()->getInfo().dump()); diff --git a/src/settings.h b/src/settings.h index a031d89..78e824e 100644 --- a/src/settings.h +++ b/src/settings.h @@ -99,7 +99,7 @@ public: static const QString labelRegExp; - static const int updateSpeed = 60 * 1000; // 60 sec + static const int updateSpeed = 30 * 1000; // 30 sec static const int priceRefreshSpeed = 60 * 60 * 1000; // 1 hr private: From 1a762b01c8835f12c47ff7b7de267afde8006d7e Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Sat, 16 Nov 2019 16:03:43 -0800 Subject: [PATCH 17/36] Allow multiple servers in settings --- lib/Cargo.lock | 6 +++--- src/mainwindow.cpp | 16 ++++++++++++---- src/settings.ui | 23 +++++++++-------------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/lib/Cargo.lock b/lib/Cargo.lock index 2a9ad8f..e32ab35 100644 --- a/lib/Cargo.lock +++ b/lib/Cargo.lock @@ -1051,7 +1051,7 @@ version = "0.1.0" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", - "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=61dc063fe155d1510e9a074e5a3577a0621f8c3a)", + "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=96997c5a467b710286bc9c6fea818b9d7d76f254)", ] [[package]] @@ -2266,7 +2266,7 @@ dependencies = [ [[package]] name = "zecwalletlitelib" version = "0.1.0" -source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=61dc063fe155d1510e9a074e5a3577a0621f8c3a#61dc063fe155d1510e9a074e5a3577a0621f8c3a" +source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=96997c5a467b710286bc9c6fea818b9d7d76f254#96997c5a467b710286bc9c6fea818b9d7d76f254" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bellman 0.1.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)", @@ -2562,4 +2562,4 @@ dependencies = [ "checksum zcash_client_backend 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_primitives 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_proofs 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" -"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=61dc063fe155d1510e9a074e5a3577a0621f8c3a)" = "" +"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=96997c5a467b710286bc9c6fea818b9d7d76f254)" = "" diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index eafdbac..a85f692 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -408,9 +408,13 @@ void MainWindow::setupSettingsModal() { // Fetch prices settings.chkFetchPrices->setChecked(Settings::getInstance()->getAllowFetchPrices()); + // List of default servers + settings.cmbServer->addItem("https://lightd-main.zecwallet.co:443"); + settings.cmbServer->addItem("https://lightd-main.zcashfr.io:443"); + // Load current values into the dialog auto conf = Settings::getInstance()->getSettings(); - settings.txtServer->setText(conf.server); + settings.cmbServer->setCurrentText(conf.server); // Connection tab by default settings.tabWidget->setCurrentIndex(0); @@ -429,11 +433,15 @@ void MainWindow::setupSettingsModal() { Settings::getInstance()->setAllowFetchPrices(settings.chkFetchPrices->isChecked()); // Save the server - Settings::getInstance()->saveSettings(settings.txtServer->text().trimmed()); + bool reloadConnection = false; + if (conf.server != settings.cmbServer->currentText().trimmed()) { + reloadConnection = true; + } + Settings::getInstance()->saveSettings(settings.cmbServer->currentText().trimmed()); - if (false /* connection needs reloading?*/) { + if (reloadConnection) { // Save settings - Settings::getInstance()->saveSettings(settings.txtServer->text()); + Settings::getInstance()->saveSettings(settings.cmbServer->currentText()); auto cl = new ConnectionLoader(this, rpc); cl->loadConnection(); diff --git a/src/settings.ui b/src/settings.ui index b18879e..4c031c4 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -10,12 +10,6 @@ 539 - - - 540 - 500 - - Settings @@ -57,14 +51,15 @@ - - - - - - - - + + + + + true + + + + From 66c60464e6498bd13ba439e42803f8147d1d8cf7 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Sat, 16 Nov 2019 16:05:11 -0800 Subject: [PATCH 18/36] Require TLS cert --- src/connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connection.cpp b/src/connection.cpp index 41ea1d6..f74584f 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -42,7 +42,7 @@ void ConnectionLoader::doAutoConnect() { qDebug() << "Doing autoconnect"; auto config = std::shared_ptr(new ConnectionConfig()); - config->dangerous = true; + config->dangerous = false; config->server = Settings::getInstance()->getSettings().server; // Initialize the library From 7a9552f5f11688c06d27636b27814597f4ef82db Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Sat, 16 Nov 2019 20:45:13 -0800 Subject: [PATCH 19/36] Allow custom servers --- src/mainwindow.cpp | 10 +++++++--- src/settings.ui | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index a85f692..d03ef72 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -442,9 +442,13 @@ void MainWindow::setupSettingsModal() { if (reloadConnection) { // Save settings Settings::getInstance()->saveSettings(settings.cmbServer->currentText()); - - auto cl = new ConnectionLoader(this, rpc); - cl->loadConnection(); + + // Save the wallet + getRPC()->saveWallet([=] (auto) { + // Then reload the connection + auto cl = new ConnectionLoader(this, rpc); + cl->loadConnection(); + }); } } }); diff --git a/src/settings.ui b/src/settings.ui index 4c031c4..ae44092 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -46,7 +46,7 @@ - Server + Lightwallet Server From d81fac8b08fb98a007ab249b652888d735a515b3 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Sat, 16 Nov 2019 21:22:31 -0800 Subject: [PATCH 20/36] Add rescan to UI --- lib/Cargo.lock | 6 +++--- lib/Cargo.toml | 2 +- src/connection.cpp | 1 - src/controller.h | 2 ++ src/liteinterface.cpp | 7 +++++++ src/liteinterface.h | 1 + src/mainwindow.cpp | 22 +++++++++++++------- src/mainwindow.ui | 13 +++++++++--- src/settings.ui | 48 ++----------------------------------------- 9 files changed, 41 insertions(+), 61 deletions(-) diff --git a/lib/Cargo.lock b/lib/Cargo.lock index e32ab35..540dfaf 100644 --- a/lib/Cargo.lock +++ b/lib/Cargo.lock @@ -1051,7 +1051,7 @@ version = "0.1.0" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", - "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=96997c5a467b710286bc9c6fea818b9d7d76f254)", + "zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=165c22e39e5b43d417f8719edcf91b07c15906bf)", ] [[package]] @@ -2266,7 +2266,7 @@ dependencies = [ [[package]] name = "zecwalletlitelib" version = "0.1.0" -source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=96997c5a467b710286bc9c6fea818b9d7d76f254#96997c5a467b710286bc9c6fea818b9d7d76f254" +source = "git+https://github.com/adityapk00/zecwallet-light-cli?rev=165c22e39e5b43d417f8719edcf91b07c15906bf#165c22e39e5b43d417f8719edcf91b07c15906bf" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bellman 0.1.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)", @@ -2562,4 +2562,4 @@ dependencies = [ "checksum zcash_client_backend 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_primitives 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" "checksum zcash_proofs 0.0.0 (git+https://github.com/adityapk00/librustzcash.git?rev=188537ea025fcb7fbdfc11266f307a084a5451e4)" = "" -"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=96997c5a467b710286bc9c6fea818b9d7d76f254)" = "" +"checksum zecwalletlitelib 0.1.0 (git+https://github.com/adityapk00/zecwallet-light-cli?rev=165c22e39e5b43d417f8719edcf91b07c15906bf)" = "" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index ccab1bf..3237cce 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -11,4 +11,4 @@ crate-type = ["staticlib"] [dependencies] libc = "0.2.58" lazy_static = "1.4.0" -zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "96997c5a467b710286bc9c6fea818b9d7d76f254" } +zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "165c22e39e5b43d417f8719edcf91b07c15906bf" } diff --git a/src/connection.cpp b/src/connection.cpp index f74584f..cb7cb4e 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -139,7 +139,6 @@ Connection* ConnectionLoader::makeConnection(std::shared_ptr c // Update the UI with the status void ConnectionLoader::showInformation(QString info, QString detail) { - qDebug() << "Showing info " << info << ":" << detail; connD->status->setText(info); connD->statusDetail->setText(detail); } diff --git a/src/controller.h b/src/controller.h index 981730d..43a8e0b 100644 --- a/src/controller.h +++ b/src/controller.h @@ -62,6 +62,8 @@ public: void saveWallet(const std::function& cb) { zrpc->saveWallet(cb); } + void clearWallet(const std::function& cb) { zrpc->clearWallet(cb); } + void createNewZaddr(bool sapling, const std::function& cb) { unlockIfEncrypted([=] () { zrpc->createNewZaddr(sapling, cb); diff --git a/src/liteinterface.cpp b/src/liteinterface.cpp index 0f4bfe9..c9e5138 100644 --- a/src/liteinterface.cpp +++ b/src/liteinterface.cpp @@ -84,6 +84,13 @@ void LiteInterface::saveWallet(const std::function& cb) { conn->doRPCWithDefaultErrorHandling("save", "", cb); } +void LiteInterface::clearWallet(const std::function& cb) { + if (conn == nullptr) + return; + + conn->doRPCWithDefaultErrorHandling("clear", "", cb); +} + void LiteInterface::unlockWallet(QString password, const std::function& cb) { if (conn == nullptr) return; diff --git a/src/liteinterface.h b/src/liteinterface.h index 70b5732..a1aea04 100644 --- a/src/liteinterface.h +++ b/src/liteinterface.h @@ -58,6 +58,7 @@ public: void fetchSeed(const std::function&); void saveWallet(const std::function& cb); + void clearWallet(const std::function& cb); void fetchWalletEncryptionStatus(const std::function& cb); void encryptWallet(QString password, const std::function& cb); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d03ef72..c9ccc94 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -105,6 +105,20 @@ MainWindow::MainWindow(QWidget *parent) : AppDataServer::getInstance()->connectAppDialog(this); }); + // Rescan + QObject::connect(ui->actionRescan, &QAction::triggered, [=]() { + // To rescan, we clear the wallet state, and then reload the connection + // This will start a sync, and show the scanning status. + getRPC()->clearWallet([=] (auto) { + // Save the wallet + getRPC()->saveWallet([=] (auto) { + // Then reload the connection. The ConnectionLoader deletes itself. + auto cl = new ConnectionLoader(this, rpc); + cl->loadConnection(); + }); + }); + }); + // Address Book QObject::connect(ui->action_Address_Book, &QAction::triggered, this, &MainWindow::addressBook); @@ -419,12 +433,6 @@ void MainWindow::setupSettingsModal() { // Connection tab by default settings.tabWidget->setCurrentIndex(0); - // Enable the troubleshooting options only if using embedded zcashd - if (!rpc->isEmbedded()) { - settings.chkRescan->setEnabled(false); - settings.chkRescan->setToolTip(tr("You're using an external zcashd. Please restart zcashd with -rescan")); - } - if (settingsDialog.exec() == QDialog::Accepted) { // Check for updates Settings::getInstance()->setCheckForUpdates(settings.chkCheckUpdates->isChecked()); @@ -445,7 +453,7 @@ void MainWindow::setupSettingsModal() { // Save the wallet getRPC()->saveWallet([=] (auto) { - // Then reload the connection + // Then reload the connection. The ConnectionLoader deletes itself. auto cl = new ConnectionLoader(this, rpc); cl->loadConnection(); }); diff --git a/src/mainwindow.ui b/src/mainwindow.ui index cb8260e..7403eff 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -392,8 +392,8 @@ 0 0 - 1226 - 504 + 1162 + 344 @@ -1088,7 +1088,7 @@ 0 0 1274 - 22 + 39 @@ -1130,6 +1130,8 @@ + + @@ -1226,6 +1228,11 @@ Remove Wallet Encryption + + + Rescan + + diff --git a/src/settings.ui b/src/settings.ui index ae44092..a0fa476 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -6,7 +6,7 @@ 0 0 - 540 + 733 539 @@ -20,7 +20,7 @@ - 0 + 1 @@ -183,50 +183,6 @@ - - - Troubleshooting - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - - - - Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart ZecWallet for this to take effect - - - true - - - - - - - Rescan - - - - - From b0c12948c71bbee11b080c9c5c616956e7d84b9d Mon Sep 17 00:00:00 2001 From: Denio Date: Sun, 17 Nov 2019 22:41:37 +0100 Subject: [PATCH 21/36] add the option to choose between usd,eur,btc as currency for mainwindow Pricecheck --- src/controller.cpp | 39 +++++-- src/mainwindow.cpp | 61 ++++++++++ src/mainwindow.h | 4 +- src/settings.cpp | 19 ++++ src/settings.h | 10 ++ src/settings.ui | 272 +++++++++++++++++++++++++++++---------------- 6 files changed, 299 insertions(+), 106 deletions(-) diff --git a/src/controller.cpp b/src/controller.cpp index ffc6520..b2f59e3 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -58,7 +58,6 @@ Controller::~Controller() { delete zrpc; } - // Called when a connection to hushd is available. void Controller::setConnection(Connection* c) { if (c == nullptr) return; @@ -80,7 +79,6 @@ void Controller::setConnection(Connection* c) { refresh(true); } - // Build the RPC JSON Parameters for this tx void Controller::fillTxJsonParams(json& allRecepients, Tx tx) { Q_ASSERT(allRecepients.is_array()); @@ -100,7 +98,6 @@ void Controller::fillTxJsonParams(json& allRecepients, Tx tx) { } } - void Controller::noConnection() { QIcon i = QApplication::style()->standardIcon(QStyle::SP_MessageBoxCritical); main->statusIcon->setPixmap(i.pixmap(16, 16)); @@ -166,7 +163,18 @@ void Controller::getInfoThenRefresh(bool force) { auto tooltip = Settings::getInstance()->getSettings().server + "\n" + QString::fromStdString(reply.dump()); QIcon i(":/icons/res/connected.gif"); main->statusLabel->setText(chainName + "(" + QString::number(curBlock) + ")"); + + // use currency ComboBox as input + + if (Settings::getInstance()->get_currency_name() == "USD") { main->statusLabel->setText(" HUSH/USD=$" + QString::number( (double) Settings::getInstance()->getZECPrice() )); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + main->statusLabel->setText(" HUSH/EUR=€" + QString::number( (double) Settings::getInstance()->getEURPrice() )); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + main->statusLabel->setText(" HUSH/BTC=BTC" + QString::number( (double) Settings::getInstance()->getBTCPrice() )); + } else { + main->statusLabel->setText(" Fehler=KACKE" + QString::number( (double) Settings::getInstance()->getEURPrice() )); + } main->statusLabel->setToolTip(tooltip); main->statusIcon->setPixmap(i.pixmap(16, 16)); main->statusIcon->setToolTip(tooltip); @@ -176,10 +184,7 @@ void Controller::getInfoThenRefresh(bool force) { Settings::getInstance()->sethushdVersion(version); ui->Version->setText(QString::fromStdString(reply["version"].get())); ui->Vendor->setText(QString::fromStdString(reply["vendor"].get())); - - - - + // See if recurring payments needs anything Recurring::getInstance()->processPending(main); @@ -659,14 +664,28 @@ void Controller::refreshZECPrice() { const json& item = parsed.get(); const json& hush = item["hush"].get(); - if (hush["usd"] >= 0) { + if (hush["usd"] >= 0) { qDebug() << "Found hush key in price json"; // TODO: support BTC/EUR prices as well //QString price = QString::fromStdString(hush["usd"].get()); qDebug() << "HUSH = $" << QString::number((double)hush["usd"]); Settings::getInstance()->setZECPrice( hush["usd"] ); - return; } + if (hush["eur"] >= 0) + { + // TODO: support BTC/EUR prices as well + //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = €" << QString::number((double)hush["eur"]); + Settings::getInstance()->setEURPrice(hush["eur"]); + } + if (hush["btc"] >= 0) + { + // TODO: support BTC/EUR prices as well + //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = BTC" << QString::number((double)hush["btc"]); + Settings::getInstance()->setBTCPrice( hush["btc"]); + } + return; } catch (const std::exception& e) { // If anything at all goes wrong, just set the price to 0 and move on. qDebug() << QString("Caught something nasty: ") << e.what(); @@ -674,6 +693,8 @@ void Controller::refreshZECPrice() { // If nothing, then set the price to 0; Settings::getInstance()->setZECPrice(0); + Settings::getInstance()->setEURPrice(0); + Settings::getInstance()->setBTCPrice(0); }); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 862d7e1..a1f422d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -36,6 +36,7 @@ MainWindow::MainWindow(QWidget *parent) : this->slot_change_theme(theme_name); + ui->setupUi(this); logger = new Logger(this, QDir(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)).filePath("silentdragonlite-wallet.log")); @@ -393,6 +394,21 @@ void MainWindow::setupSettingsModal() { Ui_Settings settings; settings.setupUi(&settingsDialog); Settings::saveRestore(&settingsDialog); + + // Include currencies + + QString currency_name; + try + { + currency_name = Settings::getInstance()->get_currency_name(); + } + catch (...) + { + currency_name = "USD"; + } + + this->slot_change_currency(currency_name); + // Setup theme combo int theme_index = settings.comboBoxTheme->findText(Settings::getInstance()->get_theme_name(), Qt::MatchExactly); @@ -404,6 +420,19 @@ void MainWindow::setupSettingsModal() { QMessageBox::information(this, tr("Restart"), tr("Please restart Silentdragonlite to have the theme apply"), QMessageBox::Ok); }); + // Get Currency Data + + int currency_index = settings.comboBoxCurrency->findText(Settings::getInstance()->get_currency_name(), Qt::MatchExactly); + settings.comboBoxCurrency->setCurrentIndex(currency_index); + + + + QObject::connect(settings.comboBoxCurrency, &QComboBox::currentTextChanged, [=] (QString currency_name) { + this->slot_change_currency(currency_name); + + + }); + // Check for updates settings.chkCheckUpdates->setChecked(Settings::getInstance()->getCheckForUpdates()); @@ -1235,9 +1264,41 @@ void MainWindow::updateLabels() { updateLabelsAutoComplete(); } +void MainWindow::slot_change_currency(const QString& currency_name) + +{ + + Settings::getInstance()->set_currency_name(currency_name); + + // Include currency + + QString saved_currency_name; + try + { + saved_currency_name = Settings::getInstance()->get_currency_name(); + + } + catch (...) + { + saved_currency_name = "USD"; + + } + + + + + +} + + + + void MainWindow::slot_change_theme(const QString& theme_name) + + { Settings::getInstance()->set_theme_name(theme_name); + // Include css QString saved_theme_name; diff --git a/src/mainwindow.h b/src/mainwindow.h index 0af7ad3..08aac98 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -78,7 +78,9 @@ public: public slots: void slot_change_theme(const QString& themeName); - + void slot_change_currency(const QString& currencyName); + + private: void closeEvent(QCloseEvent* event); diff --git a/src/settings.cpp b/src/settings.cpp index e21eddc..17689c9 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -105,6 +105,12 @@ bool Settings::isSaplingActive() { double Settings::getZECPrice() { return ZECPrice; } +double Settings::getEURPrice() { + return EURPrice; +} +double Settings::getBTCPrice() { + return BTCPrice; +} bool Settings::getCheckForUpdates() { return QSettings().value("options/allowcheckupdates", true).toBool(); @@ -122,6 +128,19 @@ void Settings::setAllowFetchPrices(bool allow) { QSettings().setValue("options/allowfetchprices", allow); } +QString Settings::get_currency_name() { + // Load from the QT Settings. + return QSettings().value("options/currency_name", false).toString(); +} + +void Settings::set_currency_name(QString currency_name) { + QSettings().setValue("options/currency_name", currency_name); + + + +} + + QString Settings::get_theme_name() { // Load from the QT Settings. return QSettings().value("options/theme_name", false).toString(); diff --git a/src/settings.h b/src/settings.h index b4253d2..c9c9a4d 100644 --- a/src/settings.h +++ b/src/settings.h @@ -63,10 +63,18 @@ public: QString get_theme_name(); void set_theme_name(QString theme_name); + QString get_currency_name(); + void set_currency_name(QString currency_name); + + bool isSaplingActive(); void setZECPrice(double p) { ZECPrice = p; } + void setEURPrice(double p) { EURPrice = p; } + void setBTCPrice(double p) { BTCPrice = p; } double getZECPrice(); + double getEURPrice(); + double getBTCPrice(); // Static stuff static const QString txidStatusMessage; @@ -119,6 +127,8 @@ private: bool _headless = false; double ZECPrice = 0.0; + double BTCPrice = 0.0; + double EURPrice = 0.0; }; diff --git a/src/settings.ui b/src/settings.ui index 8a749da..da611f4 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -26,7 +26,7 @@ - 0 + 1 @@ -85,108 +85,188 @@ Options - - - - - - 0 - 0 - - - - - default - - - - - blue - - - - - light - - - - - dark - - - - - - - - Fetch hush / USD prices - - + + + + 80 + 110 + 80 + 25 + + + + + 0 + 0 + + + + + default + - - - - Check github for updates at startup - - + + + blue + - - - - Connect to github on startup to check for updates - - + + + light + - - - - - 0 - 0 - - - - Theme - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - + + + dark + - - - - Qt::Vertical - - - - 20 - 40 - - - + + + + + 9 + 61 + 184 + 23 + + + + Fetch hush / USD prices + + + + + + 9 + 9 + 267 + 23 + + + + Check github for updates at startup + + + + + + 9 + 38 + 340 + 17 + + + + Connect to github on startup to check for updates + + + + + + 9 + 113 + 47 + 17 + + + + + 0 + 0 + + + + Theme + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 10 + 180 + 500 + 16 + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + 9 + 90 + 297 + 17 + + + + Connect to the internet to fetch hush prices + + + + + + 10 + 150 + 61 + 20 + + + + + 0 + 0 + + + + Currency + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 80 + 150 + 80 + 25 + + + + + 0 + 0 + + + + + USD + - - - - - 0 - 0 - - - - Qt::Horizontal - - + + + EUR + - - - - Connect to the internet to fetch hush prices - - + + + BTC + - + From e27ab8d5d78f9928f472e98ad4b9504b7d9ab50b Mon Sep 17 00:00:00 2001 From: Denio Date: Sun, 17 Nov 2019 23:17:53 +0100 Subject: [PATCH 22/36] Message that the change will take some seconds --- src/mainwindow.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index a1f422d..0239c4d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -429,6 +429,8 @@ void MainWindow::setupSettingsModal() { QObject::connect(settings.comboBoxCurrency, &QComboBox::currentTextChanged, [=] (QString currency_name) { this->slot_change_currency(currency_name); + // Tell the user that it will take some seconds + QMessageBox::information(this, tr("Currency Change"), tr("This change will take some seconds"), QMessageBox::Ok); }); From f8c86fde7950c12954fd9fa9b4e9414f4785b9d2 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 17:09:51 +0100 Subject: [PATCH 23/36] Add full support of USD,EUR,BTC --- src/camount.cpp | 31 +++++++++++++++++++++- src/camount.h | 4 +++ src/controller.cpp | 44 ++++++++++++++++++++++++------- src/controller.h | 2 ++ src/createhushconfdialog.ui | 2 +- src/mainwindow.cpp | 8 ++++++ src/recurring.cpp | 24 +++++++++++++++-- src/requestdialog.cpp | 20 +++++++++++++- src/sendtab.cpp | 52 ++++++++++++++++++++++++++++++++++--- src/settings.h | 6 ++--- src/settings.ui | 2 +- src/txtablemodel.cpp | 7 +++++ 12 files changed, 181 insertions(+), 21 deletions(-) diff --git a/src/camount.cpp b/src/camount.cpp index 9c4b590..d214c07 100644 --- a/src/camount.cpp +++ b/src/camount.cpp @@ -37,9 +37,21 @@ QString CAmount::toDecimalUSDString() const { double dblAmount = static_cast(this->amount) / COIN; double price = Settings::getInstance()->getZECPrice(); - return "$" + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); + return "$ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); } +QString CAmount::toDecimalEURString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getEURPrice(); + + return QLocale(QLocale::German).toString(dblAmount*price, 'f', 2) + " €"; +} +QString CAmount::toDecimalBTCString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getBTCPrice(); + + return "BTC " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 9); +} QString CAmount::toDecimalhushString() const { return this->toDecimalString() % " " % Settings::getTokenName(); } @@ -52,6 +64,23 @@ QString CAmount::toDecimalhushUSDString() const { return this->toDecimalhushString(); } + +QString CAmount::toDecimalhushEURString() const { + auto eurString = this->toDecimalEURString(); + if (!eurString.isEmpty()) + return this->toDecimalhushString() % " (" % eurString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushBTCString() const { + auto btcString = this->toDecimalBTCString(); + if (!btcString.isEmpty()) + return this->toDecimalhushString() % " (" % btcString % ")"; + else + return this->toDecimalhushString(); +} + CAmount CAmount::fromDecimalString(QString decimalString) { auto amtParts = decimalString.split("."); qint64 r = amtParts[0].toULongLong() * COIN; diff --git a/src/camount.h b/src/camount.h index 08c4cb3..3f8dacd 100644 --- a/src/camount.h +++ b/src/camount.h @@ -27,8 +27,12 @@ public: double toDecimalDouble() const; QString toDecimalString() const; QString toDecimalUSDString() const; + QString toDecimalEURString() const; + QString toDecimalBTCString() const; QString toDecimalhushString() const; QString toDecimalhushUSDString() const; + QString toDecimalhushEURString() const; + QString toDecimalhushBTCString() const; qint64 toqint64() const { return amount; }; CAmount operator+ (const CAmount& other) const { diff --git a/src/controller.cpp b/src/controller.cpp index b2f59e3..3db0418 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -28,10 +28,11 @@ Controller::Controller(MainWindow* main) { // Set up timer to refresh Price priceTimer = new QTimer(main); QObject::connect(priceTimer, &QTimer::timeout, [=]() { - if (Settings::getInstance()->getAllowFetchPrices()) - refreshZECPrice(); + if (Settings::getInstance()->getAllowFetchPrices()) + refreshZECPrice(); + }); - priceTimer->start(Settings::priceRefreshSpeed); // Every hour + priceTimer->start(Settings::priceRefreshSpeed); // Every 5 Min // Set up a timer to refresh the UI every few seconds timer = new QTimer(main); @@ -167,18 +168,18 @@ void Controller::getInfoThenRefresh(bool force) { // use currency ComboBox as input if (Settings::getInstance()->get_currency_name() == "USD") { - main->statusLabel->setText(" HUSH/USD=$" + QString::number( (double) Settings::getInstance()->getZECPrice() )); + main->statusLabel->setText(" HUSH/USD=$ " + QString::number( (double) Settings::getInstance()->getZECPrice() )); } else if (Settings::getInstance()->get_currency_name() == "EUR") { - main->statusLabel->setText(" HUSH/EUR=€" + QString::number( (double) Settings::getInstance()->getEURPrice() )); + main->statusLabel->setText(" HUSH/EUR=€ " + QString::number( (double) Settings::getInstance()->getEURPrice() )); } else if (Settings::getInstance()->get_currency_name() == "BTC") { - main->statusLabel->setText(" HUSH/BTC=BTC" + QString::number( (double) Settings::getInstance()->getBTCPrice() )); + main->statusLabel->setText(" HUSH/BTC=BTC " + QString::number((double) Settings::getInstance()->getBTCPrice() )); } else { - main->statusLabel->setText(" Fehler=KACKE" + QString::number( (double) Settings::getInstance()->getEURPrice() )); + main->statusLabel->setText(" error Input" + QString::number( (double) Settings::getInstance()->getEURPrice() )); } main->statusLabel->setToolTip(tooltip); main->statusIcon->setPixmap(i.pixmap(16, 16)); main->statusIcon->setToolTip(tooltip); - + //int version = reply["version"].get(); int version = 1; Settings::getInstance()->sethushdVersion(version); @@ -302,14 +303,35 @@ void Controller::updateUIBalances() { ui->balTransparent->setText(balT.toDecimalhushString()); ui->balTotal ->setText(balTotal.toDecimalhushString()); + if (Settings::getInstance()->get_currency_name() == "USD") { ui->balSheilded ->setToolTip(balZ.toDecimalUSDString()); ui->balVerified ->setToolTip(balVerified.toDecimalUSDString()); ui->balTransparent->setToolTip(balT.toDecimalUSDString()); ui->balTotal ->setToolTip(balTotal.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + ui->balSheilded ->setToolTip(balZ.toDecimalEURString()); + ui->balVerified ->setToolTip(balVerified.toDecimalEURString()); + ui->balTransparent->setToolTip(balT.toDecimalEURString()); + ui->balTotal ->setToolTip(balTotal.toDecimalEURString()); + + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + ui->balSheilded ->setToolTip(balZ.toDecimalBTCString()); + ui->balVerified ->setToolTip(balVerified.toDecimalBTCString()); + ui->balTransparent->setToolTip(balT.toDecimalBTCString()); + ui->balTotal ->setToolTip(balTotal.toDecimalBTCString()); + } // Send tab ui->txtAvailablehush->setText(balAvailable.toDecimalhushString()); - ui->txtAvailableUSD->setText(balAvailable.toDecimalUSDString()); + + if (Settings::getInstance()->get_currency_name() == "USD") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalBTCString()); + } else + ui->txtAvailableUSD->setText(balAvailable.toDecimalBTCString()); } void Controller::refreshBalances() { @@ -647,6 +669,8 @@ void Controller::refreshZECPrice() { qDebug() << reply->errorString(); } Settings::getInstance()->setZECPrice(0); + Settings::getInstance()->setEURPrice(0); + Settings::getInstance()->setBTCPrice(0); return; } @@ -656,6 +680,8 @@ void Controller::refreshZECPrice() { auto parsed = json::parse(all, nullptr, false); if (parsed.is_discarded()) { Settings::getInstance()->setZECPrice(0); + Settings::getInstance()->setEURPrice(0); + Settings::getInstance()->setBTCPrice(0); return; } diff --git a/src/controller.h b/src/controller.h index 8dd9ff9..d7b96c2 100644 --- a/src/controller.h +++ b/src/controller.h @@ -37,6 +37,8 @@ public: void checkForUpdate(bool silent = true); void refreshZECPrice(); + void refreshEURPrice(); + void refreshBTCPrice(); void executeStandardUITransaction(Tx tx); diff --git a/src/createhushconfdialog.ui b/src/createhushconfdialog.ui index 3dec211..8719d53 100644 --- a/src/createhushconfdialog.ui +++ b/src/createhushconfdialog.ui @@ -109,7 +109,7 @@ - Allow connections to the internet to check for updates, get hush/USD prices etc... + Allow connections to the internet to check for updates, get hush prices etc... diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0239c4d..d1701b1 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -429,6 +429,7 @@ void MainWindow::setupSettingsModal() { QObject::connect(settings.comboBoxCurrency, &QComboBox::currentTextChanged, [=] (QString currency_name) { this->slot_change_currency(currency_name); + // Tell the user that it will take some seconds QMessageBox::information(this, tr("Currency Change"), tr("This change will take some seconds"), QMessageBox::Ok); @@ -1124,7 +1125,14 @@ void MainWindow::setupReceiveTab() { } ui->rcvLabel->setText(label); + if (Settings::getInstance()->get_currency_name() == "USD") { ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushBTCString()); + } + ui->txtReceive->setPlainText(addr); ui->qrcodeDisplay->setQrcodeString(addr); if (rpc->getModel()->getUsedAddresses().value(addr, false)) { diff --git a/src/recurring.cpp b/src/recurring.cpp index 5941e52..93032b2 100644 --- a/src/recurring.cpp +++ b/src/recurring.cpp @@ -83,7 +83,13 @@ QJsonObject RecurringPaymentInfo::toJson() { QString RecurringPaymentInfo::getAmountPretty() const { CAmount amount = CAmount::fromDouble(amt); + if (Settings::getInstance()->get_currency_name() == "USD") { return currency == "USD" ? amount.toDecimalUSDString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + return currency == "EUR" ? amount.toDecimalEURString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + return currency == "BTC" ? amount.toDecimalBTCString() : amount.toDecimalhushString(); +} } QString RecurringPaymentInfo::getScheduleDescription() const { @@ -136,8 +142,14 @@ RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWind if (tx.toAddrs.length() > 0) { ui.lblTo->setText(tx.toAddrs[0].addr); - // Default is USD + // Change it with currency in Settings + if (Settings::getInstance()->get_currency_name() == "USD") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); + } ui.txtMemo->setPlainText(tx.toAddrs[0].memo); ui.txtMemo->setEnabled(false); @@ -147,10 +159,16 @@ RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWind QObject::connect(ui.cmbCurrency, &QComboBox::currentTextChanged, [&](QString c) { if (tx.toAddrs.length() < 1) return; - if (c == "USD") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalUSDString()); + + } else if (c == "EUR") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalEURString()); + } else if + (c == "BTC") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); } + else { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalString()); } @@ -472,6 +490,8 @@ void Recurring::executeRecurringPayment(MainWindow* main, RecurringPaymentInfo r PaymentStatus::ERROR); } return; + + } // Translate it into hush diff --git a/src/requestdialog.cpp b/src/requestdialog.cpp index d63de4d..9f14343 100644 --- a/src/requestdialog.cpp +++ b/src/requestdialog.cpp @@ -74,7 +74,13 @@ void RequestDialog::showPaymentConfirmation(MainWindow* main, QString paymentURI req.txtMemo->setPlainText(payInfo.memo); req.txtAmount->setText(payInfo.amt); CAmount amount = CAmount::fromDecimalString(req.txtAmount->text()); + if (Settings::getInstance()->get_currency_name() == "USD") { req.txtAmountUSD->setText(amount.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + req.txtAmountUSD->setText(amount.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + req.txtAmountUSD->setText(amount.toDecimalBTCString()); + } req.buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Pay")); @@ -114,10 +120,22 @@ void RequestDialog::showRequesthush(MainWindow* main) { req.txtAmount->setValidator(main->getAmountValidator()); QObject::connect(req.txtAmount, &QLineEdit::textChanged, [=] (auto text) { CAmount amount = CAmount::fromDecimalString(text); - req.txtAmountUSD->setText(amount.toDecimalUSDString()); + if (Settings::getInstance()->get_currency_name() == "USD") { + req.txtAmountUSD->setText(amount.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + req.txtAmountUSD->setText(amount.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + req.txtAmountUSD->setText(amount.toDecimalBTCString()); + } }); CAmount amount = CAmount::fromDecimalString(req.txtAmount->text()); + if (Settings::getInstance()->get_currency_name() == "USD") { req.txtAmountUSD->setText(amount.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + req.txtAmountUSD->setText(amount.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + req.txtAmountUSD->setText(amount.toDecimalBTCString()); + } req.txtMemo->setAcceptButton(req.buttonBox->button(QDialogButtonBox::Ok)); req.txtMemo->setLenDisplayLabel(req.lblMemoLen); diff --git a/src/sendtab.cpp b/src/sendtab.cpp index f9b3e9f..5c5e992 100644 --- a/src/sendtab.cpp +++ b/src/sendtab.cpp @@ -58,7 +58,14 @@ void MainWindow::setupSendTab() { ui->minerFeeAmt->setReadOnly(true); QObject::connect(ui->minerFeeAmt, &QLineEdit::textChanged, [=](auto txt) { CAmount fee = CAmount::fromDecimalString(txt); + + if (Settings::getInstance()->get_currency_name() == "USD") { ui->lblMinerFeeUSD->setText(fee.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + ui->lblMinerFeeUSD->setText(fee.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + ui->lblMinerFeeUSD->setText(fee.toDecimalBTCString()); + } }); ui->minerFeeAmt->setText(Settings::getMinerFee().toDecimalString()); @@ -66,9 +73,18 @@ void MainWindow::setupSendTab() { QObject::connect(ui->tabWidget, &QTabWidget::currentChanged, [=] (int pos) { if (pos == 1) { QString txt = ui->minerFeeAmt->text(); + if (Settings::getInstance()->get_currency_name() == "USD") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalUSDString(); - ui->lblMinerFeeUSD->setText(feeUSD); - } + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalEURString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalEURString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } + } + }); //Fees validator @@ -275,7 +291,14 @@ void MainWindow::addressChanged(int itemNumber, const QString& text) { void MainWindow::amountChanged(int item, const QString& text) { auto usd = ui->sendToWidgets->findChild(QString("AmtUSD") % QString::number(item)); CAmount amt = CAmount::fromDecimalString(text); + + if (Settings::getInstance()->get_currency_name() == "USD") { usd->setText(amt.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + usd->setText(amt.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + usd->setText(amt.toDecimalBTCString()); + } // If there is a recurring payment, update the info there as well if (sendTxRecurringInfo != nullptr) { @@ -535,12 +558,29 @@ bool MainWindow::confirmTx(Tx tx, RecurringPaymentInfo* rpi) { totalSpending = totalSpending + toAddr.amount; // Amount (USD) + if (Settings::getInstance()->get_currency_name() == "USD") { auto AmtUSD = new QLabel(confirm.sendToAddrs); AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); AmtUSD->setText(toAddr.amount.toDecimalUSDString()); AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); - confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + // Amount (EUR) + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalEURString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (EUR) + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalBTCString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + } // Memo if (Settings::isZAddress(toAddr.addr) && !toAddr.memo.isEmpty()) { row++; @@ -588,7 +628,13 @@ bool MainWindow::confirmTx(Tx tx, RecurringPaymentInfo* rpi) { minerFeeUSD->setObjectName(QStringLiteral("minerFeeUSD")); minerFeeUSD->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); confirm.gridLayout->addWidget(minerFeeUSD, row, 2, 1, 1); + if (Settings::getInstance()->get_currency_name() == "USD") { minerFeeUSD->setText(tx.fee.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + minerFeeUSD->setText(tx.fee.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + minerFeeUSD->setText(tx.fee.toDecimalBTCString()); + } } // Recurring payment info, show only if there is exactly one destination address diff --git a/src/settings.h b/src/settings.h index c9c9a4d..d07c5fe 100644 --- a/src/settings.h +++ b/src/settings.h @@ -107,9 +107,9 @@ public: static const QString labelRegExp; - static const int updateSpeed = 20 * 1000; // 10 sec - static const int quickUpdateSpeed = 5 * 1000; // 3 sec - static const int priceRefreshSpeed = 60 * 60 * 1000; // 15 mins + static const int updateSpeed = 20 * 1000; // 20 sec + static const int quickUpdateSpeed = 5 * 1000; // 5 sec + static const int priceRefreshSpeed = 5 * 60 * 1000; // 5 mins private: // This class can only be accessed through Settings::getInstance() diff --git a/src/settings.ui b/src/settings.ui index da611f4..a51bd9c 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -131,7 +131,7 @@ - Fetch hush / USD prices + Fetch hush prices diff --git a/src/txtablemodel.cpp b/src/txtablemodel.cpp index b25f2d7..1b307e6 100644 --- a/src/txtablemodel.cpp +++ b/src/txtablemodel.cpp @@ -155,7 +155,14 @@ QVariant TxTableModel::data(const QModelIndex &index, int role) const { for (int i=0; i < dat.items.length(); i++) { total = total + dat.items[i].amount; } + if (Settings::getInstance()->get_currency_name() == "USD") { return total.toDecimalUSDString(); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + return total.toDecimalEURString(); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + return total.toDecimalBTCString(); + } + } } } From 1a94f1927e89130ff58ea90787c59561b5eb9122 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 17:22:07 +0100 Subject: [PATCH 24/36] fix statusLabel decimal format --- src/controller.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/controller.cpp b/src/controller.cpp index 3db0418..6b4ed65 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -168,13 +168,13 @@ void Controller::getInfoThenRefresh(bool force) { // use currency ComboBox as input if (Settings::getInstance()->get_currency_name() == "USD") { - main->statusLabel->setText(" HUSH/USD=$ " + QString::number( (double) Settings::getInstance()->getZECPrice() )); + main->statusLabel->setText(" HUSH/USD=$ " + QString::number( (double) Settings::getInstance()->getZECPrice() ,'f',2)); } else if (Settings::getInstance()->get_currency_name() == "EUR") { - main->statusLabel->setText(" HUSH/EUR=€ " + QString::number( (double) Settings::getInstance()->getEURPrice() )); + main->statusLabel->setText(" HUSH/EUR=€ " + QString::number( (double) Settings::getInstance()->getEURPrice() ,'f',2)); } else if (Settings::getInstance()->get_currency_name() == "BTC") { - main->statusLabel->setText(" HUSH/BTC=BTC " + QString::number((double) Settings::getInstance()->getBTCPrice() )); + main->statusLabel->setText(" HUSH/BTC=BTC " + QString::number((double) Settings::getInstance()->getBTCPrice() ,'f',8)); } else { - main->statusLabel->setText(" error Input" + QString::number( (double) Settings::getInstance()->getEURPrice() )); + main->statusLabel->setText(" error Input" + QString::number(Settings::getInstance()->getEURPrice() )); } main->statusLabel->setToolTip(tooltip); main->statusIcon->setPixmap(i.pixmap(16, 16)); From eb70d6eeaafc73b8db3e3ed05a2d0b7b208a6778 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 17:25:59 +0100 Subject: [PATCH 25/36] change message box when change currency --- src/mainwindow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d1701b1..da3fc8e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -430,8 +430,8 @@ void MainWindow::setupSettingsModal() { QObject::connect(settings.comboBoxCurrency, &QComboBox::currentTextChanged, [=] (QString currency_name) { this->slot_change_currency(currency_name); - // Tell the user that it will take some seconds - QMessageBox::information(this, tr("Currency Change"), tr("This change will take some seconds"), QMessageBox::Ok); + // Tell the user to restart + QMessageBox::information(this, tr("Currency Change"), tr("Please restart SilentDragonLite to have new currencies apply"), QMessageBox::Ok); }); From 04fe2be715db5b581a27b45f5eae7db9e098b7ec Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 20:24:32 +0100 Subject: [PATCH 26/36] Add suport for CNY,RUB,CAD,SGD,CHF,INR,GBP,AUD --- src/camount.cpp | 116 +++++++++++++++++++++++++++++- src/camount.h | 17 +++++ src/controller.cpp | 175 +++++++++++++++++++++++++++++++++++++++++---- src/controller.h | 9 +++ src/recurring.cpp | 53 ++++++++++++++ src/sendtab.cpp | 140 +++++++++++++++++++++++++++++++++++- src/settings.cpp | 24 +++++++ src/settings.h | 24 +++++++ src/settings.ui | 34 ++++++++- 9 files changed, 575 insertions(+), 17 deletions(-) diff --git a/src/camount.cpp b/src/camount.cpp index d214c07..f811d1c 100644 --- a/src/camount.cpp +++ b/src/camount.cpp @@ -44,7 +44,7 @@ QString CAmount::toDecimalEURString() const { double dblAmount = static_cast(this->amount) / COIN; double price = Settings::getInstance()->getEURPrice(); - return QLocale(QLocale::German).toString(dblAmount*price, 'f', 2) + " €"; + return QLocale(QLocale::English).toString(dblAmount*price, 'f', 2) + " €"; } QString CAmount::toDecimalBTCString() const { double dblAmount = static_cast(this->amount) / COIN; @@ -52,6 +52,55 @@ QString CAmount::toDecimalBTCString() const { return "BTC " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 9); } +QString CAmount::toDecimalCNYString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getCNYPrice(); + + return "¥ /元 " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalRUBString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getRUBPrice(); + + return "₽ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalCADString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getCADPrice(); + + return "$ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalSGDString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getSGDPrice(); + + return "$ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalCHFString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getCHFPrice(); + + return "CHF " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalINRString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getINRPrice(); + + return "₹ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalGBPString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getGBPPrice(); + + return "£ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalAUDString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getAUDPrice(); + + return " $" + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} + QString CAmount::toDecimalhushString() const { return this->toDecimalString() % " " % Settings::getTokenName(); } @@ -81,6 +130,71 @@ QString CAmount::toDecimalhushBTCString() const { return this->toDecimalhushString(); } +QString CAmount::toDecimalhushCNYString() const { + auto cnyString = this->toDecimalCNYString(); + if (!cnyString.isEmpty()) + return this->toDecimalhushString() % " (" % cnyString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushRUBString() const { + auto rubString = this->toDecimalRUBString(); + if (!rubString.isEmpty()) + return this->toDecimalhushString() % " (" % rubString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushCADString() const { + auto cadString = this->toDecimalCADString(); + if (!cadString.isEmpty()) + return this->toDecimalhushString() % " (" % cadString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushSGDString() const { + auto sgdString = this->toDecimalSGDString(); + if (!sgdString.isEmpty()) + return this->toDecimalhushString() % " (" % sgdString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushCHFString() const { + auto chfString = this->toDecimalCHFString(); + if (!chfString.isEmpty()) + return this->toDecimalhushString() % " (" % chfString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushINRString() const { + auto inrString = this->toDecimalINRString(); + if (!inrString.isEmpty()) + return this->toDecimalhushString() % " (" % inrString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushGBPString() const { + auto gbpString = this->toDecimalGBPString(); + if (!gbpString.isEmpty()) + return this->toDecimalhushString() % " (" % gbpString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushAUDString() const { + auto audString = this->toDecimalAUDString(); + if (!audString.isEmpty()) + return this->toDecimalhushString() % " (" % audString % ")"; + else + return this->toDecimalhushString(); +} + + CAmount CAmount::fromDecimalString(QString decimalString) { auto amtParts = decimalString.split("."); qint64 r = amtParts[0].toULongLong() * COIN; diff --git a/src/camount.h b/src/camount.h index 3f8dacd..b5d88b9 100644 --- a/src/camount.h +++ b/src/camount.h @@ -29,10 +29,27 @@ public: QString toDecimalUSDString() const; QString toDecimalEURString() const; QString toDecimalBTCString() const; + QString toDecimalCNYString() const; + QString toDecimalRUBString() const; + QString toDecimalCADString() const; + QString toDecimalSGDString() const; + QString toDecimalCHFString() const; + QString toDecimalINRString() const; + QString toDecimalGBPString() const; + QString toDecimalAUDString() const; QString toDecimalhushString() const; QString toDecimalhushUSDString() const; QString toDecimalhushEURString() const; QString toDecimalhushBTCString() const; + QString toDecimalhushCNYString() const; + QString toDecimalhushRUBString() const; + QString toDecimalhushCADString() const; + QString toDecimalhushSGDString() const; + QString toDecimalhushCHFString() const; + QString toDecimalhushINRString() const; + QString toDecimalhushGBPString() const; + QString toDecimalhushAUDString() const; + qint64 toqint64() const { return amount; }; CAmount operator+ (const CAmount& other) const { diff --git a/src/controller.cpp b/src/controller.cpp index 6b4ed65..dea37d7 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -173,6 +173,23 @@ void Controller::getInfoThenRefresh(bool force) { main->statusLabel->setText(" HUSH/EUR=€ " + QString::number( (double) Settings::getInstance()->getEURPrice() ,'f',2)); } else if (Settings::getInstance()->get_currency_name() == "BTC") { main->statusLabel->setText(" HUSH/BTC=BTC " + QString::number((double) Settings::getInstance()->getBTCPrice() ,'f',8)); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + main->statusLabel->setText(" HUSH/CNY=¥ /元 " + QString::number( (double) Settings::getInstance()->getCNYPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + main->statusLabel->setText(" HUSH/RUB=₽ " + QString::number((double) Settings::getInstance()->getRUBPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + main->statusLabel->setText(" HUSH/CAD=$ " + QString::number( (double) Settings::getInstance()->getCADPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + main->statusLabel->setText(" HUSH/SGD=$ " + QString::number((double) Settings::getInstance()->getSGDPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + main->statusLabel->setText(" HUSH/CHF=CHF " + QString::number((double) Settings::getInstance()->getCHFPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + main->statusLabel->setText(" HUSH/INR=₹ " + QString::number( (double) Settings::getInstance()->getINRPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + main->statusLabel->setText(" HUSH/GBP=£ " + QString::number((double) Settings::getInstance()->getGBPPrice() ,'f',2)); + }else if (Settings::getInstance()->get_currency_name() == "AUD") { + main->statusLabel->setText(" HUSH/AUD=$ " + QString::number((double) Settings::getInstance()->getAUDPrice() ,'f',2)); + } else { main->statusLabel->setText(" error Input" + QString::number(Settings::getInstance()->getEURPrice() )); } @@ -320,6 +337,54 @@ void Controller::updateUIBalances() { ui->balVerified ->setToolTip(balVerified.toDecimalBTCString()); ui->balTransparent->setToolTip(balT.toDecimalBTCString()); ui->balTotal ->setToolTip(balTotal.toDecimalBTCString()); + + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->balSheilded ->setToolTip(balZ.toDecimalCNYString()); + ui->balVerified ->setToolTip(balVerified.toDecimalCNYString()); + ui->balTransparent->setToolTip(balT.toDecimalCNYString()); + ui->balTotal ->setToolTip(balTotal.toDecimalCNYString()); + + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->balSheilded ->setToolTip(balZ.toDecimalRUBString()); + ui->balVerified ->setToolTip(balVerified.toDecimalRUBString()); + ui->balTransparent->setToolTip(balT.toDecimalRUBString()); + ui->balTotal ->setToolTip(balTotal.toDecimalRUBString()); + + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui->balSheilded ->setToolTip(balZ.toDecimalCADString()); + ui->balVerified ->setToolTip(balVerified.toDecimalCADString()); + ui->balTransparent->setToolTip(balT.toDecimalCADString()); + ui->balTotal ->setToolTip(balTotal.toDecimalCADString()); + + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->balSheilded ->setToolTip(balZ.toDecimalSGDString()); + ui->balVerified ->setToolTip(balVerified.toDecimalSGDString()); + ui->balTransparent->setToolTip(balT.toDecimalSGDString()); + ui->balTotal ->setToolTip(balTotal.toDecimalSGDString()); + + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui->balSheilded ->setToolTip(balZ.toDecimalCHFString()); + ui->balVerified ->setToolTip(balVerified.toDecimalCHFString()); + ui->balTransparent->setToolTip(balT.toDecimalCHFString()); + ui->balTotal ->setToolTip(balTotal.toDecimalCHFString()); + + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->balSheilded ->setToolTip(balZ.toDecimalINRString()); + ui->balVerified ->setToolTip(balVerified.toDecimalINRString()); + ui->balTransparent->setToolTip(balT.toDecimalINRString()); + ui->balTotal ->setToolTip(balTotal.toDecimalINRString()); + + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui->balSheilded ->setToolTip(balZ.toDecimalGBPString()); + ui->balVerified ->setToolTip(balVerified.toDecimalGBPString()); + ui->balTransparent->setToolTip(balT.toDecimalGBPString()); + ui->balTotal ->setToolTip(balTotal.toDecimalGBPString()); + + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->balSheilded ->setToolTip(balZ.toDecimalAUDString()); + ui->balVerified ->setToolTip(balVerified.toDecimalAUDString()); + ui->balTransparent->setToolTip(balT.toDecimalAUDString()); + ui->balTotal ->setToolTip(balTotal.toDecimalAUDString()); } // Send tab ui->txtAvailablehush->setText(balAvailable.toDecimalhushString()); @@ -330,8 +395,23 @@ void Controller::updateUIBalances() { ui->txtAvailableUSD->setText(balAvailable.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui->txtAvailableUSD->setText(balAvailable.toDecimalBTCString()); - } else - ui->txtAvailableUSD->setText(balAvailable.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalAUDString()); + } } void Controller::refreshBalances() { @@ -648,7 +728,7 @@ void Controller::refreshZECPrice() { return noConnection(); // TODO: use/render all this data - QUrl cmcURL("https://api.coingecko.com/api/v3/simple/price?ids=hush&vs_currencies=btc%2Cusd%2Ceur&include_market_cap=true&include_24hr_vol=true&include_24hr_change=true"); + QUrl cmcURL("https://api.coingecko.com/api/v3/simple/price?ids=hush&vs_currencies=btc%2Cusd%2Ceur%2Ceth%2Cgbp%2Ccny%2Cjpy%2Crub%2Ccad%2Csgd%2Cchf%2Cinr%2Caud%2Cinr&include_market_cap=true&include_24hr_vol=true&include_24hr_change=true"); QNetworkRequest req; req.setUrl(cmcURL); @@ -671,6 +751,15 @@ void Controller::refreshZECPrice() { Settings::getInstance()->setZECPrice(0); Settings::getInstance()->setEURPrice(0); Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setCNYPrice(0); + Settings::getInstance()->setRUBPrice(0); + Settings::getInstance()->setCADPrice(0); + Settings::getInstance()->setSGDPrice(0); + Settings::getInstance()->setCHFPrice(0); + Settings::getInstance()->setGBPPrice(0); + Settings::getInstance()->setAUDPrice(0); + Settings::getInstance()->setINRPrice(0); + return; } @@ -682,6 +771,14 @@ void Controller::refreshZECPrice() { Settings::getInstance()->setZECPrice(0); Settings::getInstance()->setEURPrice(0); Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setCNYPrice(0); + Settings::getInstance()->setRUBPrice(0); + Settings::getInstance()->setCADPrice(0); + Settings::getInstance()->setSGDPrice(0); + Settings::getInstance()->setCHFPrice(0); + Settings::getInstance()->setGBPPrice(0); + Settings::getInstance()->setAUDPrice(0); + Settings::getInstance()->setINRPrice(0); return; } @@ -692,25 +789,71 @@ void Controller::refreshZECPrice() { if (hush["usd"] >= 0) { qDebug() << "Found hush key in price json"; - // TODO: support BTC/EUR prices as well - //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = $" << QString::number((double)hush["usd"]); Settings::getInstance()->setZECPrice( hush["usd"] ); } if (hush["eur"] >= 0) { - // TODO: support BTC/EUR prices as well - //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = €" << QString::number((double)hush["eur"]); Settings::getInstance()->setEURPrice(hush["eur"]); } if (hush["btc"] >= 0) { - // TODO: support BTC/EUR prices as well - //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = BTC" << QString::number((double)hush["btc"]); Settings::getInstance()->setBTCPrice( hush["btc"]); } + if (hush["cny"] >= 0) + + { + qDebug() << "HUSH = CNY" << QString::number((double)hush["cny"]); + Settings::getInstance()->setCNYPrice( hush["cny"]); + } + if (hush["rub"] >= 0) + { + qDebug() << "HUSH = RUB" << QString::number((double)hush["rub"]); + Settings::getInstance()->setRUBPrice( hush["rub"]); + } + if (hush["cad"] >= 0) + + { + qDebug() << "HUSH = CAD" << QString::number((double)hush["cad"]); + Settings::getInstance()->setCADPrice( hush["cad"]); + } + if (hush["sgd"] >= 0) + { + + qDebug() << "HUSH = SGD" << QString::number((double)hush["sgd"]); + Settings::getInstance()->setSGDPrice( hush["sgd"]); + } + if (hush["chf"] >= 0) + { + + qDebug() << "HUSH = CHF" << QString::number((double)hush["chf"]); + Settings::getInstance()->setCADPrice( hush["chf"]); + } + if (hush["inr"] >= 0) + { + + qDebug() << "HUSH = INR" << QString::number((double)hush["inr"]); + Settings::getInstance()->setINRPrice( hush["inr"]); + } + if (hush["gbp"] >= 0) + { + + qDebug() << "HUSH = GBP" << QString::number((double)hush["gbp"]); + Settings::getInstance()->setGBPPrice( hush["gbp"]); + } + if (hush["aud"] >= 0) + { + + qDebug() << "HUSH = AUD" << QString::number((double)hush["aud"]); + Settings::getInstance()->setAUDPrice( hush["aud"]); + } + + return; } catch (const std::exception& e) { // If anything at all goes wrong, just set the price to 0 and move on. @@ -718,9 +861,17 @@ void Controller::refreshZECPrice() { } // If nothing, then set the price to 0; - Settings::getInstance()->setZECPrice(0); - Settings::getInstance()->setEURPrice(0); - Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setZECPrice(0); + Settings::getInstance()->setEURPrice(0); + Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setCNYPrice(0); + Settings::getInstance()->setRUBPrice(0); + Settings::getInstance()->setCADPrice(0); + Settings::getInstance()->setSGDPrice(0); + Settings::getInstance()->setCHFPrice(0); + Settings::getInstance()->setGBPPrice(0); + Settings::getInstance()->setAUDPrice(0); + Settings::getInstance()->setINRPrice(0); }); } diff --git a/src/controller.h b/src/controller.h index d7b96c2..30208de 100644 --- a/src/controller.h +++ b/src/controller.h @@ -39,6 +39,15 @@ public: void refreshZECPrice(); void refreshEURPrice(); void refreshBTCPrice(); + void refreshCNYPrice(); + void refreshRUBPrice(); + void refreshCADPrice(); + void refreshSGDPrice(); + void refreshCHFPrice(); + void refreshINRPrice(); + void refreshGBPPrice(); + void refreshAUDPrice(); + void executeStandardUITransaction(Tx tx); diff --git a/src/recurring.cpp b/src/recurring.cpp index 93032b2..74a2f40 100644 --- a/src/recurring.cpp +++ b/src/recurring.cpp @@ -89,6 +89,22 @@ QString RecurringPaymentInfo::getAmountPretty() const { return currency == "EUR" ? amount.toDecimalEURString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "BTC") { return currency == "BTC" ? amount.toDecimalBTCString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + return currency == "EUR" ? amount.toDecimalCNYString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + return currency == "BTC" ? amount.toDecimalRUBString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + return currency == "EUR" ? amount.toDecimalCADString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + return currency == "BTC" ? amount.toDecimalSGDString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + return currency == "EUR" ? amount.toDecimalCHFString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + return currency == "BTC" ? amount.toDecimalINRString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + return currency == "EUR" ? amount.toDecimalGBPString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + return currency == "BTC" ? amount.toDecimalAUDString() : amount.toDecimalhushString(); } } @@ -149,6 +165,23 @@ RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWind ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalAUDString()); + } ui.txtMemo->setPlainText(tx.toAddrs[0].memo); @@ -167,6 +200,26 @@ RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWind } else if (c == "BTC") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); + } else if (c == "CNY") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCNYString()); + } else if + (c == "RUB") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalRUBString()); + } else if (c == "CAD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCADString()); + } else if + (c == "SGD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalSGDString()); + } else if (c == "CHF") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCHFString()); + } else if + (c == "INR") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalINRString()); + } else if (c == "GBP") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalGBPString()); + } else if + (c == "AUD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalAUDString()); } else { diff --git a/src/sendtab.cpp b/src/sendtab.cpp index 5c5e992..83e1a99 100644 --- a/src/sendtab.cpp +++ b/src/sendtab.cpp @@ -65,6 +65,22 @@ void MainWindow::setupSendTab() { ui->lblMinerFeeUSD->setText(fee.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui->lblMinerFeeUSD->setText(fee.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->lblMinerFeeUSD->setText(fee.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->lblMinerFeeUSD->setText(fee.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui->lblMinerFeeUSD->setText(fee.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->lblMinerFeeUSD->setText(fee.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui->lblMinerFeeUSD->setText(fee.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->lblMinerFeeUSD->setText(fee.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui->lblMinerFeeUSD->setText(fee.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->lblMinerFeeUSD->setText(fee.toDecimalAUDString()); } }); ui->minerFeeAmt->setText(Settings::getMinerFee().toDecimalString()); @@ -82,6 +98,30 @@ void MainWindow::setupSendTab() { } else if (Settings::getInstance()->get_currency_name() == "BTC") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalEURString(); ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCNYString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalRUBString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCADString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalSGDString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCHFString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalINRString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalGBPString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalAUDString(); + ui->lblMinerFeeUSD->setText(feeUSD); } } @@ -298,6 +338,22 @@ void MainWindow::amountChanged(int item, const QString& text) { usd->setText(amt.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { usd->setText(amt.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + usd->setText(amt.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + usd->setText(amt.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + usd->setText(amt.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + usd->setText(amt.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + usd->setText(amt.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + usd->setText(amt.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + usd->setText(amt.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + usd->setText(amt.toDecimalAUDString()); } // If there is a recurring payment, update the info there as well @@ -573,12 +629,76 @@ bool MainWindow::confirmTx(Tx tx, RecurringPaymentInfo* rpi) { AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); - // Amount (EUR) + // Amount (BTC) } else if (Settings::getInstance()->get_currency_name() == "BTC") { auto AmtUSD = new QLabel(confirm.sendToAddrs); AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); AmtUSD->setText(toAddr.amount.toDecimalBTCString()); AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (CNY) + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalCNYString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (RUB) + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalRUBString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (CAD) + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalCADString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (SGD) + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalSGDString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (CHF) + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalCHFString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (INR) + } else if (Settings::getInstance()->get_currency_name() == "INR") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalINRString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (GBP) + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalGBPString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (AUD) + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalAUDString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); } // Memo @@ -634,7 +754,23 @@ bool MainWindow::confirmTx(Tx tx, RecurringPaymentInfo* rpi) { minerFeeUSD->setText(tx.fee.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { minerFeeUSD->setText(tx.fee.toDecimalBTCString()); - } + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + minerFeeUSD->setText(tx.fee.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + minerFeeUSD->setText(tx.fee.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + minerFeeUSD->setText(tx.fee.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + minerFeeUSD->setText(tx.fee.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + minerFeeUSD->setText(tx.fee.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + minerFeeUSD->setText(tx.fee.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + minerFeeUSD->setText(tx.fee.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + minerFeeUSD->setText(tx.fee.toDecimalAUDString()); + } } // Recurring payment info, show only if there is exactly one destination address diff --git a/src/settings.cpp b/src/settings.cpp index 17689c9..279693e 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -111,6 +111,30 @@ double Settings::getEURPrice() { double Settings::getBTCPrice() { return BTCPrice; } +double Settings::getCNYPrice() { + return CNYPrice; +} +double Settings::getRUBPrice() { + return RUBPrice; +} +double Settings::getCADPrice() { + return CADPrice; +} +double Settings::getSGDPrice() { + return SGDPrice; +} +double Settings::getCHFPrice() { + return CHFPrice; +} +double Settings::getINRPrice() { + return INRPrice; +} +double Settings::getGBPPrice() { + return GBPPrice; +} +double Settings::getAUDPrice() { + return AUDPrice; +} bool Settings::getCheckForUpdates() { return QSettings().value("options/allowcheckupdates", true).toBool(); diff --git a/src/settings.h b/src/settings.h index d07c5fe..a385ce4 100644 --- a/src/settings.h +++ b/src/settings.h @@ -72,9 +72,25 @@ public: void setZECPrice(double p) { ZECPrice = p; } void setEURPrice(double p) { EURPrice = p; } void setBTCPrice(double p) { BTCPrice = p; } + void setCNYPrice(double p) { CNYPrice = p; } + void setRUBPrice(double p) { RUBPrice = p; } + void setCADPrice(double p) { CADPrice = p; } + void setSGDPrice(double p) { SGDPrice = p; } + void setCHFPrice(double p) { CHFPrice = p; } + void setINRPrice(double p) { INRPrice = p; } + void setGBPPrice(double p) { GBPPrice = p; } + void setAUDPrice(double p) { AUDPrice = p; } double getZECPrice(); double getEURPrice(); double getBTCPrice(); + double getCNYPrice(); + double getRUBPrice(); + double getCADPrice(); + double getSGDPrice(); + double getCHFPrice(); + double getINRPrice(); + double getGBPPrice(); + double getAUDPrice(); // Static stuff static const QString txidStatusMessage; @@ -129,6 +145,14 @@ private: double ZECPrice = 0.0; double BTCPrice = 0.0; double EURPrice = 0.0; + double CNYPrice = 0.0; + double RUBPrice = 0.0; + double CADPrice = 0.0; + double SGDPrice = 0.0; + double CHFPrice = 0.0; + double INRPrice = 0.0; + double GBPPrice = 0.0; + double AUDPrice = 0.0; }; diff --git a/src/settings.ui b/src/settings.ui index a51bd9c..65c3dd3 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -253,7 +253,27 @@ - USD + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY @@ -263,7 +283,17 @@ - BTC + GBP + + + + + INR + + + + + USD From b819fd30085df86164bbe127295dbc2625a21604 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 20:54:37 +0100 Subject: [PATCH 27/36] fix address balance amount --- src/mainwindow.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index da3fc8e..0782742 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1131,6 +1131,22 @@ void MainWindow::setupReceiveTab() { ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushAUDString()); } ui->txtReceive->setPlainText(addr); From ba654600377d84124fc9a9e51274f1604f8dd266 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 21:15:53 +0100 Subject: [PATCH 28/36] fix amounttext size mainwindow --- src/mainwindow.ui | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/mainwindow.ui b/src/mainwindow.ui index a2dc2c6..3e3b52d 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -22,7 +22,7 @@ - 1 + 0 @@ -79,9 +79,16 @@ + + + 0 + 0 + + - 10 + 11 + true @@ -93,7 +100,7 @@ - 10 + 11 From 31279e465328e6c89aa52809a50bee248a9e1a55 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 21:17:54 +0100 Subject: [PATCH 29/36] fix about --- src/about.ui | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/about.ui b/src/about.ui index 2d28f7d..88873e6 100644 --- a/src/about.ui +++ b/src/about.ui @@ -41,7 +41,7 @@ 0 0 463 - 534 + 551 @@ -52,17 +52,18 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Copyright (c) 2018-2019 DenioD (MIT License)</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Special thanks to:</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aditya Kulkarni for the awesome open source code</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">JSON for Modern C++ : <a href="https://nlohmann.github.io/json/"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">https://nlohmann.github.io/json/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">QR Code generator library Nayuki : <a href="https://www.nayuki.io/page/qr-code-generator-library"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">https://www.nayuki.io/page/qr-code-ge…</span></a></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Made with QT : <a href="https://www.qt.io/"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">https://www.qt.io/</span></a></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">LICENSE:</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</li> -<li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The Software is provided &quot;as is&quot;, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software.</li></ul></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Copyright (c) 2019-2020 DenioD (MIT License)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Copyright (c) 2018-2019 Aditya Kulkarni (MIT License)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu';"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Special thanks to:</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Aditya Kulkarni for the awesome open source code</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">JSON for Modern C++ : </span><a href="https://nlohmann.github.io/json/"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">https://nlohmann.github.io/json/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">QR Code generator library Nayuki : </span><a href="https://www.nayuki.io/page/qr-code-generator-library"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">https://www.nayuki.io/page/qr-code-ge…</span></a></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Made with QT : </span><a href="https://www.qt.io/"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">https://www.qt.io/</span></a></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">LICENSE:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</span></p> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu';" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</li> +<li style=" font-family:'Ubuntu';" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The Software is provided &quot;as is&quot;, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software.</li></ul></body></html> true From 2dfede617ade97ea6acb5442494c6c2272096f41 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 21:56:19 +0100 Subject: [PATCH 30/36] fix recurring.cpp --- src/recurring.cpp | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/recurring.cpp b/src/recurring.cpp index 74a2f40..b8ffc12 100644 --- a/src/recurring.cpp +++ b/src/recurring.cpp @@ -90,21 +90,21 @@ QString RecurringPaymentInfo::getAmountPretty() const { } else if (Settings::getInstance()->get_currency_name() == "BTC") { return currency == "BTC" ? amount.toDecimalBTCString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "CNY") { - return currency == "EUR" ? amount.toDecimalCNYString() : amount.toDecimalhushString(); + return currency == "CNY" ? amount.toDecimalCNYString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "RUB") { - return currency == "BTC" ? amount.toDecimalRUBString() : amount.toDecimalhushString(); + return currency == "RUB" ? amount.toDecimalRUBString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "CAD") { - return currency == "EUR" ? amount.toDecimalCADString() : amount.toDecimalhushString(); + return currency == "CAD" ? amount.toDecimalCADString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "SGD") { - return currency == "BTC" ? amount.toDecimalSGDString() : amount.toDecimalhushString(); + return currency == "SGD" ? amount.toDecimalSGDString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "CHF") { - return currency == "EUR" ? amount.toDecimalCHFString() : amount.toDecimalhushString(); + return currency == "CHF" ? amount.toDecimalCHFString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "INR") { - return currency == "BTC" ? amount.toDecimalINRString() : amount.toDecimalhushString(); + return currency == "INR" ? amount.toDecimalINRString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "GBP") { - return currency == "EUR" ? amount.toDecimalGBPString() : amount.toDecimalhushString(); + return currency == "GBP" ? amount.toDecimalGBPString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "AUD") { - return currency == "BTC" ? amount.toDecimalAUDString() : amount.toDecimalhushString(); + return currency == "AUD" ? amount.toDecimalAUDString() : amount.toDecimalhushString(); } } @@ -163,24 +163,24 @@ RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWind ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalUSDString()); } else if (Settings::getInstance()->get_currency_name() == "EUR") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalEURString()); - } else if (Settings::getInstance()->get_currency_name() == "BTC") { - ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); - } else if (Settings::getInstance()->get_currency_name() == "CNY") { + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCNYString()); - } else if (Settings::getInstance()->get_currency_name() == "RUB") { - ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalRUBString()); - } else if (Settings::getInstance()->get_currency_name() == "CAD") { + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCADString()); - } else if (Settings::getInstance()->get_currency_name() == "SGD") { - ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalSGDString()); - } else if (Settings::getInstance()->get_currency_name() == "CHF") { + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCHFString()); - } else if (Settings::getInstance()->get_currency_name() == "INR") { - ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalINRString()); - } else if (Settings::getInstance()->get_currency_name() == "GBP") { - ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalGBPString()); - } else if (Settings::getInstance()->get_currency_name() == "AUD") { - ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalAUDString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalAUDString()); } From 98603f81fe6d1f71d471321b09f9324a5f184005 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 22:09:24 +0100 Subject: [PATCH 31/36] clean up, fix requestdialog.cpp --- src/mainwindow.cpp | 47 ++++++++++----------------- src/mainwindow.h | 3 +- src/requestdialog.cpp | 47 ++++++++++++++++++++++----- src/sendtab.cpp | 74 +++++++++++++++++++++---------------------- 4 files changed, 94 insertions(+), 77 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0782742..2056b8e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -425,15 +425,11 @@ void MainWindow::setupSettingsModal() { int currency_index = settings.comboBoxCurrency->findText(Settings::getInstance()->get_currency_name(), Qt::MatchExactly); settings.comboBoxCurrency->setCurrentIndex(currency_index); - - QObject::connect(settings.comboBoxCurrency, &QComboBox::currentTextChanged, [=] (QString currency_name) { this->slot_change_currency(currency_name); // Tell the user to restart - QMessageBox::information(this, tr("Currency Change"), tr("Please restart SilentDragonLite to have new currencies apply"), QMessageBox::Ok); - - + QMessageBox::information(this, tr("Currency Change"), tr("Please restart SilentDragonLite to have new currencies apply"), QMessageBox::Ok); }); // Check for updates @@ -1126,27 +1122,27 @@ void MainWindow::setupReceiveTab() { ui->rcvLabel->setText(label); if (Settings::getInstance()->get_currency_name() == "USD") { - ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushUSDString()); + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushUSDString()); } else if (Settings::getInstance()->get_currency_name() == "EUR") { - ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushEURString()); - } else if (Settings::getInstance()->get_currency_name() == "BTC") { - ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushBTCString()); - } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushCNYString()); - } else if (Settings::getInstance()->get_currency_name() == "RUB") { - ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushRUBString()); - } else if (Settings::getInstance()->get_currency_name() == "CAD") { + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushCADString()); - } else if (Settings::getInstance()->get_currency_name() == "SGD") { - ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushSGDString()); - } else if (Settings::getInstance()->get_currency_name() == "CHF") { + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushCHFString()); - } else if (Settings::getInstance()->get_currency_name() == "INR") { - ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushINRString()); - } else if (Settings::getInstance()->get_currency_name() == "GBP") { + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushGBPString()); - } else if (Settings::getInstance()->get_currency_name() == "AUD") { - ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushAUDString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->rcvBal->setText(rpc->getModel()->getAllBalances().value(addr).toDecimalhushAUDString()); } ui->txtReceive->setPlainText(addr); @@ -1309,19 +1305,10 @@ void MainWindow::slot_change_currency(const QString& currency_name) saved_currency_name = "USD"; } - - - - - } - - - void MainWindow::slot_change_theme(const QString& theme_name) - { Settings::getInstance()->set_theme_name(theme_name); diff --git a/src/mainwindow.h b/src/mainwindow.h index 08aac98..50f833a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -79,8 +79,7 @@ public: public slots: void slot_change_theme(const QString& themeName); void slot_change_currency(const QString& currencyName); - - + private: void closeEvent(QCloseEvent* event); diff --git a/src/requestdialog.cpp b/src/requestdialog.cpp index 9f14343..203ab2b 100644 --- a/src/requestdialog.cpp +++ b/src/requestdialog.cpp @@ -120,23 +120,54 @@ void RequestDialog::showRequesthush(MainWindow* main) { req.txtAmount->setValidator(main->getAmountValidator()); QObject::connect(req.txtAmount, &QLineEdit::textChanged, [=] (auto text) { CAmount amount = CAmount::fromDecimalString(text); - if (Settings::getInstance()->get_currency_name() == "USD") { - req.txtAmountUSD->setText(amount.toDecimalUSDString()); + if (Settings::getInstance()->get_currency_name() == "USD") { + req.txtAmountUSD->setText(amount.toDecimalUSDString()); } else if (Settings::getInstance()->get_currency_name() == "EUR") { req.txtAmountUSD->setText(amount.toDecimalEURString()); - } else if (Settings::getInstance()->get_currency_name() == "BTC") { - req.txtAmountUSD->setText(amount.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + req.txtAmountUSD->setText(amount.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + req.txtAmountUSD->setText(amount.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + req.txtAmountUSD->setText(amount.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + req.txtAmountUSD->setText(amount.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + req.txtAmountUSD->setText(amount.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + req.txtAmountUSD->setText(amount.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + req.txtAmountUSD->setText(amount.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + req.txtAmountUSD->setText(amount.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + req.txtAmountUSD->setText(amount.toDecimalBTCString()); } }); CAmount amount = CAmount::fromDecimalString(req.txtAmount->text()); if (Settings::getInstance()->get_currency_name() == "USD") { - req.txtAmountUSD->setText(amount.toDecimalUSDString()); + req.txtAmountUSD->setText(amount.toDecimalUSDString()); } else if (Settings::getInstance()->get_currency_name() == "EUR") { req.txtAmountUSD->setText(amount.toDecimalEURString()); - } else if (Settings::getInstance()->get_currency_name() == "BTC") { - req.txtAmountUSD->setText(amount.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + req.txtAmountUSD->setText(amount.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + req.txtAmountUSD->setText(amount.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + req.txtAmountUSD->setText(amount.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + req.txtAmountUSD->setText(amount.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + req.txtAmountUSD->setText(amount.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + req.txtAmountUSD->setText(amount.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + req.txtAmountUSD->setText(amount.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + req.txtAmountUSD->setText(amount.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + req.txtAmountUSD->setText(amount.toDecimalBTCString()); } - req.txtMemo->setAcceptButton(req.buttonBox->button(QDialogButtonBox::Ok)); req.txtMemo->setLenDisplayLabel(req.lblMemoLen); req.txtMemo->setMaxLen(400); diff --git a/src/sendtab.cpp b/src/sendtab.cpp index 83e1a99..0f6e646 100644 --- a/src/sendtab.cpp +++ b/src/sendtab.cpp @@ -65,15 +65,15 @@ void MainWindow::setupSendTab() { ui->lblMinerFeeUSD->setText(fee.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui->lblMinerFeeUSD->setText(fee.toDecimalBTCString()); - } else if (Settings::getInstance()->get_currency_name() == "CNY") { + } else if (Settings::getInstance()->get_currency_name() == "CNY") { ui->lblMinerFeeUSD->setText(fee.toDecimalCNYString()); } else if (Settings::getInstance()->get_currency_name() == "RUB") { ui->lblMinerFeeUSD->setText(fee.toDecimalRUBString()); - } else if (Settings::getInstance()->get_currency_name() == "CAD") { + } else if (Settings::getInstance()->get_currency_name() == "CAD") { ui->lblMinerFeeUSD->setText(fee.toDecimalCADString()); } else if (Settings::getInstance()->get_currency_name() == "SGD") { ui->lblMinerFeeUSD->setText(fee.toDecimalSGDString()); - } else if (Settings::getInstance()->get_currency_name() == "CHF") { + } else if (Settings::getInstance()->get_currency_name() == "CHF") { ui->lblMinerFeeUSD->setText(fee.toDecimalCHFString()); } else if (Settings::getInstance()->get_currency_name() == "INR") { ui->lblMinerFeeUSD->setText(fee.toDecimalINRString()); @@ -91,37 +91,37 @@ void MainWindow::setupSendTab() { QString txt = ui->minerFeeAmt->text(); if (Settings::getInstance()->get_currency_name() == "USD") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalUSDString(); - ui->lblMinerFeeUSD->setText(feeUSD); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "EUR") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalEURString(); - ui->lblMinerFeeUSD->setText(feeUSD); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "BTC") { - QString feeUSD = CAmount::fromDecimalString(txt).toDecimalEURString(); - ui->lblMinerFeeUSD->setText(feeUSD); + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalEURString(); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "CNY") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCNYString(); - ui->lblMinerFeeUSD->setText(feeUSD); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "RUB") { - QString feeUSD = CAmount::fromDecimalString(txt).toDecimalRUBString(); - ui->lblMinerFeeUSD->setText(feeUSD); + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalRUBString(); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "CAD") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCADString(); - ui->lblMinerFeeUSD->setText(feeUSD); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "SGD") { - QString feeUSD = CAmount::fromDecimalString(txt).toDecimalSGDString(); - ui->lblMinerFeeUSD->setText(feeUSD); + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalSGDString(); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "CHF") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCHFString(); - ui->lblMinerFeeUSD->setText(feeUSD); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "INR") { - QString feeUSD = CAmount::fromDecimalString(txt).toDecimalINRString(); - ui->lblMinerFeeUSD->setText(feeUSD); - } else if (Settings::getInstance()->get_currency_name() == "GBP") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalINRString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalGBPString(); - ui->lblMinerFeeUSD->setText(feeUSD); + ui->lblMinerFeeUSD->setText(feeUSD); } else if (Settings::getInstance()->get_currency_name() == "AUD") { - QString feeUSD = CAmount::fromDecimalString(txt).toDecimalAUDString(); - ui->lblMinerFeeUSD->setText(feeUSD); + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalAUDString(); + ui->lblMinerFeeUSD->setText(feeUSD); } } @@ -748,27 +748,27 @@ bool MainWindow::confirmTx(Tx tx, RecurringPaymentInfo* rpi) { minerFeeUSD->setObjectName(QStringLiteral("minerFeeUSD")); minerFeeUSD->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); confirm.gridLayout->addWidget(minerFeeUSD, row, 2, 1, 1); - if (Settings::getInstance()->get_currency_name() == "USD") { - minerFeeUSD->setText(tx.fee.toDecimalUSDString()); - } else if (Settings::getInstance()->get_currency_name() == "EUR") { - minerFeeUSD->setText(tx.fee.toDecimalEURString()); - } else if (Settings::getInstance()->get_currency_name() == "BTC") { - minerFeeUSD->setText(tx.fee.toDecimalBTCString()); - } else if (Settings::getInstance()->get_currency_name() == "CNY") { + if (Settings::getInstance()->get_currency_name() == "USD") { + minerFeeUSD->setText(tx.fee.toDecimalUSDString()); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + minerFeeUSD->setText(tx.fee.toDecimalEURString()); + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + minerFeeUSD->setText(tx.fee.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { minerFeeUSD->setText(tx.fee.toDecimalCNYString()); - } else if (Settings::getInstance()->get_currency_name() == "RUB") { - minerFeeUSD->setText(tx.fee.toDecimalRUBString()); - } else if (Settings::getInstance()->get_currency_name() == "CAD") { + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + minerFeeUSD->setText(tx.fee.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { minerFeeUSD->setText(tx.fee.toDecimalCADString()); - } else if (Settings::getInstance()->get_currency_name() == "SGD") { - minerFeeUSD->setText(tx.fee.toDecimalSGDString()); - } else if (Settings::getInstance()->get_currency_name() == "CHF") { + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + minerFeeUSD->setText(tx.fee.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { minerFeeUSD->setText(tx.fee.toDecimalCHFString()); - } else if (Settings::getInstance()->get_currency_name() == "INR") { - minerFeeUSD->setText(tx.fee.toDecimalINRString()); - } else if (Settings::getInstance()->get_currency_name() == "GBP") { + } else if (Settings::getInstance()->get_currency_name() == "INR") { + minerFeeUSD->setText(tx.fee.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { minerFeeUSD->setText(tx.fee.toDecimalGBPString()); - } else if (Settings::getInstance()->get_currency_name() == "AUD") { + } else if (Settings::getInstance()->get_currency_name() == "AUD") { minerFeeUSD->setText(tx.fee.toDecimalAUDString()); } } From cdbece6884ecd8939945ffe98c0d8f45e0daf18e Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 22:25:00 +0100 Subject: [PATCH 32/36] change to wormhole.myhush.org --- src/websockets.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/websockets.cpp b/src/websockets.cpp index cd9d5ad..4f0a07b 100644 --- a/src/websockets.cpp +++ b/src/websockets.cpp @@ -112,7 +112,7 @@ void WormholeClient::connect() { QObject::connect(m_webSocket, &QWebSocket::connected, this, &WormholeClient::onConnected); QObject::connect(m_webSocket, &QWebSocket::disconnected, this, &WormholeClient::closed); - m_webSocket->open(QUrl("wss://wormhole.silentdragonlite.com:443")); + m_webSocket->open(QUrl("wss://wormhole.myhush.org:443")); //m_webSocket->open(QUrl("ws://127.0.0.1:7070")); } From 84c5658d7b39350291a7802fc1f9c94858009999 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 22:57:38 +0100 Subject: [PATCH 33/36] update translation strings --- res/zec_qt_wallet_de.qm | Bin 41691 -> 42377 bytes res/zec_qt_wallet_de.ts | 516 ++++++++++++++++++++++----------------- res/zec_qt_wallet_es.ts | 514 ++++++++++++++++++++++----------------- res/zec_qt_wallet_fr.qm | Bin 18174 -> 12832 bytes res/zec_qt_wallet_fr.ts | 522 ++++++++++++++++++++++------------------ res/zec_qt_wallet_it.qm | Bin 13432 -> 9296 bytes res/zec_qt_wallet_it.ts | 522 ++++++++++++++++++++++------------------ res/zec_qt_wallet_pt.qm | Bin 12963 -> 9237 bytes res/zec_qt_wallet_pt.ts | 522 ++++++++++++++++++++++------------------ res/zec_qt_wallet_tr.qm | Bin 35492 -> 27388 bytes res/zec_qt_wallet_tr.ts | 518 ++++++++++++++++++++++----------------- res/zec_qt_wallet_zh.qm | Bin 24782 -> 19602 bytes res/zec_qt_wallet_zh.ts | 518 ++++++++++++++++++++++----------------- silentdragon-lite.pro | 1 - 14 files changed, 2038 insertions(+), 1595 deletions(-) diff --git a/res/zec_qt_wallet_de.qm b/res/zec_qt_wallet_de.qm index 1c1cf229c34ef05984fdeeb7e5a4a1b023660d7f..4f4738314f354aabadc52e5528e2082d1c7f15e0 100644 GIT binary patch delta 3328 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 delta 2789 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 diff --git a/res/zec_qt_wallet_de.ts b/res/zec_qt_wallet_de.ts index 70046ef..6cf0b9a 100644 --- a/res/zec_qt_wallet_de.ts +++ b/res/zec_qt_wallet_de.ts @@ -43,29 +43,29 @@ Controller - + Wallet Password Wallet Passwort - + Your wallet is encrypted. Please enter your wallet password Ihr Wallet ist verschlüsselt. Bitte geben Sie das Passwort ein - - + + Wallet Decryption Failed Entschlüsslung gescheitert - + Please enter a valid password Bitte geben Sie ein gültiges Passwort ein - + Failed to unlock wallet Konnte das Wallet nicht entsperren @@ -121,37 +121,37 @@ Please enter your wallet password Verborgen - + Notarized Notarisiert - + Transparent Sichtbar - + Total Gesamt - + Your node is still syncing, balances may not be updated. Synchronisierung noch nicht abgeschlossen. Beträge sind noch nicht aktuell. - + Some transactions are not yet confirmed. Balances may change. Einige Transaktionen sind noch nicht bestätigt. - + Total notarized funds available: Insgesammter notarisierter Betrag: - + Your node is still syncing, balances may not be updated Synchronisierung noch nicht abgeschlossen. Beträge sind noch nicht aktuell @@ -160,13 +160,13 @@ Please enter your wallet password Einige Transaktionen sind noch nicht bestätigt - + Address Balances Guthaben der Adresse - - + + Send Senden @@ -175,192 +175,192 @@ Please enter your wallet password Guthaben der Adresse - + Send To Sende an - + Recipient Empfänger - - - - + + + + Address Adresse - - + + Address Book Adressbuch - - - - + + + + Amount Betrag - + Max Available Maximal verfügbare Summe - - - - + + + + Memo Nachricht hinzufügen - + Add Recipient Weiteren Empfänger hinzufügen - + Recurring payment Wiederkehrende Zahlung - + Every month, starting 12-May-2012, for 6 payments Jeden Monat, startet am 12. Mai 2019, für 6 Monate - + Edit Schedule Zeitplan bearbeiten - - + + Miner Fee Gebühr - + 0 - + Cancel Abbrechen - + Receive Empfangen - + Address Type Adressen Format - + z-Addr Verborgene Adresse - + t-Addr Sichtbare Adresse - + New Address Neue Adresse - + View All Addresses Alle Adressen ansehen - + Label Bezeichnung - + Update Label Bezeichnung ändern - + Address balance Guthaben der Adresse - + Optional Optional - - + + Export Private Key Private Key exportieren - + Transactions Transaktionen - + Hush Daemon Hush Daemon - + blockHeight Blockhöhe - + Version hushlightd Hushdlight Version - + &Send DenioD Feedback Sende DenioD Feedback - + &Export seed phrase Seed exportieren - + Encrypt Wallet Wallet verschlüsseln - + Remove Wallet Encryption Verschlüsslung entfernen - + This is a Lightwallet, you cant mine with it! Dies ist ein Lightwallet, sie können damit nicht Minen! - - - + + + Loading... Lade... @@ -373,427 +373,437 @@ Please enter your wallet password Version hushd light - + Vendor Vendor - + | - + &File Datei - + &Help Hilfe - + &Apps Smartphone - + &Edit Bearbeiten - + E&xit Beenden - + &About Über - + &Settings Einstellungen - + Ctrl+P Ctrl+P - + &Hush Discord &Hush Discord - + &Hush Website &Hush Website - + Check github.com for &updates Überprüfe Github für Updates - + &Export all private keys Alle private Keys exportieren - + Address &book Adressbuch - + Ctrl+B Ctrl+B - - + + Export transactions Transaktionen exportieren - + Pay hush &URI... Zahlungs Hush &URI... - + Connect mobile &app Smartphone verbinden - + Ctrl+M Ctrl+M - + &Recurring Payments Wiederkehrende Zahlung - + Request hush... Hush anfordern... - + File a bug... Fehler melden... - - + + Copy txid Transaktions ID kopieren - + View tx on block explorer Transaktions ID auf dem Blockexplorer anschauen - + Refresh Aktualisieren - + Restart Neustart - + Please restart Silentdragonlite to have the theme apply Bitte starten sie SilentDragonLite neu - + You're using an external hushd. Please restart hushd with -rescan Starte SilentDragonLite neu - + Some feedback about SilentDragonlite or Hush... Etwas Feedback über SilentDragonLite... - + Send Duke some private and shielded feedback about Sende DenioD anonym Feedback über - + or SilentDragonLite oder SilentDragonLite - + Paste HUSH URI Hush URI einfügen - + Error paying HUSH URI Fehler bei HUSH URI - + URI should be of the form 'hush:<addr>?amt=x&memo=y Die URI sollte folgendemaßen aussehen 'hush:<addr>?amt=x&memo=y - + Error Fehler - + Error exporting transactions, file was not saved Fehler beim exportieren der Transaktionen. Die Datei wurde nicht gespeichert - + Error getting private keys Fehler beim empfangen der private Keys - + Error loading private keys: Fehler beim laden der private Keys: - + These are all the private keys for all the addresses in your wallet Dies sind alle private Keys für ihr Wallet - + Private key for Private Key für - - + + Save File Datei sichern - + Wallet is already encrypted SilentDragonLite ist bereits verschlüsselt - + Your wallet is already encrypted with a password. Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption. SilentDragonLite ist bereits mit einem Passwort verschlüsselt. Bitte benutzen Sie die Funktion 'Verschlüsselung entfernen'. - + Passwords don't match Passwort falsch - + Error was: Der Fehler war: - + Wallet Encrypted SilentDragonLite verschlüsselt - + Your wallet was successfully encrypted! The password will be needed to send funds or export private keys. SilentDragonLite wurde erfolgreich verschlüsselt. Sie benötigen Ihr Passwort um Zahlungen zu senden oder Ihre private Keys zu exportieren. - - + + Wallet Encryption Failed Verschlüsslung gescheitert - + Wallet is not encrypted SilentDragonLite ist nicht verschlüsselt - + Your wallet is not encrypted with a password. SilentDragonLite ist nicht mit einem Passwort verschlüsselt. - + Wallet Password SilentDragonLite Passwort - + Please enter your wallet password Bitte geben sie Ihr Passwort ein - - - + + + Wallet Decryption Failed SilentDragonLite konnte nicht entschlüsselt werden - + Please enter a password to decrypt your wallet! Bitte geben Sie das Passwort ein, um SilentDragonLite zu entschlüsseln! - + Wallet Encryption Removed Verschlüsselung wurde entfernt - + Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys. SilentDragonLite wurde erfolgreich entschlüsselt. Sie benötigen Ihr Passwort nicht mehr. - + + Currency Change + Währungszeichen wechseln + + + + Please restart SilentDragonLite to have new currencies apply + Bitte starten sie SilentDragonLite neu + + + This is your wallet seed. Please back it up carefully and safely. Dies ist Ihr SilentDragonLite Seed. Bitte sichern Sie ihn sorgfältig. - - + + Unable to open file Konnte die Datei nicht öffnen - - + + Copy address Adresse kopieren - - - + + + Copied to clipboard In die Zwischenablage kopiert - + Get private key Private Key erhalten - - + + View on block explorer Auf dem Blockexplorer anschauen - + View Payment Request Zahlungsanforderung ansehen - + View Memo Nachricht ansehen - + Reply to Antworten an - + Created new t-Addr Neue sichtbare Adresse erstellen - + Copy Address Adresse kopieren - + Address has been previously used Diese Adresse wurde schon einmal benutzt - + Address is unused Adresse ist unbenutzt - + Cannot support multiple addresses Keine Unterstützung für mehrere Adressen - + Recurring payments doesn't currently support multiple addresses Wiederkehrende Zahlungen unterstützen noch keine multiplen Adressen - + Recipient Empfänger - + Only z-addresses can have memos Nur verborgene Adressen können Nachrichten enthalten - + Memos can only be used with z-addresses Nur verborgene Adressen können Nachrichten enthalten - + The memo field can only be used with a z-address. Nur verborgene Adressen können Nachrichten enthalten. - + doesn't look like a z-address sieht nicht nach einer verborgenen Adresse aus (Zs...) - + Please wait... Bitte warten... - + Computing your transaction Generiere Ihre Transaktion - + Done! Fertig! - + Not enough available funds to send this transaction Have: %1 @@ -808,22 +818,22 @@ Sie benötigen:%2 Anmerkung: Sie bnötigen 2 Bestätigungen - + Transaction Error Fehler bei der Transaktion - + Recipient Address Adresse des Empfängers - + is Invalid ist ungültig - + Amount for address '%1' is invalid! Betrag für die Adresse '%1' ist nicht gültig! @@ -1070,14 +1080,14 @@ Anmerkung: Sie bnötigen 2 Bestätigungen - + Connection Error Verbsindungsfehler - - + + Transaction Error Transaktionsfehler @@ -1087,49 +1097,49 @@ Anmerkung: Sie bnötigen 2 Bestätigungen Es gab einen Fehler beim senden der Transaktion: + - No Connection keine Verbindung - + There was an error connecting to hushd. The error was Es gab einen Fehler zum server zu verbinden - - - + + + Tx Transaktion - - - + + + failed gescheitert - - + + The transaction with id Die Transaktion mit der ID - - + + failed. The error was ist gescheitert - + Update Available Update verfügbar - + A new release v%1 is available! You have v%2. Would you like to visit the releases page? @@ -1138,58 +1148,58 @@ Would you like to visit the releases page? Möchten Sie die Release Seite besuchen? - + No updates available keine Updates verfügbar - + You already have the latest release v%1 Sie haben bereits die neueste Version v%1 - + Please wait for SilentDragonLite to exit Bitte warten Sie bis SilentDragonLite beendet ist - + Waiting for hushd to exit Warten auf beendigung der Serververbindung - + No hush price was available to convert from USD Kein Hush Preis verfügbar - + View on block explorer Auf dem Blockexplorer anschauen - + View Error Fehler ansehen - + Reported Error Fehler melden - - + + Are you sure you want to delete the recurring payment? Sind Sie sicher, dass Sie die wiederkehrende Zahlung löschen wollen? - + All future payments will be cancelled. Alle geplanten zukünftigen Zahlungen werden nicht durchgeführt. - + Tx submitted (right click to copy) txid: Transaktions ID übermittelt (Rechtsklick zum anschauen) : @@ -1260,37 +1270,37 @@ Möchten Sie die Release Seite besuchen? RecurringListViewModel - + Amount Betrag - + Schedule Geplant - + Payments Left Zahlungen übrig - + Next Payment Nächste Zahlung - + To An - + Every Immer - + None Keine @@ -1306,48 +1316,48 @@ Möchten Sie die Release Seite besuchen? RecurringPaymentsListViewModel - + Date Datum - + Status Status - + Txid Transaktions ID - + Not due yet Noch nicht fällig - + Pending Schwebend - + Skipped Übersprungen - + Paid Bezahlt - + Error Fehler - - + + Unknown Unbekannt @@ -1493,17 +1503,17 @@ Möchten Sie die Release Seite besuchen? Zahlen an - + Pay Bezahlen - + You are paying a payment request. Your address will not be visible to the person requesting this payment. Sie bezahlen eine Zahlungsanfrage. Ihre Adresse wird nicht sichtbar sein. - + Can only request from Sapling addresses Anfragen nur von sicheren Adressen @@ -1593,32 +1603,31 @@ Möchten Sie die Release Seite besuchen? Optionen - + Connect to github on startup to check for updates Überprüfe Github für Updates - + Connect to the internet to fetch hush prices Hush Preise abrufen (dies kann Ihre Privatssphäre einschränken) - + Check github for updates at startup Überprüfe Github beim Start auf Updates - Fetch hush / USD prices - Hush Preise abrufen + Hush Preise abrufen - + Theme Design - + default Normal @@ -1633,32 +1642,87 @@ Möchten Sie die Release Seite besuchen? Server - + blue Blau - + light Hell - + dark Dark - + + Fetch hush prices + Hush Preise abrufen + + + + Currency + Währung + + + + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY + + + + + EUR + + + + + GBP + + + + + INR + + + + + USD + + + + Troubleshooting Problembehebung - + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart hushWallet for this to take effect Das Wallet neu scannen um das Guthaben zu aktuallisieren - + Rescan Neu Scannen @@ -1781,8 +1845,12 @@ Möchten Sie die Release Seite besuchen? Erweiterte Einstellungen anzeigen - Allow connections to the internet to check for updates, get hush/USD prices etc... + Hush Preise abrufen (dies kann Ihre Privatssphäre einschränken)... + + + + Allow connections to the internet to check for updates, get hush prices etc... Hush Preise abrufen (dies kann Ihre Privatssphäre einschränken)... diff --git a/res/zec_qt_wallet_es.ts b/res/zec_qt_wallet_es.ts index 9dd21c4..3fce010 100644 --- a/res/zec_qt_wallet_es.ts +++ b/res/zec_qt_wallet_es.ts @@ -43,29 +43,29 @@ Controller - + Wallet Password - + Your wallet is encrypted. Please enter your wallet password - - + + Wallet Decryption Failed - + Please enter a valid password - + Failed to unlock wallet @@ -121,660 +121,670 @@ Please enter your wallet password - + Notarized - + Transparent - + Total - + Your node is still syncing, balances may not be updated. - + Some transactions are not yet confirmed. Balances may change. - + Total notarized funds available: - + Your node is still syncing, balances may not be updated - + Address Balances - - + + Send - + Send To - + Recipient - - - - + + + + Address - - + + Address Book - - - - + + + + Amount - + Max Available - - - - + + + + Memo - + Add Recipient - + Recurring payment - + Every month, starting 12-May-2012, for 6 payments - + Edit Schedule - - + + Miner Fee - + 0 - + Cancel - + Receive - + Address Type - + z-Addr - + t-Addr - + New Address - + View All Addresses - + Label - + Update Label - + Address balance - + Optional - - + + Export Private Key - + Transactions - + Hush Daemon - + blockHeight - + Version hushlightd - + &Send DenioD Feedback - + &Export seed phrase - + Encrypt Wallet - + Remove Wallet Encryption - + This is a Lightwallet, you cant mine with it! - - - + + + Loading... - + Vendor - + | - + &File - + &Help - + &Apps - + &Edit - + E&xit - + &About - + &Settings - + Ctrl+P - + &Hush Discord - + &Hush Website - + Check github.com for &updates - + &Export all private keys - + Address &book - + Ctrl+B - - + + Export transactions - + Pay hush &URI... - + Connect mobile &app - + Ctrl+M - + &Recurring Payments - + Request hush... - + File a bug... - - + + Copy txid - + View tx on block explorer - + Refresh - + Restart - + Please restart Silentdragonlite to have the theme apply - + You're using an external hushd. Please restart hushd with -rescan - + Some feedback about SilentDragonlite or Hush... - + Send Duke some private and shielded feedback about - + or SilentDragonLite - + Paste HUSH URI - + Error paying HUSH URI - + URI should be of the form 'hush:<addr>?amt=x&memo=y - + Error - + Error exporting transactions, file was not saved - + Error getting private keys - + Error loading private keys: - + These are all the private keys for all the addresses in your wallet - + Private key for - - + + Save File - + Wallet is already encrypted - + Your wallet is already encrypted with a password. Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption. - + Passwords don't match - + Error was: - + Wallet Encrypted - + Your wallet was successfully encrypted! The password will be needed to send funds or export private keys. - - + + Wallet Encryption Failed - + Wallet is not encrypted - + Your wallet is not encrypted with a password. - + Wallet Password - + Please enter your wallet password - - - + + + Wallet Decryption Failed - + Please enter a password to decrypt your wallet! - + Wallet Encryption Removed - + Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys. - + + Currency Change + + + + + Please restart SilentDragonLite to have new currencies apply + + + + This is your wallet seed. Please back it up carefully and safely. - - + + Unable to open file - - + + Copy address - - - + + + Copied to clipboard - + Get private key - - + + View on block explorer - + View Payment Request - + View Memo - + Reply to - + Created new t-Addr - + Copy Address - + Address has been previously used - + Address is unused - + Cannot support multiple addresses - + Recurring payments doesn't currently support multiple addresses - + Recipient - + Only z-addresses can have memos - + Memos can only be used with z-addresses - + The memo field can only be used with a z-address. - + doesn't look like a z-address - + Please wait... - + Computing your transaction - + Done! - + Not enough available funds to send this transaction Have: %1 @@ -784,22 +794,22 @@ Note: Funds need 5 confirmations before they can be spent - + Transaction Error - + Recipient Address - + is Invalid - + Amount for address '%1' is invalid! @@ -1046,14 +1056,14 @@ Note: Funds need 5 confirmations before they can be spent - + Connection Error - - + + Transaction Error @@ -1063,107 +1073,107 @@ Note: Funds need 5 confirmations before they can be spent + - No Connection - + There was an error connecting to hushd. The error was - - - + + + Tx - - - + + + failed - - + + The transaction with id - - + + failed. The error was - + Update Available - + A new release v%1 is available! You have v%2. Would you like to visit the releases page? - + No updates available - + You already have the latest release v%1 - + Please wait for SilentDragonLite to exit - + Waiting for hushd to exit - + No hush price was available to convert from USD - + View on block explorer - + View Error - + Reported Error - - + + Are you sure you want to delete the recurring payment? - + All future payments will be cancelled. - + Tx submitted (right click to copy) txid: @@ -1234,37 +1244,37 @@ Would you like to visit the releases page? RecurringListViewModel - + Amount - + Schedule - + Payments Left - + Next Payment - + To - + Every - + None @@ -1280,48 +1290,48 @@ Would you like to visit the releases page? RecurringPaymentsListViewModel - + Date - + Status - + Txid - + Not due yet - + Pending - + Skipped - + Paid - + Error - - + + Unknown @@ -1467,17 +1477,17 @@ Would you like to visit the releases page? - + Pay - + You are paying a payment request. Your address will not be visible to the person requesting this payment. - + Can only request from Sapling addresses @@ -1567,32 +1577,27 @@ Would you like to visit the releases page? - + Connect to github on startup to check for updates - + Connect to the internet to fetch hush prices - + Check github for updates at startup - - Fetch hush / USD prices - - - - + Theme - + default @@ -1607,32 +1612,87 @@ Would you like to visit the releases page? - + blue - + light - + dark - + + Fetch hush prices + + + + + Currency + + + + + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY + + + + + EUR + + + + + GBP + + + + + INR + + + + + USD + + + + Troubleshooting - + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart hushWallet for this to take effect - + Rescan @@ -1756,7 +1816,7 @@ Would you like to visit the releases page? - Allow connections to the internet to check for updates, get hush/USD prices etc... + Allow connections to the internet to check for updates, get hush prices etc... diff --git a/res/zec_qt_wallet_fr.qm b/res/zec_qt_wallet_fr.qm index ffff9393e0b3ff75dd6f577a88120ca591694c55..ae87b383465d3b9b07f573846b5f088ef7be1eb5 100644 GIT binary patch delta 1335 zcmXYwe@qi+7{{Nx-d)@4^Q(O1B8t&n4xZVPT+#d7)q2Vn{4aI%(i43GgI7{j!d2Gk4^T}cWL^5p3D2Z&-*;z z=XswTrn+q2tcy0?=hL07Uo6yL-g08-$2j3OI08<}fBJPL2 zQ{Ev=?F72C3m|#`nC~|Mq-Fq{l?|Y+BaAK~Ori)=9l&~>czD4*U^`a=MCgGXwgVVr zz}(~ppxeMa$RNJ~a}Y06G=ljaCZ@Om&rPle2wwmNZ6g55UqitJ`tiB2w&QiAo6vL% zifTW_O1EJ_bB4gXt#B9vO~Rh0ZoDWKrYah-8Y4Uwa{!)MM19Qf#RLne zKgTe!s1`zF9yLq92(Sp~h&QhS%+05l{fh}CRM6E2zeGg_>86-LRPZL<64V3C1Nw9* zQF^mNJA?kJZwcdG@hVDp7oo#XwfkyO7YVM3=lWYh^I;bIG*us z-+&eM5h_;`>dOgDZohV_rI}Q|LDaEe_;EEWB@}wJN6PvJ#P~i88v`P z1i3w&0$X9?dICNS{62T>E&NufxKX+VXX2JJ{m|P0@eRsMV-S@+sN7kHbL7<>Rqprq zV89q<;LtCa68z5^LgoZvtd%hNn6jq~6$z7+7an0?b-Z#mAJ2*XDmq}qN>8d9d^a&l zy=q{%6*GJFAmo+!QE#;iS`Me<0ny?QK7Z+ zE0nffIJ>qHE13{Jna0m&8`&OOu2PlJ zvO%+(mU6{(sb4%QUko3oq{WfT5*0m&)hjjpFKAw+FIuDICfMR%AGDlw{;4!2u3<%Xx5w$S7u)T&RZdrxRGsmxG@Y3#`?J*wxj%0! NB_*UKNUyH?;6Ga5VZHzW delta 6011 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 Controller - + Wallet Password - + Your wallet is encrypted. Please enter your wallet password - - + + Wallet Decryption Failed - + Please enter a valid password - + Failed to unlock wallet @@ -121,37 +121,37 @@ Please enter your wallet password Privé - + Notarized - + Transparent Transparant - + Total Total - + Your node is still syncing, balances may not be updated. - + Some transactions are not yet confirmed. Balances may change. - + Total notarized funds available: - + Your node is still syncing, balances may not be updated @@ -160,13 +160,13 @@ Please enter your wallet password Certaines transactions ne sont pas encore confirmées - + Address Balances Solde des adresses - - + + Send Envoyer @@ -179,145 +179,145 @@ Please enter your wallet password Solde de l'adresse - + Send To Envoyer à - + Recipient Destinataire - - - - + + + + Address Adresse - - + + Address Book Carnet d'adresses - - - - + + + + Amount Montant - + Max Available Maximum disponible - - - - + + + + Memo Mémo - + Add Recipient Ajouter un destinataire - + Recurring payment - + Every month, starting 12-May-2012, for 6 payments - + Edit Schedule - - + + Miner Fee I replaced this with "transaction fee" which sounds much better in French.. I hope it's correct too.. Frais de transaction - + 0 0 - + Cancel Annuler - + Receive Recevoir - + Address Type Type d'adresse - + Hush Daemon - + This is a Lightwallet, you cant mine with it! - + blockHeight - + Version hushlightd - + &Send DenioD Feedback - + &Export seed phrase - + Encrypt Wallet - + Remove Wallet Encryption - + &Hush Discord - + &Hush Website @@ -326,7 +326,7 @@ Please enter your wallet password Adresse-z(Sapling) - + t-Addr Adresse-t @@ -335,33 +335,33 @@ Please enter your wallet password Adresse-z(Sprout) - + New Address Nouvelle Adresse - + Label Etiquette - + Update Label Mettre à jour l'étiquette - + Address balance Solde de l'adresse - + Optional Optionnel - - + + Export Private Key Exporter la clef privée @@ -370,17 +370,17 @@ Please enter your wallet password Adresse utilisée - + z-Addr - + View All Addresses - + Transactions Transactions @@ -393,9 +393,9 @@ Please enter your wallet password Vous ne minez pas à présent - - - + + + Loading... Chargement... @@ -408,54 +408,54 @@ Please enter your wallet password Taux de solution du réseau - + Vendor Connections - + | | - + &File &Fichier - + &Help &Aide - + &Apps &Applications - + &Edit &Edition - + E&xit Q&uiter - + &About &À propos - + &Settings &Préférences - + Ctrl+P Ctrl+P @@ -464,7 +464,7 @@ Please enter your wallet password &Faire un don - + Check github.com for &updates Vérifier &github.com pour des mises à jour @@ -481,7 +481,7 @@ Please enter your wallet password &Importer une clef privée - + &Export all private keys &Exporter toutes les clefs privées @@ -494,12 +494,12 @@ Please enter your wallet password Ctrl+A, Ctrl+Z - + Address &book Carnet &d'adresse - + Ctrl+B Ctrl+B @@ -508,38 +508,38 @@ Please enter your wallet password &Sauvegarder "wallet.dat" - - + + Export transactions Exporter les transactions - + Pay hush &URI... PAyer une URI hush - + Connect mobile &app - + Ctrl+M - + &Recurring Payments - + Request hush... - + File a bug... @@ -548,7 +548,7 @@ Please enter your wallet password La configuration de Tor est disponible uniquement lors de l'exécution du processus hushd intégré. - + You're using an external hushd. Please restart hushd with -rescan @@ -601,12 +601,12 @@ Please enter your wallet password Rescan de l'import de la clef privée achevé - + View tx on block explorer - + Refresh @@ -615,7 +615,7 @@ Please enter your wallet password Erreur lors du payement du URI hush - + URI should be of the form 'hush:<addr>?amt=x&memo=y Le format URI doit être comme suit: 'hush:<addr>?amt=x&memo=y @@ -640,12 +640,12 @@ Please enter your wallet password Les clef seront importées dans votre noeud hushd connecté - + Error Erreur - + Error exporting transactions, file was not saved Erreur lors de l'exportation des transactions. Le fichier n'a pas été sauvegardé. @@ -678,137 +678,147 @@ Please enter your wallet password Vous devez le sauvegarder manuellement. - + These are all the private keys for all the addresses in your wallet Ce sont toutes les clés privées pour toutes les adresses de votre portefeuille - + Private key for Clef privée pour - - + + Save File Sauvegarder le fichier - + Wallet is already encrypted - + Your wallet is already encrypted with a password. Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption. - + Passwords don't match - + Error was: - + Wallet Encrypted - + Your wallet was successfully encrypted! The password will be needed to send funds or export private keys. - - + + Wallet Encryption Failed - + Wallet is not encrypted - + Your wallet is not encrypted with a password. - + Wallet Password - + Please enter your wallet password - - - + + + Wallet Decryption Failed - + Please enter a password to decrypt your wallet! - + Wallet Encryption Removed - + Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys. - + + Currency Change + + + + + Please restart SilentDragonLite to have new currencies apply + + + + This is your wallet seed. Please back it up carefully and safely. - - + + Unable to open file mpossible d'ouvrir le fichier - + Error getting private keys - + Error loading private keys: - - + + Copy address Copier l'adresse - - - + + + Copied to clipboard Copié dans le presse-papier - + Get private key Obtenir la clef privée @@ -817,8 +827,8 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet Rendre privé le solde vers Sapling - - + + View on block explorer Voir dans l'explorateur de block @@ -827,127 +837,127 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet Migrer vers Sapling - - + + Copy txid Copier l'ID de transaction - + Restart - + Please restart Silentdragonlite to have the theme apply - + Some feedback about SilentDragonlite or Hush... - + Send Duke some private and shielded feedback about - + or SilentDragonLite - + Paste HUSH URI - + Error paying HUSH URI - + View Payment Request - + View Memo Voir le mémo - + Reply to Répondre à - + Created new t-Addr Nouvelle Adresse-t créée - + Copy Address - + Address has been previously used L'adresse a été utilisée précédemment. - + Address is unused L'adresse est inutilisée. - + Recipient Destinataire - + Only z-addresses can have memos Seules les Adresses-z peuvent avoir un mémo - + Memos can only be used with z-addresses Les mémos peuvent seulement être utilisés avec des Adresses-z - + The memo field can only be used with a z-address. Le champs mémo ne peut uniquement être utilisé avec une adresse-z. - + doesn't look like a z-address Cette adresse ne semble pas être de type adresse-z - + Please wait... - + Computing your transaction - + Done! - + Not enough available funds to send this transaction Have: %1 @@ -961,12 +971,12 @@ Note: Funds need 5 confirmations before they can be spent Répondre à - + Cannot support multiple addresses - + Recurring payments doesn't currently support multiple addresses @@ -983,7 +993,7 @@ Note: Funds need 5 confirmations before they can be spent Solde après cette Tx: - + Transaction Error Erreur de transaction @@ -992,17 +1002,17 @@ Note: Funds need 5 confirmations before they can be spent L'adresse de l'émetteur est invalide - + Recipient Address Adresse du destinataire - + is Invalid est invalide - + Amount for address '%1' is invalid! @@ -1275,33 +1285,33 @@ Not starting embedded hushd because --no-embedded was passed hushd n'a aucune connexion à un pair - + There was an error connecting to hushd. The error was Une erreur est survenue lors de la connection à hushd. L'erreur est - - + + The transaction with id La transaction avec ID - - + + failed. The error was a échoué. L'erreur était - - - + + + failed a échoué - - - + + + Tx Tx @@ -1310,29 +1320,29 @@ Not starting embedded hushd because --no-embedded was passed tx en cours de calcul. Ceci peut prendre quelques minutes. - + Update Available MàJ disponible - + A new release v%1 is available! You have v%2. Would you like to visit the releases page? Voulez-vous visiter la page des nouvelles versions ? - + No updates available Pas de MàJ disponible - + You already have the latest release v%1 Vous utilisez déjà la dernière version v%1 - + Please wait for SilentDragonLite to exit @@ -1341,7 +1351,7 @@ Would you like to visit the releases page? Veuillez patienter. Fermeture de silentdragon en cours - + Waiting for hushd to exit Attente de la fermeture de hushd @@ -1394,14 +1404,14 @@ Veuillez configurer l'hôte/port et utilisateur/mot de passe dans le menu E - + Connection Error Erreur de connection - - + + Transaction Error Erreur de transaction @@ -1411,8 +1421,8 @@ Veuillez configurer l'hôte/port et utilisateur/mot de passe dans le menu E Une erreur est survenue en envoyant la transaction. L'erreur est: + - No Connection Pas de connection @@ -1491,7 +1501,7 @@ Veuillez configurer l'hôte/port et utilisateur/mot de passe dans le menu E Effacer l'étiquette - + Tx submitted (right click to copy) txid: Tx soumise. (clic droit pour copier) txid: @@ -1555,33 +1565,33 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi - + No hush price was available to convert from USD - + View on block explorer Voir dans l'explorateur de block - + View Error - + Reported Error - - + + Are you sure you want to delete the recurring payment? - + All future payments will be cancelled. @@ -1607,37 +1617,37 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi RecurringListViewModel - + Amount Montant - + Schedule - + Payments Left - + Next Payment - + To À - + Every - + None @@ -1653,48 +1663,48 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi RecurringPaymentsListViewModel - + Date - + Status - + Txid - + Not due yet - + Pending - + Skipped - + Paid - + Error Erreur - - + + Unknown @@ -1840,17 +1850,17 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi - + Pay - + You are paying a payment request. Your address will not be visible to the person requesting this payment. - + Can only request from Sapling addresses @@ -1960,7 +1970,7 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi Options - + Check github for updates at startup @@ -1977,27 +1987,22 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi Se connecter via Tor - + Connect to github on startup to check for updates - + Connect to the internet to fetch hush prices - - Fetch hush / USD prices - - - - + Theme - + default @@ -2012,32 +2017,87 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi - + blue - + light - + dark - + + Fetch hush prices + + + + + Currency + + + + + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY + + + + + EUR + + + + + GBP + + + + + INR + + + + + USD + + + + Troubleshooting - + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart hushWallet for this to take effect - + Rescan @@ -2257,11 +2317,6 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi Enable Fast Sync - - - Allow connections to the internet to check for updates, get hush/USD prices etc... - - Use custom datadir @@ -2287,6 +2342,11 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi Choose directory + + + Allow connections to the internet to check for updates, get hush prices etc... + + Connect over Tor diff --git a/res/zec_qt_wallet_it.qm b/res/zec_qt_wallet_it.qm index d54501f3d44c1f1c7828579157229b5d1993fe12..e1308954e30995ffba634de640c628e5c61df8e4 100644 GIT binary patch delta 1058 zcmX|=Yitx%6vzK_=gw;%Q%bwr*IG9eqpkwQ5?TzUHbTKvt0_&EP!m(T1G@yecDrZ= z;)b@+#vqVvK@kE?Tp{j8sE(CD0UK-(rIz)B;S1I#8VJNlN)Y&fsb{%~naup|oH_TN z|9Q;AaCXi9!o(T?m4N&}(6@oO11OviD5roY*MYST(R(M9<#m8#o?u~vpsz;I{|%HQ zD*>|}%9sU|P9f0W1+X0mjB;Wcf$UQhCy2mbxp=#{kU|}@c~fuzBDsI zLh^43mZ{P#dzs>d+1#DqlReB{_?IJrvY**IA5K!H-K@WKlny$<2D3h3?(6JCP8e&H z-4AGkRwL*gmRsLz1_~AkmPO=!@2&*$Zp&#m`4vvcQ!TW==sDiExrGurE2vBgdVb*p zi$?%snt$@jxdfmt=9#^BDf2lzvyc4sdOluE4$dNeHyH!G62I5k3rM>aGy5V1@+c$c zZJ_uWWuozI5_(iE@SXw6%hm0w4ER1$FYP9>Y4tK2BteI?sy&}lOB%G!ZC{h{Yuc`X zVG?**%j`+~K@mZV9JdMbsGuhx=zF9Mw^2r}cJ1^%I#AoG&8{MUr=_z@1+*@zj)~);Cai~@)aeLZwi*&G2(S;phPhS62U9flOK$6YnFzm z!=a}Bq#jl{syL?&UpQ6-4^c&i9DO&aBHsIs3$-*fm~o8P{7C-4Ii+u@*T!Mjs)xB2 zO0M|FpOam29SC2g%G`8)`D!l-3%SnTp<$FqT%!`v_no`A*`$irx?3JE3I^R{S12>} zx}Y~`E^InXe?XI9`F?XzF&(V*o7o8pY{=$x!CI<7#(cDBJ_S6UH4I`xITBp)o5^RgaBOM$48=^6PcxzWUd#gutw60ESokKh)0M4KvVKYRf9FpN AF8}}l delta 4662 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 l-6D%WrL# Controller - + Wallet Password - + Your wallet is encrypted. Please enter your wallet password - - + + Wallet Decryption Failed - + Please enter a valid password - + Failed to unlock wallet @@ -123,37 +123,37 @@ Please enter your wallet password Shielded - + Notarized - + Transparent Trasparente - + Total Totale - + Your node is still syncing, balances may not be updated. - + Some transactions are not yet confirmed. Balances may change. - + Total notarized funds available: - + Your node is still syncing, balances may not be updated @@ -162,13 +162,13 @@ Please enter your wallet password Rilevate transazioni non ancora confermate - + Address Balances Saldo degli indirizzi - - + + Send Invia @@ -182,145 +182,145 @@ Please enter your wallet password Saldo Indirizzo - + Send To Inviare a - + Recipient Destinatario - - - - + + + + Address Indirizzo - - + + Address Book Rubrica - - - - + + + + Amount check Importo - + Max Available Invia tutto - - - - + + + + Memo Memo - + Add Recipient Aggiungi alla rubrica - + Recurring payment - + Every month, starting 12-May-2012, for 6 payments - + Edit Schedule - - + + Miner Fee Commissioni di rete - + 0 0 - + Cancel Annulla - + Receive Ricevi - + Address Type Tipo Indirizzo - + Hush Daemon - + This is a Lightwallet, you cant mine with it! - + blockHeight - + Version hushlightd - + &Send DenioD Feedback - + &Export seed phrase - + Encrypt Wallet - + Remove Wallet Encryption - + &Hush Discord - + &Hush Website @@ -329,7 +329,7 @@ Please enter your wallet password z-Addr(Sapling) - + t-Addr t-Addr (Trasparente) @@ -338,48 +338,48 @@ Please enter your wallet password z-Addr(Legacy Sprout) - + z-Addr - + New Address Crea Indirizzo - + View All Addresses - + Label Etichetta - + Update Label Aggiorna etichetta - + Address balance - + Optional Opzionale - - + + Export Private Key Esporta la chiave privata - + Transactions Transazioni @@ -392,9 +392,9 @@ Please enter your wallet password Al momento non stai minando - - - + + + Loading... Caricamento... @@ -409,54 +409,54 @@ Please enter your wallet password Potenza di calcolo Network - + Vendor Connessioni attive - + | | - + &File &File - + &Help &Aiuto - + &Apps &Apps - + &Edit &Modifica - + E&xit &Esci - + &About &About - + &Settings &Impostazioni - + Ctrl+P Ctrl+P @@ -465,7 +465,7 @@ Please enter your wallet password &Dona - + Check github.com for &updates Controllo nuovi &aggiornamenti @@ -482,7 +482,7 @@ Please enter your wallet password &Importa chiave privata - + &Export all private keys &Esporta tutte le chiavi private @@ -495,13 +495,13 @@ Please enter your wallet password Ctrl+A, Ctrl+Z - + Address &book check Rubrica &Contatti - + Ctrl+B Ctrl+B @@ -510,38 +510,38 @@ Please enter your wallet password &Backup wallet.dat - - + + Export transactions - + Pay hush &URI... - + Connect mobile &app - + Ctrl+M - + &Recurring Payments - + Request hush... - + File a bug... @@ -578,22 +578,22 @@ Please enter your wallet password L'importazione delle chiavi private è stata completata - + You're using an external hushd. Please restart hushd with -rescan - + URI should be of the form 'hush:<addr>?amt=x&memo=y - + View tx on block explorer - + Refresh @@ -607,12 +607,12 @@ Please enter your wallet password Le chiavi saranno importate nel tuo nodo hushd - + Error - + Error exporting transactions, file was not saved @@ -645,137 +645,147 @@ Please enter your wallet password Devi eseguire il backup manualmente. - + These are all the private keys for all the addresses in your wallet Queste sono le chiavi private per tutti gli indirizzi nel tuo portafoglio - + Private key for Chiave privata per - - + + Save File Salva File - + Wallet is already encrypted - + Your wallet is already encrypted with a password. Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption. - + Passwords don't match - + Error was: - + Wallet Encrypted - + Your wallet was successfully encrypted! The password will be needed to send funds or export private keys. - - + + Wallet Encryption Failed - + Wallet is not encrypted - + Your wallet is not encrypted with a password. - + Wallet Password - + Please enter your wallet password - - - + + + Wallet Decryption Failed - + Please enter a password to decrypt your wallet! - + Wallet Encryption Removed - + Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys. - + + Currency Change + + + + + Please restart SilentDragonLite to have new currencies apply + + + + This is your wallet seed. Please back it up carefully and safely. - - + + Unable to open file Impossibile aprire il file - + Error getting private keys - + Error loading private keys: - - + + Copy address Copia indirizzo - - - + + + Copied to clipboard Copiato negli appunti - + Get private key Ottieni una chiave privata @@ -784,8 +794,8 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet Trasferisci il saldo su un indirizzo shielded Sapling - - + + View on block explorer Guarda sul block-explorer @@ -794,135 +804,135 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet Migra a Sapling - - + + Copy txid Copia txid - + Restart - + Please restart Silentdragonlite to have the theme apply - + Some feedback about SilentDragonlite or Hush... - + Send Duke some private and shielded feedback about - + or SilentDragonLite - + Paste HUSH URI - + Error paying HUSH URI - + View Payment Request - + View Memo Visualizza memo - + Reply to - + Created new t-Addr Crea nuovo t-Addr - + Copy Address - + Address has been previously used - + Address is unused - + Cannot support multiple addresses - + Recurring payments doesn't currently support multiple addresses - + Recipient Destinatario - + Only z-addresses can have memos Solo gli indirizzi shielded (z-address) possono avere le memo - + Memos can only be used with z-addresses Le memos possono essere utilizzate solo con z-addresses (Shielded) - + The memo field can only be used with a z-address. Il campo memo può essere utilizzato solo con z-address (Shielded) - + doesn't look like a z-address Non sembra uno z-address (Shielded) - + Please wait... - + Computing your transaction - + Done! - + Not enough available funds to send this transaction Have: %1 @@ -937,7 +947,7 @@ Note: Funds need 5 confirmations before they can be spent Cambiare da - + Transaction Error Errore di transazione @@ -947,17 +957,17 @@ Note: Funds need 5 confirmations before they can be spent L'indirizzo selezionato non è valido - + Recipient Address Indirizzo Destinatario - + is Invalid non valido - + Amount for address '%1' is invalid! @@ -1222,33 +1232,33 @@ Non è stato avviato hushd integrato perché è stato passato il comando --no-em Connesso a hushd - + There was an error connecting to hushd. The error was Si è verificato un errore durante la connessione a hushd. L'errore era - - + + The transaction with id La transazione con id - - + + failed. The error was fallito. l'errore era - - - + + + failed fallito - - - + + + Tx Tx @@ -1257,29 +1267,29 @@ Non è stato avviato hushd integrato perché è stato passato il comando --no-em computazione Tx. Questo può richiedere diversi minuti. - + Update Available - + A new release v%1 is available! You have v%2. Would you like to visit the releases page? - + No updates available - + You already have the latest release v%1 - + Please wait for SilentDragonLite to exit @@ -1289,7 +1299,7 @@ Would you like to visit the releases page? Si prega di attendere che silentdragon finisca la procedura di uscita - + Waiting for hushd to exit vedi appunto precedente Attendere l'uscita di hushd @@ -1342,14 +1352,14 @@ Impostare host/porta e utente/password nel menu Modifica-> Impostazioni. - + Connection Error Errore di Connessione - - + + Transaction Error Errore di transazione @@ -1359,8 +1369,8 @@ Impostare host/porta e utente/password nel menu Modifica-> Impostazioni.Si è verificato un errore durante l'invio della transazione. L'errore era: + - No Connection Nessuna connessione @@ -1439,7 +1449,7 @@ Impostare host/porta e utente/password nel menu Modifica-> Impostazioni.elimina l'etichetta - + Tx submitted (right click to copy) txid: Tx inviato (clic destro per copiare) txid: @@ -1503,33 +1513,33 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat - + No hush price was available to convert from USD - + View on block explorer Guarda sul block-explorer - + View Error - + Reported Error - - + + Are you sure you want to delete the recurring payment? - + All future payments will be cancelled. @@ -1555,37 +1565,37 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat RecurringListViewModel - + Amount - + Schedule - + Payments Left - + Next Payment - + To - + Every - + None @@ -1601,48 +1611,48 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat RecurringPaymentsListViewModel - + Date - + Status - + Txid - + Not due yet - + Pending - + Skipped - + Paid - + Error - - + + Unknown @@ -1788,17 +1798,17 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat - + Pay - + You are paying a payment request. Your address will not be visible to the person requesting this payment. - + Can only request from Sapling addresses @@ -1908,7 +1918,7 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat Opzioni - + Check github for updates at startup @@ -1917,27 +1927,22 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat Le transazioni Shielded vengono salvate localmente e visualizzate nella scheda delle transazioni. Se deselezioni questa opzione, le transazioni Shielded non verranno visualizzate nella scheda delle transazioni. - + Connect to github on startup to check for updates - + Connect to the internet to fetch hush prices - - Fetch hush / USD prices - - - - + Theme - + default @@ -1952,32 +1957,87 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat - + blue - + light - + dark - + + Fetch hush prices + + + + + Currency + + + + + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY + + + + + EUR + + + + + GBP + + + + + INR + + + + + USD + + + + Troubleshooting - + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart hushWallet for this to take effect - + Rescan @@ -2195,11 +2255,6 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat Enable Fast Sync - - - Allow connections to the internet to check for updates, get hush/USD prices etc... - - Use custom datadir @@ -2225,6 +2280,11 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat Choose directory + + + Allow connections to the internet to check for updates, get hush prices etc... + + Connect over Tor diff --git a/res/zec_qt_wallet_pt.qm b/res/zec_qt_wallet_pt.qm index df2a064a8263b271e165c1523f8e78dce37afe3a..38c65a2b458b1c026921b29cd5d7900ebe39001f 100644 GIT binary patch delta 1084 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 Controller - + Wallet Password - + Your wallet is encrypted. Please enter your wallet password - - + + Wallet Decryption Failed - + Please enter a valid password - + Failed to unlock wallet @@ -121,17 +121,17 @@ Please enter your wallet password Blindado - + Notarized - + Transparent Transparente - + Total Total @@ -140,13 +140,13 @@ Please enter your wallet password Existem transações não confirmadas ainda - + Address Balances Saldo dos Endereços - - + + Send Enviar @@ -159,144 +159,144 @@ Please enter your wallet password Saldo do Endereço - + Send To Enviar para - + Recipient Destinatário - - - - + + + + Address Endereço - - + + Address Book Agenda - - - - + + + + Amount Quantidade - + Max Available Máximo disponível - - - - + + + + Memo Anexar recado - + Add Recipient Adicionar destinatário - + Recurring payment - + Every month, starting 12-May-2012, for 6 payments - + Edit Schedule - - + + Miner Fee Taxa de mineração - + 0 0 - + Cancel Cancelar - + Receive Receber - + Address Type Tipo de Endereço - + Hush Daemon - + This is a Lightwallet, you cant mine with it! - + blockHeight - + Version hushlightd - + &Send DenioD Feedback - + &Export seed phrase - + Encrypt Wallet - + Remove Wallet Encryption - + &Hush Discord - + &Hush Website @@ -305,7 +305,7 @@ Please enter your wallet password z-Addr(Sapling) - + t-Addr t-Addr @@ -314,68 +314,68 @@ Please enter your wallet password z-Addr(Sprout) - + New Address Novo Endereço - + Label Etiqueta - + Update Label Atualizar - + Address balance - + Optional Opcional - - + + Export Private Key Exportar Chave Privada - + z-Addr - + Your node is still syncing, balances may not be updated. - + Some transactions are not yet confirmed. Balances may change. - + Total notarized funds available: - + Your node is still syncing, balances may not be updated - + View All Addresses - + Transactions Transações @@ -388,9 +388,9 @@ Please enter your wallet password Você não está minerando atualmente - - - + + + Loading... Carregando... @@ -403,54 +403,54 @@ Please enter your wallet password Taxa de soluções da rede - + Vendor Conexões - + | | - + &File &Arquivo - + &Help &Ajuda - + &Apps &Aplicações - + &Edit &Editar - + E&xit Sair - + &About &Sobre - + &Settings &Preferências - + Ctrl+P Ctrl+P @@ -459,7 +459,7 @@ Please enter your wallet password &Doar - + Check github.com for &updates &Checar github.com por atualizações @@ -476,7 +476,7 @@ Please enter your wallet password &Importar chave privada - + &Export all private keys &Exportar todas as chaves privadas @@ -489,12 +489,12 @@ Please enter your wallet password Ctrl+A, Ctrl+Z - + Address &book &Agenda de Endereços - + Ctrl+B Ctrl+B @@ -503,43 +503,43 @@ Please enter your wallet password &Salvar wallet.dat - - + + Export transactions - + Pay hush &URI... - + Connect mobile &app - + Ctrl+M - + &Recurring Payments - + Request hush... - + File a bug... - + You're using an external hushd. Please restart hushd with -rescan @@ -576,17 +576,17 @@ Please enter your wallet password Re-escan de chave privada completo - + URI should be of the form 'hush:<addr>?amt=x&memo=y - + View tx on block explorer - + Refresh @@ -599,12 +599,12 @@ Please enter your wallet password As chaves serão importadas em seu nó hushd conectado - + Error - + Error exporting transactions, file was not saved @@ -637,137 +637,147 @@ Please enter your wallet password Você precisar salvá-lo manualmente. - + These are all the private keys for all the addresses in your wallet YOUR_TRANSLATION_HERE - + Private key for Chave privada para - - + + Save File Salvar Arquivo - + Wallet is already encrypted - + Your wallet is already encrypted with a password. Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption. - + Passwords don't match - + Error was: - + Wallet Encrypted - + Your wallet was successfully encrypted! The password will be needed to send funds or export private keys. - - + + Wallet Encryption Failed - + Wallet is not encrypted - + Your wallet is not encrypted with a password. - + Wallet Password - + Please enter your wallet password - - - + + + Wallet Decryption Failed - + Please enter a password to decrypt your wallet! - + Wallet Encryption Removed - + Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys. - + + Currency Change + + + + + Please restart SilentDragonLite to have new currencies apply + + + + This is your wallet seed. Please back it up carefully and safely. - - + + Unable to open file Não foi possível abrir o arquivo - + Error getting private keys - + Error loading private keys: - - + + Copy address Copiar endereço - - - + + + Copied to clipboard Copiado - + Get private key Obter chave privada @@ -776,8 +786,8 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet Blindar saldo para Sapling - - + + View on block explorer Ver no explorador de blocos @@ -786,137 +796,137 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet Migrar para Sapling - - + + Copy txid Copiar txid - + Restart - + Please restart Silentdragonlite to have the theme apply - + Some feedback about SilentDragonlite or Hush... - + Send Duke some private and shielded feedback about - + or SilentDragonLite - + Paste HUSH URI - + Error paying HUSH URI - + View Payment Request - + View Memo Ver Recado - + Reply to - + Created new t-Addr Criar novo t-Addr - + Copy Address - + Address has been previously used - + Address is unused - + Cannot support multiple addresses - + Recurring payments doesn't currently support multiple addresses - + Recipient Destinatário - + Only z-addresses can have memos Apenas z-Addresses podem conter recados - + Memos can only be used with z-addresses Recados só podem ser anexados com z-Addresses - + The memo field can only be used with a z-address. O campo de recado só pode ser usado junto com z-Addresses. - + doesn't look like a z-address não se parece com um z-Address - + Please wait... - + Computing your transaction - + Done! - + Not enough available funds to send this transaction Have: %1 @@ -930,7 +940,7 @@ Note: Funds need 5 confirmations before they can be spent Troco de - + Transaction Error Erro na Transação @@ -939,17 +949,17 @@ Note: Funds need 5 confirmations before they can be spent Endereço de partida inválido - + Recipient Address Endereço destinatário - + is Invalid é Inválido - + Amount for address '%1' is invalid! @@ -1213,33 +1223,33 @@ Não iniciando hushd acoplado porque nenhum foi passado como parâmetroConectado ao hushd - + There was an error connecting to hushd. The error was Ocorreu um erro conectando ao hushd. O erro foi - - + + The transaction with id A transação com id - - + + failed. The error was falhou. O erro foi - - - + + + failed falhou - - - + + + Tx Tx @@ -1248,29 +1258,29 @@ Não iniciando hushd acoplado porque nenhum foi passado como parâmetro gerando transação. Isso pode levar alguns minutos. - + Update Available - + A new release v%1 is available! You have v%2. Would you like to visit the releases page? - + No updates available - + You already have the latest release v%1 - + Please wait for SilentDragonLite to exit @@ -1279,7 +1289,7 @@ Would you like to visit the releases page? Por favor, espera silentdragon finalizar - + Waiting for hushd to exit Esperando hushd finalizar @@ -1332,14 +1342,14 @@ Por favor, coloque o host/porta e usuário/senha no menu Editar>Preferências - + Connection Error Erro na Conexão - - + + Transaction Error Erro na transação @@ -1349,8 +1359,8 @@ Por favor, coloque o host/porta e usuário/senha no menu Editar>Preferências Ocorreu um erro enviando a transação. O erro foi: + - No Connection Sem Conexão @@ -1429,7 +1439,7 @@ Por favor, coloque o host/porta e usuário/senha no menu Editar>Preferências Deletar etiqueta - + Tx submitted (right click to copy) txid: Tx enviada (botão-direito para copiar) txid: @@ -1493,33 +1503,33 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç - + No hush price was available to convert from USD - + View on block explorer Ver no explorador de blocos - + View Error - + Reported Error - - + + Are you sure you want to delete the recurring payment? - + All future payments will be cancelled. @@ -1545,37 +1555,37 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç RecurringListViewModel - + Amount Quantidade - + Schedule - + Payments Left - + Next Payment - + To Para - + Every - + None @@ -1591,48 +1601,48 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç RecurringPaymentsListViewModel - + Date - + Status - + Txid - + Not due yet - + Pending - + Skipped - + Paid - + Error - - + + Unknown @@ -1778,17 +1788,17 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç - + Pay - + You are paying a payment request. Your address will not be visible to the person requesting this payment. - + Can only request from Sapling addresses @@ -1898,7 +1908,7 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç Opções - + Check github for updates at startup @@ -1907,27 +1917,22 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç Transações blindadas são salvas localmente e exibidas na aba de transações. Se desmarcado, transações blindadas não aparecerão na aba de transações. - + Connect to github on startup to check for updates - + Connect to the internet to fetch hush prices - - Fetch hush / USD prices - - - - + Theme - + default @@ -1942,32 +1947,87 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç - + blue - + light - + dark - + + Fetch hush prices + + + + + Currency + + + + + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY + + + + + EUR + + + + + GBP + + + + + INR + + + + + USD + + + + Troubleshooting - + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart hushWallet for this to take effect - + Rescan @@ -2183,11 +2243,6 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç Enable Fast Sync - - - Allow connections to the internet to check for updates, get hush/USD prices etc... - - Use custom datadir @@ -2213,6 +2268,11 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç Choose directory + + + Allow connections to the internet to check for updates, get hush prices etc... + + Connect over Tor diff --git a/res/zec_qt_wallet_tr.qm b/res/zec_qt_wallet_tr.qm index 1536a64ce88a5aa8330b2db76645fcaf25f52b52..e76eeafd019a9d81b60f427fc615766dc32adf64 100644 GIT binary patch delta 2319 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 Controller - + Wallet Password - + Your wallet is encrypted. Please enter your wallet password - - + + Wallet Decryption Failed - + Please enter a valid password - + Failed to unlock wallet @@ -124,12 +124,12 @@ Please enter your wallet password Korumalı - + Transparent Transparan - + Total Toplam @@ -138,13 +138,13 @@ Please enter your wallet password Bazı işlemler henüz onaylanmadı - + Address Balances Adres Bakiyeleri - - + + Send Gönder @@ -157,99 +157,99 @@ Please enter your wallet password Adres Bakiyesi - + Send To Alıcıya Gönder - + Recipient Alıcı - - - - + + + + Address Adres - - + + Address Book Adres Defteri - - - - + + + + Amount Miktar - + Max Available Maks. Kullanılabilir - - - - + + + + Memo Memo - + Add Recipient Alıcı Ekle - - + + Miner Fee Madenci Ücreti - + 0 0 - + Cancel İptal - + Receive Al - + Address Type Adres Tipi - + Hush Daemon - + This is a Lightwallet, you cant mine with it! - + &Hush Discord - + &Hush Website @@ -258,7 +258,7 @@ Please enter your wallet password z-Adres(Sapling) - + t-Addr t-Adres @@ -272,113 +272,113 @@ Please enter your wallet password silentdragon - + Your node is still syncing, balances may not be updated Düğümünüz hala senkronize oluyor, bakiyeler güncellenmeyebilir - + Recurring payment Düzenli ödeme - + Notarized - + Your node is still syncing, balances may not be updated. - + Some transactions are not yet confirmed. Balances may change. - + Total notarized funds available: - + Every month, starting 12-May-2012, for 6 payments Her ay, 12-May-2012'den itibaren, 6 ödeme için - + Edit Schedule Programı Düzenle - + z-Addr z-Adres - + New Address Yeni Adres - + View All Addresses Tüm Adresleri Görüntüle - + Label Etiket - + Update Label Etiketi Güncelle - + Address balance Adres bakiyesi - + Optional İsteğe bağlı - - + + Export Private Key Özel Anahtarı Dışarı Aktar - + Transactions İşlemler - + blockHeight - + Version hushlightd - + &Send DenioD Feedback - + Encrypt Wallet - + Remove Wallet Encryption @@ -391,9 +391,9 @@ Please enter your wallet password Şu anda madencilik yapmıyorsunuz - - - + + + Loading... Yükleniyor... @@ -406,54 +406,54 @@ Please enter your wallet password Ağ çözüm oranı - + Vendor Bağlantılar - + | | - + &File Dosya - + &Help Yardım - + &Apps Uygulamalar - + &Edit Düzenle - + E&xit Çıkış - + &About Hakkında - + &Settings Ayarlar - + Ctrl+P Ctrl+P @@ -462,7 +462,7 @@ Please enter your wallet password Bağış Yap - + Check github.com for &updates Güncellemeler için github.com adresini kontrol edin @@ -479,48 +479,48 @@ Please enter your wallet password Özel anahtarı içeri aktar - + &Export all private keys Tüm özel anahtarları dışarı aktar - + &Export seed phrase - - + + Export transactions İşlemleri dışa aktar - + Pay hush &URI... hush URI öde... - + Connect mobile &app Mobil uygulamayı bağla - + Ctrl+M Ctrl+M - + &Recurring Payments Düzenli Ödemeler - + Request hush... hush iste... - + File a bug... Hata bildir... @@ -537,12 +537,12 @@ Please enter your wallet password Ctrl+A, Ctrl+Z - + Address &book Adres defteri - + Ctrl+B Ctrl+B @@ -592,12 +592,12 @@ Please enter your wallet password hushd henüz hazır değil. Lütfen arayüzün yüklenmesini bekleyin - + View tx on block explorer İşlemi blok gezgininde görüntüle - + Refresh Yenile @@ -606,7 +606,7 @@ Please enter your wallet password Tor konfigürasyonu yalnızca gömülü bir hushd çalışırken kullanılabilir. - + You're using an external hushd. Please restart hushd with -rescan Harici bir hushd kullanıyorsun. Lütfen hushd'yi -rescan ile yeniden başlat @@ -663,7 +663,7 @@ Please enter your wallet password hush URI ödeme hatası - + URI should be of the form 'hush:<addr>?amt=x&memo=y URI bu şekilde olmalıdır: 'hush:<addr>?amt=x&memo=y @@ -677,12 +677,12 @@ Please enter your wallet password YOUR_TRANSLATION_HERE - + Error Hata - + Error exporting transactions, file was not saved İşlemler dışa aktarılırken hata oluştu, dosya kaydedilmedi @@ -719,143 +719,153 @@ Please enter your wallet password Bu birkaç dakika sürebilir. Yükleniyor... - + These are all the private keys for all the addresses in your wallet Bunlar, cüzdanınızdaki tüm adreslerin özel anahtarlarıdır - + Private key for için özel anahtar - - + + Save File Dosyayı Kaydet - + Wallet is already encrypted - + Your wallet is already encrypted with a password. Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption. - + Passwords don't match - + Error was: - + Wallet Encrypted - + Your wallet was successfully encrypted! The password will be needed to send funds or export private keys. - - + + Wallet Encryption Failed - + Wallet is not encrypted - + Your wallet is not encrypted with a password. - + Wallet Password - + Please enter your wallet password - - - + + + Wallet Decryption Failed - + Please enter a password to decrypt your wallet! - + Wallet Encryption Removed - + Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys. - + + Currency Change + + + + + Please restart SilentDragonLite to have new currencies apply + + + + This is your wallet seed. Please back it up carefully and safely. - - + + Unable to open file Dosya açılamıyor - + Error getting private keys - + Error loading private keys: - - + + Copy address Adresi kopyala - - - + + + Copied to clipboard Panoya kopyalandı - + Get private key Özel anahtarı al - - + + View on block explorer Blok gezgini üzerinde göster @@ -864,137 +874,137 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet Sapling'e geç - + Copy Address Adresi kopyala - + Address has been previously used Adres daha önce kullanılmış - + Address is unused Adres kullanılmamış - - + + Copy txid txid'i kopyala - + Restart - + Please restart Silentdragonlite to have the theme apply - + Some feedback about SilentDragonlite or Hush... - + Send Duke some private and shielded feedback about - + or SilentDragonLite - + Paste HUSH URI - + Error paying HUSH URI - + View Payment Request Ödeme Talebini Görüntüle - + View Memo Memo'yu Görüntüle - + Reply to - + Created new t-Addr Yeni t-Addr oluşturuldu - + Cannot support multiple addresses Birden fazla adres desteklenemiyor - + Recurring payments doesn't currently support multiple addresses Düzenli ödemeler şu anda birden fazla adresi desteklemiyor - + Recipient Alıcı - + Only z-addresses can have memos Sadece z-adres'leri memo'lara sahip olabilir - + Memos can only be used with z-addresses Memo'lar yalnızca z-adres'leriyle kullanılabilir - + The memo field can only be used with a z-address. Memo alanı yalnızca bir z-adres'i ile kullanılabilir. - + doesn't look like a z-address z-adres'i gibi görünmüyor - + Please wait... - + Computing your transaction - + Done! - + Not enough available funds to send this transaction Have: %1 @@ -1016,7 +1026,7 @@ Note: Funds need 5 confirmations before they can be spent Bu işlemden sonra bakiye: - + Transaction Error İşlem Hatası @@ -1025,17 +1035,17 @@ Note: Funds need 5 confirmations before they can be spent Gönderen Adresi Geçersiz - + Recipient Address Alıcı Adresi - + is Invalid geçersizdir - + Amount for address '%1' is invalid! '% 1' adresinin tutarı geçersiz! @@ -1335,29 +1345,29 @@ daemon=1 hushd'nin eş bağlantısı yok - + There was an error connecting to hushd. The error was hushd ile bağlantı kurulurken bir hata oluştu. Hata - - + + The transaction with id id ile işlem - - + + failed. The error was başarısız oldu. Hata - + Update Available Güncelleme Mevcut - + A new release v%1 is available! You have v%2. Would you like to visit the releases page? @@ -1366,17 +1376,17 @@ Would you like to visit the releases page? Yayınlanan sürümler sayfasını ziyaret etmek ister misiniz? - + No updates available Güncelleme yok - + You already have the latest release v%1 Zaten en son sürüme (v%1) sahipsiniz - + Please wait for SilentDragonLite to exit @@ -1385,7 +1395,7 @@ Yayınlanan sürümler sayfasını ziyaret etmek ister misiniz? Lütfen çıkmak için silentdragon'i bekleyin - + No hush price was available to convert from USD USD'den dönüştürülebilecek hush fiyatı yok @@ -1394,42 +1404,42 @@ Yayınlanan sürümler sayfasını ziyaret etmek ister misiniz? Düzenli İşlem Hesaplama: - - - + + + failed başarısız oldu - - - + + + Tx işlem - + View on block explorer Blok gezgini üzerinde göster - + View Error Hatayı Göster - + Reported Error Rapor Edilen Hata - - + + Are you sure you want to delete the recurring payment? Düzenli ödemeyi silmek istediğinize emin misiniz? - + All future payments will be cancelled. Gelecekteki tüm ödemeler iptal edilecektir. @@ -1442,7 +1452,7 @@ Yayınlanan sürümler sayfasını ziyaret etmek ister misiniz? Lütfen çıkmak için silentdragon'i bekleyin - + Waiting for hushd to exit Çıkmak için hushd bekleniyor @@ -1499,14 +1509,14 @@ Lütfen Düzenle->Ayarlar menüsünde sunucu/bağlantı noktası ve kullanıc - + Connection Error Bağlantı Hatası - - + + Transaction Error İşlem Hatası @@ -1516,8 +1526,8 @@ Lütfen Düzenle->Ayarlar menüsünde sunucu/bağlantı noktası ve kullanıc İşlem gönderilirken bir hata oluştu. Hata: + - No Connection Bağlantı Yok @@ -1596,7 +1606,7 @@ Lütfen Düzenle->Ayarlar menüsünde sunucu/bağlantı noktası ve kullanıc Etiketi sil - + Tx submitted (right click to copy) txid: İşlem gönderildi (kopyalamak için sağ tıklayın) id: @@ -1681,37 +1691,37 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük. RecurringListViewModel - + Amount Miktar - + Schedule Program - + Payments Left Kalan Ödemeler - + Next Payment Sonraki Ödeme - + To Alıcı - + Every Her - + None Yok @@ -1727,48 +1737,48 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük. RecurringPaymentsListViewModel - + Date Tarih - + Status Durum - + Txid İşlem id - + Not due yet Henüz değil - + Pending Kuyrukta - + Skipped Atlandı - + Paid Ödenmiş - + Error Hata - - + + Unknown Bilinmeyen @@ -1914,17 +1924,17 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük. - + Pay Öde - + You are paying a payment request. Your address will not be visible to the person requesting this payment. Bir ödeme isteği ödüyorsunuz. Adresiniz bu ödemeyi isteyen kişiye görünmez. - + Can only request from Sapling addresses Sadece Sapling adreslerinden talep edebilir @@ -2038,7 +2048,7 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük.Tor ile bağlan - + Check github for updates at startup Başlangıçta güncellemeler için github'u kontrol et @@ -2051,27 +2061,26 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük.Tor ağına 127.0.0.1:9050'de çalışan SOCKS proxy üzerinden bağlanın. Lütfen Tor servisini harici olarak kurmanız ve çalıştırmanız gerektiğini lütfen unutmayın. - + Connect to github on startup to check for updates Güncellemeleri denetlemek için başlangıçta github'a bağlanır - + Connect to the internet to fetch hush prices hush fiyatlarını çekmek için internete bağlanır - Fetch hush / USD prices - hush / USD fiyatlarını çek + hush / USD fiyatlarını çek - + Theme - + default @@ -2086,27 +2095,82 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük. - + blue - + light - + dark - + + Fetch hush prices + + + + + Currency + + + + + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY + + + + + EUR + + + + + GBP + + + + + INR + + + + + USD + + + + Troubleshooting Sorun giderme - + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart hushWallet for this to take effect @@ -2119,7 +2183,7 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük.Eksik cüzdan işlemleri ve cüzdan bakiyenizi düzeltmek için blok zincirini yeniden tarayın. Bu birkaç saat sürebilir. Bunun gerçekleşmesi için silentdragon'i yeniden başlatmanız gerekir - + Rescan Yeniden tara @@ -2366,9 +2430,13 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük.Gelişmiş Yapılandırmayı Göster - Allow connections to the internet to check for updates, get hush/USD prices etc... - hush/USD fiyatlarını çekme, güncellemeleri denetleme vb. işlemler için internete bağlanmaya izin ver + hush/USD fiyatlarını çekme, güncellemeleri denetleme vb. işlemler için internete bağlanmaya izin ver + + + + Allow connections to the internet to check for updates, get hush prices etc... + diff --git a/res/zec_qt_wallet_zh.qm b/res/zec_qt_wallet_zh.qm index d447c0d9e3fbef9182631a888a092592836272fa..6b0bc1e68f1efd35f1af565778abbdb49830f409 100644 GIT binary patch delta 2225 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 diff --git a/res/zec_qt_wallet_zh.ts b/res/zec_qt_wallet_zh.ts index 04bd901..13831b6 100644 --- a/res/zec_qt_wallet_zh.ts +++ b/res/zec_qt_wallet_zh.ts @@ -43,29 +43,29 @@ Controller - + Wallet Password - + Your wallet is encrypted. Please enter your wallet password - - + + Wallet Decryption Failed - + Please enter a valid password - + Failed to unlock wallet @@ -121,37 +121,37 @@ Please enter your wallet password 隐蔽余额 - + Notarized - + Transparent 非隐蔽余额 - + Total 所有余额 - + Your node is still syncing, balances may not be updated. - + Some transactions are not yet confirmed. Balances may change. - + Total notarized funds available: - + Your node is still syncing, balances may not be updated 您的节点仍在同步,余额可能没有更新 @@ -160,13 +160,13 @@ Please enter your wallet password 部分交易尚未得到确认 - + Address Balances 地址余额 - - + + Send 发送 @@ -179,180 +179,180 @@ Please enter your wallet password 地址余额 - + Send To 发送给 - + Recipient 接收者 - - - - + + + + Address 地址 - - + + Address Book 地址薄 - - - - + + + + Amount 金额 - + Max Available 最大可发送金额 - - - - + + + + Memo 备注 - + Add Recipient 添加接收者 - + Recurring payment 循环支付 - + Every month, starting 12-May-2012, for 6 payments 从2012年5月12日开始,每月支付6次 - + Edit Schedule 编辑计划 - - + + Miner Fee 矿工费用 - + 0 0 - + Cancel 取消 - + Receive 接收 - + Address Type 地址类型 - + z-Addr 隐蔽地址(z-Addr) - + t-Addr 非隐蔽地址(t-Addr) - + New Address 创建新地址 - + View All Addresses - + Label 标签 - + Update Label 更新标签 - + Address balance 地址余额 - + Optional 可选 - - + + Export Private Key 导出私钥 - + Transactions 交易 - + Hush Daemon - + blockHeight - + Version hushlightd - + &Send DenioD Feedback - + &Export seed phrase - + Encrypt Wallet - + Remove Wallet Encryption @@ -361,17 +361,17 @@ Please enter your wallet password 节点 - + This is a Lightwallet, you cant mine with it! - + &Hush Discord - + &Hush Website @@ -380,9 +380,9 @@ Please enter your wallet password 您目前没有在挖矿 - - - + + + Loading... 加载中... @@ -395,54 +395,54 @@ Please enter your wallet password 全网算力 - + Vendor 连接数 - + | | - + &File &文件 - + &Help &帮助 - + &Apps &应用 - + &Edit &编辑 - + E&xit &退出 - + &About &关于 - + &Settings &设置 - + Ctrl+P Ctrl+P @@ -451,7 +451,7 @@ Please enter your wallet password &捐赠 - + Check github.com for &updates 检查github.com获取和&更新 @@ -468,7 +468,7 @@ Please enter your wallet password &导入私钥 - + &Export all private keys &导出所有私钥 @@ -481,12 +481,12 @@ Please enter your wallet password Ctrl+A, Ctrl+Z - + Address &book &地址簿 - + Ctrl+B Ctrl+B @@ -495,38 +495,38 @@ Please enter your wallet password &备份 wallet.dat - - + + Export transactions 导出交易 - + Pay hush &URI... 支付hush &URI ... - + Connect mobile &app 连接移动&App - + Ctrl+M Ctrl+M - + &Recurring Payments &定期付款 - + Request hush... 请求 hush... - + File a bug... 提交错误... @@ -539,12 +539,12 @@ Please enter your wallet password hushd尚未准备好。 请等待UI加载 - + View tx on block explorer - + Refresh @@ -553,7 +553,7 @@ Please enter your wallet password Tor配置仅在运行嵌入的hushd时可用。 - + You're using an external hushd. Please restart hushd with -rescan 你正在使用外部hushd。 请使用-rescan参数重新启动hushd @@ -622,7 +622,7 @@ Please enter your wallet password 支付hush URI时出错 - + URI should be of the form 'hush:<addr>?amt=x&memo=y URI的格式应为 'hush:<addr>?amt=x&memo=y' @@ -639,12 +639,12 @@ Please enter your wallet password 钥匙是导入的。 重新扫描区块链可能需要几分钟时间。 在此之前,功能可能会受到限制 - + Error 错误 - + Error exporting transactions, file was not saved 导出交易时出错,文件未保存 @@ -677,137 +677,147 @@ Please enter your wallet password 您需要手动备份它。 - + These are all the private keys for all the addresses in your wallet 这些都是钱包中所有地址的私钥 - + Private key for 私钥 - - + + Save File 保存文件 - + Wallet is already encrypted - + Your wallet is already encrypted with a password. Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption. - + Passwords don't match - + Error was: - + Wallet Encrypted - + Your wallet was successfully encrypted! The password will be needed to send funds or export private keys. - - + + Wallet Encryption Failed - + Wallet is not encrypted - + Your wallet is not encrypted with a password. - + Wallet Password - + Please enter your wallet password - - - + + + Wallet Decryption Failed - + Please enter a password to decrypt your wallet! - + Wallet Encryption Removed - + Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys. - + + Currency Change + + + + + Please restart SilentDragonLite to have new currencies apply + + + + This is your wallet seed. Please back it up carefully and safely. - - + + Unable to open file 无法打开文件 - + Error getting private keys - + Error loading private keys: - - + + Copy address 复制成功 - - - + + + Copied to clipboard 复制到剪贴板 - + Get private key 获取私钥 @@ -816,8 +826,8 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet 屏蔽余额到Sapling地址 - - + + View on block explorer 从区块浏览器中查看 @@ -826,137 +836,137 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet 迁移到Sapling地址 - - + + Copy txid 复制交易ID - + Restart - + Please restart Silentdragonlite to have the theme apply - + Some feedback about SilentDragonlite or Hush... - + Send Duke some private and shielded feedback about - + or SilentDragonLite - + Paste HUSH URI - + Error paying HUSH URI - + View Payment Request 查看付款申请 - + View Memo 查看备注 - + Reply to 回复给 - + Created new t-Addr 创建了新的t-Addr - + Copy Address - + Address has been previously used 该地址以前使用过 - + Address is unused 地址未使用 - + Cannot support multiple addresses 不能支持多个地址 - + Recurring payments doesn't currently support multiple addresses 定期付款目前不支持多个地址 - + Recipient 接收者 - + Only z-addresses can have memos 只有 z-addresses 才能有备注 - + Memos can only be used with z-addresses 备注只能与z-addresses一起使用 - + The memo field can only be used with a z-address. 备注字段只能与z-address一起使用。 - + doesn't look like a z-address 看起来不像是z-address - + Please wait... - + Computing your transaction - + Done! - + Not enough available funds to send this transaction Have: %1 @@ -978,7 +988,7 @@ Note: Funds need 5 confirmations before they can be spent 这次交易后余额: - + Transaction Error 交易错误 @@ -987,17 +997,17 @@ Note: Funds need 5 confirmations before they can be spent 发送地址无效 - + Recipient Address 接收地址 - + is Invalid 无效 - + Amount for address '%1' is invalid! @@ -1385,14 +1395,14 @@ Please set the host/port and user/password in the Edit->Settings menu. - + Connection Error 连接错误 - - + + Transaction Error 交易错误 @@ -1402,38 +1412,38 @@ Please set the host/port and user/password in the Edit->Settings menu.发送交易时出错。 错误是: - - - + + + Tx 交易 - - - + + + failed 失败 - - + + The transaction with id 交易 - - + + failed. The error was 失败。 错误是 - + Please wait for SilentDragonLite to exit - + No hush price was available to convert from USD hush的美元价格无法获取 @@ -1442,34 +1452,34 @@ Please set the host/port and user/password in the Edit->Settings menu.计算重复交易: - + View on block explorer 在区块浏览器查看 - + View Error 查看错误 - + Reported Error 报告错误 - - + + Are you sure you want to delete the recurring payment? 您确定要删除定期付款吗? - + All future payments will be cancelled. 所有未来的付款都将被取消。 + - No Connection 没有连接 @@ -1502,7 +1512,7 @@ Please set the host/port and user/password in the Edit->Settings menu.hushd没有节点可连接 - + There was an error connecting to hushd. The error was 连接到hushd时出错。 错误是 @@ -1511,12 +1521,12 @@ Please set the host/port and user/password in the Edit->Settings menu. 交易计算中。 这可能需要几分钟。 - + Update Available 可用更新 - + A new release v%1 is available! You have v%2. Would you like to visit the releases page? @@ -1525,12 +1535,12 @@ Would you like to visit the releases page? 您想访问发布页面吗? - + No updates available 没有可用的更新 - + You already have the latest release v%1 您已拥有最新版本 v%1 @@ -1539,12 +1549,12 @@ Would you like to visit the releases page? 请等待silentdragon退出 - + Waiting for hushd to exit 等待hushd退出 - + Tx submitted (right click to copy) txid: 交易提交(右键单击复制)交易ID: @@ -1629,37 +1639,37 @@ You either have unconfirmed funds or the balance is too low for an automatic mig RecurringListViewModel - + Amount - + Schedule - + Payments Left - + Next Payment - + To - + Every - + None @@ -1675,48 +1685,48 @@ You either have unconfirmed funds or the balance is too low for an automatic mig RecurringPaymentsListViewModel - + Date 日期 - + Status 状态 - + Txid 交易ID - + Not due yet 尚未到期 - + Pending 等待中 - + Skipped 跳过 - + Paid 已支付 - + Error 错误 - - + + Unknown 未知状态 @@ -1862,17 +1872,17 @@ You either have unconfirmed funds or the balance is too low for an automatic mig 支付给 - + Pay 支付 - + You are paying a payment request. Your address will not be visible to the person requesting this payment. 您正在支付一个付款申请。 请求此付款的人员无法看到您的地址。 - + Can only request from Sapling addresses 只能从Sapling地址请求 @@ -1986,7 +1996,7 @@ You either have unconfirmed funds or the balance is too low for an automatic mig 通过Tor连接 - + Check github for updates at startup 启动时检查github更新 @@ -2023,27 +2033,26 @@ You either have unconfirmed funds or the balance is too low for an automatic mig 通过运行在127.0.0.1:9050上的SOCKS代理连接到Tor网络。 请注意,您必须在外部安装和运行Tor服务。 - + Connect to github on startup to check for updates 在启动时连接到github以检查更新 - + Connect to the internet to fetch hush prices 连接到互联网以获取hush价格 - Fetch hush / USD prices - 获取 hush/USD 价格 + 获取 hush/USD 价格 - + Theme - + default @@ -2058,27 +2067,82 @@ You either have unconfirmed funds or the balance is too low for an automatic mig - + blue - + light - + dark - + + Fetch hush prices + + + + + Currency + + + + + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY + + + + + EUR + + + + + GBP + + + + + INR + + + + + USD + + + + Troubleshooting 故障排除 - + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This may take several hours. You need to restart hushWallet for this to take effect @@ -2091,7 +2155,7 @@ You either have unconfirmed funds or the balance is too low for an automatic mig 重新扫描区块链以查找任何丢失的钱包交易并更正您的钱包余额。 这可能需要几个小时。 您需要重新启动silentdragon才能使其生效 - + Rescan 重新扫描 @@ -2299,9 +2363,13 @@ You either have unconfirmed funds or the balance is too low for an automatic mig 显示高级配置 - Allow connections to the internet to check for updates, get hush/USD prices etc... - 允许连接到互联网检查更新,获得hush/USD价格等… + 允许连接到互联网检查更新,获得hush/USD价格等… + + + + Allow connections to the internet to check for updates, get hush prices etc... + diff --git a/silentdragon-lite.pro b/silentdragon-lite.pro index 0121d8e..877cd3d 100644 --- a/silentdragon-lite.pro +++ b/silentdragon-lite.pro @@ -124,7 +124,6 @@ TRANSLATIONS = res/zec_qt_wallet_es.ts \ res/zec_qt_wallet_zh.ts \ res/zec_qt_wallet_tr.ts - include(singleapplication/singleapplication.pri) DEFINES += QAPPLICATION_CLASS=QApplication From 8dc2fe541222b7bd4d68e91d93eaaa128343b9f1 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 23:02:48 +0100 Subject: [PATCH 34/36] bump version to v1.1.0 --- application.qrc | 4 ++++ src/version.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/application.qrc b/application.qrc index abf3ca1..3ecb9eb 100644 --- a/application.qrc +++ b/application.qrc @@ -14,6 +14,10 @@ res/zec_qt_wallet_de.qm + res/zec_qt_wallet_es.qm + res/zec_qt_wallet_fr.qm + res/zec_qt_wallet_pt.qm + res/zec_qt_wallet_it.qm res/css/blue.css diff --git a/src/version.h b/src/version.h index c404d2b..da35bc4 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define APP_VERSION "1.0.1" +#define APP_VERSION "1.1.0" From 6e958be983f20553b04b926d0c9ce458ac3c942d Mon Sep 17 00:00:00 2001 From: Denio Date: Tue, 19 Nov 2019 13:44:19 +0100 Subject: [PATCH 35/36] fix sdl-cli lib and server list --- lib/Cargo.lock | 6 +++--- lib/Cargo.toml | 2 +- src/connection.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/Cargo.lock b/lib/Cargo.lock index 432c1c0..d03ea89 100644 --- a/lib/Cargo.lock +++ b/lib/Cargo.lock @@ -1051,7 +1051,7 @@ version = "0.1.0" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", - "silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=df119fdfff128baca006647851fcc6a2a14b7f92)", + "silentdragonlitelib 0.1.0 (git+https://github.com/MyHush/silentdragonlite-cli?rev=ce987b373505c19784f6482fd900fa1bb988cbce)", ] [[package]] @@ -1467,7 +1467,7 @@ dependencies = [ [[package]] name = "silentdragonlitelib" version = "0.1.0" -source = "git+https://github.com/DenioD/silentdragonlite-cli?rev=df119fdfff128baca006647851fcc6a2a14b7f92#df119fdfff128baca006647851fcc6a2a14b7f92" +source = "git+https://github.com/MyHush/silentdragonlite-cli?rev=ce987b373505c19784f6482fd900fa1bb988cbce#ce987b373505c19784f6482fd900fa1bb988cbce" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bellman 0.1.0 (git+https://github.com/DenioD/librustzcash.git?rev=caaee693c47c2ee9ecd1e1546b8fe3c714f342bc)", @@ -2481,7 +2481,7 @@ dependencies = [ "checksum serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2" "checksum serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)" = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35" "checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" -"checksum silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=df119fdfff128baca006647851fcc6a2a14b7f92)" = "" +"checksum silentdragonlitelib 0.1.0 (git+https://github.com/MyHush/silentdragonlite-cli?rev=ce987b373505c19784f6482fd900fa1bb988cbce)" = "" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" "checksum sodiumoxide 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585232e78a4fc18133eef9946d3080befdf68b906c51b621531c37e91787fa2b" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 94aaca5..faa403c 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -11,4 +11,4 @@ crate-type = ["staticlib"] [dependencies] libc = "0.2.58" lazy_static = "1.4.0" -silentdragonlitelib = { git = "https://github.com/DenioD/silentdragonlite-cli", rev = "df119fdfff128baca006647851fcc6a2a14b7f92" } +silentdragonlitelib = { git = "https://github.com/MyHush/silentdragonlite-cli", rev = "ce987b373505c19784f6482fd900fa1bb988cbce" } diff --git a/src/connection.cpp b/src/connection.cpp index 9b0f214..fae8cef 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -42,7 +42,7 @@ void ConnectionLoader::doAutoConnect() { qDebug() << "Doing autoconnect"; auto config = std::shared_ptr(new ConnectionConfig()); - config->dangerous = false; + config->dangerous = true; config->server = Settings::getInstance()->getSettings().server; // Initialize the library From 448f4743ecf0a36df78dbbdbddbb4faa766f4cc6 Mon Sep 17 00:00:00 2001 From: Denio Date: Tue, 19 Nov 2019 14:47:46 +0100 Subject: [PATCH 36/36] fix txttablemodel.cpp --- src/txtablemodel.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/txtablemodel.cpp b/src/txtablemodel.cpp index f296881..23920b2 100644 --- a/src/txtablemodel.cpp +++ b/src/txtablemodel.cpp @@ -159,13 +159,30 @@ QVariant TxTableModel::data(const QModelIndex &index, int role) const { total = total + dat.items[i].amount; } if (Settings::getInstance()->get_currency_name() == "USD") { - return total.toDecimalUSDString(); + return total.toDecimalUSDString(); } else if (Settings::getInstance()->get_currency_name() == "EUR") { return total.toDecimalEURString(); - } else if (Settings::getInstance()->get_currency_name() == "BTC") { - return total.toDecimalBTCString(); - } - + } else if (Settings::getInstance()->get_currency_name() == "BTC") { + return total.toDecimalBTCString(); + } else if (Settings::getInstance()->get_currency_name() == "EUR") { + return total.toDecimalEURString(); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + return total.toDecimalCNYString(); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + return total.toDecimalRUBString(); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + return total.toDecimalCADString(); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + return total.toDecimalSGDString(); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + return total.toDecimalCHFString(); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + return total.toDecimalINRString(); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + return total.toDecimalGBPString(); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + return total.toDecimalAUDString(); + } } } }