Compare commits
22 Commits
45f69aa78f
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 288b54be6c | |||
| 221231b53b | |||
| b7a04bebc1 | |||
| f5d26dd34d | |||
| ff8368ca97 | |||
| 7ec272df90 | |||
| e2071653b9 | |||
| 90383b0f43 | |||
| 5fe5447474 | |||
| cc34cc3f21 | |||
| e601048fd8 | |||
| cd5a9f3736 | |||
|
|
b0d7319182 | ||
|
|
336d85e6c7 | ||
|
|
54813c8827 | ||
|
|
0865358171 | ||
|
|
573fba9ba0 | ||
|
|
054dcb451b | ||
|
|
9947c14411 | ||
|
|
9f47d1e293 | ||
|
|
f620f6c519 | ||
|
|
00fe0ea59d |
@@ -1,6 +1,6 @@
|
|||||||
# SilentDragonXLite
|
# SilentDragonXLite
|
||||||
|
|
||||||
SilentDragonXLite is a lightwallet for DRAGONX ($DRAGONX) runs on Linux and Windows which does not require you to download the full blockchain. This is experimental software under active development!
|
SilentDragonXLite is a lightwallet for DRAGONX ($DRAGONX) runs on Linux, Windows, and Mac which does not require you to download the full blockchain. This is experimental software under active development!
|
||||||
|
|
||||||
## PRIVACY NOTICE
|
## PRIVACY NOTICE
|
||||||
|
|
||||||
|
|||||||
55
RELEASE_NOTES_v1.1.0.md
Normal file
55
RELEASE_NOTES_v1.1.0.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# SilentDragonXLite v1.1.0 Release Notes
|
||||||
|
|
||||||
|
## What's New
|
||||||
|
|
||||||
|
### DragonX Compatibility
|
||||||
|
- Full compatibility with the DragonX blockchain
|
||||||
|
- Updated payment URIs from `hush:` to `drgx:`
|
||||||
|
- Updated branding and UI strings throughout
|
||||||
|
|
||||||
|
### Crash Fixes
|
||||||
|
- Fixed Rust FFI panics with `catch_unwind` wrappers and safe CString construction
|
||||||
|
- Handle poisoned mutex/RwLock from prior panics instead of crashing
|
||||||
|
- Fixed empty block list panics in `clear_blocks` and `invalidate_block`
|
||||||
|
- Removed `throw;` in exception handler that caused undefined behavior
|
||||||
|
|
||||||
|
### Reorg Detection & Stuck Sync Recovery
|
||||||
|
- Detects stuck syncs (10-second stall threshold) and prompts the user to repair
|
||||||
|
- Chain reorganization detection with one-time user prompt to clear and re-sync
|
||||||
|
- Prevents duplicate reorg dialogs
|
||||||
|
|
||||||
|
### Server Failover
|
||||||
|
- All 6 lite servers available: lite, lite1-5.dragonx.is
|
||||||
|
- Random server selection with connectivity probing — dead servers are automatically skipped
|
||||||
|
- Server dropdown in settings for manual selection
|
||||||
|
|
||||||
|
### Faster Block Sync
|
||||||
|
- Reuses Tokio runtime across block fetch batches, eliminating per-batch runtime creation overhead
|
||||||
|
|
||||||
|
### Clean Shutdown
|
||||||
|
- Added 15-second timeout on wallet save during exit — the app will no longer hang on close
|
||||||
|
- Rust background threads (mempool monitor) are now cleanly stopped on exit via `litelib_shutdown()`
|
||||||
|
|
||||||
|
### Wallet Safety
|
||||||
|
- Atomic wallet saves: writes to a temp file, then renames over the original — a crash during save can no longer corrupt the wallet
|
||||||
|
- Automatic `.bak` backup created before each save
|
||||||
|
- On startup, if the wallet file is missing or corrupted, automatically recovers from the backup
|
||||||
|
|
||||||
|
### Seed Phrase
|
||||||
|
- Added "Skip Verification" button to seed phrase wizard for faster wallet setup
|
||||||
|
|
||||||
|
### UI Contrast Improvements
|
||||||
|
- Fixed disabled buttons being invisible (white text on white background)
|
||||||
|
- Fixed setup wizard, message boxes, and dialog contrast for the dark theme
|
||||||
|
- Chat bubbles now use dark themed backgrounds matching the overall UI
|
||||||
|
- Seed verification buttons styled with proper contrast
|
||||||
|
- Fixed hyperlink color in Terms of Service (blue on dark was unreadable)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Downloads
|
||||||
|
|
||||||
|
| File | SHA-256 |
|
||||||
|
|---|---|
|
||||||
|
| `SilentDragonXLite` (Linux) | `f9d3e3a8cd916b2d83dda89bc181670ef2cdd8b9ae5a50ef3a1c0e76e74f04fc` |
|
||||||
|
| `SilentDragonXLite.exe` (Windows) | `5064082c1300c42bef5c0f767e39743b08c66641eb495e1d975cbfb163b76cb0` |
|
||||||
18
RELEASE_NOTES_v1.1.1.md
Normal file
18
RELEASE_NOTES_v1.1.1.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# SilentDragonXLite v1.1.1 Release Notes
|
||||||
|
|
||||||
|
## What's New
|
||||||
|
|
||||||
|
### Transaction Display Fix
|
||||||
|
- **Fixed sent transactions showing wrong addresses** — Previously, sending to a single address would display multiple addresses in the transaction history (the recipient plus the wallet's own diversified change addresses). Change outputs are now correctly detected using Incoming Viewing Key (IVK) decryption instead of a static address list, so only the actual recipient address is shown.
|
||||||
|
|
||||||
|
### Wallet Birthday Fix
|
||||||
|
- **Fixed "Failed to parse wallet birthday" error** — Rescanning the wallet no longer fails due to trailing whitespace in the birthday height input.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Downloads
|
||||||
|
|
||||||
|
| File | SHA-256 |
|
||||||
|
|---|---|
|
||||||
|
| `SilentDragonXLite` (Linux) | `ac44fbdfa343ffb550829827e3fbb95407e2ca3086d6bc34befdc7b5644763a7` |
|
||||||
|
| `SilentDragonXLite.exe` (Windows) | `093b6830f23b1f1d407c47f2df90a2c1465b2882a0c3b375237a5b731e36362c` |
|
||||||
BIN
SilentDragonXLite
Executable file
BIN
SilentDragonXLite
Executable file
Binary file not shown.
37
SilentDragonXLite_resource.rc
Normal file
37
SilentDragonXLite_resource.rc
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
IDI_ICON1 ICON DISCARDABLE "/home/d/external/SilentDragonXLite/res/icon.ico"
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 0,0,0,0
|
||||||
|
PRODUCTVERSION 0,0,0,0
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS VS_FF_DEBUG
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS VOS__WINDOWS32
|
||||||
|
FILETYPE VFT_APP
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "\0"
|
||||||
|
VALUE "FileDescription", "\0"
|
||||||
|
VALUE "FileVersion", "0.0.0.0\0"
|
||||||
|
VALUE "LegalCopyright", "\0"
|
||||||
|
VALUE "OriginalFilename", "SilentDragonXLite.exe\0"
|
||||||
|
VALUE "ProductName", "SilentDragonXLite\0"
|
||||||
|
VALUE "ProductVersion", "0.0.0.0\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x0409, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
|
/* End of Version info */
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<file>res/css/Default.css</file>
|
<file>res/css/Default.css</file>
|
||||||
<file>res/css/Light.css</file>
|
<file>res/css/Light.css</file>
|
||||||
<file>res/css/Midnight.css</file>
|
<file>res/css/Midnight.css</file>
|
||||||
<file>res/css/test.css</file>
|
<file>res/css/dragonx.css</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/images/blue">
|
<qresource prefix="/images/blue">
|
||||||
<file>res/images/blue/unchecked.png</file>
|
<file>res/images/blue/unchecked.png</file>
|
||||||
|
|||||||
2
build.sh
2
build.sh
@@ -49,7 +49,7 @@ CONF=silentdragonx-lite.pro
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
qbuild () {
|
qbuild () {
|
||||||
qmake $CONF CONFIG+=debug
|
qmake $CONF CONFIG+=release
|
||||||
#lupdate $CONF
|
#lupdate $CONF
|
||||||
#lrelease $CONF
|
#lrelease $CONF
|
||||||
# default to 2 jobs or use the -j value given as argument to this script
|
# default to 2 jobs or use the -j value given as argument to this script
|
||||||
|
|||||||
2
lib/.cargo/config.toml
Normal file
2
lib/.cargo/config.toml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[net]
|
||||||
|
git-fetch-with-cli = true
|
||||||
49
lib/Cargo.lock
generated
49
lib/Cargo.lock
generated
@@ -127,7 +127,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "7f80256bc78f67e7df7e36d77366f636ed976895d91fe2ab9efa3973e8fe8c4f"
|
checksum = "7f80256bc78f67e7df7e36d77366f636ed976895d91fe2ab9efa3973e8fe8c4f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"backtrace-sys",
|
"backtrace-sys",
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"libc",
|
"libc",
|
||||||
"rustc-demangle",
|
"rustc-demangle",
|
||||||
]
|
]
|
||||||
@@ -230,7 +230,7 @@ dependencies = [
|
|||||||
"arrayref",
|
"arrayref",
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"cc",
|
"cc",
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"constant_time_eq",
|
"constant_time_eq",
|
||||||
"crypto-mac",
|
"crypto-mac",
|
||||||
"digest",
|
"digest",
|
||||||
@@ -330,6 +330,12 @@ version = "0.1.10"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chrono"
|
name = "chrono"
|
||||||
version = "0.4.10"
|
version = "0.4.10"
|
||||||
@@ -378,7 +384,7 @@ version = "1.2.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
|
checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -394,7 +400,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4"
|
checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg 0.1.7",
|
"autocfg 0.1.7",
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -438,7 +444,7 @@ version = "2.0.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
|
checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"dirs-sys",
|
"dirs-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -448,7 +454,7 @@ version = "0.3.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b"
|
checksum = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"libc",
|
"libc",
|
||||||
"redox_users",
|
"redox_users",
|
||||||
"winapi 0.3.8",
|
"winapi 0.3.8",
|
||||||
@@ -523,7 +529,7 @@ version = "0.2.8"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1ff6d4dab0aa0c8e6346d46052e93b13a16cf847b54ed357087c35011048cc7d"
|
checksum = "1ff6d4dab0aa0c8e6346d46052e93b13a16cf847b54ed357087c35011048cc7d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"libc",
|
"libc",
|
||||||
"redox_syscall",
|
"redox_syscall",
|
||||||
"winapi 0.3.8",
|
"winapi 0.3.8",
|
||||||
@@ -541,7 +547,7 @@ version = "1.0.13"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f"
|
checksum = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"crc32fast",
|
"crc32fast",
|
||||||
"libc",
|
"libc",
|
||||||
"miniz_oxide",
|
"miniz_oxide",
|
||||||
@@ -657,7 +663,7 @@ version = "0.1.14"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
|
checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"libc",
|
"libc",
|
||||||
"wasi",
|
"wasi",
|
||||||
]
|
]
|
||||||
@@ -861,9 +867,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.66"
|
version = "0.2.161"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
|
checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libflate"
|
name = "libflate"
|
||||||
@@ -912,7 +918,7 @@ version = "0.4.8"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
|
checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -974,7 +980,7 @@ version = "0.6.21"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
|
checksum = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"fuchsia-zircon",
|
"fuchsia-zircon",
|
||||||
"fuchsia-zircon-sys",
|
"fuchsia-zircon-sys",
|
||||||
"iovec",
|
"iovec",
|
||||||
@@ -1044,7 +1050,7 @@ version = "0.2.33"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
|
checksum = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"libc",
|
"libc",
|
||||||
"winapi 0.3.8",
|
"winapi 0.3.8",
|
||||||
]
|
]
|
||||||
@@ -1335,6 +1341,7 @@ dependencies = [
|
|||||||
"lazy_static",
|
"lazy_static",
|
||||||
"libc",
|
"libc",
|
||||||
"silentdragonxlitelib",
|
"silentdragonxlitelib",
|
||||||
|
"socket2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1849,7 +1856,6 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "silentdragonxlitelib"
|
name = "silentdragonxlitelib"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.hush.is/dragonx/silentdragonxlite-cli?rev=39ec5f36662ba7370dffa6c8346f93633dfa29ce#39ec5f36662ba7370dffa6c8346f93633dfa29ce"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base58",
|
"base58",
|
||||||
"bellman",
|
"bellman",
|
||||||
@@ -1908,13 +1914,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "socket2"
|
name = "socket2"
|
||||||
version = "0.3.11"
|
version = "0.3.19"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85"
|
checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 1.0.0",
|
||||||
"libc",
|
"libc",
|
||||||
"redox_syscall",
|
|
||||||
"winapi 0.3.8",
|
"winapi 0.3.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -2011,7 +2016,7 @@ version = "3.1.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
|
checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"libc",
|
"libc",
|
||||||
"rand 0.7.3",
|
"rand 0.7.3",
|
||||||
"redox_syscall",
|
"redox_syscall",
|
||||||
@@ -2367,7 +2372,7 @@ version = "0.1.12"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3"
|
checksum = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"log",
|
"log",
|
||||||
"tracing-attributes",
|
"tracing-attributes",
|
||||||
"tracing-core",
|
"tracing-core",
|
||||||
@@ -2507,7 +2512,7 @@ version = "0.2.58"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c"
|
checksum = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
"wasm-bindgen-macro",
|
"wasm-bindgen-macro",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -12,4 +12,5 @@ crate-type = ["staticlib"]
|
|||||||
libc = "0.2.58"
|
libc = "0.2.58"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
blake3 = "0.3.4"
|
blake3 = "0.3.4"
|
||||||
silentdragonxlitelib = { git = "https://git.hush.is/dragonx/silentdragonxlite-cli", rev = "39ec5f36662ba7370dffa6c8346f93633dfa29ce" }
|
silentdragonxlitelib = { path = "/home/d/external/silentdragonxlite-cli/lib" }
|
||||||
|
socket2 = "0.3.11"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ifeq ($(shell uname),Darwin)
|
|||||||
CFLAGS := "-mmacosx-version-min=10.11"
|
CFLAGS := "-mmacosx-version-min=10.11"
|
||||||
else
|
else
|
||||||
EXT := a
|
EXT := a
|
||||||
CFLAGS := ""
|
CFLAGS :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PWD := $(shell pwd)
|
PWD := $(shell pwd)
|
||||||
|
|||||||
@@ -9,12 +9,14 @@ extern bool litelib_wallet_exists (const char* chain_name);
|
|||||||
extern char * litelib_initialize_new (bool dangerous, const char* server);
|
extern char * litelib_initialize_new (bool dangerous, const char* server);
|
||||||
extern char * litelib_initialize_new_from_phrase
|
extern char * litelib_initialize_new_from_phrase
|
||||||
(bool dangerous, const char* server, const char* seed,
|
(bool dangerous, const char* server, const char* seed,
|
||||||
unsigned long long birthday, unsigned long long number);
|
unsigned long long birthday, unsigned long long number,
|
||||||
|
bool overwrite);
|
||||||
extern char * litelib_initialize_existing (bool dangerous,const char* server);
|
extern char * litelib_initialize_existing (bool dangerous,const char* server);
|
||||||
extern char * litelib_execute (const char* s, const char* args);
|
extern char * litelib_execute (const char* s, const char* args);
|
||||||
extern void litelib_rust_free_string (char* s);
|
extern void litelib_rust_free_string (char* s);
|
||||||
extern char * blake3_PW (char* pw);
|
extern char * blake3_PW (char* pw);
|
||||||
extern bool litelib_check_server_online (const char* server);
|
extern bool litelib_check_server_online (const char* server);
|
||||||
|
extern void litelib_shutdown (void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
122
lib/src/lib.rs
122
lib/src/lib.rs
@@ -7,9 +7,21 @@ use std::ffi::{CStr, CString};
|
|||||||
use std::sync::{Mutex, Arc};
|
use std::sync::{Mutex, Arc};
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
use std::panic;
|
||||||
|
|
||||||
use silentdragonxlitelib::{commands, lightclient::{LightClient, LightClientConfig}};
|
use silentdragonxlitelib::{commands, lightclient::{LightClient, LightClientConfig}};
|
||||||
|
|
||||||
|
/// Helper to create a CString, replacing null bytes to avoid panics
|
||||||
|
fn safe_cstring(s: &str) -> CString {
|
||||||
|
let cleaned: String = s.replace('\0', "");
|
||||||
|
CString::new(cleaned).unwrap_or_else(|_| CString::new("Error: failed to create CString").unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Helper to create an error CString
|
||||||
|
fn error_cstring(msg: &str) -> *mut c_char {
|
||||||
|
safe_cstring(&format!("Error: {}", msg)).into_raw()
|
||||||
|
}
|
||||||
|
|
||||||
// We'll use a MUTEX to store a global lightclient instance,
|
// We'll use a MUTEX to store a global lightclient instance,
|
||||||
// so we don't have to keep creating it. We need to store it here, in rust
|
// so we don't have to keep creating it. We need to store it here, in rust
|
||||||
// because we can't return such a complex structure back to C++
|
// because we can't return such a complex structure back to C++
|
||||||
@@ -100,10 +112,13 @@ pub extern fn litelib_initialize_new(dangerous: bool,server: *const c_char) -> *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LIGHTCLIENT.lock().unwrap().replace(Some(lc));
|
match LIGHTCLIENT.lock() {
|
||||||
|
Ok(l) => { l.replace(Some(lc)); },
|
||||||
|
Err(poisoned) => { poisoned.into_inner().replace(Some(lc)); },
|
||||||
|
};
|
||||||
|
|
||||||
// Return the wallet's seed
|
// Return the wallet's seed
|
||||||
let s_str = CString::new(seed).unwrap();
|
let s_str = safe_cstring(&seed);
|
||||||
return s_str.into_raw();
|
return s_str.into_raw();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,6 +140,17 @@ pub extern "C" fn litelib_initialize_new_from_phrase(dangerous: bool, server: *c
|
|||||||
|
|
||||||
//println!("Initializing with server: {}, seed: {}", server_str, seed_str);
|
//println!("Initializing with server: {}, seed: {}", server_str, seed_str);
|
||||||
|
|
||||||
|
// Shut down the existing client if one is running, to stop background threads
|
||||||
|
if overwrite {
|
||||||
|
let old_lc = match LIGHTCLIENT.lock() {
|
||||||
|
Ok(l) => l.borrow().clone(),
|
||||||
|
Err(poisoned) => poisoned.into_inner().borrow().clone(),
|
||||||
|
};
|
||||||
|
if let Some(lc) = old_lc {
|
||||||
|
lc.shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let server = LightClientConfig::get_server_or_default(Some(server_str));
|
let server = LightClientConfig::get_server_or_default(Some(server_str));
|
||||||
let (config, _latest_block_height) = match LightClientConfig::create(server, dangerous) {
|
let (config, _latest_block_height) = match LightClientConfig::create(server, dangerous) {
|
||||||
Ok((c, h)) => {
|
Ok((c, h)) => {
|
||||||
@@ -159,9 +185,12 @@ pub extern "C" fn litelib_initialize_new_from_phrase(dangerous: bool, server: *c
|
|||||||
Err(e) => println!("Could not start mempool: {}", e)
|
Err(e) => println!("Could not start mempool: {}", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
LIGHTCLIENT.lock().unwrap().replace(Some(lc));
|
match LIGHTCLIENT.lock() {
|
||||||
|
Ok(l) => { l.replace(Some(lc)); },
|
||||||
|
Err(poisoned) => { poisoned.into_inner().replace(Some(lc)); },
|
||||||
|
};
|
||||||
|
|
||||||
let c_str = CString::new("OK").unwrap_or_else(|_| CString::new("CString creation failed").unwrap());
|
let c_str = safe_cstring("OK");
|
||||||
return c_str.into_raw();
|
return c_str.into_raw();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,47 +231,56 @@ pub extern fn litelib_initialize_existing(dangerous: bool, server: *const c_char
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LIGHTCLIENT.lock().unwrap().replace(Some(lc));
|
match LIGHTCLIENT.lock() {
|
||||||
|
Ok(l) => { l.replace(Some(lc)); },
|
||||||
|
Err(poisoned) => { poisoned.into_inner().replace(Some(lc)); },
|
||||||
|
};
|
||||||
|
|
||||||
let c_str = CString::new("OK").unwrap();
|
let c_str = safe_cstring("OK");
|
||||||
return c_str.into_raw();
|
return c_str.into_raw();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern fn litelib_execute(cmd: *const c_char, args: *const c_char) -> *mut c_char {
|
pub extern fn litelib_execute(cmd: *const c_char, args: *const c_char) -> *mut c_char {
|
||||||
let cmd_str = unsafe {
|
let result = panic::catch_unwind(|| {
|
||||||
assert!(!cmd.is_null());
|
let cmd_str = unsafe {
|
||||||
|
assert!(!cmd.is_null());
|
||||||
CStr::from_ptr(cmd).to_string_lossy().into_owned()
|
CStr::from_ptr(cmd).to_string_lossy().into_owned()
|
||||||
};
|
|
||||||
|
|
||||||
let arg_str = unsafe {
|
|
||||||
assert!(!args.is_null());
|
|
||||||
|
|
||||||
CStr::from_ptr(args).to_string_lossy().into_owned()
|
|
||||||
};
|
|
||||||
|
|
||||||
let resp: String;
|
|
||||||
{
|
|
||||||
let lightclient: Arc<LightClient>;
|
|
||||||
{
|
|
||||||
let lc = LIGHTCLIENT.lock().unwrap();
|
|
||||||
|
|
||||||
if lc.borrow().is_none() {
|
|
||||||
let e_str = CString::new("Error: Light Client is not initialized").unwrap();
|
|
||||||
return e_str.into_raw();
|
|
||||||
}
|
|
||||||
|
|
||||||
lightclient = lc.borrow().as_ref().unwrap().clone();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let args = if arg_str.is_empty() { vec![] } else { vec![arg_str.as_ref()] };
|
let arg_str = unsafe {
|
||||||
|
assert!(!args.is_null());
|
||||||
|
CStr::from_ptr(args).to_string_lossy().into_owned()
|
||||||
|
};
|
||||||
|
|
||||||
resp = commands::do_user_command(&cmd_str, &args, lightclient.as_ref()).clone();
|
let resp: String;
|
||||||
};
|
{
|
||||||
|
let lightclient: Arc<LightClient>;
|
||||||
|
{
|
||||||
|
let lc = match LIGHTCLIENT.lock() {
|
||||||
|
Ok(l) => l,
|
||||||
|
Err(poisoned) => poisoned.into_inner(),
|
||||||
|
};
|
||||||
|
|
||||||
let c_str = CString::new(resp.as_bytes()).unwrap();
|
if lc.borrow().is_none() {
|
||||||
return c_str.into_raw();
|
return error_cstring("Light Client is not initialized");
|
||||||
|
}
|
||||||
|
|
||||||
|
lightclient = lc.borrow().as_ref().unwrap().clone();
|
||||||
|
};
|
||||||
|
|
||||||
|
let args = if arg_str.is_empty() { vec![] } else { vec![arg_str.as_ref()] };
|
||||||
|
|
||||||
|
resp = commands::do_user_command(&cmd_str, &args, lightclient.as_ref()).clone();
|
||||||
|
};
|
||||||
|
|
||||||
|
safe_cstring(&resp).into_raw()
|
||||||
|
});
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Ok(ptr) => ptr,
|
||||||
|
Err(_) => error_cstring("Rust panic in litelib_execute"),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check is Server Connection is fine
|
// Check is Server Connection is fine
|
||||||
@@ -263,6 +301,20 @@ pub extern "C" fn litelib_check_server_online(server: *const c_char) -> bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Cleanly shut down the light client, stopping mempool monitor threads.
|
||||||
|
/// Must be called before exit to prevent hangs.
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern "C" fn litelib_shutdown() {
|
||||||
|
let lc_option = match LIGHTCLIENT.lock() {
|
||||||
|
Ok(l) => l.borrow().clone(),
|
||||||
|
Err(poisoned) => poisoned.into_inner().borrow().clone(),
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Some(lc) = lc_option {
|
||||||
|
lc.shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callers that receive string return values from other functions should call this to return the string
|
* Callers that receive string return values from other functions should call this to return the string
|
||||||
* back to rust, so it can be freed. Failure to call this function will result in a memory leak
|
* back to rust, so it can be freed. Failure to call this function will result in a memory leak
|
||||||
|
|||||||
@@ -1,114 +1,596 @@
|
|||||||
|
/*
|
||||||
|
colors
|
||||||
|
background: rgb(24, 12, 12)
|
||||||
|
object-background: #45505e
|
||||||
|
object-background-hover: #1f242b
|
||||||
|
object-background-press: #0c0e11
|
||||||
|
text-main: white
|
||||||
|
text-secondary: rgba(255, 255, 255, 0.75)
|
||||||
|
text-dark: rgb(24, 12, 12)
|
||||||
|
border: rgb(216, 38, 82)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
QWidget, QMainWindow, QMenuBar, QMenu, QDialog, QTabWidget, QTableView, QScrollArea, QGroupBox, QPlainTextEdit, QLineEdit, QLabel, MainWindow {
|
QWidget, QMainWindow, QMenuBar, QMenu, QDialog, QTabWidget, QTableView, QScrollArea, QGroupBox, QPlainTextEdit, QLineEdit, QLabel, MainWindow {
|
||||||
background-color: #232834;
|
color: white;
|
||||||
color: #91a4b8;
|
border: 0px solid rgba(0, 0, 0, 0);
|
||||||
|
background-color: rgb(24, 21, 21);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* window menu options */
|
||||||
|
QMenu {
|
||||||
|
color: white;
|
||||||
|
border: 1px solid rgba(216, 38, 82, .5);
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: rgba(24, 21, 21, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QMenuBar {
|
||||||
|
color: rgb(216, 38, 82);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMenuBar::item {
|
||||||
|
color: rgb(216, 38, 82);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#title {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTabWidget QTabBar {
|
||||||
|
background-color: rgba(41, 21, 21, .25);
|
||||||
|
width: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
QTabWidget QTabBar::tab {
|
QTabWidget QTabBar::tab {
|
||||||
padding-left:20px;
|
margin: 12px 4px;
|
||||||
padding-right:20px;
|
padding: 6px 4px;
|
||||||
padding-top:5px;
|
font-size: 20px;
|
||||||
padding-bottom:5px;
|
border: 0px solid white;
|
||||||
border: 1px solid #343F4B;
|
border-radius: 9px;
|
||||||
background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.25, stop: 0 #343F4B, stop: 1 #232834);
|
background-color: rgba(41, 21, 21, 1);
|
||||||
|
min-width: 130px;
|
||||||
}
|
}
|
||||||
|
QTabWidget QTabBar::tab::last {
|
||||||
|
min-width: 280px;
|
||||||
|
}
|
||||||
|
|
||||||
QTabWidget QTabBar::tab:selected {
|
QTabWidget QTabBar::tab:selected {
|
||||||
min-height: 10px;
|
color: rgba(255, 255, 255, 0.85);
|
||||||
background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.25, stop: 0 #343F4B, stop: 1 #232834);
|
border: 1px solid rgba(216, 38, 82, 0.85);
|
||||||
color:#91a4b8;
|
background-color: rgba(216, 38, 82, 0.25);
|
||||||
border: 1px ridge #91a4b8;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QTabWidget QTabBar::tab:hover {
|
QTabWidget QTabBar::tab:hover {
|
||||||
background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.25, stop: 0 #343F4B, stop: 1 #232834);
|
color: white;
|
||||||
color:#91a4b8;
|
border: 1px solid rgba(216, 38, 82, 1);
|
||||||
border: 1px ridge #91a4b8;
|
background-color: rgba(216, 38, 82, 0.4);
|
||||||
min-height: 20px
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView {
|
QHeaderView {
|
||||||
/* Table Header */
|
/* Table Header */
|
||||||
background-color:#232834;
|
background-color: rgba(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView::section {
|
QHeaderView::section {
|
||||||
/* Table Header Sections */
|
/* Table Header Sections */
|
||||||
qproperty-alignment:center;
|
/* qproperty-alignment:center; */
|
||||||
background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.25, stop: 0 #343F4B, stop: 1 #232834);
|
|
||||||
color:#91a4b8;
|
|
||||||
min-height:25px;
|
min-height:25px;
|
||||||
font-weight:bold;
|
|
||||||
font-size:11px;
|
|
||||||
outline:0;
|
outline:0;
|
||||||
border:1px solid #343F4B;
|
|
||||||
border-right:1px solid #91a4b8;
|
|
||||||
border-left:1px solid #91a4b8;
|
|
||||||
padding-left:5px;
|
padding-left:5px;
|
||||||
padding-right:5px;
|
padding-right:5px;
|
||||||
padding-top:2px;
|
padding-top:2px;
|
||||||
padding-bottom:2px;
|
padding-bottom:2px;
|
||||||
|
color:#91a4b8;
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:11px;
|
||||||
|
border:1px solid rgb(41, 21, 21);
|
||||||
|
border-right:1px solid #91a4b8;
|
||||||
|
border-left:1px solid #91a4b8;
|
||||||
}
|
}
|
||||||
QHeaderView::section:last {
|
|
||||||
border-right: 0px solid #d7d7d7;
|
|
||||||
|
QTabBar {
|
||||||
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
QScrollArea {
|
|
||||||
background:transparent;
|
QLabel {
|
||||||
border:0px;
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border: 0px solid rgba(255, 255, 255, 0);
|
||||||
|
background-color: rgba(255, 255, 255, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
QLineEdit {
|
||||||
|
padding: 2px 4px;
|
||||||
|
color: white;
|
||||||
|
border: 1px solid rgb(216, 38, 82);
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
background-color: rgba(41, 21, 21, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QGroupBox{
|
||||||
|
padding: 12px;
|
||||||
|
padding-top: 32px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.45);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.6);
|
||||||
|
border-radius: 8px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QGroupBox::title {
|
||||||
|
padding: 4px 12px;
|
||||||
|
color: rgba(255, 255, 255, 0.85);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.25);
|
||||||
|
border-top-left-radius: 8px;
|
||||||
|
border-bottom-right-radius: 8px;
|
||||||
|
background-color: rgba(216, 38, 82, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
QGroupBox#groupBox QLabel {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton {
|
||||||
|
padding: 6px 10px;
|
||||||
|
color: rgba(255, 255, 255, 0.5);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: rgba(216, 38, 82, 0.15);
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
QPushButton:hover {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.55);
|
||||||
|
background-color: rgba(216, 38, 82, 0.45);
|
||||||
|
}
|
||||||
|
QPushButton:selected {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
background-color: rgba(216, 38, 82, 0.75);
|
||||||
|
}
|
||||||
|
QPushButton:disabled {
|
||||||
|
color: rgba(255, 255, 255, 0.35);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.15);
|
||||||
|
background-color: rgba(41, 21, 21, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
QComboBox{
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollArea#sendToScrollArea QWidget {
|
||||||
|
border: 0px solid rgb(216, 38, 82, 0);
|
||||||
|
background-color: rgba(24, 12, 12, 0.45);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QScrollBar {
|
||||||
|
border: 0px solid rgba(216, 38, 82, 0);
|
||||||
|
background-color: rgba(24, 12, 12, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollBar:vertical {
|
||||||
|
width: 22px;
|
||||||
|
margin: 0 2px;
|
||||||
|
border: 2px solid rgba(216, 38, 82, 0);
|
||||||
|
background-color: rgba(0, 0, 0 , 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollBar::handle:vertical,
|
||||||
|
QScrollBar::handle:horizontal {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 1);
|
||||||
|
border-radius: 6px;
|
||||||
|
background-color: rgba(216, 38, 82, 0.25);
|
||||||
|
}
|
||||||
|
QScrollBar::handle:vertical {
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollBar::add-line {
|
||||||
|
height: 0px;
|
||||||
|
subcontrol-position: bottom;
|
||||||
|
subcontrol-origin: margin;
|
||||||
|
|
||||||
|
}
|
||||||
|
QScrollBar::sub-line {
|
||||||
|
height: 0px;
|
||||||
|
subcontrol-position: top;
|
||||||
|
subcontrol-origin: margin;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollBar::add-page, QScrollBar::sub-page {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QComboBox QAbstractItemView {
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.5);
|
||||||
|
selection-background-color: rgb(118, 132, 153);
|
||||||
|
}
|
||||||
|
|
||||||
|
QComboBox QAbstractItemView::item{
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.25);
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.5);
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
QComboBox QAbstractItemView::item:selected{
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.5);
|
||||||
|
outline:none;
|
||||||
|
}
|
||||||
|
QComboBox QAbstractItemView::item:hover {
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.75);
|
||||||
|
outline:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QListView{
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* TAB 1 - HUSHCHAT */
|
||||||
|
|
||||||
|
/* chat window */
|
||||||
|
QListView#listChat,
|
||||||
|
QListView#listContactWidget {
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
background-color: rgba(216, 38, 82, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#emojiButton,
|
||||||
|
QPushButton#pushContact,
|
||||||
|
QPushButton#safeContactRequest,
|
||||||
|
QPushButton#givemeZaddr,
|
||||||
|
QPushButton#sendChatButton {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QLabel#lblMessage {
|
||||||
|
color: white;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
background-color: rgba(216, 38, 82, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* SEND TAB */
|
||||||
|
QWidget#tab_2 QLabel{
|
||||||
|
border: 0px solid white;
|
||||||
|
background-color: rgba(255, 255, 255, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* MEMO */
|
||||||
|
QWidget#tab_2 QLabel#MemoTxt1,
|
||||||
|
QWidget#tab_2 QLabel#MemoTxt2,
|
||||||
|
QWidget#tab_2 QLabel#MemoTxt3,
|
||||||
|
QWidget#tab_2 QLabel#MemoTxt4,
|
||||||
|
QWidget#tab_2 QLabel#MemoTxt5,
|
||||||
|
QWidget#tab_2 QLabel#MemoTxt6 {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.25);
|
||||||
|
background-color: rgba(24, 12, 12, 0.25);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#tab_2 QLineEdit {
|
||||||
|
border: 1px solid rgb(216, 38, 82);
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* From Section */
|
||||||
|
|
||||||
|
/* drop down address menu */
|
||||||
|
AddressCombo {
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Send To Section */
|
||||||
|
|
||||||
|
/* Recipient sub-section */
|
||||||
|
QWidget#tab_2 QGroupBox{
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: rgba(216, 38, 82, 0.1);
|
||||||
|
}
|
||||||
|
QWidget#tab_2 QGroupBox::title {
|
||||||
|
margin-left: 24px;
|
||||||
|
font-size: 6px;
|
||||||
|
border-radius: 0;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* To Section */
|
||||||
|
QWidget#tab_2 QGroupBox#groupBox_3,
|
||||||
|
QWidget#tab_2 QGroupBox#groupBox_4 {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.6);
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.45);
|
||||||
|
}
|
||||||
|
QWidget#tab_2 QGroupBox#groupBox_3::title,
|
||||||
|
QWidget#tab_2 QGroupBox#groupBox_4::title {
|
||||||
|
border-radius: 0;
|
||||||
|
border-top-left-radius: 8px;
|
||||||
|
border-bottom-right-radius: 8px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Max Available */
|
||||||
|
QCheckBox#Max1 {
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: rgba(24, 12, 12, 0.25);
|
||||||
|
}
|
||||||
|
QCheckBox#Max1:hover {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.25);
|
||||||
|
background-color: rgba(216, 38, 82, 0.25);
|
||||||
|
}
|
||||||
|
QCheckBox#Max1:pressed,
|
||||||
|
QCheckBox#Max1:checked {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
background-color: rgba(216, 38, 82, 0.5);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QLabel#AmtUSD1,
|
||||||
|
QLabel#txtAvailableUSD {
|
||||||
|
border: 0px solid rgba(216, 38, 82, 0.25);
|
||||||
|
background-color: rgba(255, 255, 255, 0.15);
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QWidget#tab_2 QGroupBox#groupBox_4 {
|
||||||
|
height: 12px;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.25);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#tab_2 QPushButton {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.25);
|
||||||
|
background-color: rgba(216, 38, 82, 0.25);
|
||||||
|
}
|
||||||
|
QWidget#tab_2 QPushButton:hover {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.55);
|
||||||
|
background-color: rgba(216, 38, 82, 0.45);
|
||||||
|
}
|
||||||
|
QWidget#tab_2 QPushButton:selected {
|
||||||
|
color: rgba(255, 255, 255, 1);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
background-color: rgba(216, 38, 82, 0.5);
|
||||||
|
}
|
||||||
|
QWidget#tab_2 QPushButton:disabled {
|
||||||
|
color: rgba(24, 12, 12, 0.75);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.05);
|
||||||
|
background-color: rgba(255, 255, 255, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QTableView {
|
QTableView {
|
||||||
/* Table - has to be selected as a class otherwise it throws off QCalendarWidget */
|
/* Table - has to be selected as a class otherwise it throws off QCalendarWidget */
|
||||||
background:#232834;
|
qproperty-showGrid: "false";
|
||||||
|
padding-right: 8px;
|
||||||
|
color: rgba(0, 0, 0, 0);
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTableView QTableCornerButton::section {
|
||||||
|
border: 0px solid rgba(0, 0, 0, 0);
|
||||||
|
background-color:rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QTableView::item {
|
QTableView::item {
|
||||||
/* Table Item */
|
/* Table Item */
|
||||||
background-color:#232834;
|
padding: 2px;
|
||||||
border:1px solid #91a4b8;
|
color: white;
|
||||||
font-size:12px;
|
font-size:12px;
|
||||||
|
border: 1px solid rgba(216, 38, 82, .5);
|
||||||
|
background-color:rgba(216, 38, 82, 0.25);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QTableView::item:selected {
|
QTableView::item:selected {
|
||||||
/* Table Item Selected */
|
/* Table Item Selected */
|
||||||
background-color:#91a4b8;
|
margin: 4px 0;
|
||||||
color:#232834;
|
color:rgb(41, 21, 21);
|
||||||
|
border: 1px solid rgba(216, 38, 82, .75);
|
||||||
|
background-color:rgba(216, 38, 82, 0.5);
|
||||||
}
|
}
|
||||||
QMenuBar {
|
|
||||||
background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.25, stop: 0 #343F4B, stop: 1 #232834);
|
QTableView { outline:none; }
|
||||||
color: #91a4b8;
|
|
||||||
|
|
||||||
|
QTableView#balancesTable {
|
||||||
|
/* background-color: rgba(255, 255, 255, 0); */
|
||||||
|
|
||||||
}
|
}
|
||||||
QMenuBar::item {
|
QTableView#balancesTable::item {
|
||||||
background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.25, stop: 0 #343F4B, stop: 1 #232834);
|
/* background-color: rgba(255, 255, 255, 0); */
|
||||||
color: #91a4b8;
|
border: 1px solid rgba(216, 38, 82, 0.25);
|
||||||
}
|
}
|
||||||
QMenuBar::item:selected {
|
|
||||||
background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.25, stop: 0 #343F4B, stop: 1 #232834);
|
QHeaderView::section {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
QPushButton#startmining {
|
|
||||||
background-color: #343F4B;
|
QHeaderView::section::first {
|
||||||
border-color: #91A4B8;
|
border-top-left-radius: 10px;
|
||||||
padding: 10px;
|
background-color: rgb(41, 21, 21);
|
||||||
}
|
}
|
||||||
QPushButton#startmining:hover {
|
|
||||||
background-color: #232834;
|
QHeaderView::section::middle {
|
||||||
|
background-color: rgb(41, 21, 21);
|
||||||
}
|
}
|
||||||
QPushButton#startmining:pressed {
|
|
||||||
background-color: #232834;
|
QHeaderView::section::last {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
border-top-right-radius: 10px;
|
||||||
|
background-color: rgb(41, 21, 21);
|
||||||
}
|
}
|
||||||
QPushButton#startmining:disabled {
|
|
||||||
background-color: #232834;
|
QHeaderView::section::vertical {
|
||||||
|
border: 0px solid rgba(0, 0, 0, 0);
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
QPushButton#stopmining {
|
|
||||||
background-color: #343F4B;
|
|
||||||
border-color: #91A4B8;
|
|
||||||
padding: 10px;
|
|
||||||
margin-top: 7px;
|
|
||||||
|
QDialog#requestDialog {
|
||||||
|
min-width: 820;
|
||||||
|
min-height: 520;
|
||||||
}
|
}
|
||||||
QPushButton#stopmining:hover {
|
|
||||||
background-color: #232834;
|
|
||||||
|
QDialog#requestDialog QLabel#label_8
|
||||||
|
{
|
||||||
|
min-height: 25;
|
||||||
|
padding-top: 7px;
|
||||||
}
|
}
|
||||||
QPushButton#stopmining:pressed {
|
|
||||||
background-color: #232834;
|
QDialog#requestDialog QLabel#label_7{
|
||||||
|
padding-left: 2px;
|
||||||
|
min-height: 25;
|
||||||
}
|
}
|
||||||
QPushButton#stopmining:disabled {
|
QDialog#requestDialog QLabel#label_5,
|
||||||
background-color: #232834;
|
QDialog#requestDialog QLabel#label_6 {
|
||||||
|
min-height: 25;
|
||||||
|
padding-top: 2px;
|
||||||
}
|
}
|
||||||
QComboBox#genproclimit{
|
|
||||||
font-size: 24px;
|
QDialog#requestDialog QPushButton {
|
||||||
height: 40px;
|
min-height: 32;
|
||||||
}
|
}
|
||||||
QMenu::item:selected{
|
QDialog#requestDialog QPushButton#addContact {
|
||||||
background-color: #343F4B
|
min-width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ===== SETUP WIZARD & DIALOG CONTRAST FIXES ===== */
|
||||||
|
|
||||||
|
QWizard, QWizardPage {
|
||||||
|
color: white;
|
||||||
|
background-color: rgb(24, 21, 21);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWizard QLabel, QWizardPage QLabel {
|
||||||
|
color: rgba(255, 255, 255, 0.85);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWizard QPushButton, QWizardPage QPushButton {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
background-color: rgba(216, 38, 82, 0.15);
|
||||||
|
}
|
||||||
|
QWizard QPushButton:hover, QWizardPage QPushButton:hover {
|
||||||
|
color: white;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
background-color: rgba(216, 38, 82, 0.45);
|
||||||
|
}
|
||||||
|
|
||||||
|
QTextBrowser, QPlainTextEdit, QTextEdit {
|
||||||
|
color: white;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
background-color: rgba(41, 21, 21, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
QCheckBox {
|
||||||
|
color: rgba(255, 255, 255, 0.85);
|
||||||
|
}
|
||||||
|
|
||||||
|
QCheckBox::indicator {
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
background-color: rgba(41, 21, 21, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
QCheckBox::indicator:checked {
|
||||||
|
background-color: rgba(216, 38, 82, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
QRadioButton {
|
||||||
|
color: rgba(255, 255, 255, 0.85);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialogButtonBox QPushButton {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.5);
|
||||||
|
background-color: rgba(216, 38, 82, 0.15);
|
||||||
|
min-width: 80px;
|
||||||
|
padding: 6px 16px;
|
||||||
|
}
|
||||||
|
QDialogButtonBox QPushButton:hover {
|
||||||
|
color: white;
|
||||||
|
border: 1px solid rgba(216, 38, 82, 0.75);
|
||||||
|
background-color: rgba(216, 38, 82, 0.45);
|
||||||
|
}
|
||||||
|
|
||||||
|
QMessageBox {
|
||||||
|
color: white;
|
||||||
|
background-color: rgb(24, 21, 21);
|
||||||
|
}
|
||||||
|
QMessageBox QLabel {
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -279,7 +279,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -819,7 +819,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1579,7 +1579,7 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2037,7 +2037,7 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -82,8 +82,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -509,8 +509,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="1592"/>
|
<location filename="../src/mainwindow.ui" line="1592"/>
|
||||||
@@ -918,8 +918,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite патрабуе 24 словы для аднаўлення кашалька</translation>
|
<translation>SilentDragonXLite патрабуе 24 словы для аднаўлення кашалька</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="198"/>
|
<location filename="../src/mainwindow.cpp" line="198"/>
|
||||||
@@ -1614,8 +1614,8 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Пачакайце, калі ласка SilentDragonLite выходзіць</translation>
|
<translation>Пачакайце, калі ласка SilentDragonXLite выходзіць</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -2072,8 +2072,8 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite патрабуе 24 словы для аднаўлення кашалька</translation>
|
<translation>SilentDragonXLite патрабуе 24 словы для аднаўлення кашалька</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
||||||
@@ -2265,7 +2265,7 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/about.ui" line="14"/>
|
<location filename="../src/about.ui" line="14"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>Аб SilentDragonLite</translation>
|
<translation>Аб SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -2454,7 +2454,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
|
</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;"><span style=" font-family:'Ubuntu'; font-size:16pt;">Калі ласка, выкарыстоўвайце наступны hush-адрас для пераводу сродкаў на SilentDragonLite. Вы можаце скапіяваць адрас альбо скарыстаць QR-код. </span></p></body></html></translation>
|
<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'; font-size:16pt;">Калі ласка, выкарыстоўвайце наступны hush-адрас для пераводу сродкаў на SilentDragonXLite. Вы можаце скапіяваць адрас альбо скарыстаць QR-код. </span></p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/deposithush.ui" line="134"/>
|
<location filename="../src/deposithush.ui" line="134"/>
|
||||||
|
|||||||
@@ -82,12 +82,12 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<source>silentdragon</source>
|
<source>silentdragon</source>
|
||||||
<translation type="vanished">SilentDragonLite</translation>
|
<translation type="vanished">SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -303,7 +303,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<source>silentdragon</source>
|
<source>silentdragon</source>
|
||||||
<translation type="vanished">SilentDragonLite</translation>
|
<translation type="vanished">SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="566"/>
|
<location filename="../src/mainwindow.ui" line="566"/>
|
||||||
@@ -556,8 +556,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="1592"/>
|
<location filename="../src/mainwindow.ui" line="1592"/>
|
||||||
@@ -877,23 +877,23 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart Silentdragonlite to have the theme apply</source>
|
<source>Please restart Silentdragonlite to have the theme apply</source>
|
||||||
<translation type="vanished">Bitte starten sie SilentDragonLite neu</translation>
|
<translation type="vanished">Bitte starten sie SilentDragonXLite neu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>You're using an external hushd. Please restart hushd with -rescan</source>
|
<source>You're using an external hushd. Please restart hushd with -rescan</source>
|
||||||
<translation type="vanished">Starte SilentDragonLite neu</translation>
|
<translation type="vanished">Starte SilentDragonXLite neu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Some feedback about SilentDragonlite or Hush...</source>
|
<source>Some feedback about SilentDragonlite or Hush...</source>
|
||||||
<translation type="vanished">Etwas Feedback über SilentDragonLite...</translation>
|
<translation type="vanished">Etwas Feedback über SilentDragonXLite...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Send Duke some private and shielded feedback about</source>
|
<source>Send Duke some private and shielded feedback about</source>
|
||||||
<translation type="vanished">Sende DenioD anonym Feedback über</translation>
|
<translation type="vanished">Sende DenioD anonym Feedback über</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="vanished"> oder SilentDragonLite</translation>
|
<translation type="vanished"> oder SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Send DenioD some private and shielded feedback about</source>
|
<source>Send DenioD some private and shielded feedback about</source>
|
||||||
@@ -952,12 +952,12 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Wallet is already encrypted</source>
|
<source>Wallet is already encrypted</source>
|
||||||
<translation type="vanished">SilentDragonLite ist bereits verschlüsselt</translation>
|
<translation type="vanished">SilentDragonXLite ist bereits verschlüsselt</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Your wallet is already encrypted with a password.
|
<source>Your wallet is already encrypted with a password.
|
||||||
Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption.</source>
|
Please use 'Remove Wallet Encryption' if you want to remove the wallet encryption.</source>
|
||||||
<translation type="vanished">SilentDragonLite ist bereits mit einem Passwort verschlüsselt. Bitte benutzen Sie die Funktion 'Verschlüsselung entfernen'.</translation>
|
<translation type="vanished">SilentDragonXLite ist bereits mit einem Passwort verschlüsselt. Bitte benutzen Sie die Funktion 'Verschlüsselung entfernen'.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="555"/>
|
<location filename="../src/mainwindow.cpp" line="555"/>
|
||||||
@@ -972,11 +972,11 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Wallet Encrypted</source>
|
<source>Wallet Encrypted</source>
|
||||||
<translation type="vanished">SilentDragonLite verschlüsselt</translation>
|
<translation type="vanished">SilentDragonXLite verschlüsselt</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Your wallet was successfully encrypted! The password will be needed to send funds or export private keys.</source>
|
<source>Your wallet was successfully encrypted! The password will be needed to send funds or export private keys.</source>
|
||||||
<translation type="vanished">SilentDragonLite wurde erfolgreich verschlüsselt. Sie benötigen Ihr Passwort um Zahlungen zu senden oder Ihre private Keys zu exportieren.</translation>
|
<translation type="vanished">SilentDragonXLite wurde erfolgreich verschlüsselt. Sie benötigen Ihr Passwort um Zahlungen zu senden oder Ihre private Keys zu exportieren.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="616"/>
|
<location filename="../src/mainwindow.cpp" line="616"/>
|
||||||
@@ -987,15 +987,15 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="537"/>
|
<location filename="../src/mainwindow.cpp" line="537"/>
|
||||||
<source>Wallet is not encrypted</source>
|
<source>Wallet is not encrypted</source>
|
||||||
<translation>SilentDragonLite ist nicht verschlüsselt</translation>
|
<translation>SilentDragonXLite ist nicht verschlüsselt</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Your wallet is not encrypted with a password.</source>
|
<source>Your wallet is not encrypted with a password.</source>
|
||||||
<translation type="vanished">SilentDragonLite ist nicht mit einem Passwort verschlüsselt.</translation>
|
<translation type="vanished">SilentDragonXLite ist nicht mit einem Passwort verschlüsselt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Wallet Password</source>
|
<source>Wallet Password</source>
|
||||||
<translation type="vanished">SilentDragonLite Passwort</translation>
|
<translation type="vanished">SilentDragonXLite Passwort</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please enter your wallet password</source>
|
<source>Please enter your wallet password</source>
|
||||||
@@ -1003,11 +1003,11 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Wallet Decryption Failed</source>
|
<source>Wallet Decryption Failed</source>
|
||||||
<translation type="vanished">SilentDragonLite konnte nicht entschlüsselt werden</translation>
|
<translation type="vanished">SilentDragonXLite konnte nicht entschlüsselt werden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please enter a password to decrypt your wallet!</source>
|
<source>Please enter a password to decrypt your wallet!</source>
|
||||||
<translation type="vanished">Bitte geben Sie das Passwort ein, um SilentDragonLite zu entschlüsseln!</translation>
|
<translation type="vanished">Bitte geben Sie das Passwort ein, um SilentDragonXLite zu entschlüsseln!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Wallet Encryption Removed</source>
|
<source>Wallet Encryption Removed</source>
|
||||||
@@ -1015,7 +1015,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys.</source>
|
<source>Your wallet was successfully decrypted! You will no longer need a password to send funds or export private keys.</source>
|
||||||
<translation type="vanished">SilentDragonLite wurde erfolgreich entschlüsselt. Sie benötigen Ihr Passwort nicht mehr.</translation>
|
<translation type="vanished">SilentDragonXLite wurde erfolgreich entschlüsselt. Sie benötigen Ihr Passwort nicht mehr.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="771"/>
|
<location filename="../src/mainwindow.cpp" line="771"/>
|
||||||
@@ -1034,13 +1034,13 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
<translation>Die übernahme der Änderung kann ein paar sekunden dauern.</translation>
|
<translation>Die übernahme der Änderung kann ein paar sekunden dauern.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart SilentDragonLite to have new currencies apply</source>
|
<source>Please restart SilentDragonXLite to have new currencies apply</source>
|
||||||
<translation type="vanished">Bitte starten sie SilentDragonLite neu</translation>
|
<translation type="vanished">Bitte starten sie SilentDragonXLite neu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="1177"/>
|
<location filename="../src/mainwindow.cpp" line="1177"/>
|
||||||
<source>This is your wallet seed. Please back it up carefully and safely.</source>
|
<source>This is your wallet seed. Please back it up carefully and safely.</source>
|
||||||
<translation>Dies ist Ihr SilentDragonLite Seed. Bitte sichern Sie ihn sorgfältig.</translation>
|
<translation>Dies ist Ihr SilentDragonXLite Seed. Bitte sichern Sie ihn sorgfältig.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="1185"/>
|
<location filename="../src/mainwindow.cpp" line="1185"/>
|
||||||
@@ -1070,7 +1070,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">Der Seed benötigt 24 Wörter um das Wallet mit dem Seed wiederherzustellen</translation>
|
<translation type="unfinished">Der Seed benötigt 24 Wörter um das Wallet mit dem Seed wiederherzustellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1548,7 +1548,7 @@ Anmerkung: Sie bnötigen 2 Bestätigungen {1
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>This is your new wallet's seed phrase. PLEASE BACK IT UP SECURELY.</source>
|
<source>This is your new wallet's seed phrase. PLEASE BACK IT UP SECURELY.</source>
|
||||||
<translation type="vanished">Dies ist Ihr SilentDragonLite Seed. Bitte sichern Sie ihn sorgfältig.</translation>
|
<translation type="vanished">Dies ist Ihr SilentDragonXLite Seed. Bitte sichern Sie ihn sorgfältig.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/newseed.ui" line="20"/>
|
<location filename="../src/newseed.ui" line="20"/>
|
||||||
@@ -1836,8 +1836,8 @@ Möchten Sie die Release Seite besuchen?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Bitte warten Sie bis SilentDragonLite beendet ist</translation>
|
<translation>Bitte warten Sie bis SilentDragonXLite beendet ist</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -1924,7 +1924,7 @@ Möchten Sie die Release Seite besuchen?</translation>
|
|||||||
<location filename="../src/websockets.cpp" line="695"/>
|
<location filename="../src/websockets.cpp" line="695"/>
|
||||||
<location filename="../src/websockets.cpp" line="783"/>
|
<location filename="../src/websockets.cpp" line="783"/>
|
||||||
<source>Node is still syncing.</source>
|
<source>Node is still syncing.</source>
|
||||||
<translation>SilentDragonLite synchronisiert noch.</translation>
|
<translation>SilentDragonXLite synchronisiert noch.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/websockets.cpp" line="716"/>
|
<location filename="../src/websockets.cpp" line="716"/>
|
||||||
@@ -2078,7 +2078,7 @@ Möchten Sie die Release Seite besuchen?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/recurringmultiple.ui" line="44"/>
|
<location filename="../src/recurringmultiple.ui" line="44"/>
|
||||||
<source>How should silentdragon proceed?</source>
|
<source>How should silentdragon proceed?</source>
|
||||||
<translation>Wie soll SilentDragonLite die Zahlung verarbeiten?</translation>
|
<translation>Wie soll SilentDragonXLite die Zahlung verarbeiten?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/recurringmultiple.ui" line="51"/>
|
<location filename="../src/recurringmultiple.ui" line="51"/>
|
||||||
@@ -2318,7 +2318,7 @@ Möchten Sie die Release Seite besuchen?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>Der Seed benötigt 24 Wörter um das Wallet mit dem Seed wiederherzustellen</translation>
|
<translation>Der Seed benötigt 24 Wörter um das Wallet mit dem Seed wiederherzustellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2671,7 +2671,7 @@ Möchten Sie die Release Seite besuchen?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/confirm.ui" line="164"/>
|
<location filename="../src/confirm.ui" line="164"/>
|
||||||
<source>You are sending a transaction while your node is still syncing. This may not work.</source>
|
<source>You are sending a transaction while your node is still syncing. This may not work.</source>
|
||||||
<translation>SilentDragonLite sollte erst vollständig synchronisiert sein, bevor Sie eine Zahlung tätigen.</translation>
|
<translation>SilentDragonXLite sollte erst vollständig synchronisiert sein, bevor Sie eine Zahlung tätigen.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -2792,7 +2792,7 @@ li.checked::marker { content: "\2612"; }
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/encryption.ui" line="32"/>
|
<location filename="../src/encryption.ui" line="32"/>
|
||||||
<source>Encrypt Your Wallet</source>
|
<source>Encrypt Your Wallet</source>
|
||||||
<translation>SilentDragonLite verschlüsseln</translation>
|
<translation>SilentDragonXLite verschlüsseln</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/encryption.ui" line="38"/>
|
<location filename="../src/encryption.ui" line="38"/>
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>DragónSilenciosoLigero</translation>
|
<translation>DragónSilenciosoLigero</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -364,7 +364,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>DragónSilenciosoLigero</translation>
|
<translation>DragónSilenciosoLigero</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -854,7 +854,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<translation type="vanished">Algunos comentarios sobre Dragón silencioso ligero o Hush ...</translation>
|
<translation type="vanished">Algunos comentarios sobre Dragón silencioso ligero o Hush ...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="vanished">o Dragón silencioso ligero</translation>
|
<translation type="vanished">o Dragón silencioso ligero</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1059,7 +1059,7 @@ Por favor use 'Eliminar la encriptacion de la billetera 'si desea elim
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">Dragón silencioso ligero necesita 24 palabras para restaurar la billetera</translation>
|
<translation type="unfinished">Dragón silencioso ligero necesita 24 palabras para restaurar la billetera</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1785,7 +1785,7 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Espere a que DragónSilenciosoLigero salga</translation>
|
<translation>Espere a que DragónSilenciosoLigero salga</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2271,7 +2271,7 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>Dragón silencioso ligero necesita 24 palabras para restaurar la billetera</translation>
|
<translation>Dragón silencioso ligero necesita 24 palabras para restaurar la billetera</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>سایلنت دراگون سبک</translation>
|
<translation>سایلنت دراگون سبک</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -303,7 +303,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>سایلنت دراگون سبک</translation>
|
<translation>سایلنت دراگون سبک</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -943,7 +943,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
<translation>تغییر واحد پول</translation>
|
<translation>تغییر واحد پول</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart SilentDragonLite to have new currencies apply</source>
|
<source>Please restart SilentDragonXLite to have new currencies apply</source>
|
||||||
<translation type="vanished">لطفا برای اعمال واحد پول جدید، سایلنت دراگون سبک خود را مجدداً اجرا کنید</translation>
|
<translation type="vanished">لطفا برای اعمال واحد پول جدید، سایلنت دراگون سبک خود را مجدداً اجرا کنید</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -960,7 +960,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="vanished">یا سایلنت دراگون سبک</translation>
|
<translation type="vanished">یا سایلنت دراگون سبک</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1051,7 +1051,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">سایلنت دراگون سبک برای بازیابی کیف پول، به 24 کلمه نیاز دارد</translation>
|
<translation type="unfinished">سایلنت دراگون سبک برای بازیابی کیف پول، به 24 کلمه نیاز دارد</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1807,7 +1807,7 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>لطفا تا خروج سایلنت دراگون سبک، منتظر بمانید</translation>
|
<translation>لطفا تا خروج سایلنت دراگون سبک، منتظر بمانید</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2293,7 +2293,7 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>سایلنت دراگون سبک برای بازیابی کیف پول، به 24 کلمه نیاز دارد</translation>
|
<translation>سایلنت دراگون سبک برای بازیابی کیف پول، به 24 کلمه نیاز دارد</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -90,8 +90,8 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -520,8 +520,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="678"/>
|
<location filename="../src/mainwindow.ui" line="678"/>
|
||||||
@@ -1174,8 +1174,8 @@ Veuillez utiliser "Supprimer le chiffrement du wallet" si vous souhait
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">SilentDragonLite a besoin de 24 mots pour restaurer son wallet</translation>
|
<translation type="unfinished">SilentDragonXLite a besoin de 24 mots pour restaurer son wallet</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="198"/>
|
<location filename="../src/mainwindow.cpp" line="198"/>
|
||||||
@@ -1289,7 +1289,7 @@ Veuillez utiliser "Supprimer le chiffrement du wallet" si vous souhait
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart Silentdragonlite to have the theme apply</source>
|
<source>Please restart Silentdragonlite to have the theme apply</source>
|
||||||
<translation type="vanished">Veuillez redémarrer SilentDragonLite pour aplliqué le thème.</translation>
|
<translation type="vanished">Veuillez redémarrer SilentDragonXLite pour aplliqué le thème.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||||
@@ -1301,8 +1301,8 @@ Veuillez utiliser "Supprimer le chiffrement du wallet" si vous souhait
|
|||||||
<translation type="vanished">Quelques commentaires sur SilentDragonlite ou Hush ...</translation>
|
<translation type="vanished">Quelques commentaires sur SilentDragonlite ou Hush ...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="vanished"> ou SilentDragonLite</translation>
|
<translation type="vanished"> ou SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Send DenioD some private and shielded feedback about</source>
|
<source>Send DenioD some private and shielded feedback about</source>
|
||||||
@@ -1980,8 +1980,8 @@ Voulez-vous visiter la page des nouvelles versions ?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Merci d'attendre la fermeture de SilentDragonLite</translation>
|
<translation>Merci d'attendre la fermeture de SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -2659,8 +2659,8 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite a besoin de 24 mots pour restaurer son wallet</translation>
|
<translation>SilentDragonXLite a besoin de 24 mots pour restaurer son wallet</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
||||||
|
|||||||
@@ -86,8 +86,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -304,8 +304,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="566"/>
|
<location filename="../src/mainwindow.ui" line="566"/>
|
||||||
@@ -932,7 +932,7 @@ Molimo koristite 'Uklonite šifriranje novčanika' ako želite uklonit
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart Silentdragonlite to have the theme apply</source>
|
<source>Please restart Silentdragonlite to have the theme apply</source>
|
||||||
<translation type="vanished">Molimo ponovno pokrenite SilentDragonLite ako želite primjeniti temu</translation>
|
<translation type="vanished">Molimo ponovno pokrenite SilentDragonXLite ako želite primjeniti temu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||||
@@ -940,8 +940,8 @@ Molimo koristite 'Uklonite šifriranje novčanika' ako želite uklonit
|
|||||||
<translation>Razmjena valuta</translation>
|
<translation>Razmjena valuta</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart SilentDragonLite to have new currencies apply</source>
|
<source>Please restart SilentDragonXLite to have new currencies apply</source>
|
||||||
<translation type="vanished">Molimo ponovno pokrenite SilentDragonLite ako želite primjeniti novu valutu</translation>
|
<translation type="vanished">Molimo ponovno pokrenite SilentDragonXLite ako želite primjeniti novu valutu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||||
@@ -950,15 +950,15 @@ Molimo koristite 'Uklonite šifriranje novčanika' ako želite uklonit
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Some feedback about SilentDragonlite or Hush...</source>
|
<source>Some feedback about SilentDragonlite or Hush...</source>
|
||||||
<translation type="vanished">Neke povratne informaciej o SilentDragonLite ili Hush...</translation>
|
<translation type="vanished">Neke povratne informaciej o SilentDragonXLite ili Hush...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Send Duke some private and shielded feedback about</source>
|
<source>Send Duke some private and shielded feedback about</source>
|
||||||
<translation type="vanished">Pošaljite Duke neku privatnu i zaštićenu povratnu informaciju</translation>
|
<translation type="vanished">Pošaljite Duke neku privatnu i zaštićenu povratnu informaciju</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="vanished"> ili SilentDragonLite</translation>
|
<translation type="vanished"> ili SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="1011"/>
|
<location filename="../src/mainwindow.cpp" line="1011"/>
|
||||||
@@ -1044,8 +1044,8 @@ Molimo koristite 'Uklonite šifriranje novčanika' ako želite uklonit
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">SilentDragonLite treba 24 riječi za obnovu novčanika</translation>
|
<translation type="unfinished">SilentDragonXLite treba 24 riječi za obnovu novčanika</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="198"/>
|
<location filename="../src/mainwindow.cpp" line="198"/>
|
||||||
@@ -1810,8 +1810,8 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Molimo pričekajte da se SilentDragonLite zatvori</translation>
|
<translation>Molimo pričekajte da se SilentDragonXLite zatvori</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -2296,8 +2296,8 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite treba 24 riječi za obnovu novčanika</translation>
|
<translation>SilentDragonXLite treba 24 riječi za obnovu novčanika</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
||||||
|
|||||||
@@ -82,8 +82,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -326,8 +326,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="567"/>
|
<location filename="../src/mainwindow.ui" line="567"/>
|
||||||
@@ -948,8 +948,8 @@ Mohon Gunakan 'Hapus Enkripsi Dompet' Jika anda ingin menghapus Enkrip
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="207"/>
|
<location filename="../src/mainwindow.cpp" line="207"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">SilentDragonLite membutuhkan 24 kata untuk mengembalikan dompet</translation>
|
<translation type="unfinished">SilentDragonXLite membutuhkan 24 kata untuk mengembalikan dompet</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="218"/>
|
<location filename="../src/mainwindow.cpp" line="218"/>
|
||||||
@@ -993,8 +993,8 @@ Mohon Gunakan 'Hapus Enkripsi Dompet' Jika anda ingin menghapus Enkrip
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="918"/>
|
<location filename="../src/mainwindow.cpp" line="918"/>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation>atau SilentDragonLite</translation>
|
<translation>atau SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="918"/>
|
<location filename="../src/mainwindow.cpp" line="918"/>
|
||||||
@@ -1763,8 +1763,8 @@ Maukah anda mengunjungi laman pembaruan ini</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2042"/>
|
<location filename="../src/controller.cpp" line="2042"/>
|
||||||
<location filename="../src/controller.cpp" line="2050"/>
|
<location filename="../src/controller.cpp" line="2050"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Mohon tunggu untuk SilentDragonLite untuk keluar</translation>
|
<translation>Mohon tunggu untuk SilentDragonXLite untuk keluar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2043"/>
|
<location filename="../src/controller.cpp" line="2043"/>
|
||||||
@@ -2236,8 +2236,8 @@ Maukah anda mengunjungi laman pembaruan ini</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="643"/>
|
<location filename="../src/firsttimewizard.cpp" line="643"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite membutuhkan 24 kata untuk mengembalikan dompet</translation>
|
<translation>SilentDragonXLite membutuhkan 24 kata untuk mengembalikan dompet</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="653"/>
|
<location filename="../src/firsttimewizard.cpp" line="653"/>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -509,7 +509,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1017,7 +1017,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1756,7 +1756,7 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2416,7 +2416,7 @@ Avete fondi non confermati o il saldo è troppo basso per una migrazione automat
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>Silent Dragon Lite</translation>
|
<translation>Silent Dragon Lite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -508,7 +508,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>Silent Dragon Lite</translation>
|
<translation>Silent Dragon Lite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -912,7 +912,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>Silent Dragon Lite heeft 24 woorden nodig om de wallet te herstellen</translation>
|
<translation>Silent Dragon Lite heeft 24 woorden nodig om de wallet te herstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1608,7 +1608,7 @@ Wilt u de releasepagina bezoeken?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Wacht totdat Silent Dragon Lite afgesloten is</translation>
|
<translation>Wacht totdat Silent Dragon Lite afgesloten is</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2066,7 +2066,7 @@ Wilt u de releasepagina bezoeken?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>Silent Dragon Lite heeft 24 woorden nodig om de wallet te herstellen</translation>
|
<translation>Silent Dragon Lite heeft 24 woorden nodig om de wallet te herstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -82,8 +82,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -514,8 +514,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="1592"/>
|
<location filename="../src/mainwindow.ui" line="1592"/>
|
||||||
@@ -918,8 +918,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite potrzebuje 24 słów, aby przywrócić portfel</translation>
|
<translation>SilentDragonXLite potrzebuje 24 słów, aby przywrócić portfel</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="198"/>
|
<location filename="../src/mainwindow.cpp" line="198"/>
|
||||||
@@ -1611,8 +1611,8 @@ Czy chciałbyś odwiedzić stronę wydań?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Proszę poczekać na SilentDragonLite zakończy pracę</translation>
|
<translation>Proszę poczekać na SilentDragonXLite zakończy pracę</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -2069,8 +2069,8 @@ Czy chciałbyś odwiedzić stronę wydań?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite potrzebuje 24 słów, aby przywrócić portfel</translation>
|
<translation>SilentDragonXLite potrzebuje 24 słów, aby przywrócić portfel</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
||||||
@@ -2262,7 +2262,7 @@ Czy chciałbyś odwiedzić stronę wydań?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/about.ui" line="14"/>
|
<location filename="../src/about.ui" line="14"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>O SilentDragonLite</translation>
|
<translation>O SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -2451,7 +2451,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
|
</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;"><span style=" font-family:'Ubuntu'; font-size:16pt;">Prosimy o użycie następującego hush adresu do przelewu środków na SilentDragonLite. Można skopiować adres lub użyć kodu QR. </span></p></body></html></translation>
|
<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'; font-size:16pt;">Prosimy o użycie następującego hush adresu do przelewu środków na SilentDragonXLite. Można skopiować adres lub użyć kodu QR. </span></p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/deposithush.ui" line="134"/>
|
<location filename="../src/deposithush.ui" line="134"/>
|
||||||
|
|||||||
@@ -90,8 +90,8 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -703,8 +703,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="744"/>
|
<location filename="../src/mainwindow.ui" line="744"/>
|
||||||
@@ -956,8 +956,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">SilentDragonLite precisa de 24 palavras para recuperar a carteira</translation>
|
<translation type="unfinished">SilentDragonXLite precisa de 24 palavras para recuperar a carteira</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="198"/>
|
<location filename="../src/mainwindow.cpp" line="198"/>
|
||||||
@@ -1252,7 +1252,7 @@ Por favor usa 'Desencriptar carteira' se quiser remover a encriptaçã
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart Silentdragonlite to have the theme apply</source>
|
<source>Please restart Silentdragonlite to have the theme apply</source>
|
||||||
<translation type="vanished">Por favor reinicie a SilentDragonLite para aplicar o tema</translation>
|
<translation type="vanished">Por favor reinicie a SilentDragonXLite para aplicar o tema</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||||
@@ -1264,8 +1264,8 @@ Por favor usa 'Desencriptar carteira' se quiser remover a encriptaçã
|
|||||||
<translation type="vanished">Alguma sugestão acerca da SilentDragonlite ou Hush...</translation>
|
<translation type="vanished">Alguma sugestão acerca da SilentDragonlite ou Hush...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="vanished">ou SilentDragonLite</translation>
|
<translation type="vanished">ou SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Send DenioD some private and shielded feedback about</source>
|
<source>Send DenioD some private and shielded feedback about</source>
|
||||||
@@ -1924,8 +1924,8 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Por favor aguarde pela SilentDragonLite terminar</translation>
|
<translation>Por favor aguarde pela SilentDragonXLite terminar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -1935,7 +1935,7 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please wait for silentdragon to exit</source>
|
<source>Please wait for silentdragon to exit</source>
|
||||||
<translation type="vanished">Por favor aguarde pela SilentDragonLite terminar</translation>
|
<translation type="vanished">Por favor aguarde pela SilentDragonXLite terminar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Waiting for hushd to exit</source>
|
<source>Waiting for hushd to exit</source>
|
||||||
@@ -2604,8 +2604,8 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite precisa de 24 palavras para recuperar a carteira</translation>
|
<translation>SilentDragonXLite precisa de 24 palavras para recuperar a carteira</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
||||||
|
|||||||
@@ -82,8 +82,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -326,8 +326,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="567"/>
|
<location filename="../src/mainwindow.ui" line="567"/>
|
||||||
@@ -933,7 +933,7 @@ Rugam sa folositi 'Eliminati Criptarea Portofelului' daca doriti sa el
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="916"/>
|
<location filename="../src/mainwindow.cpp" line="916"/>
|
||||||
<source>Some feedback about SilentDragonlite or Hush...</source>
|
<source>Some feedback about SilentDragonlite or Hush...</source>
|
||||||
<translation>Feedback despre SilentDragonLite sau Hush...</translation>
|
<translation>Feedback despre SilentDragonXLite sau Hush...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="832"/>
|
<location filename="../src/mainwindow.cpp" line="832"/>
|
||||||
@@ -948,8 +948,8 @@ Rugam sa folositi 'Eliminati Criptarea Portofelului' daca doriti sa el
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="207"/>
|
<location filename="../src/mainwindow.cpp" line="207"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">SilentDragonLite are nevoie de semnatura de 24 de cuvinte pentru restabilirea portofelului</translation>
|
<translation type="unfinished">SilentDragonXLite are nevoie de semnatura de 24 de cuvinte pentru restabilirea portofelului</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="218"/>
|
<location filename="../src/mainwindow.cpp" line="218"/>
|
||||||
@@ -993,8 +993,8 @@ Rugam sa folositi 'Eliminati Criptarea Portofelului' daca doriti sa el
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="918"/>
|
<location filename="../src/mainwindow.cpp" line="918"/>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation>sau SilentDragonLite</translation>
|
<translation>sau SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="918"/>
|
<location filename="../src/mainwindow.cpp" line="918"/>
|
||||||
@@ -1755,8 +1755,8 @@ Doriti sa vizitati pagina veriunii?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2042"/>
|
<location filename="../src/controller.cpp" line="2042"/>
|
||||||
<location filename="../src/controller.cpp" line="2050"/>
|
<location filename="../src/controller.cpp" line="2050"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Rugam sa asteptati pina ce SilentDragonLite sa o sa iasa</translation>
|
<translation>Rugam sa asteptati pina ce SilentDragonXLite sa o sa iasa</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2043"/>
|
<location filename="../src/controller.cpp" line="2043"/>
|
||||||
@@ -2228,8 +2228,8 @@ Doriti sa vizitati pagina veriunii?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="643"/>
|
<location filename="../src/firsttimewizard.cpp" line="643"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite are nevoie de semnatura de 24 de cuvinte pentru restabilirea portofelului</translation>
|
<translation>SilentDragonXLite are nevoie de semnatura de 24 de cuvinte pentru restabilirea portofelului</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="653"/>
|
<location filename="../src/firsttimewizard.cpp" line="653"/>
|
||||||
|
|||||||
@@ -82,8 +82,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -478,8 +478,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="678"/>
|
<location filename="../src/mainwindow.ui" line="678"/>
|
||||||
@@ -903,8 +903,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite требует 24 слова для восстановления кошелька</translation>
|
<translation>SilentDragonXLite требует 24 слова для восстановления кошелька</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="198"/>
|
<location filename="../src/mainwindow.cpp" line="198"/>
|
||||||
@@ -1475,8 +1475,8 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Пожалуйста подождите SilentDragonLite для выхода</translation>
|
<translation>Пожалуйста подождите SilentDragonXLite для выхода</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -2072,8 +2072,8 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite нужно 24 слова для восстановления кошелька</translation>
|
<translation>SilentDragonXLite нужно 24 слова для восстановления кошелька</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
||||||
@@ -2454,7 +2454,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
|
</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;"><span style=" font-family:'Ubuntu'; font-size:16pt;">Используйте следующий hush адрес для перевода средств в SilentDragonLite. Вы можете скопировать адрес или использовать QR-код. </span></p></body></html></translation>
|
<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'; font-size:16pt;">Используйте следующий hush адрес для перевода средств в SilentDragonXLite. Вы можете скопировать адрес или использовать QR-код. </span></p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/deposithush.ui" line="134"/>
|
<location filename="../src/deposithush.ui" line="134"/>
|
||||||
|
|||||||
@@ -86,8 +86,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -304,8 +304,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite</translation>
|
<translation>SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="566"/>
|
<location filename="../src/mainwindow.ui" line="566"/>
|
||||||
@@ -932,7 +932,7 @@ Molimo koristite 'Uklonite šifrovanje novčanika' ako želite uklonit
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart Silentdragonlite to have the theme apply</source>
|
<source>Please restart Silentdragonlite to have the theme apply</source>
|
||||||
<translation type="vanished">Molimo ponovo pokrenite SilentDragonLite ako želite primeniti temu</translation>
|
<translation type="vanished">Molimo ponovo pokrenite SilentDragonXLite ako želite primeniti temu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||||
@@ -940,8 +940,8 @@ Molimo koristite 'Uklonite šifrovanje novčanika' ako želite uklonit
|
|||||||
<translation>Razmena valuta</translation>
|
<translation>Razmena valuta</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Please restart SilentDragonLite to have new currencies apply</source>
|
<source>Please restart SilentDragonXLite to have new currencies apply</source>
|
||||||
<translation type="vanished">Molimo ponovo pokrenite SilentDragonLite ako želite primeniti novu valutu</translation>
|
<translation type="vanished">Molimo ponovo pokrenite SilentDragonXLite ako želite primeniti novu valutu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||||
@@ -950,15 +950,15 @@ Molimo koristite 'Uklonite šifrovanje novčanika' ako želite uklonit
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Some feedback about SilentDragonlite or Hush...</source>
|
<source>Some feedback about SilentDragonlite or Hush...</source>
|
||||||
<translation type="vanished">Neke povratne informacije o SilentDragonLite ili Hush...</translation>
|
<translation type="vanished">Neke povratne informacije o SilentDragonXLite ili Hush...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Send Duke some private and shielded feedback about</source>
|
<source>Send Duke some private and shielded feedback about</source>
|
||||||
<translation type="vanished">Pošaljite Duke neku privatnu i zaštićenu povratnu informaciju</translation>
|
<translation type="vanished">Pošaljite Duke neku privatnu i zaštićenu povratnu informaciju</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="vanished"> ili SilentDragonLite</translation>
|
<translation type="vanished"> ili SilentDragonXLite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="1011"/>
|
<location filename="../src/mainwindow.cpp" line="1011"/>
|
||||||
@@ -1044,8 +1044,8 @@ Molimo koristite 'Uklonite šifrovanje novčanika' ako želite uklonit
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">SilentDragonLite treba 24 reči za obnovu novčanika</translation>
|
<translation type="unfinished">SilentDragonXLite treba 24 reči za obnovu novčanika</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="198"/>
|
<location filename="../src/mainwindow.cpp" line="198"/>
|
||||||
@@ -1810,8 +1810,8 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation>Molimo pričekajte da se SilentDragonLite zatvori</translation>
|
<translation>Molimo pričekajte da se SilentDragonXLite zatvori</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2018"/>
|
<location filename="../src/controller.cpp" line="2018"/>
|
||||||
@@ -2296,8 +2296,8 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>SilentDragonLite treba 24 reči za obnovu novčanika</translation>
|
<translation>SilentDragonXLite treba 24 reči za obnovu novčanika</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
<location filename="../src/firsttimewizard.cpp" line="678"/>
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="17"/>
|
<location filename="../src/connection.ui" line="17"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -102,7 +102,7 @@ Please enter your wallet password</source>
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="14"/>
|
<location filename="../src/mainwindow.ui" line="14"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -681,7 +681,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="537"/>
|
<location filename="../src/mainwindow.cpp" line="537"/>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1212,7 +1212,7 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="1660"/>
|
<location filename="../src/controller.cpp" line="1660"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1616,7 +1616,7 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="133"/>
|
<location filename="../src/firsttimewizard.cpp" line="133"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -577,7 +577,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1100,7 +1100,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1900,7 +1900,7 @@ Yayınlanan sürümler sayfasını ziyaret etmek ister misiniz?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2609,7 +2609,7 @@ Onaylanmamış fonunuz var veya otomatik geçiş için bakiye çok düşük.</tr
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -86,8 +86,8 @@
|
|||||||
<name>ConnectionDialog</name>
|
<name>ConnectionDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite سائلینٹ ڈراگون لائٹ</translation>
|
<translation>SilentDragonXLite سائلینٹ ڈراگون لائٹ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="70"/>
|
<location filename="../src/connection.ui" line="70"/>
|
||||||
@@ -330,8 +330,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation>SilentDragonLite سائلینٹ ڈراگون لائٹ</translation>
|
<translation>SilentDragonXLite سائلینٹ ڈراگون لائٹ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="567"/>
|
<location filename="../src/mainwindow.ui" line="567"/>
|
||||||
@@ -952,7 +952,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="207"/>
|
<location filename="../src/mainwindow.cpp" line="207"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished">سائلنٹ ڈریگن لائٹ والیٹ کو بحال کرنے کے لئے 24 خوفیا الفاظ کی ضرورت ہے</translation>
|
<translation type="unfinished">سائلنٹ ڈریگن لائٹ والیٹ کو بحال کرنے کے لئے 24 خوفیا الفاظ کی ضرورت ہے</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -997,7 +997,7 @@ Please use 'Remove Wallet Encryption' if you want to remove the wallet
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="918"/>
|
<location filename="../src/mainwindow.cpp" line="918"/>
|
||||||
<source> or SilentDragonLite</source>
|
<source> or SilentDragonXLite</source>
|
||||||
<translation>یا سائلنٹ ڈریگن لائٹ</translation>
|
<translation>یا سائلنٹ ڈریگن لائٹ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1772,7 +1772,7 @@ Would you like to visit the releases page?</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2042"/>
|
<location filename="../src/controller.cpp" line="2042"/>
|
||||||
<location filename="../src/controller.cpp" line="2050"/>
|
<location filename="../src/controller.cpp" line="2050"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation> باہر جانے کا انتظار کریں Silent DragonLite براہ کرم</translation>
|
<translation> باہر جانے کا انتظار کریں Silent DragonLite براہ کرم</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2253,7 +2253,7 @@ Would you like to visit the releases page?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="643"/>
|
<location filename="../src/firsttimewizard.cpp" line="643"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation>سائلنٹ ڈریگن لائٹ والیٹ کو بحال کرنے کے لئے 24 خوفیا الفاظ کی ضرورت ہے</translation>
|
<translation>سائلنٹ ڈریگن لائٹ والیٹ کو بحال کرنے کے لئے 24 خوفیا الفاظ کی ضرورت ہے</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/connection.ui" line="29"/>
|
<location filename="../src/connection.ui" line="29"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -383,7 +383,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.ui" line="51"/>
|
<location filename="../src/mainwindow.ui" line="51"/>
|
||||||
<source>SilentDragonLite</source>
|
<source>SilentDragonXLite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1058,7 +1058,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow.cpp" line="187"/>
|
<location filename="../src/mainwindow.cpp" line="187"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -1986,7 +1986,7 @@ Please set the host/port and user/password in the Edit->Settings menu.</sourc
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/controller.cpp" line="2017"/>
|
<location filename="../src/controller.cpp" line="2017"/>
|
||||||
<location filename="../src/controller.cpp" line="2025"/>
|
<location filename="../src/controller.cpp" line="2025"/>
|
||||||
<source>Please wait for SilentDragonLite to exit</source>
|
<source>Please wait for SilentDragonXLite to exit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@@ -2557,7 +2557,7 @@ You either have unconfirmed funds or the balance is too low for an automatic mig
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
<location filename="../src/firsttimewizard.cpp" line="666"/>
|
||||||
<source>SilentDragonLite needs 24 words to restore wallet</source>
|
<source>SilentDragonXLite needs 24 words to restore wallet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|||||||
@@ -201,11 +201,11 @@ distclean.depends += librustclean
|
|||||||
QMAKE_EXTRA_TARGETS += librust libsodium librustclean distclean
|
QMAKE_EXTRA_TARGETS += librust libsodium librustclean distclean
|
||||||
QMAKE_CLEAN += $$PWD/lib/target/release/libsilentdragonxlite.a res/libsodium.a
|
QMAKE_CLEAN += $$PWD/lib/target/release/libsilentdragonxlite.a res/libsodium.a
|
||||||
|
|
||||||
win32: LIBS += -L$$PWD/lib/target/x86_64-pc-windows-gnu/release -lsilentdragonxlite -L$$PWD/res/ -llibsodium -lsecur32 -lcrypt32 -lncrypt
|
win32: LIBS += -L$$PWD/lib/target/x86_64-pc-windows-gnu/release -lsilentdragonxlite -L$$PWD/lib/libsodium-mingw/ -lsodium -lsecur32 -lcrypt32 -lncrypt
|
||||||
else:macx: LIBS += -L$$PWD/lib/target/release -lsilentdragonxlite -framework Security -framework Foundation -L$$PWD/res/ -lsodium
|
else:macx: LIBS += -L$$PWD/lib/target/release -lsilentdragonxlite -framework Security -framework Foundation -L$$PWD/res/ -lsodium
|
||||||
else:unix: LIBS += -L$$PWD/lib/target/release -lsilentdragonxlite -ldl -L$$PWD/res/ -lsodium
|
else:unix: LIBS += -L$$PWD/lib/target/release -lsilentdragonxlite -ldl -L$$PWD/res/ -lsodium
|
||||||
|
|
||||||
win32: PRE_TARGETDEPS += $$PWD/lib/target/x86_64-pc-windows-gnu/release/silentdragonxlite.lib $$PWD/res/libsodium.a
|
win32: PRE_TARGETDEPS += $$PWD/lib/target/x86_64-pc-windows-gnu/release/silentdragonxlite.lib $$PWD/lib/libsodium-mingw/libsodium.a
|
||||||
else:unix::PRE_TARGETDEPS += $$PWD/lib/target/release/libsilentdragonxlite.a $$PWD/res/libsodium.a
|
else:unix::PRE_TARGETDEPS += $$PWD/lib/target/release/libsilentdragonxlite.a $$PWD/res/libsodium.a
|
||||||
|
|
||||||
INCLUDEPATH += $$PWD/res
|
INCLUDEPATH += $$PWD/res
|
||||||
|
|||||||
16
silentdragonxlite_plugin_import.cpp
Normal file
16
silentdragonxlite_plugin_import.cpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
// This file is autogenerated by qmake. It imports static plugin classes for
|
||||||
|
// static plugins specified using QTPLUGIN and QT_PLUGIN_CLASS.<plugin> variables.
|
||||||
|
#include <QtPlugin>
|
||||||
|
Q_IMPORT_PLUGIN(QWindowsVistaStylePlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QGifPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QICNSPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QICOPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QJp2Plugin)
|
||||||
|
Q_IMPORT_PLUGIN(QJpegPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QMngPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QTgaPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QTiffPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QWbmpPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QWebpPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QGenericEnginePlugin)
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string notr="true">SilentDragonLite</string>
|
<string notr="true">SilentDragonXLite</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target)
|
|||||||
QMessageBox::critical(
|
QMessageBox::critical(
|
||||||
parent,
|
parent,
|
||||||
QObject::tr("Address Format Error"),
|
QObject::tr("Address Format Error"),
|
||||||
QObject::tr("%1 doesn't seem to be a valid hush address.").arg(addr),
|
QObject::tr("%1 doesn't seem to be a valid DRGX address.").arg(addr),
|
||||||
QMessageBox::Ok
|
QMessageBox::Ok
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ QVariant BalancesTableModel::data(const QModelIndex &index, int role) const
|
|||||||
QString theme_name = Settings::getInstance()->get_theme_name();
|
QString theme_name = Settings::getInstance()->get_theme_name();
|
||||||
QBrush b;
|
QBrush b;
|
||||||
QColor color;
|
QColor color;
|
||||||
if (theme_name == "Dark" || theme_name == "Midnight") {
|
if (theme_name == "Dark" || theme_name == "Midnight" || theme_name == "dragonx") {
|
||||||
color = COLOR_WHITE;
|
color = COLOR_WHITE;
|
||||||
}else{
|
}else{
|
||||||
color = COLOR_BLACK;
|
color = COLOR_BLACK;
|
||||||
|
|||||||
@@ -15,14 +15,16 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QWidget{
|
<string notr="true">QWidget{
|
||||||
background: whitesmoke;
|
background: rgba(216, 38, 82, 0.15);
|
||||||
border: 1px solid #afafaf;
|
border: 1px solid rgba(216, 38, 82, 0.4);
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
QLabel
|
QLabel
|
||||||
{
|
{
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
|
color: rgba(255, 255, 255, 0.9);
|
||||||
}</string>
|
}</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QLabel" name="lblMessage">
|
<widget class="QLabel" name="lblMessage">
|
||||||
|
|||||||
@@ -15,14 +15,16 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QWidget{
|
<string notr="true">QWidget{
|
||||||
background: #c8e1ff;
|
background: rgba(41, 21, 21, 0.75);
|
||||||
border: 1px solid #fefefe;
|
border: 1px solid rgba(216, 38, 82, 0.3);
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
QLabel
|
QLabel
|
||||||
{
|
{
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
|
color: rgba(255, 255, 255, 0.85);
|
||||||
}</string>
|
}</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QLabel" name="lblMessage">
|
<widget class="QLabel" name="lblMessage">
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void MainWindow::renderContactRequest(){
|
|||||||
|
|
||||||
QString icon;
|
QString icon;
|
||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
icon = ":/icons/res/unknownWhite.png";
|
icon = ":/icons/res/unknownWhite.png";
|
||||||
}else{
|
}else{
|
||||||
icon = ":/icons/res/unknownBlack.png";
|
icon = ":/icons/res/unknownBlack.png";
|
||||||
@@ -571,7 +571,7 @@ void MainWindow::sendChat() {
|
|||||||
movie1->setFileName(":/img/res/loaderwhite.gif");
|
movie1->setFileName(":/img/res/loaderwhite.gif");
|
||||||
|
|
||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
|
|
||||||
connect(movie, &QMovie::frameChanged, [=]{
|
connect(movie, &QMovie::frameChanged, [=]{
|
||||||
ui->sendChatButton->setIcon(movie->currentPixmap());
|
ui->sendChatButton->setIcon(movie->currentPixmap());
|
||||||
@@ -603,7 +603,7 @@ void MainWindow::sendChat() {
|
|||||||
|
|
||||||
QTimer::singleShot(1000, [=]() {
|
QTimer::singleShot(1000, [=]() {
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QPixmap send(":/icons/res/send-white.png");
|
QPixmap send(":/icons/res/send-white.png");
|
||||||
QIcon sendIcon(send);
|
QIcon sendIcon(send);
|
||||||
ui->sendChatButton->setIcon(sendIcon);
|
ui->sendChatButton->setIcon(sendIcon);
|
||||||
@@ -640,7 +640,7 @@ void MainWindow::sendChat() {
|
|||||||
movie->stop();
|
movie->stop();
|
||||||
|
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QPixmap send(":/icons/res/send-white.png");
|
QPixmap send(":/icons/res/send-white.png");
|
||||||
QIcon sendIcon(send);
|
QIcon sendIcon(send);
|
||||||
ui->sendChatButton->setIcon(sendIcon);
|
ui->sendChatButton->setIcon(sendIcon);
|
||||||
@@ -870,7 +870,7 @@ void MainWindow::ContactRequest() {
|
|||||||
QMovie *movie1 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");
|
QMovie *movie1 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");
|
||||||
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");
|
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");
|
||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
movie2->setScaledSize(QSize(512,512));
|
movie2->setScaledSize(QSize(512,512));
|
||||||
connD->topIcon->setMovie(movie2);
|
connD->topIcon->setMovie(movie2);
|
||||||
movie2->start();
|
movie2->start();
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ ConnectionLoader::ConnectionLoader(MainWindow* main, Controller* rpc)
|
|||||||
//DEBUG("theme " << theme << " has loaded");
|
//DEBUG("theme " << theme << " has loaded");
|
||||||
auto size = QSize(512,512);
|
auto size = QSize(512,512);
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
||||||
movie2->setScaledSize(size);
|
movie2->setScaledSize(size);
|
||||||
qDebug() << "Animation dark loaded";
|
qDebug() << "Animation dark loaded";
|
||||||
@@ -108,6 +108,7 @@ void ConnectionLoader::ShowProgress()
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto me = this;
|
auto me = this;
|
||||||
|
delete isSyncing;
|
||||||
isSyncing = new QAtomicInteger<bool>(true);
|
isSyncing = new QAtomicInteger<bool>(true);
|
||||||
DEBUG("isSyncing set to true");
|
DEBUG("isSyncing set to true");
|
||||||
|
|
||||||
@@ -123,6 +124,9 @@ void ConnectionLoader::ShowProgress()
|
|||||||
DEBUG("sync rpc error! server=" << config->server);
|
DEBUG("sync rpc error! server=" << config->server);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
lastSyncedBlock = -1;
|
||||||
|
syncStallCount = 0;
|
||||||
|
|
||||||
QObject::connect(syncTimer, &QTimer::timeout, [=]() {
|
QObject::connect(syncTimer, &QTimer::timeout, [=]() {
|
||||||
if (!isSyncing || !isSyncing->load()) {
|
if (!isSyncing || !isSyncing->load()) {
|
||||||
DEBUG("Syncing complete or isSyncing is null, stopping timer");
|
DEBUG("Syncing complete or isSyncing is null, stopping timer");
|
||||||
@@ -140,6 +144,29 @@ void ConnectionLoader::ShowProgress()
|
|||||||
me->showInformation(
|
me->showInformation(
|
||||||
"Syncing... " + QString::number(synced) + " / " + QString::number(total)
|
"Syncing... " + QString::number(synced) + " / " + QString::number(total)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Stuck sync detection
|
||||||
|
if (synced <= me->lastSyncedBlock && synced < total) {
|
||||||
|
me->syncStallCount++;
|
||||||
|
if (me->syncStallCount >= 10) {
|
||||||
|
qDebug() << "Import sync stuck at block" << synced << "for 10s, clearing and rescanning";
|
||||||
|
me->showInformation("Sync stuck, rescanning...");
|
||||||
|
me->syncStallCount = 0;
|
||||||
|
me->lastSyncedBlock = -1;
|
||||||
|
connection->doRPC("clear", "", [=](auto) {
|
||||||
|
connection->doRPC("rescan", "", [=](auto) {
|
||||||
|
qDebug() << "Rescan complete after stuck import sync";
|
||||||
|
}, [=](auto) {
|
||||||
|
qDebug() << "Rescan error after stuck import sync";
|
||||||
|
});
|
||||||
|
}, [=](auto) {
|
||||||
|
qDebug() << "Clear error during stuck import sync";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
me->syncStallCount = 0;
|
||||||
|
me->lastSyncedBlock = synced;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, [=](QString err) {
|
}, [=](QString err) {
|
||||||
DEBUG("Sync status error: " << err);
|
DEBUG("Sync status error: " << err);
|
||||||
@@ -148,7 +175,6 @@ void ConnectionLoader::ShowProgress()
|
|||||||
});
|
});
|
||||||
} catch (const std::exception& e) {
|
} catch (const std::exception& e) {
|
||||||
DEBUG("Exception caught in syncstatus: " << e.what());
|
DEBUG("Exception caught in syncstatus: " << e.what());
|
||||||
throw;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -225,6 +251,7 @@ void ConnectionLoader::doAutoConnect()
|
|||||||
DEBUG("Connection is online.");
|
DEBUG("Connection is online.");
|
||||||
connection->setInfo(reply);
|
connection->setInfo(reply);
|
||||||
DEBUG("getting Connection reply");
|
DEBUG("getting Connection reply");
|
||||||
|
delete isSyncing;
|
||||||
isSyncing = new QAtomicInteger<bool>();
|
isSyncing = new QAtomicInteger<bool>();
|
||||||
isSyncing->store(true);
|
isSyncing->store(true);
|
||||||
DEBUG("isSyncing set to true");
|
DEBUG("isSyncing set to true");
|
||||||
@@ -239,7 +266,76 @@ void ConnectionLoader::doAutoConnect()
|
|||||||
syncTimer->deleteLater();
|
syncTimer->deleteLater();
|
||||||
// When sync is done, set the connection
|
// When sync is done, set the connection
|
||||||
this->doRPCSetConnection(connection);
|
this->doRPCSetConnection(connection);
|
||||||
}, [=](auto) mutable {
|
}, [=](QString err) mutable {
|
||||||
|
qDebug() << "sync rpc error:" << err;
|
||||||
|
|
||||||
|
// If user already confirmed clearing from stuck detection, do it now (old sync is finished)
|
||||||
|
if (me->reorgHandled) {
|
||||||
|
qDebug() << "Old sync finished, performing deferred clear+resync";
|
||||||
|
me->showInformation("Clearing old data and resyncing...");
|
||||||
|
syncTimer->stop();
|
||||||
|
connection->doRPC("clear", "", [=](auto) {
|
||||||
|
qDebug() << "State cleared, starting fresh sync";
|
||||||
|
me->syncStallCount = 0;
|
||||||
|
me->lastSyncedBlock = -1;
|
||||||
|
me->reorgHandled = false;
|
||||||
|
isSyncing->store(true);
|
||||||
|
syncTimer->start();
|
||||||
|
connection->doRPC("sync", "", [=](auto) {
|
||||||
|
qDebug() << "Fresh sync complete";
|
||||||
|
isSyncing->store(false);
|
||||||
|
syncTimer->deleteLater();
|
||||||
|
this->doRPCSetConnection(connection);
|
||||||
|
}, [=](auto) {
|
||||||
|
qDebug() << "Fresh sync also failed";
|
||||||
|
});
|
||||||
|
}, [=](auto) {
|
||||||
|
qDebug() << "Failed to clear wallet state";
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Detect reorg failure from incompatible old chain data
|
||||||
|
if (err.contains("Reorg") || err.contains("reorg")) {
|
||||||
|
qDebug() << "Detected incompatible chain data, prompting user for fresh sync";
|
||||||
|
isSyncing->store(false);
|
||||||
|
syncTimer->stop();
|
||||||
|
|
||||||
|
QMessageBox::StandardButton reply = QMessageBox::question(
|
||||||
|
main,
|
||||||
|
QObject::tr("Incompatible Block Data"),
|
||||||
|
QObject::tr("The wallet contains block data from an old or incompatible chain. "
|
||||||
|
"This prevents syncing.\n\n"
|
||||||
|
"Would you like to clear the old data and sync fresh from the network?\n"
|
||||||
|
"(Your wallet keys and addresses will be preserved)"),
|
||||||
|
QMessageBox::Yes | QMessageBox::No
|
||||||
|
);
|
||||||
|
|
||||||
|
if (reply == QMessageBox::Yes) {
|
||||||
|
qDebug() << "User chose to rescan, clearing state";
|
||||||
|
me->showInformation("Clearing old data and resyncing...");
|
||||||
|
connection->doRPC("clear", "", [=](auto) {
|
||||||
|
qDebug() << "State cleared, starting fresh sync";
|
||||||
|
isSyncing->store(true);
|
||||||
|
syncTimer->start();
|
||||||
|
connection->doRPC("sync", "", [=](auto) {
|
||||||
|
qDebug() << "Fresh sync complete";
|
||||||
|
isSyncing->store(false);
|
||||||
|
syncTimer->deleteLater();
|
||||||
|
this->doRPCSetConnection(connection);
|
||||||
|
}, [=](auto) {
|
||||||
|
qDebug() << "Fresh sync also failed";
|
||||||
|
});
|
||||||
|
}, [=](auto) {
|
||||||
|
qDebug() << "Failed to clear wallet state";
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
me->showError(QObject::tr("Sync cannot proceed with incompatible chain data. "
|
||||||
|
"Please manually delete the wallet data file and restart."));
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG("sync rpc error! server=" << config->server);
|
DEBUG("sync rpc error! server=" << config->server);
|
||||||
// Attempt to retry sync RPC with a delay
|
// Attempt to retry sync RPC with a delay
|
||||||
QTimer::singleShot(5000, [=]() { // 5-second delay
|
QTimer::singleShot(5000, [=]() { // 5-second delay
|
||||||
@@ -257,6 +353,12 @@ void ConnectionLoader::doAutoConnect()
|
|||||||
});
|
});
|
||||||
|
|
||||||
// While it is syncing, we'll show the status updates while it is alive.
|
// While it is syncing, we'll show the status updates while it is alive.
|
||||||
|
// Also detect stuck syncs: if synced_blocks doesn't advance (or goes backwards) for 10 ticks (10s),
|
||||||
|
// show reorg dialog.
|
||||||
|
lastSyncedBlock = -1;
|
||||||
|
syncStallCount = 0;
|
||||||
|
reorgHandled = false;
|
||||||
|
|
||||||
QObject::connect(syncTimer, &QTimer::timeout, [=]() {
|
QObject::connect(syncTimer, &QTimer::timeout, [=]() {
|
||||||
DEBUG("Check the sync status");
|
DEBUG("Check the sync status");
|
||||||
if (isSyncing != nullptr && isSyncing->load()) {
|
if (isSyncing != nullptr && isSyncing->load()) {
|
||||||
@@ -269,6 +371,38 @@ void ConnectionLoader::doAutoConnect()
|
|||||||
me->showInformation(
|
me->showInformation(
|
||||||
"Syncing... " + QString::number(synced) + " / " + QString::number(total)
|
"Syncing... " + QString::number(synced) + " / " + QString::number(total)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Stuck sync detection: if synced block hasn't advanced (or goes backwards) in 10 seconds
|
||||||
|
if (synced <= me->lastSyncedBlock && synced < total) {
|
||||||
|
me->syncStallCount++;
|
||||||
|
if (me->syncStallCount >= 10 && !me->reorgHandled) {
|
||||||
|
qDebug() << "Sync stuck/backwards at block" << synced << "for 10s, showing reorg dialog";
|
||||||
|
// Set flag BEFORE showing dialog to prevent re-entry from timer events
|
||||||
|
me->reorgHandled = true;
|
||||||
|
|
||||||
|
QMessageBox::StandardButton reply = QMessageBox::question(
|
||||||
|
main,
|
||||||
|
QObject::tr("Incompatible Block Data"),
|
||||||
|
QObject::tr("The wallet contains block data from an old or incompatible chain. "
|
||||||
|
"This prevents syncing.\n\n"
|
||||||
|
"Would you like to clear the old data and sync fresh from the network?\n"
|
||||||
|
"(Your wallet keys and addresses will be preserved)"),
|
||||||
|
QMessageBox::Yes | QMessageBox::No
|
||||||
|
);
|
||||||
|
|
||||||
|
if (reply == QMessageBox::Yes) {
|
||||||
|
qDebug() << "User chose to clear, waiting for current sync to finish";
|
||||||
|
me->showInformation("Please wait, preparing to clear old data...");
|
||||||
|
} else {
|
||||||
|
syncTimer->stop();
|
||||||
|
me->showError(QObject::tr("Sync cannot proceed with incompatible chain data. "
|
||||||
|
"Please manually delete the wallet data file and restart."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
me->syncStallCount = 0;
|
||||||
|
me->lastSyncedBlock = synced;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[=](QString err) {
|
[=](QString err) {
|
||||||
|
|||||||
@@ -49,6 +49,10 @@ private:
|
|||||||
QTimer* syncTimer = nullptr;
|
QTimer* syncTimer = nullptr;
|
||||||
QAtomicInteger<bool>* isSyncing = nullptr;
|
QAtomicInteger<bool>* isSyncing = nullptr;
|
||||||
|
|
||||||
|
qint64 lastSyncedBlock = -1;
|
||||||
|
int syncStallCount = 0;
|
||||||
|
bool reorgHandled = false;
|
||||||
|
|
||||||
QDialog* d = nullptr;
|
QDialog* d = nullptr;
|
||||||
Ui_ConnectionDialog* connD = nullptr;
|
Ui_ConnectionDialog* connD = nullptr;
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>SilentDragonLite</string>
|
<string>SilentDragonXLite</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="modal">
|
<property name="modal">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
|||||||
@@ -130,13 +130,13 @@ void MainWindow::showRequesthush() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (d.exec() == QDialog::Accepted) {
|
if (d.exec() == QDialog::Accepted) {
|
||||||
// Construct a hush Payment URI with the data and pay it immediately.
|
// Construct a DRGX Payment URI with the data and pay it immediately.
|
||||||
CAmount amount = CAmount::fromDecimalString(req.txtAmount->text());
|
CAmount amount = CAmount::fromDecimalString(req.txtAmount->text());
|
||||||
QString memoURI = "hush:" + req.lblAddressInfo->text()
|
QString memoURI = "drgx:" + req.lblAddressInfo->text()
|
||||||
+ "?amt=" + amount.toDecimalString()
|
+ "?amt=" + amount.toDecimalString()
|
||||||
+ "&memo=" + QUrl::toPercentEncoding(req.txtMemo->toPlainText());
|
+ "&memo=" + QUrl::toPercentEncoding(req.txtMemo->toPlainText());
|
||||||
|
|
||||||
QString sendURI = "hush:" + AddressBook::addressFromAddressLabel(req.txtFrom->text())
|
QString sendURI = "drgx:" + AddressBook::addressFromAddressLabel(req.txtFrom->text())
|
||||||
+ "?amt=0.0001"
|
+ "?amt=0.0001"
|
||||||
+ "&memo=" + QUrl::toPercentEncoding(memoURI);
|
+ "&memo=" + QUrl::toPercentEncoding(memoURI);
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "camount.h"
|
#include "camount.h"
|
||||||
|
#include "../lib/silentdragonxlitelib.h"
|
||||||
#include "Model/ChatItem.h"
|
#include "Model/ChatItem.h"
|
||||||
#include "DataStore/DataStore.h"
|
#include "DataStore/DataStore.h"
|
||||||
#include <future>
|
#include <future>
|
||||||
@@ -320,9 +321,10 @@ void Controller::getInfoThenRefresh(bool force)
|
|||||||
int curBlock = reply["latest_block_height"].get<json::number_integer_t>();
|
int curBlock = reply["latest_block_height"].get<json::number_integer_t>();
|
||||||
bool doUpdate = force || (model->getLatestBlock() != curBlock);
|
bool doUpdate = force || (model->getLatestBlock() != curBlock);
|
||||||
int difficulty = reply["difficulty"].get<json::number_integer_t>();
|
int difficulty = reply["difficulty"].get<json::number_integer_t>();
|
||||||
int num_halvings = 1; // number of halvings that have occured already
|
int halving_interval = 3500000;
|
||||||
int blocks_until_halving = (num_halvings*1680000 + 340000) - curBlock;
|
int num_halvings = curBlock / halving_interval;
|
||||||
int blocktime = 75;
|
int blocks_until_halving = ((num_halvings + 1) * halving_interval) - curBlock;
|
||||||
|
int blocktime = 36;
|
||||||
int halving_days = (blocks_until_halving * blocktime) / (60 * 60 * 24) ;
|
int halving_days = (blocks_until_halving * blocktime) / (60 * 60 * 24) ;
|
||||||
int longestchain = reply["longestchain"].get<json::number_integer_t>();
|
int longestchain = reply["longestchain"].get<json::number_integer_t>();
|
||||||
int notarized = reply["notarized"].get<json::number_integer_t>();
|
int notarized = reply["notarized"].get<json::number_integer_t>();
|
||||||
@@ -2018,6 +2020,9 @@ void Controller::refreshDRAGONXPrice()
|
|||||||
|
|
||||||
void Controller::shutdownhushd()
|
void Controller::shutdownhushd()
|
||||||
{
|
{
|
||||||
|
// Signal Rust to stop background threads (mempool monitor, etc.)
|
||||||
|
litelib_shutdown();
|
||||||
|
|
||||||
// Save the wallet and exit the lightclient library cleanly.
|
// Save the wallet and exit the lightclient library cleanly.
|
||||||
if (!zrpc) {
|
if (!zrpc) {
|
||||||
zrpc = new LiteInterface();
|
zrpc = new LiteInterface();
|
||||||
@@ -2032,14 +2037,14 @@ void Controller::shutdownhushd()
|
|||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
auto size = QSize(512,512);
|
auto size = QSize(512,512);
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
||||||
movie2->setScaledSize(size);
|
movie2->setScaledSize(size);
|
||||||
qDebug() << "Animation dark loaded";
|
qDebug() << "Animation dark loaded";
|
||||||
connD.topIcon->setMovie(movie2);
|
connD.topIcon->setMovie(movie2);
|
||||||
movie2->start();
|
movie2->start();
|
||||||
connD.status->setText(QObject::tr("Please wait for SilentDragonXLite to exit"));
|
connD.status->setText(QObject::tr("Please wait for SilentDragonXLite to exit"));
|
||||||
connD.statusDetail->setText(QObject::tr("It may take several minutes"));
|
connD.statusDetail->setText(QObject::tr("Saving wallet..."));
|
||||||
} else {
|
} else {
|
||||||
QMovie *movie1 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
QMovie *movie1 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
||||||
movie1->setScaledSize(size);
|
movie1->setScaledSize(size);
|
||||||
@@ -2047,7 +2052,7 @@ void Controller::shutdownhushd()
|
|||||||
connD.topIcon->setMovie(movie1);
|
connD.topIcon->setMovie(movie1);
|
||||||
movie1->start();
|
movie1->start();
|
||||||
connD.status->setText(QObject::tr("Please wait for SilentDragonXLite to exit"));
|
connD.status->setText(QObject::tr("Please wait for SilentDragonXLite to exit"));
|
||||||
connD.statusDetail->setText(QObject::tr("It may take several minutes"));
|
connD.statusDetail->setText(QObject::tr("Saving wallet..."));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool finished = false;
|
bool finished = false;
|
||||||
@@ -2058,6 +2063,15 @@ void Controller::shutdownhushd()
|
|||||||
qDebug() << __func__ << ": saveWallet finished";
|
qDebug() << __func__ << ": saveWallet finished";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Add a timeout so the dialog can't hang forever
|
||||||
|
QTimer::singleShot(15000, &d, [&]() {
|
||||||
|
if (!finished) {
|
||||||
|
qDebug() << __func__ << ": saveWallet timed out after 15 seconds, forcing exit";
|
||||||
|
finished = true;
|
||||||
|
d.accept();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!finished)
|
if (!finished)
|
||||||
d.exec();
|
d.exec();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -28,12 +28,10 @@ void FilledIconLabel::resizeEvent(QResizeEvent*) {
|
|||||||
color = COLOR_BLUE_BG;
|
color = COLOR_BLUE_BG;
|
||||||
}else if(theme_name == "Light"){
|
}else if(theme_name == "Light"){
|
||||||
color = COLOR_LIGHT_BG;
|
color = COLOR_LIGHT_BG;
|
||||||
}else if(theme_name == "Dark"){
|
}else if(theme_name == "Dark" || theme_name == "dragonx"){
|
||||||
color = COLOR_DARK_BG;
|
color = COLOR_DARK_BG;
|
||||||
}else if(theme_name =="Midnight"){
|
}else if(theme_name =="Midnight"){
|
||||||
color = COLOR_MIDNIGHT_BG;
|
color = COLOR_MIDNIGHT_BG;
|
||||||
}else if(theme_name =="dragonx"){
|
|
||||||
color = COLOR_DRAGONX_BG;
|
|
||||||
}else{
|
}else{
|
||||||
color = COLOR_DEFAULT_BG;
|
color = COLOR_DEFAULT_BG;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ void FirstTimeWizard::slot_change_theme(const QString& theme_name) {
|
|||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
saved_theme_name = "Dark";
|
saved_theme_name = "dragonx";
|
||||||
}
|
}
|
||||||
|
|
||||||
QFile qFile(":/css/res/css/" + saved_theme_name +".css");
|
QFile qFile(":/css/res/css/" + saved_theme_name +".css");
|
||||||
@@ -209,7 +209,10 @@ NewOrRestorePage::NewOrRestorePage(FirstTimeWizard *parent) : QWizardPage(parent
|
|||||||
crypto_pwhash_ALG_DEFAULT) != 0) {
|
crypto_pwhash_ALG_DEFAULT) != 0) {
|
||||||
/* out of memory */
|
/* out of memory */
|
||||||
qDebug() << __func__ << ": crypto_pwhash failed! Possibly out of memory";
|
qDebug() << __func__ << ": crypto_pwhash failed! Possibly out of memory";
|
||||||
exit(1);
|
QMessageBox::critical(nullptr, "Fatal Error",
|
||||||
|
"Password hashing failed (possibly out of memory). The application cannot continue.");
|
||||||
|
qApp->exit(1);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
QString passphraseHash1 = QByteArray(reinterpret_cast<const char*>(key), KEY_LEN).toHex();
|
QString passphraseHash1 = QByteArray(reinterpret_cast<const char*>(key), KEY_LEN).toHex();
|
||||||
DataStore::getChatDataStore()->setPassword(passphraseHash1);
|
DataStore::getChatDataStore()->setPassword(passphraseHash1);
|
||||||
@@ -409,7 +412,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word1, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word1, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word1 + " ");
|
verifyseed.verify->insertPlainText(word1 + " ");
|
||||||
verifyseed.word1->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word1->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word1->font();
|
QFont button = verifyseed.word1->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word1->setFont(button);
|
verifyseed.word1->setFont(button);
|
||||||
@@ -418,7 +421,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word2, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word2, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word2);
|
verifyseed.verify->insertPlainText(word2);
|
||||||
verifyseed.word2->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word2->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word2->font();
|
QFont button = verifyseed.word2->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word2->setFont(button);
|
verifyseed.word2->setFont(button);
|
||||||
@@ -427,7 +430,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word3, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word3, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word3 + " ");
|
verifyseed.verify->insertPlainText(word3 + " ");
|
||||||
verifyseed.word3->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word3->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word3->font();
|
QFont button = verifyseed.word3->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word3->setFont(button);
|
verifyseed.word3->setFont(button);
|
||||||
@@ -436,7 +439,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word4, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word4, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word4 + " ");
|
verifyseed.verify->insertPlainText(word4 + " ");
|
||||||
verifyseed.word4->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word4->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word4->font();
|
QFont button = verifyseed.word4->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word4->setFont(button);
|
verifyseed.word4->setFont(button);
|
||||||
@@ -445,7 +448,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word5, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word5, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word5 + " ");
|
verifyseed.verify->insertPlainText(word5 + " ");
|
||||||
verifyseed.word5->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word5->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word5->font();
|
QFont button = verifyseed.word5->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word5->setFont(button);
|
verifyseed.word5->setFont(button);
|
||||||
@@ -454,7 +457,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word6, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word6, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word6 + " ");
|
verifyseed.verify->insertPlainText(word6 + " ");
|
||||||
verifyseed.word6->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word6->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word6->font();
|
QFont button = verifyseed.word6->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word6->setFont(button);
|
verifyseed.word6->setFont(button);
|
||||||
@@ -463,7 +466,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word7, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word7, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word7 + " ");
|
verifyseed.verify->insertPlainText(word7 + " ");
|
||||||
verifyseed.word7->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word7->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word7->font();
|
QFont button = verifyseed.word7->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word7->setFont(button);
|
verifyseed.word7->setFont(button);
|
||||||
@@ -472,7 +475,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word8, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word8, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word8 + " ");
|
verifyseed.verify->insertPlainText(word8 + " ");
|
||||||
verifyseed.word8->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word8->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word8->font();
|
QFont button = verifyseed.word8->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word8->setFont(button);
|
verifyseed.word8->setFont(button);
|
||||||
@@ -481,7 +484,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word9, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word9, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word9 + " ");
|
verifyseed.verify->insertPlainText(word9 + " ");
|
||||||
verifyseed.word9->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word9->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word9->font();
|
QFont button = verifyseed.word9->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word9->setFont(button);
|
verifyseed.word9->setFont(button);
|
||||||
@@ -490,7 +493,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word10, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word10, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word10 + " ");
|
verifyseed.verify->insertPlainText(word10 + " ");
|
||||||
verifyseed.word10->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word10->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word10->font();
|
QFont button = verifyseed.word10->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word10->setFont(button);
|
verifyseed.word10->setFont(button);
|
||||||
@@ -499,7 +502,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word11, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word11, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word11 + " ");
|
verifyseed.verify->insertPlainText(word11 + " ");
|
||||||
verifyseed.word11->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word11->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word11->font();
|
QFont button = verifyseed.word11->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word11->setFont(button);
|
verifyseed.word11->setFont(button);
|
||||||
@@ -508,7 +511,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word12, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word12, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word12 + " ");
|
verifyseed.verify->insertPlainText(word12 + " ");
|
||||||
verifyseed.word12->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word12->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word12->font();
|
QFont button = verifyseed.word12->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word12->setFont(button);
|
verifyseed.word12->setFont(button);
|
||||||
@@ -517,7 +520,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word13, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word13, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word13 + " ");
|
verifyseed.verify->insertPlainText(word13 + " ");
|
||||||
verifyseed.word13->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word13->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word13->font();
|
QFont button = verifyseed.word13->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word13->setFont(button);
|
verifyseed.word13->setFont(button);
|
||||||
@@ -526,7 +529,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word14, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word14, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word14 + " ");
|
verifyseed.verify->insertPlainText(word14 + " ");
|
||||||
verifyseed.word14->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word14->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word14->font();
|
QFont button = verifyseed.word14->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word14->setFont(button);
|
verifyseed.word14->setFont(button);
|
||||||
@@ -535,7 +538,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word15, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word15, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word15 + " ");
|
verifyseed.verify->insertPlainText(word15 + " ");
|
||||||
verifyseed.word15->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word15->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word15->font();
|
QFont button = verifyseed.word15->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word15->setFont(button);
|
verifyseed.word15->setFont(button);
|
||||||
@@ -544,7 +547,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word16, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word16, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word16 + " ");
|
verifyseed.verify->insertPlainText(word16 + " ");
|
||||||
verifyseed.word16->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word16->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word16->font();
|
QFont button = verifyseed.word16->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word16->setFont(button);
|
verifyseed.word16->setFont(button);
|
||||||
@@ -553,7 +556,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word17, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word17, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word17 + " ");
|
verifyseed.verify->insertPlainText(word17 + " ");
|
||||||
verifyseed.word17->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word17->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word17->font();
|
QFont button = verifyseed.word17->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word17->setFont(button);
|
verifyseed.word17->setFont(button);
|
||||||
@@ -562,7 +565,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word18, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word18, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word18 + " ");
|
verifyseed.verify->insertPlainText(word18 + " ");
|
||||||
verifyseed.word18->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word18->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word18->font();
|
QFont button = verifyseed.word18->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word18->setFont(button);
|
verifyseed.word18->setFont(button);
|
||||||
@@ -571,7 +574,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word19, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word19, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word19 + " ");
|
verifyseed.verify->insertPlainText(word19 + " ");
|
||||||
verifyseed.word19->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word19->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word19->font();
|
QFont button = verifyseed.word19->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word19->setFont(button);
|
verifyseed.word19->setFont(button);
|
||||||
@@ -580,7 +583,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word20, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word20, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word20 + " ");
|
verifyseed.verify->insertPlainText(word20 + " ");
|
||||||
verifyseed.word20->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word20->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word20->font();
|
QFont button = verifyseed.word20->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word20->setFont(button);
|
verifyseed.word20->setFont(button);
|
||||||
@@ -589,7 +592,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word21, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word21, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word21 + " ");
|
verifyseed.verify->insertPlainText(word21 + " ");
|
||||||
verifyseed.word21->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word21->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word21->font();
|
QFont button = verifyseed.word21->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word21->setFont(button);
|
verifyseed.word21->setFont(button);
|
||||||
@@ -598,7 +601,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word22, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word22, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word22 + " ");
|
verifyseed.verify->insertPlainText(word22 + " ");
|
||||||
verifyseed.word22->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word22->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word22->font();
|
QFont button = verifyseed.word22->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word22->setFont(button);
|
verifyseed.word22->setFont(button);
|
||||||
@@ -607,7 +610,7 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word23, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word23, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word23 + " ");
|
verifyseed.verify->insertPlainText(word23 + " ");
|
||||||
verifyseed.word23->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word23->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word23->font();
|
QFont button = verifyseed.word23->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word23->setFont(button);
|
verifyseed.word23->setFont(button);
|
||||||
@@ -616,14 +619,38 @@ bool NewSeedPage::validatePage() {
|
|||||||
QObject::connect(verifyseed.word24, &QPushButton::clicked, [&] () {
|
QObject::connect(verifyseed.word24, &QPushButton::clicked, [&] () {
|
||||||
|
|
||||||
verifyseed.verify->insertPlainText(word24 + " ");
|
verifyseed.verify->insertPlainText(word24 + " ");
|
||||||
verifyseed.word24->setStyleSheet("background-color: rgb(182,182,182);");
|
verifyseed.word24->setStyleSheet("background-color: rgba(216, 38, 82, 0.3); color: rgba(255,255,255,0.5);");
|
||||||
QFont button = verifyseed.word24->font();
|
QFont button = verifyseed.word24->font();
|
||||||
button.setStrikeOut(true);
|
button.setStrikeOut(true);
|
||||||
verifyseed.word24->setFont(button);
|
verifyseed.word24->setFont(button);
|
||||||
verifyseed.word24->setEnabled(false);
|
verifyseed.word24->setEnabled(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog.exec();
|
// Add a "Skip Verification" button to the dialog
|
||||||
|
QPushButton *skipButton = verifyseed.buttonBox->addButton(tr("Skip Verification"), QDialogButtonBox::ActionRole);
|
||||||
|
QObject::connect(skipButton, &QPushButton::clicked, [&dialog] () {
|
||||||
|
dialog.done(2); // custom result code for skip
|
||||||
|
});
|
||||||
|
|
||||||
|
int dialogResult = dialog.exec();
|
||||||
|
|
||||||
|
// Skip verification: save wallet and proceed
|
||||||
|
if (dialogResult == 2) {
|
||||||
|
QString reply = "";
|
||||||
|
try {
|
||||||
|
char* resp = litelib_execute("save", "");
|
||||||
|
reply = litelib_process_response(resp);
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
qDebug() << __func__ << ": caught an exception, ignoring: " << e.what();
|
||||||
|
}
|
||||||
|
auto parsed = json::parse(reply.toStdString().c_str(), nullptr, false);
|
||||||
|
if (parsed.is_discarded() || parsed.is_null() || parsed.find("result") == parsed.end()) {
|
||||||
|
QMessageBox::warning(this, tr("Failed to save wallet"),
|
||||||
|
tr("Couldn't save the wallet") + "\n" + reply, QMessageBox::Ok);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
QString reply = "";
|
QString reply = "";
|
||||||
if ((verifyseed.verify->toPlainText() == seed) && (verifyseed.verifyBirthday->toPlainText() == birthday)) {
|
if ((verifyseed.verify->toPlainText() == seed) && (verifyseed.verifyBirthday->toPlainText() == birthday)) {
|
||||||
@@ -733,7 +760,7 @@ bool RestoreSeedPage::validatePage() {
|
|||||||
QString reply = "";
|
QString reply = "";
|
||||||
try {
|
try {
|
||||||
char *resp = litelib_initialize_new_from_phrase(parent->dangerous, parent->server.toStdString().c_str(),
|
char *resp = litelib_initialize_new_from_phrase(parent->dangerous, parent->server.toStdString().c_str(),
|
||||||
seed.toStdString().c_str(), birthday, number);
|
seed.toStdString().c_str(), birthday, number, true);
|
||||||
|
|
||||||
if (resp != nullptr) {
|
if (resp != nullptr) {
|
||||||
reply = litelib_process_response(resp);
|
reply = litelib_process_response(resp);
|
||||||
@@ -752,7 +779,7 @@ if (reply.toUpper().trimmed() != "OK") {
|
|||||||
qDebug() << __func__ << ": new server is " << parent->server;
|
qDebug() << __func__ << ": new server is " << parent->server;
|
||||||
|
|
||||||
char *resp = litelib_initialize_new_from_phrase(parent->dangerous, parent->server.toStdString().c_str(),
|
char *resp = litelib_initialize_new_from_phrase(parent->dangerous, parent->server.toStdString().c_str(),
|
||||||
seed.toStdString().c_str(), birthday, number);
|
seed.toStdString().c_str(), birthday, number, true);
|
||||||
if (resp != nullptr) {
|
if (resp != nullptr) {
|
||||||
reply = litelib_process_response(resp);
|
reply = litelib_process_response(resp);
|
||||||
} else {
|
} else {
|
||||||
@@ -778,7 +805,7 @@ if (reply.toUpper().trimmed() != "OK") {
|
|||||||
|
|
||||||
// make a new connection to the new server
|
// make a new connection to the new server
|
||||||
char* resp = litelib_initialize_new_from_phrase(parent->dangerous, parent->server.toStdString().c_str(),
|
char* resp = litelib_initialize_new_from_phrase(parent->dangerous, parent->server.toStdString().c_str(),
|
||||||
seed.toStdString().c_str(), birthday, number);
|
seed.toStdString().c_str(), birthday, number, true);
|
||||||
reply = litelib_process_response(resp);
|
reply = litelib_process_response(resp);
|
||||||
|
|
||||||
// retry with the new server
|
// retry with the new server
|
||||||
|
|||||||
10
src/main.cpp
10
src/main.cpp
@@ -150,11 +150,11 @@ public:
|
|||||||
|
|
||||||
// Command line parser
|
// Command line parser
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
parser.setApplicationDescription("Shielded desktop light wallet for hush");
|
parser.setApplicationDescription("Shielded desktop light wallet for DragonX");
|
||||||
parser.addHelpOption();
|
parser.addHelpOption();
|
||||||
|
|
||||||
// Positional argument will specify a hush payment URI
|
// Positional argument will specify a DRGX payment URI
|
||||||
parser.addPositionalArgument("hushURI", "An optional hush URI to pay");
|
parser.addPositionalArgument("drgxURI", "An optional DRGX URI to pay");
|
||||||
|
|
||||||
parser.process(a);
|
parser.process(a);
|
||||||
|
|
||||||
@@ -201,7 +201,9 @@ public:
|
|||||||
if (sodium_init() < 0) {
|
if (sodium_init() < 0) {
|
||||||
/* panic! the library couldn't be initialized, it is not safe to use */
|
/* panic! the library couldn't be initialized, it is not safe to use */
|
||||||
qDebug() << "libsodium is not initialized!";
|
qDebug() << "libsodium is not initialized!";
|
||||||
exit(0);
|
QMessageBox::critical(nullptr, "Fatal Error",
|
||||||
|
"Failed to initialize libsodium cryptography library. The application cannot continue.");
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings::getInstance()->setUseEmbedded(false);
|
Settings::getInstance()->setUseEmbedded(false);
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
theme_name = "Dark";
|
theme_name = "dragonx";
|
||||||
}
|
}
|
||||||
|
|
||||||
this->slot_change_theme(theme_name);
|
this->slot_change_theme(theme_name);
|
||||||
@@ -160,143 +160,37 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
// Rescan
|
// Rescan
|
||||||
QObject::connect(ui->actionRescan, &QAction::triggered, [=]() {
|
QObject::connect(ui->actionRescan, &QAction::triggered, [=]() {
|
||||||
DEBUG("rescan action triggered");
|
DEBUG("rescan action triggered");
|
||||||
Ui_Restore restoreSeed;
|
|
||||||
QDialog dialog(this);
|
|
||||||
restoreSeed.setupUi(&dialog);
|
|
||||||
Settings::saveRestore(&dialog);
|
|
||||||
|
|
||||||
rpc->fetchSeed([=](json reply) {
|
// Ask user for rescan height
|
||||||
if (isJsonError(reply)) {
|
bool ok;
|
||||||
|
QString heightStr = QInputDialog::getText(this, tr("Rescan Wallet"),
|
||||||
|
tr("Rescan from height (0 to rescan from the beginning):"),
|
||||||
|
QLineEdit::Normal, "0", &ok);
|
||||||
|
|
||||||
|
if (!ok) return;
|
||||||
|
|
||||||
|
QString height = heightStr.trimmed();
|
||||||
|
if (height.isEmpty()) height = "0";
|
||||||
|
|
||||||
|
// Validate it's a number
|
||||||
|
height.toULongLong(&ok);
|
||||||
|
if (!ok) {
|
||||||
|
QMessageBox::warning(this, tr("Invalid height"),
|
||||||
|
tr("Please enter a valid block height number."),
|
||||||
|
QMessageBox::Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
restoreSeed.seed->setReadOnly(true);
|
// Clear wallet state from the specified height, then resync
|
||||||
restoreSeed.seed->setLineWrapMode(QPlainTextEdit::LineWrapMode::NoWrap);
|
rpc->getConnection()->doRPCWithDefaultErrorHandling("clear", height, [=] (auto) {
|
||||||
QString seedJson = QString::fromStdString(reply["seed"].get<json::string_t>());
|
qDebug() << "Cleared wallet state to height" << height;
|
||||||
restoreSeed.seed->setPlainText(seedJson);
|
|
||||||
|
|
||||||
QString birthday = QString::number(reply["birthday"].get<json::number_unsigned_t>());
|
|
||||||
restoreSeed.birthday->setPlainText(birthday);
|
|
||||||
});
|
|
||||||
|
|
||||||
QObject::connect(restoreSeed.restore, &QPushButton::clicked, [&](){
|
|
||||||
|
|
||||||
QString seed = restoreSeed.seed->toPlainText();
|
|
||||||
if (seed.trimmed().split(" ").length() != 24) {
|
|
||||||
QMessageBox::warning(this, tr("Failed to restore wallet"),
|
|
||||||
tr("SilentDragonXLite needs 24 words to restore wallet"),
|
|
||||||
QMessageBox::Ok);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 2. Validate birthday
|
|
||||||
QString birthday_str = restoreSeed.birthday->toPlainText();
|
|
||||||
bool ok;
|
|
||||||
qint64 birthday = birthday_str.toUInt(&ok);
|
|
||||||
if (!ok) {
|
|
||||||
QMessageBox::warning(this, tr("Failed to parse wallet birthday"),
|
|
||||||
tr("Couldn't understand wallet birthday. This should be a block height from where to rescan the wallet. You can leave it as '0' if you don't know what it should be."),
|
|
||||||
QMessageBox::Ok);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QString number_str = restoreSeed.quantity->text();
|
|
||||||
qint64 number = number_str.toUInt();
|
|
||||||
|
|
||||||
auto config = std::shared_ptr<ConnectionConfig>(new ConnectionConfig());
|
|
||||||
config->server = Settings::getInstance()->getSettings().server;
|
|
||||||
// 3. Attempt to restore wallet with the seed phrase
|
|
||||||
{
|
|
||||||
QString reply = "";
|
|
||||||
try {
|
|
||||||
char* resp = litelib_initialize_new_from_phrase(config->dangerous, config->server.toStdString().c_str(),
|
|
||||||
seed.toStdString().c_str(), birthday, number);
|
|
||||||
reply = litelib_process_response(resp);
|
|
||||||
} catch (const std::exception& e) {
|
|
||||||
qDebug() << __func__ << ": caught an exception, ignoring: " << e.what();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reply.toUpper().trimmed() != "OK") {
|
|
||||||
qDebug() << "Lite server " << config->server << " is down, getting a random one";
|
|
||||||
config->server = Settings::getRandomServer();
|
|
||||||
qDebug() << __func__ << ": new server is " << config->server;
|
|
||||||
// retry with the new server
|
|
||||||
char* resp = litelib_initialize_new_from_phrase(config->dangerous,config->server.toStdString().c_str(),
|
|
||||||
seed.toStdString().c_str(), birthday, number);
|
|
||||||
reply = litelib_process_response(resp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reply.toUpper().trimmed() != "OK") {
|
|
||||||
QMessageBox::warning(this, tr("Failed to restore wallet"),
|
|
||||||
tr("Couldn't restore the wallet") + "\n" + "server=" + config->server + "\n" + reply,
|
|
||||||
QMessageBox::Ok);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Finally attempt to save the wallet
|
|
||||||
{
|
|
||||||
QString reply = "";
|
|
||||||
try {
|
|
||||||
char* resp = litelib_execute("save", "");
|
|
||||||
QString reply = litelib_process_response(resp);
|
|
||||||
} catch (const std::exception& e) {
|
|
||||||
qDebug() << __func__ << ": caught an exception, ignoring: " << e.what();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reply.isEmpty()) {
|
|
||||||
qDebug() << "Lite server " << config->server << " is down, getting a random one";
|
|
||||||
config->server = Settings::getRandomServer();
|
|
||||||
qDebug() << __func__ << ": new server is " << config->server;
|
|
||||||
// make a new connection to the new server
|
|
||||||
char* resp = litelib_initialize_new_from_phrase(config->dangerous,config->server.toStdString().c_str(),
|
|
||||||
seed.toStdString().c_str(), birthday, number);
|
|
||||||
reply = litelib_process_response(resp);
|
|
||||||
|
|
||||||
// retry with the new server
|
|
||||||
try {
|
|
||||||
resp = litelib_execute("save", "");
|
|
||||||
reply = litelib_process_response(resp);
|
|
||||||
} catch (const std::exception& e) {
|
|
||||||
qDebug() << __func__ << ": caught an exception with new server, something is fucky: " << e.what();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QByteArray ba_reply = reply.toUtf8();
|
|
||||||
QJsonDocument jd_reply = QJsonDocument::fromJson(ba_reply);
|
|
||||||
QJsonObject parsed = jd_reply.object();
|
|
||||||
|
|
||||||
if (parsed.isEmpty() || parsed["result"].isNull()) {
|
|
||||||
QMessageBox::warning(this, tr("Failed to save wallet"),
|
|
||||||
tr("Couldn't save the wallet") + "\n" + "server=" + config->server + "\n" + reply,
|
|
||||||
QMessageBox::Ok);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
qDebug() << __func__ << ": saved wallet correctly";
|
|
||||||
}
|
|
||||||
|
|
||||||
dialog.close();
|
|
||||||
// To rescan, we clear the wallet state, and then reload the connection
|
|
||||||
// This will start a sync, and show the scanning status.
|
|
||||||
this->getRPC()->clearWallet([=] (auto) {
|
|
||||||
qDebug() << "Clearing wallet...";
|
|
||||||
// Save the wallet
|
|
||||||
this->getRPC()->saveWallet([=] (auto) {
|
this->getRPC()->saveWallet([=] (auto) {
|
||||||
qDebug() << "Saving wallet...";
|
qDebug() << "Saved cleared wallet, reloading connection to start rescan...";
|
||||||
// Then reload the connection. The ConnectionLoader deletes itself.
|
auto cl = new ConnectionLoader(this, rpc);
|
||||||
auto cl = new ConnectionLoader(this, rpc);
|
cl->loadConnection();
|
||||||
cl->loadConnection();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}); // actionRescan
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
dialog.exec();
|
|
||||||
}); // actionReason
|
|
||||||
|
|
||||||
// Import Privkey
|
// Import Privkey
|
||||||
QObject::connect(ui->actionImport_Privatkey, &QAction::triggered, this, &MainWindow::importPrivKey);
|
QObject::connect(ui->actionImport_Privatkey, &QAction::triggered, this, &MainWindow::importPrivKey);
|
||||||
@@ -847,7 +741,11 @@ void MainWindow::setupSettingsModal() {
|
|||||||
|
|
||||||
// List of default servers
|
// List of default servers
|
||||||
settings.cmbServer->addItem("https://lite.dragonx.is");
|
settings.cmbServer->addItem("https://lite.dragonx.is");
|
||||||
settings.cmbServer->addItem("https://dragonlite.printogre.com");
|
settings.cmbServer->addItem("https://lite1.dragonx.is");
|
||||||
|
settings.cmbServer->addItem("https://lite2.dragonx.is");
|
||||||
|
settings.cmbServer->addItem("https://lite3.dragonx.is");
|
||||||
|
settings.cmbServer->addItem("https://lite4.dragonx.is");
|
||||||
|
settings.cmbServer->addItem("https://lite5.dragonx.is");
|
||||||
|
|
||||||
//TODO: seperate lists of https/Tor servers, only show user or attempt
|
//TODO: seperate lists of https/Tor servers, only show user or attempt
|
||||||
// connection to .onion if user has it enabled
|
// connection to .onion if user has it enabled
|
||||||
@@ -1026,7 +924,7 @@ void MainWindow::payhushURI(QString uri, QString myAddr) {
|
|||||||
PaymentURI paymentInfo = Settings::parseURI(uri);
|
PaymentURI paymentInfo = Settings::parseURI(uri);
|
||||||
if (!paymentInfo.error.isEmpty()) {
|
if (!paymentInfo.error.isEmpty()) {
|
||||||
QMessageBox::critical(this, tr("Error paying DRGX URI"),
|
QMessageBox::critical(this, tr("Error paying DRGX URI"),
|
||||||
tr("URI should be of the form 'hush:<addr>?amt=x&memo=y") + "\n" + paymentInfo.error);
|
tr("URI should be of the form 'drgx:<addr>?amt=x&memo=y") + "\n" + paymentInfo.error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1429,7 +1327,7 @@ void MainWindow::setupTransactionsTab() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Payment Request
|
// Payment Request
|
||||||
if (!memo.isEmpty() && memo.startsWith("hush:")) {
|
if (!memo.isEmpty() && memo.startsWith("drgx:")) {
|
||||||
menu.addAction(tr("View Payment Request"), [=] () {
|
menu.addAction(tr("View Payment Request"), [=] () {
|
||||||
RequestDialog::showPaymentConfirmation(this, memo);
|
RequestDialog::showPaymentConfirmation(this, memo);
|
||||||
});
|
});
|
||||||
@@ -1486,7 +1384,7 @@ void MainWindow::setupchatTab() {
|
|||||||
/////////////Setting Icons for Chattab and different themes
|
/////////////Setting Icons for Chattab and different themes
|
||||||
|
|
||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QPixmap send(":/icons/res/send-white.png");
|
QPixmap send(":/icons/res/send-white.png");
|
||||||
QIcon sendIcon(send);
|
QIcon sendIcon(send);
|
||||||
ui->sendChatButton->setIcon(sendIcon);
|
ui->sendChatButton->setIcon(sendIcon);
|
||||||
@@ -2003,7 +1901,7 @@ void MainWindow::sendMoneyChat() {
|
|||||||
movie1->setFileName(":/img/res/loaderwhite.gif");
|
movie1->setFileName(":/img/res/loaderwhite.gif");
|
||||||
|
|
||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
|
|
||||||
connect(movie, &QMovie::frameChanged, [=]{
|
connect(movie, &QMovie::frameChanged, [=]{
|
||||||
ui->sendChatButton->setIcon(movie->currentPixmap());
|
ui->sendChatButton->setIcon(movie->currentPixmap());
|
||||||
@@ -2033,7 +1931,7 @@ void MainWindow::sendMoneyChat() {
|
|||||||
|
|
||||||
QTimer::singleShot(1000, [=]() {
|
QTimer::singleShot(1000, [=]() {
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QPixmap send(":/icons/res/send-white.png");
|
QPixmap send(":/icons/res/send-white.png");
|
||||||
QIcon sendIcon(send);
|
QIcon sendIcon(send);
|
||||||
ui->sendChatButton->setIcon(sendIcon);
|
ui->sendChatButton->setIcon(sendIcon);
|
||||||
@@ -2071,7 +1969,7 @@ void MainWindow::sendMoneyChat() {
|
|||||||
ui->memoTxtChat->setEnabled(true);
|
ui->memoTxtChat->setEnabled(true);
|
||||||
|
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QPixmap send(":/icons/res/send-white.png");
|
QPixmap send(":/icons/res/send-white.png");
|
||||||
QIcon sendIcon(send);
|
QIcon sendIcon(send);
|
||||||
ui->sendChatButton->setIcon(sendIcon);
|
ui->sendChatButton->setIcon(sendIcon);
|
||||||
@@ -2292,7 +2190,7 @@ void MainWindow::sendMoneyRequestChat() {
|
|||||||
movie1->setFileName(":/img/res/loaderwhite.gif");
|
movie1->setFileName(":/img/res/loaderwhite.gif");
|
||||||
|
|
||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
|
|
||||||
connect(movie, &QMovie::frameChanged, [=]{
|
connect(movie, &QMovie::frameChanged, [=]{
|
||||||
ui->sendChatButton->setIcon(movie->currentPixmap());
|
ui->sendChatButton->setIcon(movie->currentPixmap());
|
||||||
@@ -2321,7 +2219,7 @@ void MainWindow::sendMoneyRequestChat() {
|
|||||||
|
|
||||||
QTimer::singleShot(1000, [=]() {
|
QTimer::singleShot(1000, [=]() {
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QPixmap send(":/icons/res/send-white.png");
|
QPixmap send(":/icons/res/send-white.png");
|
||||||
QIcon sendIcon(send);
|
QIcon sendIcon(send);
|
||||||
ui->sendChatButton->setIcon(sendIcon);
|
ui->sendChatButton->setIcon(sendIcon);
|
||||||
@@ -2354,7 +2252,7 @@ void MainWindow::sendMoneyRequestChat() {
|
|||||||
movie->stop();
|
movie->stop();
|
||||||
|
|
||||||
|
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
QPixmap send(":/icons/res/send-white.png");
|
QPixmap send(":/icons/res/send-white.png");
|
||||||
QIcon sendIcon(send);
|
QIcon sendIcon(send);
|
||||||
ui->sendChatButton->setIcon(sendIcon);
|
ui->sendChatButton->setIcon(sendIcon);
|
||||||
@@ -2692,7 +2590,7 @@ void MainWindow::slot_change_theme(const QString& theme_name) {
|
|||||||
Settings::getInstance()->set_theme_name(theme_name);
|
Settings::getInstance()->set_theme_name(theme_name);
|
||||||
} else {
|
} else {
|
||||||
qDebug() << __func__ << ": ignoring invalid theme_name=" << theme_name;
|
qDebug() << __func__ << ": ignoring invalid theme_name=" << theme_name;
|
||||||
Settings::getInstance()->set_theme_name("Dark");
|
Settings::getInstance()->set_theme_name("dragonx");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Include css
|
// Include css
|
||||||
@@ -2701,7 +2599,7 @@ void MainWindow::slot_change_theme(const QString& theme_name) {
|
|||||||
saved_theme_name = Settings::getInstance()->get_theme_name();
|
saved_theme_name = Settings::getInstance()->get_theme_name();
|
||||||
} catch (const std::exception& e) {
|
} catch (const std::exception& e) {
|
||||||
qDebug() << QString("Ignoring theme change Exception! : ");
|
qDebug() << QString("Ignoring theme change Exception! : ");
|
||||||
saved_theme_name = "Dark";
|
saved_theme_name = "dragonx";
|
||||||
}
|
}
|
||||||
|
|
||||||
QString filename = ":/css/res/css/" + saved_theme_name +".css";
|
QString filename = ":/css/res/css/" + saved_theme_name +".css";
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
|
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
|
||||||
<h1 align="center" style=" margin-top:18px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:xx-large; font-weight:600;">DragonX + HushChat Terms of Service</span></h1>
|
<h1 align="center" style=" margin-top:18px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:xx-large; font-weight:600;">DragonX + HushChat Terms of Service</span></h1>
|
||||||
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All users of this platform agree to not use it for initiating or threatening any forceful interference or violence on an individual or their property, aka, the <a href="https://en.wikipedia.org/wiki/Non-aggression_principle"><span style=" text-decoration: underline; color:#0000ff;">Non-Aggression Principle</span></a>.</p>
|
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All users of this platform agree to not use it for initiating or threatening any forceful interference or violence on an individual or their property, aka, the <a href="https://en.wikipedia.org/wiki/Non-aggression_principle"><span style=" text-decoration: underline; color:#6699ff;">Non-Aggression Principle</span></a>.</p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">THE SERVICE IS PROVIDED “AS IS” AND The Hush Developers DO NOT MAKE ANY SPECIFIC COMMITMENTS OR WARRANTIES ABOUT THE SERVICE.</p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">THE SERVICE IS PROVIDED “AS IS” AND The Hush Developers DO NOT MAKE ANY SPECIFIC COMMITMENTS OR WARRANTIES ABOUT THE SERVICE.</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="-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;">By clicking OK, you agree to use Hush, the SilentDragon family of wallets, HushChat, and any software developed by The Hush Developers in accordance with your local laws, that all liabilities related to using this service are your own, and The Hush Developers WILL NOT BE RESPONSIBLE FOR any losses related to using this software.</p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">By clicking OK, you agree to use Hush, the SilentDragon family of wallets, HushChat, and any software developed by The Hush Developers in accordance with your local laws, that all liabilities related to using this service are your own, and The Hush Developers WILL NOT BE RESPONSIBLE FOR any losses related to using this software.</p>
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ void RequestDialog::showPaymentConfirmation(MainWindow* main, QString paymentURI
|
|||||||
PaymentURI payInfo = Settings::parseURI(paymentURI);
|
PaymentURI payInfo = Settings::parseURI(paymentURI);
|
||||||
if (!payInfo.error.isEmpty()) {
|
if (!payInfo.error.isEmpty()) {
|
||||||
QMessageBox::critical(main, tr("Error paying DRGX URI"),
|
QMessageBox::critical(main, tr("Error paying DRGX URI"),
|
||||||
tr("URI should be of the form 'hush:<addr>?amt=x&memo=y") + "\n" + payInfo.error);
|
tr("URI should be of the form 'drgx:<addr>?amt=x&memo=y") + "\n" + payInfo.error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,13 +177,13 @@ void RequestDialog::showRequesthush(MainWindow* main) {
|
|||||||
req.txtFrom->setFocus();
|
req.txtFrom->setFocus();
|
||||||
|
|
||||||
if (d.exec() == QDialog::Accepted) {
|
if (d.exec() == QDialog::Accepted) {
|
||||||
// Construct a hush Payment URI with the data and pay it immediately.
|
// Construct a DRGX Payment URI with the data and pay it immediately.
|
||||||
CAmount amount = CAmount::fromDecimalString(req.txtAmount->text());
|
CAmount amount = CAmount::fromDecimalString(req.txtAmount->text());
|
||||||
QString memoURI = "hush:" + req.cmbMyAddress->currentText()
|
QString memoURI = "drgx:" + req.cmbMyAddress->currentText()
|
||||||
+ "?amt=" + amount.toDecimalString()
|
+ "?amt=" + amount.toDecimalString()
|
||||||
+ "&memo=" + QUrl::toPercentEncoding(req.txtMemo->toPlainText());
|
+ "&memo=" + QUrl::toPercentEncoding(req.txtMemo->toPlainText());
|
||||||
|
|
||||||
QString sendURI = "hush:" + AddressBook::addressFromAddressLabel(req.txtFrom->text())
|
QString sendURI = "drgx:" + AddressBook::addressFromAddressLabel(req.txtFrom->text())
|
||||||
+ "?amt=0.0001"
|
+ "?amt=0.0001"
|
||||||
+ "&memo=" + QUrl::toPercentEncoding(memoURI);
|
+ "&memo=" + QUrl::toPercentEncoding(memoURI);
|
||||||
|
|
||||||
|
|||||||
@@ -864,7 +864,7 @@ void MainWindow::sendButton() {
|
|||||||
QMovie *movie1 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
QMovie *movie1 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
||||||
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
QMovie *movie2 = new QMovie(":/img/res/silentdragonxlite-animated-startup-dark.gif");;
|
||||||
auto theme = Settings::getInstance()->get_theme_name();
|
auto theme = Settings::getInstance()->get_theme_name();
|
||||||
if (theme == "Dark" || theme == "Midnight") {
|
if (theme == "Dark" || theme == "Midnight" || theme == "dragonx") {
|
||||||
movie2->setScaledSize(QSize(512,512));
|
movie2->setScaledSize(QSize(512,512));
|
||||||
connD->topIcon->setMovie(movie2);
|
connD->topIcon->setMovie(movie2);
|
||||||
movie2->start();
|
movie2->start();
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ void Settings::set_currency_name(QString currency_name) {
|
|||||||
|
|
||||||
QString Settings::get_theme_name() {
|
QString Settings::get_theme_name() {
|
||||||
// Load from the QT Settings.
|
// Load from the QT Settings.
|
||||||
return QSettings().value("options/theme_name", "Dark").toString();
|
return QSettings().value("options/theme_name", "dragonx").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Settings::set_theme_name(QString theme_name) {
|
void Settings::set_theme_name(QString theme_name) {
|
||||||
@@ -307,7 +307,11 @@ QString Settings::getRandomServer() {
|
|||||||
// The more servers from different TLDs, the better
|
// The more servers from different TLDs, the better
|
||||||
QList<QString> servers = {
|
QList<QString> servers = {
|
||||||
"https://lite.dragonx.is",
|
"https://lite.dragonx.is",
|
||||||
"https://dragonlite.printogre.com"
|
"https://lite1.dragonx.is",
|
||||||
|
"https://lite2.dragonx.is",
|
||||||
|
"https://lite3.dragonx.is",
|
||||||
|
"https://lite4.dragonx.is",
|
||||||
|
"https://lite5.dragonx.is"
|
||||||
};
|
};
|
||||||
|
|
||||||
// we don't need cryptographic random-ness, but we want
|
// we don't need cryptographic random-ness, but we want
|
||||||
@@ -401,7 +405,7 @@ PaymentURI Settings::parseURI(QString uri) {
|
|||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
uri = uri.right(uri.length() - QString("hush:").length());
|
uri = uri.right(uri.length() - QString("drgx:").length());
|
||||||
|
|
||||||
QRegExp re("([a-zA-Z0-9]+)");
|
QRegExp re("([a-zA-Z0-9]+)");
|
||||||
int pos;
|
int pos;
|
||||||
|
|||||||
@@ -127,6 +127,11 @@
|
|||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>dragonx</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Dark</string>
|
<string>Dark</string>
|
||||||
@@ -152,6 +157,7 @@
|
|||||||
<string>Default</string>
|
<string>Default</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QCheckBox" name="chkFetchPrices">
|
<widget class="QCheckBox" name="chkFetchPrices">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ QVariant TxTableModel::data(const QModelIndex &index, int role) const {
|
|||||||
QString theme_name = Settings::getInstance()->get_theme_name();
|
QString theme_name = Settings::getInstance()->get_theme_name();
|
||||||
QBrush b;
|
QBrush b;
|
||||||
QColor color;
|
QColor color;
|
||||||
if (theme_name == "Dark" || theme_name == "Midnight") {
|
if (theme_name == "Dark" || theme_name == "Midnight" || theme_name == "dragonx") {
|
||||||
color = COLOR_WHITE;
|
color = COLOR_WHITE;
|
||||||
}else{
|
}else{
|
||||||
color = COLOR_BLACK;
|
color = COLOR_BLACK;
|
||||||
@@ -143,7 +143,7 @@ QVariant TxTableModel::data(const QModelIndex &index, int role) const {
|
|||||||
// If there are multiple memos, then mark them as such
|
// If there are multiple memos, then mark them as such
|
||||||
if (dat.items.length() == 1) {
|
if (dat.items.length() == 1) {
|
||||||
auto memo = dat.items[0].memo;
|
auto memo = dat.items[0].memo;
|
||||||
if (memo.startsWith("hush:")) {
|
if (memo.startsWith("drgx:")) {
|
||||||
return Settings::paymentURIPretty(Settings::parseURI(memo));
|
return Settings::paymentURIPretty(Settings::parseURI(memo));
|
||||||
} else {
|
} else {
|
||||||
return modeldata->at(index.row()).type +
|
return modeldata->at(index.row()).type +
|
||||||
@@ -205,7 +205,7 @@ QVariant TxTableModel::data(const QModelIndex &index, int role) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the memo is a Payment URI, then show a payment request icon
|
// If the memo is a Payment URI, then show a payment request icon
|
||||||
if (dat.items.length() == 1 && dat.items[0].memo.startsWith("hush:")) {
|
if (dat.items.length() == 1 && dat.items[0].memo.startsWith("drgx:")) {
|
||||||
QImage image = colorizeIcon(QIcon(":/icons/res/paymentreq.gif"), color);
|
QImage image = colorizeIcon(QIcon(":/icons/res/paymentreq.gif"), color);
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addPixmap(QPixmap::fromImage(image));
|
icon.addPixmap(QPixmap::fromImage(image));
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define APP_VERSION "1.0.0"
|
#define APP_VERSION "1.1.1"
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
VERSION=$(cat src/version.h |cut -d\" -f2)
|
VERSION=$(cat src/version.h |cut -d\" -f2)
|
||||||
echo "Compiling SilentDragonXLite $VERSION .exe with $JOBS threads..."
|
echo "Compiling SilentDragonXLite $VERSION .exe with $JOBS threads..."
|
||||||
CONF=silentdragon-lite.pro
|
CONF=silentdragonx-lite.pro
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
echo 'source $HOME/.cargo/env' >> $HOME/.bashrc
|
echo 'source $HOME/.cargo/env' >> $HOME/.bashrc
|
||||||
CC_x86_64_pc_windows_gnu="x86_64-w64-mingw32.static-gcc"
|
CC_x86_64_pc_windows_gnu="x86_64-w64-mingw32.static-gcc"
|
||||||
PATH="/home/$USER/git/mxe/usr/bin:${PATH}"
|
PATH="/home/$USER/mxe/usr/bin:${PATH}"
|
||||||
|
|
||||||
if [ ! -d "release" ]
|
if [ ! -d "release" ]
|
||||||
then
|
then
|
||||||
@@ -17,7 +17,7 @@ fi
|
|||||||
|
|
||||||
cp src/precompiled.h release/
|
cp src/precompiled.h release/
|
||||||
qbuild () {
|
qbuild () {
|
||||||
/home/$USER/git/mxe/usr/bin/x86_64-w64-mingw32.static-qmake-qt5 $CONF CONFIG+=release
|
/home/$USER/mxe/usr/bin/x86_64-w64-mingw32.static-qmake-qt5 $CONF CONFIG+=release
|
||||||
|
|
||||||
#lupdate $CONF
|
#lupdate $CONF
|
||||||
#lrelease $CONF
|
#lrelease $CONF
|
||||||
|
|||||||
Reference in New Issue
Block a user