Compare commits

...

323 Commits

Author SHA1 Message Date
luigi1111
0461a28701 Merge pull request #2310
ff23a5b prices: improve error message (selsta)
2019-07-23 11:29:46 -05:00
luigi1111
a3b1590286 Merge pull request #2309
afe2b14 QML: fix more warnings (selsta)
2019-07-23 11:28:50 -05:00
luigi1111
b5cbb8b990 Merge pull request #2308
d4a6826 WizardController: make scrollbar visible (selsta)
2019-07-23 11:27:34 -05:00
selsta
ff23a5bf1e prices: improve error message 2019-07-23 01:00:40 +02:00
selsta
afe2b14430 QML: fix more warnings 2019-07-22 23:11:38 +02:00
selsta
d4a6826d13 WizardController: make scrollbar visible 2019-07-22 22:28:46 +02:00
luigi1111
8d17018019 set submodule v0.14.1.2 2019-07-22 13:40:20 -05:00
luigi1111
a65222d057 Merge pull request #2302
7e40a81 Account: fix theme switch label color (selsta)
2019-07-22 13:35:24 -05:00
luigi1111
25e56ee8fb Merge pull request #2307
f20ab12 QML: fix various warnings (selsta)
2019-07-22 13:29:31 -05:00
luigi1111
40c3e38f5a Merge pull request #2305
e6642c4 Account/Receive: update table on new entry (selsta)
2019-07-22 13:25:20 -05:00
luigi1111
f810c56100 Merge pull request #2303
5b81a1a Windows installer: Bumped the version number to 0.14.1.2 (rbrunner7)
2019-07-22 13:24:14 -05:00
luigi1111
95b3bb955c Merge pull request #2300
8f7d2b5 WizardAskPassword: improve label (selsta)
2019-07-22 13:21:50 -05:00
luigi1111
8db07974e2 Merge pull request #2299
e7653d0 updating the readme (parasew)
2019-07-22 13:20:41 -05:00
luigi1111
6c25650bbd Merge pull request #2297
7480f9b Changes Change wallet/Continue to Cancel/Ok (notmike-5)
2019-07-22 13:18:23 -05:00
luigi1111
4775fd74b8 Merge pull request #2294
ba33649 Fix segfault on Tails (tobtoht)
2019-07-22 13:11:15 -05:00
selsta
f20ab12cf3 QML: fix various warnings 2019-07-21 23:23:03 +02:00
selsta
e6642c4338 Account/Receive: update table on new entry 2019-07-21 21:17:18 +02:00
René Brunner
5b81a1a9d6 Windows installer: Bumped the version number to 0.14.1.2 2019-07-20 17:27:31 +02:00
selsta
7e40a810eb Account: fix theme switch label color 2019-07-20 02:54:16 +02:00
Matthias
e7653d0497 updating the readme 2019-07-19 18:03:48 +03:00
selsta
8f7d2b592a WizardAskPassword: improve label 2019-07-18 23:25:50 +02:00
notmike
7480f9b559 Changes Change wallet/Continue to Cancel/Ok
see #2290 #2204
2019-07-18 09:02:53 -06:00
thotbot
ba33649d7e Fix segfault on Tails 2019-07-18 13:22:38 +00:00
luigi1111
705439c78b Merge pull request #2289
cddba56 Fix project file (xmrdsc)
2019-07-16 11:50:11 -05:00
dsc
cddba56848 Fix project file 2019-07-16 18:47:12 +02:00
luigi1111
39fe5478b9 Merge pull request #2287
b96004a main: don't lock on inactivity if passwordDialog is visible (selsta)
2019-07-16 11:38:46 -05:00
luigi1111
cb3c310eb8 Merge pull request #2286
d2e7358 PasswordDialog: label improvements (selsta)
2019-07-16 11:37:19 -05:00
luigi1111
c426f1eb83 Merge pull request #2283
e04d563 src: fix compiler warnings (selsta)
2019-07-16 11:36:26 -05:00
luigi1111
beb94783c6 Merge pull request #2258
0b61328 Detect tails, support data persistence (xmrdsc)
2019-07-16 11:35:16 -05:00
dsc
0b61328971 Detect tails, support data persistence
Co-authored-by: Thotbot <thotbot@protonmail.com>
Co-authored-by: Selsta <selsta@sent.at>
2019-07-16 18:33:44 +02:00
selsta
b96004a101 main: don't lock on inactivity if passwordDialog is visible 2019-07-16 14:17:22 +02:00
selsta
d2e7358db7 PasswordDialog: label improvements 2019-07-16 14:08:22 +02:00
luigi1111
cfec9dde96 Merge pull request #2257
96c99b2 Replace Qt.labs.settings with MoneroSettings to allow for more customization (xmrdsc)
2019-07-15 23:38:56 -05:00
selsta
e04d563eb4 src: fix compiler warnings 2019-07-16 03:34:46 +02:00
dsc
96c99b250e Replace Qt.labs.settings with MoneroSettings to allow for more customization 2019-07-16 01:47:07 +02:00
luigi1111
4370733b2b Merge pull request #2282
d113bf1 main: fix password dialog overlay (selsta)
2019-07-15 18:43:33 -05:00
luigi1111
cac7662558 Merge pull request #2279
59550ec Windows installer: Achieve reproducible builds (rbrunner7)
2019-07-15 18:42:42 -05:00
luigi1111
0abd21b434 Merge pull request #2276
4b0d1dc Fixes #2275, transactionCommited txid list (ph4r05)
2019-07-15 18:41:19 -05:00
luigi1111
0d29ea33d8 Merge pull request #2256
817115f Start script for Tails (xmrdsc)
2019-07-15 18:39:39 -05:00
luigi1111
3a9f0e1100 Merge pull request #2240
35a0f25 PasswordDialog: merge components and bug fixes (selsta)
2019-07-15 18:38:32 -05:00
selsta
d113bf1a66 main: fix password dialog overlay 2019-07-15 21:56:57 +02:00
Dusan Klinec
4b0d1dcfbf Fixes #2275, transactionCommited txid list
txid list was empty when emitted
2019-07-15 16:17:21 +02:00
selsta
35a0f25b57 PasswordDialog: merge components and bug fixes
This commit merges PasswordDialog, PassphraseDialog and
NewPasswordDialog. Also the following bugs were fixed:

- Wizard pages still being active when opening a wallet
  from wizard.
- Capslock detection was buggy when copy pasting password, I
  replaced it with native implementations for each platform.
- isAlpha could throw errors when using special characters.
2019-07-15 00:05:10 +02:00
luigi1111
702b654f09 Merge pull request #2263
14619b9 History: don't reset date filtering when switching page (selsta)
2019-07-12 20:39:27 -05:00
luigi1111
f6de660e0e Merge pull request #2255
6baa963 NetworkStatusItem: simple mode has no node settings page (selsta)
2019-07-12 20:37:46 -05:00
luigi1111
b3402b3d4e Merge pull request #2251
5f5f210 History: dynamic number of tx rows (selsta)
2019-07-12 20:36:52 -05:00
luigi1111
5b411b471e Merge pull request #2250
84865cd History: allow to search for tx_note (selsta)
2019-07-12 20:35:29 -05:00
luigi1111
79dcb92d18 Merge pull request #2247
ab9e31e WalletManager: async close with splash screen (xiphon)
2019-07-12 20:34:10 -05:00
luigi1111
8bbc2e87bc Merge pull request #2246
c34a2b4 QML: fix warnings (selsta)
2019-07-12 20:33:22 -05:00
luigi1111
c10ea20f83 Merge pull request #2241
e1b4bcb build: minimum required qt version is 5.9 (selsta)
2019-07-12 20:32:14 -05:00
luigi1111
b4231a758c Merge pull request #2237
1b5796a WizardSummary: remove duplicated entry (selsta)
2019-07-12 20:31:17 -05:00
René Brunner
59550ec673 Windows installer: Achieve reproducible builds 2019-07-07 17:23:08 +02:00
selsta
6baa96360f NetworkStatusItem: simple mode has no node settings page 2019-07-05 20:57:19 +02:00
selsta
14619b9437 History: don't reset date filtering when switching page 2019-07-04 15:17:41 +02:00
dsc
817115fa47 Start script for Tails
Co-authored-by: thotbot <thotbot@protonmail.com>
2019-07-04 01:25:03 +02:00
selsta
5f5f2103c0 History: dynamic number of tx rows 2019-07-03 15:24:39 +02:00
selsta
84865cdead History: allow to search for tx_note 2019-07-03 13:54:01 +02:00
selsta
c34a2b43fc QML: fix warnings 2019-07-02 15:10:40 +02:00
xiphon
ab9e31e7cc WalletManager: async close with splash screen 2019-07-02 11:11:38 +00:00
selsta
e1b4bcb2ef build: minimum required qt version is 5.9 2019-07-01 14:40:20 +02:00
luigi1111
c4b3fbae1d Merge pull request #2235
9ab2922 Add vim generated files to gitignore (TheCharlatan)
2019-06-29 13:37:54 -05:00
selsta
1b5796a0ee WizardSummary: remove duplicated entry 2019-06-29 04:29:55 +02:00
TheCharlatan
9ab2922eb2 Add vim generated files to gitignore 2019-06-28 06:48:54 +02:00
luigi1111
036b3b56c5 Merge pull request #2229
be7810c qt: implement FutureScheduler, always await async code to complete (xiphon)
2019-06-25 14:02:40 -05:00
luigi1111
3c3848633e Merge pull request #1960
63ee61b transfer: make simple mode more simple (mmbyday)
2019-06-25 14:00:47 -05:00
xiphon
be7810c5a8 qt: implement FutureScheduler, always await async code to complete 2019-06-24 20:09:50 +00:00
luigi1111
c7956f76ea Merge pull request #2231
9d6038e main: make variable used once local to function (selsta)
df50c51 main: remove unused variables (selsta)
2019-06-21 14:46:02 -05:00
luigi1111
30997a8262 Merge pull request #2230
484d403 NetworkStatusItem: correctly display remote node status (selsta)
2019-06-21 14:44:53 -05:00
luigi1111
431a789a39 Merge pull request #2228
024fe1b MainApp: send unhandled events to base class (selsta)
2019-06-21 14:44:06 -05:00
luigi1111
8428e77c16 Merge pull request #2226
55ad588 main: fix UI freeze on close in remote node mode (xiphon)
2019-06-21 14:43:08 -05:00
luigi1111
fe40ceab20 Merge pull request #2224
2dc820c repo: remove unused components (xiphon)
2019-06-21 14:41:49 -05:00
luigi1111
27ad473695 Merge pull request #2223
d237e70 main: fix false positive daemonRunning (invalid daemon address check) (xiphon)
2019-06-21 14:41:05 -05:00
luigi1111
2c81f1808f Merge pull request #2222
68c5527 persistentSettings: preserve fiat balance toggle on wallet restart (xiphon)
2019-06-21 14:40:18 -05:00
luigi1111
f6a797fcb5 Merge pull request #2220
8d49ad9 tx_key not displayed by default, click to reveal (ph4r05)
6d03d63 get_tx_key, get_tx_proof, tx_spend_proof async (ph4r05)
2019-06-21 14:39:20 -05:00
luigi1111
934ca28e2c Merge pull request #2217
0d7289d Windows installer: Add 3 new exe files (pruning, stats) (rbrunner7)
2019-06-21 14:38:01 -05:00
luigi1111
de65413390 Merge pull request #2216
cbbd898 WalletManager: remove unused functions (selsta)
2019-06-21 14:37:14 -05:00
luigi1111
3bb69fd645 Merge pull request #2200
c69f0ad add missed translatable string in SettingsNode.qml (erciccione)
2019-06-21 14:36:20 -05:00
luigi1111
d301a9ac6e Merge pull request #2198
725cf73 wizardhome: add change network label (mmbyday)
2019-06-21 14:34:58 -05:00
luigi1111
a4648d9738 Merge pull request #2194
7aff9e6 remove Seed & Keys subtab in left panel (cryptochangements34)
2019-06-21 14:33:40 -05:00
luigi1111
df34693d4e Merge pull request #2189
6267be0 monero-wallet-gui.pro: add lupdate options no-obsolete and locations none (mmbyday)
2019-06-21 14:31:05 -05:00
luigi1111
edb849fa81 Merge pull request #2170
a3c620f restore height visibility enhancements (mmbyday)
2019-06-21 14:27:26 -05:00
selsta
df50c5111b main: remove unused variables 2019-06-21 01:54:17 +02:00
selsta
9d6038e0a3 main: make variable used once local to function 2019-06-21 01:24:39 +02:00
selsta
484d403921 NetworkStatusItem: correctly display remote node status 2019-06-21 00:43:29 +02:00
Dusan Klinec
6d03d63c88 get_tx_key, get_tx_proof, tx_spend_proof async 2019-06-20 14:57:10 +02:00
selsta
024fe1b834 MainApp: send unhandled events to base class 2019-06-19 20:36:16 +02:00
xiphon
d237e70ef1 main: fix false positive daemonRunning (invalid daemon address check) 2019-06-18 21:06:27 +00:00
Dusan Klinec
8d49ad9ba4 tx_key not displayed by default, click to reveal 2019-06-18 13:30:06 +02:00
xiphon
55ad5886b4 main: fix UI freeze on close in remote node mode 2019-06-18 11:23:13 +00:00
xiphon
2dc820c9d4 repo: remove unused components 2019-06-18 00:32:55 +00:00
xiphon
68c55270d4 persistentSettings: preserve fiat balance toggle on wallet restart 2019-06-17 20:51:18 +00:00
René Brunner
0d7289d94b Windows installer: Add 3 new exe files (pruning, stats) 2019-06-15 21:06:06 +02:00
luigi1111
d1e8b6f823 Merge pull request #2213
2524cc1 Wallet: async fetching wallet, daemon and target height (xiphon)
2019-06-14 14:34:27 -05:00
selsta
cbbd898cd5 WalletManager: remove unused functions 2019-06-14 17:08:26 +02:00
xiphon
2524cc179e Wallet: async fetching wallet, daemon and target height 2019-06-13 12:33:05 +00:00
erciccione
c69f0adac8 add missed translatable string in SettingsNode.qml 2019-06-06 15:04:54 +02:00
mmbyday
725cf737bc wizardhome: add change network label 2019-06-05 23:15:26 -07:00
luigi1111
68c7cf7276 Merge pull request #2197
42bf4b2 KeysFiles: fix file path (mmbyday)
2019-06-05 22:36:49 -05:00
luigi1111
c32f26fc8f Merge pull request #2192
8cb93ec Windows installer: Simplify script thanks to static linking of GUI wallet exe (rbrunner7)
2019-06-05 22:35:40 -05:00
luigi1111
863c75f6a2 Merge pull request #2188
f61656a Fix windows mingw build (mmbyday)
2019-06-05 22:34:48 -05:00
luigi1111
189f905785 Merge pull request #2182
73a3549 WalletManager: non-blocking mining status updates (xiphon)
2019-06-05 22:33:57 -05:00
luigi1111
477bce6117 Merge pull request #2180
a9cb42e WalletManager: fix compilation warnings (unused args, members order) (xiphon)
2019-06-05 22:32:52 -05:00
luigi1111
f8a6dec0ed Merge pull request #2179
1cffa8b WalletManager: fix crash on null/dangling pointer dereference (xiphon)
2019-06-05 22:31:39 -05:00
luigi1111
da39be9a8d Merge pull request #2178
8bc9fbe WalletManager: async setDaemonAddress (xiphon)
2019-06-05 22:30:46 -05:00
luigi1111
1c3201b17f Merge pull request #2177
a4928ba windeploy: deploy libssl and libcrypto binaries (xiphon)
2019-06-05 22:29:33 -05:00
mmbyday
42bf4b2e87 KeysFiles: fix file path 2019-06-04 23:46:10 -07:00
mmbyday
f61656a1b8 Fix windows mingw build 2019-06-04 13:55:14 -07:00
cryptochangements34
7aff9e6af0 remove Seed & Keys subtab in left panel 2019-06-03 17:32:38 -04:00
René Brunner
8cb93ec466 Windows installer: Simplify script thanks to static linking of GUI wallet exe 2019-06-02 09:10:00 +02:00
mmbyday
6267be0413 monero-wallet-gui.pro: add lupdate options no-obsolete and locations none
Co-authored-by: selsta <selsta@sent.at>
Co-authored-by: erciccione <erciccione@users.noreply.github.com>
2019-05-31 23:05:56 -07:00
xiphon
73a3549e09 WalletManager: non-blocking mining status updates 2019-05-30 23:17:26 +00:00
xiphon
a9cb42e2a4 WalletManager: fix compilation warnings (unused args, members order) 2019-05-28 15:55:10 +00:00
xiphon
1cffa8b68d WalletManager: fix crash on null/dangling pointer dereference 2019-05-28 15:46:26 +00:00
xiphon
8bc9fbecaf WalletManager: async setDaemonAddress 2019-05-28 15:08:50 +00:00
xiphon
a4928bae6a windeploy: deploy libssl and libcrypto binaries 2019-05-27 21:12:23 +00:00
luigi1111
a5a90c7ed8 Merge pull request #2176
bac13af translations for release 0.14.1 (Pootle) (Monero-Pootle)
2019-05-27 13:55:05 -05:00
luigi1111
d0e8cf2b43 Merge pull request #2174
65422ae use https to fetch remote nodes list on Windows (xiphon)
2019-05-27 13:42:20 -05:00
luigi1111
f197f507bc Merge pull request #2173
fbd6d68 build: Windows statically link gcc and c++ runtime (xiphon)
07bda54 build: Windows link against setupapi (hidapi dependency) (xipon)
2019-05-27 13:34:22 -05:00
luigi1111
4481aa7028 Merge pull request #2171
d3cf9ea Bootstrap warning text should be richtext (xmrdsc)
2019-05-27 13:30:18 -05:00
luigi1111
d71e7354d9 Merge pull request #2169
d518b20 WizardSummary: always show restore height when restoring from seed/keys/device (mmbyday)
2019-05-27 13:27:59 -05:00
luigi1111
bec3605757 Merge pull request #2168
ca9883b Fix restore height when using stagenet/testnet (mmbyday)
2019-05-27 13:26:12 -05:00
Monero-Pootle
bac13afc9b translations for release 0.14.1 (Pootle) 2019-05-27 13:19:30 +00:00
mmbyday
d518b204b1 WizardSummary: always show restore height when restoring from seed/keys/device 2019-05-24 12:01:23 -07:00
mmbyday
ca9883b6c0 Fix restore height when using stagenet/testnet 2019-05-24 11:58:46 -07:00
xiphon
65422ae6ca use https to fetch remote nodes list on Windows 2019-05-22 15:03:01 +00:00
xiphon
07bda54c41 build: Windows link against setupapi (hidapi dependency) 2019-05-22 11:19:09 +00:00
xiphon
fbd6d683ed build: Windows statically link gcc and c++ runtime 2019-05-22 10:54:05 +00:00
xmrdsc
d3cf9eaf97 Bootstrap warning text should be richtext 2019-05-16 16:19:16 +02:00
mmbyday
a3c620f78d restore height visibility enhancements 2019-05-15 00:37:53 -07:00
luigi1111
c286c7e5a8 Merge pull request #2167
3734767 build: fix monero-wallet-gui.pro (selsta)
2019-05-13 12:57:49 -05:00
selsta
37347672a8 build: fix monero-wallet-gui.pro 2019-05-11 10:03:49 +02:00
luigi1111
f4982834ab Merge pull request #2165
5b79cf7 Windows installer: Update for Boron Butterfly 0.14.1.0 (rbrunner7)
2019-05-10 13:23:08 -05:00
luigi1111
209679abef Merge pull request #2164
96945c2 MiddlePanel: dynamic content height (selsta)
2019-05-10 13:22:15 -05:00
luigi1111
80a992553d Merge pull request #2158
ceed212 wallet: fix deadlock, omit invoking 'refresh' from callback (xiphon)
2019-05-10 13:21:14 -05:00
luigi1111
b77eca9db1 Merge pull request #2156
fbe1de1 keys: ux improvements for hardware device wallet (mmbyday)
2019-05-10 13:20:04 -05:00
luigi1111
cfa594e595 Merge pull request #2155
949e774 msys2: fix windows build with trezor (mmbyday)
2019-05-10 13:19:00 -05:00
luigi1111
abf823e38d Merge pull request #2147
c88bb60 transaction: async commit (ph4r05)
2019-05-10 13:01:29 -05:00
luigi1111
08caf05eb2 Merge pull request #2141
d4be763 Fiat API (xmrdsc)
2019-05-10 12:59:37 -05:00
René Brunner
5b79cf7a6a Windows installer: Update for Boron Butterfly 0.14.1.0 2019-05-07 10:37:30 +02:00
selsta
96945c2c79 MiddlePanel: dynamic content height 2019-05-07 07:34:50 +02:00
dsc
d4be7634cb Fiat API
Co-Authored-By: selsta <selsta@sent.at>
Co-Authored-By: Gene Peters <gene@telligent-data.com>
2019-05-06 04:36:23 +02:00
xiphon
ceed212e63 wallet: fix deadlock, omit invoking 'refresh' from callback
Co-authored-by: Dusan Klinec <dusan.klinec@gmail.com>
2019-05-03 18:43:11 +00:00
luigi1111
3c1fe1da8b Merge pull request #2157
1f2f081 Black theme by default (xiphon)
2019-05-03 13:06:07 -05:00
luigi1111
4b43a1dfb6 Merge pull request #2153
94440f9 readme: add svg module (mmbyday)
2019-05-03 13:04:37 -05:00
luigi1111
1fcd79729c Merge pull request #2149
5d3fe93 Check before disconnecting wallet (xmrdsc)
2019-05-03 13:01:13 -05:00
luigi1111
f53d01be56 Merge pull request #2146
c82bffe SettingsLayout: fix order (selsta)
2019-05-03 13:00:24 -05:00
luigi1111
58e7af27c4 Merge pull request #2145
c840549 Add copyright headers (mmbyday)
2019-05-03 12:59:28 -05:00
luigi1111
2d7b3e2bef Merge pull request #2144
119d91a labelSubHeader: fix width bug (mmbyday)
2019-05-03 12:58:41 -05:00
luigi1111
1b529fabef Merge pull request #2143
b74aa1a dialogs: fix titlebar disabledness (mmbyday)
2019-05-03 12:57:53 -05:00
luigi1111
eb53c72ca4 Merge pull request #2142
c151e5e wizardcreatedevice: cleanup layout (mmbyday)
2019-05-03 12:56:57 -05:00
luigi1111
d0a40b4ca8 Merge pull request #2133
cb4a9da RightPanel: cleanup from repo (selsta)
2019-05-03 12:47:46 -05:00
luigi1111
34e46eda64 Merge pull request #2100
171e1fc Fix checking for gui updates (mmbyday)
2019-05-03 12:46:42 -05:00
luigi1111
fc4ae89039 Merge pull request #2068
480acf4 Scan keysfiles in wizard - open wallet (xmrdsc)
2019-05-03 12:45:14 -05:00
xiphon
1f2f08190a Black theme by default 2019-05-03 14:39:09 +00:00
mmbyday
fbe1de1164 keys: ux improvements for hardware device wallet 2019-05-03 00:38:09 -07:00
mmbyday
949e774a9f msys2: fix windows build with trezor 2019-05-02 23:16:53 -07:00
mmbyday
94440f9d0b readme: add svg module
Fixes #2152
2019-05-02 14:01:14 -07:00
mmbyday
c151e5e7a1 wizardcreatedevice: cleanup layout 2019-05-02 12:11:21 -07:00
xmrdsc
5d3fe93e1f Check before disconnecting wallet 2019-05-02 16:27:35 +02:00
Dusan Klinec
c88bb60135 transaction: async commit
Addresses #2123, reduces UI freezing on long-lasting operation, improves Trezor experience
2019-05-02 16:19:22 +02:00
dsc
480acf441d Scan keysfiles in wizard - open wallet 2019-05-02 00:41:09 +02:00
selsta
c82bffeacc SettingsLayout: fix order 2019-05-01 23:17:41 +02:00
mmbyday
c840549db5 Add copyright headers 2019-05-01 13:53:04 -07:00
mmbyday
119d91ab80 labelSubHeader: fix width bug 2019-04-30 22:59:08 -07:00
mmbyday
b74aa1a585 dialogs: fix titlebar disabledness 2019-04-30 22:00:39 -07:00
mmbyday
171e1fc023 Fix checking for gui updates 2019-04-30 18:43:37 -07:00
luigi1111
97cd215491 Merge pull request #2131
83e4343 Transfer: warn when sending to a known long PID service (selsta)
2019-04-30 15:46:38 -05:00
selsta
83e434395b Transfer: warn when sending to a known long PID service 2019-04-30 22:45:11 +02:00
luigi1111
afd9449b1d Merge pull request #2136
ed0bccc LeftPanel: don't change font size if balance is hidden (selsta)
2019-04-30 15:40:39 -05:00
luigi1111
7ee0f5907f Merge pull request #2135
e9df885 Merchant: fix title bar with custom decorations turned off (selsta)
2019-04-30 15:39:48 -05:00
luigi1111
18f7c43fff Merge pull request #2134
e910e40 repo: cleanup unused files (selsta)
2019-04-30 15:38:57 -05:00
luigi1111
de257c0ab2 Merge pull request #2132
b1ceaea add missing language files for Greek (_el) and Nepali (_ne) (Monero-Pootle)
ca2356f round of translations + refresh template and language files (Monero-Pootle)
2019-04-30 15:28:28 -05:00
luigi1111
060a718b0c Merge pull request #2128
607b1f8 logging: initial log level set by ENV var (ph4r05)
2019-04-30 15:27:03 -05:00
luigi1111
8d9f33b5aa Merge pull request #2127
131c427 passworddialog: replace eye with font awesome (mmbyday)
2019-04-30 15:25:59 -05:00
luigi1111
5062886815 Merge pull request #2125
d37de31 sign: use radiobuttons to change modes (mmbyday)
2019-04-30 15:25:05 -05:00
luigi1111
7dfc6ceef5 Merge pull request #2124
5f38dbb wizard: fix non-existent property backTransition (mmbyday)
2019-04-30 15:23:56 -05:00
luigi1111
7daff4c13a Merge pull request #2117
b2a7cb3 macOS: enable fullscreen support (selsta)
2019-04-30 15:22:41 -05:00
luigi1111
6b54017f08 Merge pull request #2092
9b7adfc transfer: change description/pid checkbox (mmbyday)
2019-04-30 15:20:51 -05:00
luigi1111
776d0ab33d Merge pull request #2029
18f2acc IPC and custom protocol handler for monero:// (xmrdsc)
2019-04-30 15:20:05 -05:00
selsta
e910e40d0b repo: cleanup unused files 2019-04-30 03:10:51 +02:00
selsta
ed0bccc7e2 LeftPanel: don't change font size if balance is hidden 2019-04-30 02:48:34 +02:00
selsta
e9df885b26 Merchant: fix title bar with custom decorations turned off 2019-04-30 02:34:27 +02:00
selsta
cb4a9daca2 RightPanel: cleanup from repo 2019-04-30 02:14:11 +02:00
mmbyday
131c42701c passworddialog: replace eye with font awesome 2019-04-29 12:39:11 -07:00
dsc
18f2accc7f IPC and custom protocol handler for monero:// 2019-04-29 19:56:46 +02:00
Monero-Pootle
ca2356f509 round of translations + refresh template and language files 2019-04-29 14:36:07 +00:00
Monero-Pootle
b1ceaea4ac add missing language files for Greek (_el) and Nepali (_ne) 2019-04-29 14:36:00 +00:00
Dusan Klinec
607b1f8ede logging: initial log level set by ENV var 2019-04-29 14:26:34 +02:00
selsta
b2a7cb3d40 macOS: enable fullscreen support 2019-04-29 13:38:20 +02:00
mmbyday
5f38dbb7dd wizard: fix non-existent property backTransition 2019-04-28 23:44:08 -07:00
luigi1111
ff6ce6294b Merge pull request #2122
3658bf8 build: link against QtSVG module to enable SVG format support (xiphon)
2019-04-28 22:06:01 -05:00
luigi1111
03ade34cc7 Merge pull request #2121
6d60785 build: Mac OS X link CoreFoundation framework for static libhidapi (xiphon)
2019-04-28 22:05:18 -05:00
luigi1111
c8a3e29f9f Merge pull request #2120
91da476 wizard: reset remote node when switching network type (selsta)
2019-04-28 22:04:26 -05:00
luigi1111
cc5aab8c5f Merge pull request #2119
4ab1816 Mining: fix newline (selsta)
2019-04-28 22:03:37 -05:00
luigi1111
002404227f Merge pull request #2118
e6a8fcd Clean up m_wallet before opening new wallets (xmrdsc)
2019-04-28 22:02:44 -05:00
luigi1111
dff0a07a8a Merge pull request #2116
7ab8b4f SettingsLayout: userInactivitySliderTimer is not defined (selsta)
2019-04-28 21:58:45 -05:00
luigi1111
5f6a0d81de Merge pull request #2115
c92c362 components: remove show() from password dialogs (selsta)
2019-04-28 21:57:32 -05:00
luigi1111
e06e7d3e07 Merge pull request #2085
0e65f25 Update README.md for Qt 5.9.7 (xmrdsc)
2019-04-28 21:55:32 -05:00
luigi1111
78d8f1992b Merge pull request #2071
e84f462 Back transitions for the wizards (xmrdsc)
2019-04-28 21:54:43 -05:00
luigi1111
36b0900589 Merge pull request #2041
1644d3e Windows installer: Set up 'monero:' and 'moneroseed:' custom URI schemes (rbrunner7)
2019-04-28 21:53:35 -05:00
mmbyday
d37de31b35 sign: use radiobuttons to change modes 2019-04-27 21:47:25 -07:00
xiphon
3658bf8c53 build: link against QtSVG module to enable SVG format support 2019-04-28 01:40:21 +00:00
xiphon
6d60785800 build: Mac OS X link CoreFoundation framework for static libhidapi 2019-04-28 01:17:08 +00:00
selsta
91da476cb3 wizard: reset remote node when switching network type 2019-04-28 00:11:14 +02:00
selsta
4ab1816e1a Mining: fix newline 2019-04-27 23:47:44 +02:00
mmbyday
9b7adfc0a8 transfer: change description/pid checkbox 2019-04-26 02:03:50 -07:00
dsc
e6a8fcd6cc Clean up m_wallet before opening new wallets 2019-04-26 02:45:07 +02:00
dsc
e84f4623d8 Back transitions for the wizards 2019-04-26 01:53:42 +02:00
selsta
7ab8b4fac7 SettingsLayout: userInactivitySliderTimer is not defined 2019-04-25 23:41:55 +02:00
selsta
c92c3627a6 components: remove show() from password dialogs 2019-04-25 23:11:56 +02:00
luigi1111
e81cb7e640 Merge pull request #2081
99365fa Dynamic height for the settings->wallet (xmrdsc)
2019-04-25 16:01:42 -05:00
xmrdsc
0e65f25406 Update README.md for Qt 5.9.7 2019-04-25 23:00:22 +02:00
xmrdsc
99365fadf0 Dynamic height for the settings->wallet 2019-04-25 22:55:46 +02:00
luigi1111
7d9a698732 Merge pull request #2078
74dbe8b Account/Receive: update design (selsta)
2019-04-25 15:37:59 -05:00
selsta
74dbe8bfcb Account/Receive: update design 2019-04-25 22:36:02 +02:00
luigi1111
edaa28cc23 Merge pull request #2086
4b9da83 Change settings navbar text: Layout -> Interface (xmrdsc)
2019-04-25 15:33:06 -05:00
luigi1111
6477e18040 Merge pull request #2083
b8d2d05 Hide certain information from the transactions page if there are no transactions yet (xmrdsc)
2019-04-25 15:30:43 -05:00
luigi1111
9ce7c86558 Merge pull request #2073
a6525e7 wizard/device: hide splash screen (selsta)
2019-04-25 15:29:19 -05:00
luigi1111
36ec1a1c56 Merge pull request #2070
baff7f2 Animation slow down for debugging (xmrdsc)
2019-04-25 15:28:28 -05:00
luigi1111
b0ba2379f4 Merge pull request #2069
62285b0 Remove scaleRatio (xmrdsc)
2019-04-25 15:27:19 -05:00
luigi1111
5887f87677 Merge pull request #2058
247f129 Use Slider.onMoved for inactivity slider, remove Timer (xmrdsc)
2019-04-25 15:26:19 -05:00
xmrdsc
4b9da8385b Change settings navbar text: Layout -> Interface 2019-04-25 21:16:13 +02:00
xmrdsc
b8d2d05fce Hide certain information from the transactions page if there are no transactions yet 2019-04-25 21:13:41 +02:00
dsc
62285b01dc Remove scaleRatio 2019-04-25 21:09:23 +02:00
selsta
a6525e74e6 wizard/device: hide splash screen 2019-04-25 20:53:28 +02:00
xmrdsc
baff7f213f Animation slow down for debugging 2019-04-25 20:48:12 +02:00
luigi1111
e1c429110f Merge pull request #2096
f9dec6e wizard: replace icon with Font Awesome version (selsta)
2019-04-25 13:32:02 -05:00
selsta
f9dec6e882 wizard: replace icon with Font Awesome version 2019-04-25 20:29:53 +02:00
luigi1111
fd230789e9 Merge pull request #2113
035887d Activate Hindi language (erccicione)
2019-04-25 13:15:32 -05:00
luigi1111
f37a17581e Merge pull request #2111
24e7307 components: hide password on dialog opening (selsta)
2019-04-25 13:14:36 -05:00
luigi1111
8fd8bdcb2f Merge pull request #2107
04d0b14 InlineButton: fix warning and set font (selsta)
2019-04-25 13:12:40 -05:00
luigi1111
528aba8724 Merge pull request #2095
507441f History: improve human readable time format (selsta)
2019-04-25 13:08:00 -05:00
luigi1111
fb4dfd0ea8 Merge pull request #2060
42f7afa White theme (xmrdsc)
2019-04-25 13:05:54 -05:00
erciccione
035887d3be Activate Hindi language 2019-04-24 17:58:13 +02:00
selsta
24e7307a93 components: hide password on dialog opening 2019-04-24 14:14:36 +02:00
dsc
42f7afaefd White theme 2019-04-24 05:37:35 +02:00
selsta
04d0b14152 InlineButton: fix warning and set font 2019-04-23 23:21:47 +02:00
luigi1111
358e1d23fa Merge pull request #2106
7b7996d qrcodescanner: update icon with font awesome (mmbyday)
2019-04-23 15:34:24 -05:00
luigi1111
ba0f7fc9f6 Merge pull request #2105
45efb41 wizard: allow viewonly wallet restores (mmbyday)
2019-04-23 15:33:33 -05:00
luigi1111
b39f041177 Merge pull request #2103
1f90854 support user defined max-concurrency (xmrdsc)
2019-04-23 15:32:42 -05:00
luigi1111
4b324bb719 Merge pull request #2102
ee87122 wizardhome: fix network dropdown (mmbyday)
2019-04-23 15:30:08 -05:00
luigi1111
8cd97e807c Merge pull request #2098
c721670 main: remove unused openWalletFromFile and fileDialog code (xiphon)
2019-04-23 15:29:08 -05:00
luigi1111
f56d3ea590 Merge pull request #2097
ed603f3 device: fix hardware wallet creation / restore height (xiphon)
2019-04-23 15:28:16 -05:00
luigi1111
5d7102efd2 Merge pull request #2094
024abdb Merchant: remove unintentional file and add emptryString (selsta)
2019-04-23 14:06:21 -05:00
luigi1111
340b0836ff Merge pull request #2090
a6f7b13 wizard: don't translate hardware wallet names (selsta)
2019-04-23 14:04:31 -05:00
luigi1111
4926ee790b Merge pull request #2080
7f1fa6b Transfer: warn if description is a valid PID (selsta)
2019-04-23 14:01:44 -05:00
mmbyday
7b7996dc66 qrcodescanner: update icon with font awesome 2019-04-22 19:31:29 -07:00
mmbyday
45efb415cd wizard: allow viewonly wallet restores 2019-04-21 13:09:12 -07:00
mmbyday
ee87122d5b wizardhome: fix network dropdown 2019-04-21 12:26:55 -07:00
xmrdsc
1f908547e3 support user defined max-concurrency 2019-04-21 18:39:00 +02:00
xiphon
c721670098 main: remove unused openWalletFromFile and fileDialog code 2019-04-20 05:47:01 +00:00
xiphon
ed603f310e device: fix hardware wallet creation / restore height 2019-04-20 05:38:55 +00:00
selsta
507441f8b6 History: improve human readable time format 2019-04-19 14:20:26 +02:00
selsta
024abdb46f Merchant: remove unintentional file and add emptryString 2019-04-19 13:35:15 +02:00
René Brunner
1644d3eb17 Windows installer: Set up 'monero:' and 'moneroseed:' custom URI schemes 2019-04-18 18:19:00 +02:00
luigi1111
10926644bf Merge pull request #2088
15a5f76 add missing TranslationManager.emptyString (selsta)
2019-04-16 16:54:17 -04:00
luigi1111
e760d33dad Merge pull request #2084
c03ea40 Add Fedora requirements (xmrdsc)
2019-04-16 16:53:28 -04:00
luigi1111
2e4b7450ac Merge pull request #2079
5527507 repo: remove unused components/images (selsta)
2019-04-16 16:51:58 -04:00
luigi1111
09a89d8f4e Merge pull request #2076
71c3dd3 build: Linux static OpenSSL linking, add default OpenSSL lib path (xiphon)
2019-04-16 16:51:11 -04:00
luigi1111
f61a242f66 Merge pull request #2066
55fd233 readme: update link to pootle, add guide for translators, update copyright year (erciccione)
2019-04-16 16:50:23 -04:00
luigi1111
29e0f7c68f Merge pull request #2065
9c4688b PasswordDialog: don't always show() (mmbyday)
2019-04-16 16:49:25 -04:00
luigi1111
32d9c8f661 Merge pull request #2064
34fdfcb Use pkg-config to find libusb and protobuf (Trezor dependencies) (prusnak)
2019-04-16 16:48:18 -04:00
luigi1111
221a49a823 Merge pull request #2057
bd2687c flickable for wizardController (xmrdsc)
2019-04-16 16:47:31 -04:00
luigi1111
c30fd82636 Merge pull request #2056
7b0bdb1 wizard: fix clearing of restore wallet fields (mmbyday)
2019-04-16 16:46:37 -04:00
selsta
a6f7b13389 wizard: don't translate hardware wallet names 2019-04-16 16:53:35 +02:00
selsta
5527507115 repo: remove unused components/images 2019-04-16 16:44:00 +02:00
selsta
7f1fa6bbd6 Transfer: warn if description is a valid PID 2019-04-16 16:36:46 +02:00
selsta
15a5f76334 add missing TranslationManager.emptyString 2019-04-16 16:35:30 +02:00
xmrdsc
c03ea40552 Add Fedora requirements 2019-04-16 15:40:26 +02:00
xiphon
71c3dd3515 build: Linux static OpenSSL linking, add default OpenSSL lib path 2019-04-16 00:52:28 +00:00
erciccione
55fd2332ed readme: update link to pootle, add guide for translators, update copyright year 2019-04-14 11:05:12 +02:00
mmbyday
63ee61b8c4 transfer: make simple mode more simple 2019-04-12 21:36:13 -07:00
mmbyday
9c4688b3f0 PasswordDialog: don't always show() 2019-04-11 22:14:44 -07:00
dsc
bd2687c22f flickable for wizardController 2019-04-11 20:05:09 +02:00
mmbyday
7b0bdb1750 wizard: fix clearing of restore wallet fields 2019-04-11 01:28:19 -07:00
Pavol Rusnak
34fdfcb458 Use pkg-config to find libusb and protobuf (Trezor dependencies) 2019-04-10 22:10:32 +02:00
luigi1111
d2c47606ca Merge pull request #2061
568b78d Remove unused image, fix js/Utils.js, requires #5355 (xmrdsc)
2019-04-09 23:26:21 -04:00
dsc
568b78df81 Remove unused image, fix js/Utils.js, requires #5355 2019-04-09 15:27:28 +02:00
luigi1111
d72284dc0e Merge pull request #2025
7611e82 History redesign (xmrdsc)
2019-04-08 15:32:20 -04:00
dsc
7611e826aa History redesign 2019-04-08 21:28:51 +02:00
luigi1111
98a7a9e663 Merge pull request #2055
1e6e928 AddressBook: redesign (selsta)
2019-04-08 14:42:17 -04:00
selsta
1e6e928995 AddressBook: redesign 2019-04-08 20:40:35 +02:00
luigi1111
723ad8c8ae Merge pull request #2052
6833275 wizard: small UI fix (selsta)
2019-04-08 14:37:54 -04:00
luigi1111
c596e49a04 Merge pull request #2050
f7af87e Add compiled qml/js cache to gitignore (xmrdsc)
2019-04-08 14:36:33 -04:00
luigi1111
cd65cc12da Merge pull request #2037
1a2675b async device open and create from device, passphrase (ph4r05)
2019-04-08 14:35:29 -04:00
luigi1111
2f22503c8b Merge pull request #1822
5dbcd71 PasswordDialog: add CAPSLOCK checking (mmbyday)
2019-04-08 14:33:59 -04:00
dsc
247f129a24 Use Slider.onMoved for inactivity slider, remove Timer 2019-04-08 04:13:29 +02:00
Dusan Klinec
1a2675b246 async device open and create from device, passphrase
- passphrase entry on host added, requires early listener setting monero pull #5355
- wallet open and create from device shows splash to indicate possible long process
- create from device is async to support passphrase entry
2019-04-06 14:52:14 +02:00
selsta
6833275b2a wizard: small UI fix 2019-04-03 20:42:24 +02:00
luigi1111
19c2208dc4 Merge pull request #2019
9074633 device: Trezor support added (ph4r05)
2019-04-03 14:36:34 -04:00
luigi1111
82cf31010a Merge pull request #2049
49a3ead build: set monero submodule to master (selsta)
2019-04-03 14:32:00 -04:00
luigi1111
d3ad848ea1 Merge pull request #2035
8412218  README: update brew boost installation step (selsta)
2019-04-03 14:30:52 -04:00
luigi1111
f3cc2818c5 Merge pull request #2012
c2f1d01 main: automatically fix common wallet cache errors (mmbyday)
2019-04-03 14:27:34 -04:00
luigi1111
91d4470295 Merge pull request #1997
5403b94 Fix double titlebar (MaxXor)
2019-04-03 14:26:33 -04:00
xmrdsc
f7af87e57b Add compiled qml/js cache to gitignore 2019-04-03 18:11:25 +02:00
mmbyday
5dbcd714ea PasswordDialog: add CAPSLOCK checking 2019-04-02 13:18:16 -07:00
selsta
49a3eadd61 build: set monero submodule to master 2019-04-02 16:59:29 +02:00
luigi1111
d4d8ff54e6 Merge pull request #2036
51e48db addressbook description should not be richtext (xmrdsc)
2019-03-26 19:35:16 -04:00
dsc
51e48db6e5 addressbook description should not be richtext 2019-03-26 23:23:28 +01:00
selsta
8412218f70 README: update brew boost installation step 2019-03-26 12:26:07 +01:00
luigi1111
4bab4c510c Merge pull request #2022
190e2eb round of translations (about 600 strings) (Monero-Pootle)
2019-03-21 16:18:24 -04:00
luigi1111
d3d8e9fd0d Merge pull request #2021
e80e1b4 fix restore height option for hardware wallet restore (lacksfish)
2019-03-21 16:16:20 -04:00
luigi1111
11468d44be Merge pull request #2016
f5aec0e main: fix refreshing of language fields (mmbyday)
2019-03-21 16:15:21 -04:00
luigi1111
9c8b123fe5 Merge pull request #2015
e5bdf34 historytable: fix blockheight copying (mmbyday)
2019-03-21 16:14:34 -04:00
luigi1111
38788aab43 Merge pull request #2014
d6f8834 mining: fix layout issues (mmbyday)
2019-03-21 16:13:46 -04:00
luigi1111
9f53353b07 Merge pull request #2011
3562ab1 settingsnode: fix trusted node flag (mmbyday)
2019-03-21 16:13:02 -04:00
luigi1111
5c19a4d46f Merge pull request #1999
e664549 makes placeholder string untranslatable (erciccione)
2019-03-21 16:12:11 -04:00
luigi1111
3b791035bf Merge pull request #1976
dc5028f SettingsInfo: allow a date for restore height (selsta)
2019-03-21 16:11:08 -04:00
luigi1111
c47fed96b0 Merge pull request #1971
1ff1091 transfer, merchant: placehodler text for amount (mmbyday)
2019-03-21 16:10:15 -04:00
luigi1111
072d0dea24 Merge pull request #1965
01844ef transfer: messaging for disabled send button (mmbyday)
2019-03-21 16:09:13 -04:00
Monero-Pootle
190e2eb9ab round of translations (about 600 strings) 2019-03-17 18:49:54 +00:00
lacksfish
e80e1b4c1f fix restore height option for hardware wallet restore 2019-03-17 05:40:26 +01:00
Dusan Klinec
9074633751 device: Trezor support added 2019-03-15 14:21:37 +01:00
mmbyday
f5aec0eba9 main: fix refreshing of language fields 2019-03-12 18:53:56 -07:00
mmbyday
e5bdf34325 historytable: fix blockheight copying 2019-03-12 18:11:56 -07:00
mmbyday
d6f88349b9 mining: fix layout issues 2019-03-12 16:32:11 -07:00
mmbyday
c2f1d0168b main: automatically fix common wallet cache errors 2019-03-12 00:25:46 -07:00
mmbyday
3562ab1444 settingsnode: fix trusted node flag 2019-03-11 22:51:12 -07:00
erciccione
e664549f43 makes placeholder string untranslatable 2019-03-09 15:15:36 +01:00
MaxXor
5403b94f2e Fix double titlebar 2019-03-07 15:23:23 +01:00
selsta
dc5028f019 SettingsInfo: allow a date for restore height 2019-02-27 00:26:16 +01:00
mmbyday
1ff1091ea4 transfer, merchant: placehodler text for amount 2019-02-25 12:17:54 -08:00
mmbyday
01844efaa7 transfer: messaging for disabled send button 2019-02-25 08:15:08 -08:00
315 changed files with 62012 additions and 36212 deletions

21
.gitignore vendored
View File

@@ -11,3 +11,24 @@ moc_*
*.xcodeproj
monero-wallet-gui_plugin_import.cpp
monero-wallet-gui_qml_plugin_import.cpp
*.qmlc
*.jsc
### Vim ###
# Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
@@ -26,13 +26,16 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.2
import QtQuick 2.9
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import moneroComponents.Wallet 1.0
import moneroComponents.NetworkType 1.0
import moneroComponents.Clipboard 1.0
import FontAwesome 1.0
import "components" as MoneroComponents
import "components/effects/" as MoneroEffects
Rectangle {
id: panel
@@ -42,6 +45,8 @@ Rectangle {
property alias unlockedBalanceLabelVisible: unlockedBalanceLabel.visible
property alias balanceLabelText: balanceLabel.text
property alias balanceText: balanceText.text
property alias balanceTextFiat: balanceTextFiat.text
property alias unlockedBalanceTextFiat: unlockedBalanceTextFiat.text
property alias networkStatus : networkStatus
property alias progressBar : progressBar
property alias daemonProgressBar : daemonProgressBar
@@ -59,7 +64,6 @@ Rectangle {
signal addressBookClicked()
signal miningClicked()
signal signClicked()
signal keysClicked()
signal merchantClicked()
signal accountClicked()
@@ -76,7 +80,6 @@ Rectangle {
else if(pos === "Sign") menuColumn.previousButton = signButton
else if(pos === "Settings") menuColumn.previousButton = settingsButton
else if(pos === "Advanced") menuColumn.previousButton = advancedButton
else if(pos === "Keys") menuColumn.previousButton = keysButton
else if(pos === "Account") menuColumn.previousButton = accountButton
menuColumn.previousButton.checked = true
}
@@ -86,13 +89,18 @@ Rectangle {
anchors.bottom: parent.bottom
anchors.top: parent.top
Image {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
height: panel.height
source: "images/leftPanelBg.jpg"
z: 1
MoneroEffects.GradientBackground {
anchors.fill: parent
fallBackColor: MoneroComponents.Style.middlePanelBackgroundColor
initialStartColor: MoneroComponents.Style.leftPanelBackgroundGradientStart
initialStopColor: MoneroComponents.Style.leftPanelBackgroundGradientStop
blackColorStart: MoneroComponents.Style._b_leftPanelBackgroundGradientStart
blackColorStop: MoneroComponents.Style._b_leftPanelBackgroundGradientStop
whiteColorStart: MoneroComponents.Style._w_leftPanelBackgroundGradientStart
whiteColorStop: MoneroComponents.Style._w_leftPanelBackgroundGradientStop
posStart: 0.6
start: Qt.point(0, 0)
end: Qt.point(height, width)
}
// card with monero logo
@@ -106,24 +114,37 @@ Rectangle {
anchors.top: parent.top
anchors.topMargin: (persistentSettings.customDecorations)? 50 : 0
RowLayout {
visible: true
Item {
Item {
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 20
anchors.leftMargin: 20
anchors.verticalCenter: parent.verticalCenter
height: 490 * scaleRatio
width: 260 * scaleRatio
height: 490
width: 260
Image {
width: 260; height: 170
id: card
visible: !isOpenGL || MoneroComponents.Style.blackTheme
width: 260
height: 170
fillMode: Image.PreserveAspectFit
source: "images/card-background.png"
source: "qrc:///images/card-background.png"
}
Text {
DropShadow {
visible: isOpenGL && !MoneroComponents.Style.blackTheme
anchors.fill: card
horizontalOffset: 3
verticalOffset: 3
radius: 10.0
samples: 15
color: "#3B000000"
source: card
cached: true
}
MoneroComponents.TextPlain {
id: testnetLabel
visible: persistentSettings.nettype != NetworkType.MAINNET
text: (persistentSettings.nettype == NetworkType.TESTNET ? qsTr("Testnet") : qsTr("Stagenet")) + translationManager.emptyString
@@ -134,9 +155,10 @@ Rectangle {
font.bold: true
font.pixelSize: 12
color: "#f33434"
themeTransition: false
}
Text {
MoneroComponents.TextPlain {
id: viewOnlyLabel
visible: viewOnly
text: qsTr("View Only") + translationManager.emptyString
@@ -147,11 +169,12 @@ Rectangle {
font.pixelSize: 12
font.bold: true
color: "#ff9323"
themeTransition: false
}
Rectangle {
height: (logoutImage.height + 8) * scaleRatio
width: (logoutImage.width + 8) * scaleRatio
height: (logoutImage.height + 8)
width: (logoutImage.width + 8)
color: "transparent"
anchors.right: parent.right
anchors.rightMargin: 8
@@ -162,9 +185,9 @@ Rectangle {
id: logoutImage
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
height: 16 * scaleRatio
width: 13 * scaleRatio
source: "../images/logout.png"
height: 16
width: 13
source: "qrc:///images/logout.png"
}
MouseArea{
@@ -179,6 +202,26 @@ Rectangle {
}
}
}
MoneroComponents.Label {
fontSize: 20
text: "¥"
color: "white"
visible: persistentSettings.fiatPriceEnabled
anchors.right: parent.right
anchors.rightMargin: 45
anchors.top: parent.top
anchors.topMargin: 28
themeTransition: false
MouseArea{
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
persistentSettings.fiatPriceToggle = !persistentSettings.fiatPriceToggle
}
}
}
}
Item {
@@ -186,13 +229,13 @@ Rectangle {
anchors.top: parent.top
anchors.topMargin: 20
anchors.leftMargin: 20
anchors.verticalCenter: parent.verticalCenter
height: 490 * scaleRatio
width: 50 * scaleRatio
height: 490
width: 50
Text {
visible: !isMobile
MoneroComponents.TextPlain {
visible: !(persistentSettings.fiatPriceToggle && persistentSettings.fiatPriceEnabled)
id: balanceText
themeTransition: false
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
@@ -202,6 +245,9 @@ Rectangle {
text: "N/A"
// dynamically adjust text size
font.pixelSize: {
if (persistentSettings.hideBalance) {
return 20;
}
var digits = text.split('.')[0].length
var defaultSize = 22;
if(digits > 2) {
@@ -228,9 +274,40 @@ Rectangle {
}
}
Text {
MoneroComponents.TextPlain {
visible: !balanceText.visible
id: balanceTextFiat
themeTransition: false
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 76
font.family: "Arial"
color: "#FFFFFF"
text: "N/A"
font.pixelSize: balanceText.font.pixelSize
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.orange
}
onExited: {
parent.color = MoneroComponents.Style.white
}
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(parent.text);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
MoneroComponents.TextPlain {
id: unlockedBalanceText
visible: true
visible: !(persistentSettings.fiatPriceToggle && persistentSettings.fiatPriceEnabled)
themeTransition: false
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
@@ -240,6 +317,9 @@ Rectangle {
text: "N/A"
// dynamically adjust text size
font.pixelSize: {
if (persistentSettings.hideBalance) {
return 20;
}
var digits = text.split('.')[0].length
var defaultSize = 20;
if(digits > 3) {
@@ -266,21 +346,54 @@ Rectangle {
}
}
MoneroComponents.TextPlain {
id: unlockedBalanceTextFiat
themeTransition: false
visible: !unlockedBalanceText.visible
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 126
font.family: "Arial"
color: "#FFFFFF"
text: "N/A"
font.pixelSize: unlockedBalanceText.font.pixelSize
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.orange
}
onExited: {
parent.color = MoneroComponents.Style.white
}
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(parent.text);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
MoneroComponents.Label {
id: unlockedBalanceLabel
visible: true
text: qsTr("Unlocked balance") + translationManager.emptyString
color: "white"
fontSize: 14
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 110
themeTransition: false
}
MoneroComponents.Label {
visible: !isMobile
id: balanceLabel
text: qsTr("Balance") + translationManager.emptyString
color: "white"
fontSize: 14
anchors.left: parent.left
anchors.leftMargin: 20
@@ -288,6 +401,7 @@ Rectangle {
anchors.topMargin: 60
elide: Text.ElideRight
textWidth: 238
themeTransition: false
}
Item { //separator
anchors.left: parent.left
@@ -307,7 +421,6 @@ Rectangle {
anchors.top: (isMobile)? parent.top : column1.bottom
color: "transparent"
Flickable {
id:flicker
contentHeight: menuColumn.height
@@ -317,7 +430,6 @@ Rectangle {
clip: true
Column {
id: menuColumn
anchors.left: parent.left
anchors.right: parent.right
@@ -326,12 +438,10 @@ Rectangle {
property var previousButton: transferButton
// top border
Rectangle {
MoneroComponents.MenuButtonDivider {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Account tab ---------------
@@ -349,13 +459,11 @@ Rectangle {
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: accountButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Transfer tab ---------------
@@ -373,13 +481,11 @@ Rectangle {
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: transferButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- AddressBook tab ---------------
@@ -399,13 +505,11 @@ Rectangle {
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: addressBookButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Receive tab ---------------
@@ -422,13 +526,12 @@ Rectangle {
panel.receiveClicked()
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: receiveButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Merchant tab ---------------
@@ -449,13 +552,11 @@ Rectangle {
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: merchantButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- History tab ---------------
@@ -464,7 +565,7 @@ Rectangle {
id: historyButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("History") + translationManager.emptyString
text: qsTr("Transactions") + translationManager.emptyString
symbol: qsTr("H") + translationManager.emptyString
dotColor: "#6B0072"
onClicked: {
@@ -473,13 +574,12 @@ Rectangle {
panel.historyClicked()
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: historyButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Advanced tab ---------------
@@ -497,13 +597,11 @@ Rectangle {
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: advancedButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Mining tab ---------------
@@ -523,14 +621,13 @@ Rectangle {
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: miningButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: miningButton.checked || settingsButton.checked ? "#1C1C1C" : "#313131"
height: 1
}
// ------------- TxKey tab ---------------
MoneroComponents.MenuButton {
id: txkeyButton
@@ -547,14 +644,14 @@ Rectangle {
panel.txkeyClicked()
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: txkeyButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Shared RingDB tab ---------------
MoneroComponents.MenuButton {
id: sharedringdbButton
@@ -571,16 +668,14 @@ Rectangle {
panel.sharedringdbClicked()
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: sharedringdbButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Sign/verify tab ---------------
MoneroComponents.MenuButton {
id: signButton
@@ -597,14 +692,14 @@ Rectangle {
panel.signClicked()
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: signButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Settings tab ---------------
MoneroComponents.MenuButton {
id: settingsButton
@@ -619,37 +714,12 @@ Rectangle {
panel.settingsClicked()
}
}
Rectangle {
MoneroComponents.MenuButtonDivider {
visible: settingsButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
// ------------- Sign/verify tab ---------------
MoneroComponents.MenuButton {
id: keysButton
visible: appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Seed & Keys") + translationManager.emptyString
symbol: qsTr("Y") + translationManager.emptyString
dotColor: "#FFD781"
under: settingsButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = keysButton
panel.keysClicked()
}
}
Rectangle {
visible: settingsButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: "#313131"
height: 1
}
} // Column
@@ -663,7 +733,7 @@ Rectangle {
anchors.leftMargin: 0
anchors.rightMargin: 0
anchors.bottom: networkStatus.top;
height: 10 * scaleRatio
height: 10
color: "transparent"
}
@@ -671,11 +741,11 @@ Rectangle {
id: networkStatus
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 5 * scaleRatio
anchors.leftMargin: 5
anchors.rightMargin: 0
anchors.bottom: (progressBar.visible)? progressBar.top : parent.bottom;
connected: Wallet.ConnectionStatus_Disconnected
height: 48 * scaleRatio
height: 48
}
MoneroComponents.ProgressBar {
@@ -683,8 +753,8 @@ Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: daemonProgressBar.top
height: 48 * scaleRatio
syncType: qsTr("Wallet")
height: 48
syncType: qsTr("Wallet") + translationManager.emptyString
visible: networkStatus.connected
}
@@ -693,20 +763,9 @@ Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
syncType: qsTr("Daemon")
syncType: qsTr("Daemon") + translationManager.emptyString
visible: networkStatus.connected
height: 62 * scaleRatio
height: 62
}
} // menuRect
// indicate disabled state
// Desaturate {
// anchors.fill: parent
// source: parent
// desaturation: panel.enabled ? 0.0 : 1.0
// }
}
}

View File

@@ -1,3 +1,31 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QCoreApplication>
#include <QStandardPaths>
#include <QFileInfo>
@@ -6,6 +34,7 @@
#include <QDebug>
#include "Logger.h"
#include "src/qt/TailsOS.h"
#include "wallet/api/wallet2_api.h"
// default log path by OS (should be writable)
@@ -38,6 +67,9 @@ const QString getLogPath(const QString logPath)
{
const QFileInfo fi(logPath);
if(TailsOS::detect() && TailsOS::usePersistence)
return QDir::homePath() + "/Persistent/Monero/logs/" + defaultLogName;
if(!logPath.isEmpty() && !fi.isDir())
return fi.absoluteFilePath();
else {

View File

@@ -1,3 +1,31 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef LOGGER_H
#define LOGGER_H

View File

@@ -1,3 +1,31 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "MainApp.h"
#include <QCloseEvent>
@@ -10,5 +38,6 @@ bool MainApp::event (QEvent *event)
return true;
}
return false;
// Pass unhandled events to base class
return QApplication::event(event);
}

View File

@@ -1,3 +1,31 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef MAINAPP_H
#define MAINAPP_H
#include <QApplication>

View File

@@ -28,18 +28,18 @@
import QtQml 2.0
import QtQuick 2.2
import QtQuick 2.9
import QtQuick.Controls 2.0
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import moneroComponents.Wallet 1.0
import "components" as MoneroComponents
import "./pages"
import "./pages/settings"
import "./pages/merchant"
import "components" as MoneroComponents
import "./components" as MoneroComponents
import "./components/effects/" as MoneroEffects
Rectangle {
id: root
@@ -51,10 +51,9 @@ Rectangle {
property string balanceText
property string unlockedBalanceLabelText: qsTr("Unlocked Balance") + translationManager.emptyString
property string unlockedBalanceText
property int minHeight: (appWindow.height > 800) ? appWindow.height : 800 * scaleRatio
property int minHeight: (appWindow.height > 800) ? appWindow.height : 800
property alias contentHeight: mainFlickable.contentHeight
property alias flickable: mainFlickable
// property int headerHeight: header.height
property Transfer transferView: Transfer { }
property Receive receiveView: Receive { }
@@ -82,10 +81,18 @@ Rectangle {
anchors.fill: parent
}
Image {
anchors.fill: parent
MoneroEffects.GradientBackground {
visible: currentView !== merchantView
source: "../images/middlePanelBg.jpg"
anchors.fill: parent
fallBackColor: MoneroComponents.Style.middlePanelBackgroundColor
initialStartColor: MoneroComponents.Style.middlePanelBackgroundGradientStart
initialStopColor: MoneroComponents.Style.middlePanelBackgroundGradientStop
blackColorStart: MoneroComponents.Style._b_middlePanelBackgroundGradientStart
blackColorStop: MoneroComponents.Style._b_middlePanelBackgroundGradientStop
whiteColorStart: MoneroComponents.Style._w_middlePanelBackgroundGradientStart
whiteColorStop: MoneroComponents.Style._w_middlePanelBackgroundGradientStop
start: Qt.point(0, 0)
end: Qt.point(height, width)
}
onCurrentViewChanged: {
@@ -118,52 +125,51 @@ Rectangle {
State {
name: "History"
PropertyChanges { target: root; currentView: historyView }
PropertyChanges { target: historyView; model: appWindow.currentWallet ? appWindow.currentWallet.historyModel : null }
PropertyChanges { target: mainFlickable; contentHeight: historyView.tableHeight + 220 * scaleRatio }
PropertyChanges { target: mainFlickable; contentHeight: historyView.contentHeight + 80}
}, State {
name: "Transfer"
PropertyChanges { target: root; currentView: transferView }
PropertyChanges { target: mainFlickable; contentHeight: 700 * scaleRatio }
PropertyChanges { target: mainFlickable; contentHeight: transferView.transferHeight1 + transferView.transferHeight2 + 80 }
}, State {
name: "Receive"
PropertyChanges { target: root; currentView: receiveView }
PropertyChanges { target: mainFlickable; contentHeight: receiveView.receiveHeight + 100 }
name: "Receive"
PropertyChanges { target: root; currentView: receiveView }
PropertyChanges { target: mainFlickable; contentHeight: receiveView.receiveHeight + 80 }
}, State {
name: "Merchant"
PropertyChanges { target: root; currentView: merchantView }
PropertyChanges { target: mainFlickable; contentHeight: merchantView.merchantHeight + 100 }
PropertyChanges { target: mainFlickable; contentHeight: merchantView.merchantHeight + 80 }
}, State {
name: "TxKey"
PropertyChanges { target: root; currentView: txkeyView }
PropertyChanges { target: mainFlickable; contentHeight: 1200 * scaleRatio }
name: "TxKey"
PropertyChanges { target: root; currentView: txkeyView }
PropertyChanges { target: mainFlickable; contentHeight: txkeyView.txkeyHeight + 80 }
}, State {
name: "SharedRingDB"
PropertyChanges { target: root; currentView: sharedringdbView }
PropertyChanges { target: mainFlickable; contentHeight: sharedringdbView.panelHeight + 100 }
name: "SharedRingDB"
PropertyChanges { target: root; currentView: sharedringdbView }
PropertyChanges { target: mainFlickable; contentHeight: sharedringdbView.panelHeight + 80 }
}, State {
name: "AddressBook"
PropertyChanges { target: root; currentView: addressBookView }
PropertyChanges { target: mainFlickable; contentHeight: minHeight }
PropertyChanges { target: root; currentView: addressBookView }
PropertyChanges { target: mainFlickable; contentHeight: addressBookView.addressbookHeight + 80 }
}, State {
name: "Sign"
PropertyChanges { target: root; currentView: signView }
PropertyChanges { target: mainFlickable; contentHeight: 1000 * scaleRatio }
PropertyChanges { target: root; currentView: signView }
PropertyChanges { target: mainFlickable; contentHeight: signView.signHeight + 80 }
}, State {
name: "Settings"
PropertyChanges { target: root; currentView: settingsView }
PropertyChanges { target: mainFlickable; contentHeight: settingsView.settingsHeight }
PropertyChanges { target: root; currentView: settingsView }
PropertyChanges { target: mainFlickable; contentHeight: settingsView.settingsHeight }
}, State {
name: "Mining"
PropertyChanges { target: root; currentView: miningView }
PropertyChanges { target: mainFlickable; contentHeight: 700 * scaleRatio}
PropertyChanges { target: mainFlickable; contentHeight: miningView.miningHeight + 80 }
}, State {
name: "Keys"
PropertyChanges { target: root; currentView: keysView }
PropertyChanges { target: mainFlickable; contentHeight: keysView.keysHeight }
PropertyChanges { target: mainFlickable; contentHeight: keysView.keysHeight + 80}
}, State {
name: "Account"
PropertyChanges { target: root; currentView: accountView }
PropertyChanges { target: mainFlickable; contentHeight: minHeight }
name: "Account"
PropertyChanges { target: root; currentView: accountView }
PropertyChanges { target: mainFlickable; contentHeight: accountView.accountHeight + 80 }
}
]
@@ -186,8 +192,14 @@ Rectangle {
ColumnLayout {
anchors.fill: parent
anchors.margins: currentView !== merchantView ? 20 * scaleRatio : 0
anchors.topMargin: appWindow.persistentSettings.customDecorations ? 50 * scaleRatio : 0
anchors.margins: {
if(currentView === merchantView || currentView === historyView)
return 0;
return 20;
}
anchors.topMargin: appWindow.persistentSettings.customDecorations ? 50 : 0
spacing: 0
Flickable {
@@ -197,13 +209,13 @@ Rectangle {
clip: true
ScrollBar.vertical: ScrollBar {
parent: mainFlickable.parent
parent: root
anchors.left: parent.right
anchors.leftMargin: 3
anchors.leftMargin: -14 // 10 margin + 4 scrollbar width
anchors.top: parent.top
anchors.topMargin: 4
anchors.topMargin: persistentSettings.customDecorations ? 60 : 10
anchors.bottom: parent.bottom
anchors.bottomMargin: persistentSettings.customDecorations ? 4 : 0
anchors.bottomMargin: persistentSettings.customDecorations ? 15 : 10
}
onFlickingChanged: {
@@ -244,11 +256,28 @@ Rectangle {
// border
Rectangle {
id: borderLeft
visible: middlePanel.state !== "Merchant"
anchors.top: styledRow.bottom
anchors.bottom: parent.bottom
anchors.left: parent.left
width: 1
color: "#313131"
color: MoneroComponents.Style.appWindowBorderColor
MoneroEffects.ColorTransition {
targetObj: parent
blackColor: MoneroComponents.Style._b_appWindowBorderColor
whiteColor: MoneroComponents.Style._w_appWindowBorderColor
}
}
// border shadow
Image {
source: "qrc:///images/middlePanelShadow.png"
width: 12
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: borderLeft.right
}
/* connect "payment" click */

View File

@@ -1,6 +1,6 @@
# Monero GUI
Copyright (c) 2014-2018, The Monero Project
Copyright (c) 2014-2019, The Monero Project
## Development resources
@@ -58,7 +58,7 @@ See [LICENSE](LICENSE).
## Translations
Do you speak a second language and would like to help translate the Monero GUI? Sign up at [translate.getmonero.org](https://translate.getmonero.org), our localization platform. Navigate to the 'monero-gui' project and find the language you can help with. Suggest changes or add new translated text.
Do you speak a second language and would like to help translate the Monero GUI? Check out Pootle, our localization platform, at [translate.getmonero.org](https://translate.getmonero.org/projects/monero-gui/). Choose the language and suggest a translation for a string or review an existing one. The Localization Workgroup made [a guide with step-by-step instructions](https://github.com/monero-ecosystem/monero-translations/blob/master/pootle.md) for Pootle.
&nbsp;
If you need help/support or any info you can contact the localization workgroup on the IRC channel #monero-translations (relayed on matrix/riot and MatterMost) or by email at translate[at]getmonero[dot]org. For more info about the Localization workgroup: [github.com/monero-ecosystem/monero-translations](https://github.com/monero-ecosystem/monero-translations)
@@ -89,13 +89,21 @@ Packaging for your favorite distribution would be a welcome contribution!
`sudo emerge app-arch/xz-utils app-doc/doxygen dev-cpp/gtest dev-libs/boost dev-libs/expat dev-libs/openssl dev-util/cmake media-gfx/graphviz net-dns/unbound net-libs/ldns net-libs/miniupnpc net-libs/zeromq sys-libs/libunwind dev-libs/libsodium dev-libs/hidapi`
- For Fedora
`sudo dnf install make automake cmake gcc-c++ boost-devel miniupnpc-devel graphviz doxygen unbound-devel libunwind-devel pkgconfig openssl-devel libcurl-devel hidapi-devel libusb-devel`
2. Install Qt:
*Note*: Qt 5.7 is the minimum version required to build the GUI. This makes **some** distributions (mostly based on debian, like Ubuntu 16.x or Linux Mint 18.x) obsolete. You can still build the GUI if you install an [official Qt release](https://wiki.qt.io/Install_Qt_5_on_Ubuntu), but this is not officially supported.
*Note*: Qt 5.9.7 is the minimum version required to build the GUI. This makes **some** distributions (mostly based on debian, like Ubuntu 16.x or Linux Mint 18.x) obsolete due to their repositories containing an older Qt version.
The recommended way is to install 5.9.7 from the [official Qt installer](https://www.qt.io/download-qt-installer) or [compiling it yourself](https://wiki.qt.io/Install_Qt_5_on_Ubuntu). This ensures you have the correct version. Higher versions *can* work but as it differs from our production build target, slight differences may occur.
The following instructions will fetch Qt from your distribution's repositories instead. Take note of what version it installs. Your mileage may vary.
- For Ubuntu 17.10+
`sudo apt install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel qttools5-dev-tools qml-module-qtquick-templates2`
`sudo apt install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel qttools5-dev-tools qml-module-qtquick-templates2 libqt5svg5-dev`
- For Gentoo
@@ -135,7 +143,7 @@ The executable can be found in the build/release/bin folder.
3. Install [monero](https://github.com/monero-project/monero) dependencies:
`brew install boost --c++11`
`brew install boost`
`brew install openssl` - to install openssl headers
@@ -149,7 +157,7 @@ The executable can be found in the build/release/bin folder.
4. Install Qt:
`brew install qt5` (or download QT 5.8+ from [qt.io](https://www.qt.io/download-open-source/))
`brew install qt5` (or download QT 5.9.7+ from [qt.io](https://www.qt.io/download-open-source/))
If you have an older version of Qt installed via homebrew, you can force it to use 5.x like so:
@@ -157,9 +165,8 @@ The executable can be found in the build/release/bin folder.
5. Add the Qt bin directory to your path
Example: `export PATH=$PATH:$HOME/Qt/5.8/clang_64/bin`
This is the directory where Qt 5.x is installed on **your** system
- Example for Qt: `export PATH=$PATH:$HOME/Qt/5.9.7/clang_64/bin`
- Example for Homebrew: `export PATH=$PATH:/usr/local/opt/qt/bin`
6. Grab an up-to-date copy of the monero-gui repository
@@ -177,7 +184,7 @@ The executable can be found in the `build/release/bin` folder.
**Note:** Workaround for "ERROR: Xcode not set up properly"
Edit `$HOME/Qt/5.8/clang_64/mkspecs/features/mac/default_pre.prf`
Edit `$HOME/Qt/5.9.7/clang_64/mkspecs/features/mac/default_pre.prf`
replace
`isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null")))`
@@ -199,7 +206,7 @@ The Monero GUI on Windows is 64 bits only; 32-bit Windows GUI builds are not off
3. Install MSYS2 packages for Monero dependencies; the needed 64-bit packages have `x86_64` in their names
```
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb
```
Optional : To build the flag `WITH_SCANNER`

View File

@@ -1,3 +1,31 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "TranslationManager.h"
#include <QApplication>

View File

@@ -1,3 +1,31 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef TRANSLATIONMANAGER_H
#define TRANSLATIONMANAGER_H

View File

@@ -1,21 +1,21 @@
// Copyright (c) 2014-2018, The Monero Project
//
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL

View File

@@ -1,198 +0,0 @@
// Copyright (c) 2014-2018, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import moneroComponents.Clipboard 1.0
import "../js/TxUtils.js" as TxUtils
ListView {
id: listView
clip: true
boundsBehavior: ListView.StopAtBounds
property bool selectAndSend: false
footer: Rectangle {
height: 127
width: listView.width
color: "transparent"
Text {
anchors.centerIn: parent
font.family: "Arial"
font.pixelSize: 14
color: "#808080"
text: qsTr("No more results") + translationManager.emptyString
}
}
property var previousItem
delegate: Rectangle {
id: delegate
height: 64
width: listView.width
color: "transparent"
z: listView.count - index
function collapseDropdown() { dropdown.expanded = false }
function doSend() {
console.log("Sending to: ", address +" "+ paymentId);
middlePanel.sendTo(address, paymentId, description);
leftPanel.selectItem(middlePanel.state)
}
Text {
id: descriptionText
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 12
width: text.length ? (descriptionArea.containsMouse ? 139 : 139) : 0
font.family: "Arial"
font.bold: true
font.pixelSize: 19
color: "#ffffff"
elide: Text.ElideRight
text: description
MouseArea {
id: descriptionArea
anchors.fill: parent
hoverEnabled: true
}
}
TextEdit {
id: addressText
selectByMouse: true
anchors.bottom: descriptionText.bottom
anchors.left: descriptionText.right
anchors.right: dropdown.left
anchors.leftMargin: description.length > 0 ? 12 : 0
anchors.rightMargin: 40
font.family: "Arial"
font.pixelSize: 16
color: "#ffffff"
text: {
if(isMobile){
TxUtils.addressTruncate(address, 6);
} else {
return TxUtils.addressTruncate(address, 10);
}
}
readOnly: true
}
Text {
id: paymentLabel
anchors.left: parent.left
anchors.bottom: parent.bottom
anchors.bottomMargin: 12
width: 139
font.family: "Arial"
font.pixelSize: 12
color: "#ffffff"
text: qsTr("Payment ID:") + translationManager.emptyString
}
TextEdit {
selectByMouse: true;
anchors.bottom: paymentLabel.bottom
anchors.left: paymentLabel.right
anchors.leftMargin: 12
anchors.rightMargin: 12
anchors.right: dropdown.left
readOnly: true
font.family: "Arial"
font.pixelSize: 13
color: "#545454"
text: {
if(isMobile){
TxUtils.addressTruncate(paymentId, 6);
} else {
return TxUtils.addressTruncate(paymentId, 10);
}
}
}
ListModel {
id: dropModel
ListElement { name: "<b>Copy address to clipboard</b>"; icon: "../images/dropdownCopy.png" }
ListElement { name: "<b>Send to this address</b>"; icon: "../images/dropdownSend.png" }
// ListElement { name: "<b>Find similar transactions</b>"; icon: "../images/dropdownSearch.png" }
ListElement { name: "<b>Remove from address book</b>"; icon: "../images/dropdownDel.png" }
}
Clipboard { id: clipboard }
TableDropdown {
id: dropdown
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.rightMargin: 5
dataModel: dropModel
visible: !listView.selectAndSend
z: 1
onExpandedChanged: {
if(expanded) {
listView.previousItem = delegate
listView.currentIndex = index
}
}
onOptionClicked: {
// Ensure tooltip is closed
appWindow.toolTip.visible = false;
if(option === 0) {
clipboard.setText(address)
appWindow.showStatusMessage(qsTr("Address copied to clipboard"),3)
}
else if(option === 1){
doSend()
} else if(option === 2){
console.log("Delete: ", rowId);
currentWallet.addressBookModel.deleteRow(rowId);
}
}
}
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
height: 1
color: "#404040"
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
visible: listView.selectAndSend
onClicked: {
doSend();
}
}
}
}

View File

@@ -26,24 +26,28 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import FontAwesome 1.0
import "../components" as MoneroComponents
import "." as MoneroComponents
import "effects/" as MoneroEffects
Item {
id: checkBox
property alias text: label.text
property string checkedIcon: "../images/checkedIcon-black.png"
property string checkedIcon: "qrc:///images/check-white.svg"
property string uncheckedIcon
property int imgWidth: 13
property int imgHeight: 13
property bool checked: false
property alias background: backgroundRect.color
property bool border: true
property int fontSize: 14 * scaleRatio
property int fontSize: 14
property alias fontColor: label.color
property bool iconOnTheLeft: true
signal clicked()
height: 25 * scaleRatio
height: 25
width: checkBoxLayout.width
function toggle(){
@@ -54,7 +58,7 @@ Item {
RowLayout {
id: checkBoxLayout
layoutDirection: iconOnTheLeft ? Qt.LeftToRight : Qt.RightToLeft
spacing: (!isMobile ? 10 : 8) * scaleRatio
spacing: (!isMobile ? 10 : 8)
Item {
id: checkMark
@@ -63,6 +67,7 @@ Item {
Rectangle {
id: backgroundRect
visible: checkBox.border
anchors.fill: parent
radius: 3
color: "transparent"
@@ -72,22 +77,26 @@ Item {
} else {
return MoneroComponents.Style.inputBorderColorInActive;
}
visible: checkBox.border
}
Image {
MoneroEffects.ImageMask {
id: img
visible: checkBox.checked || checkBox.uncheckedIcon != ""
anchors.centerIn: parent
source: {
if (checkBox.checked || checkBox.uncheckedIcon == "") {
width: checkBox.imgWidth
height: checkBox.imgHeight
color: MoneroComponents.Style.defaultFontColor
fontAwesomeFallbackIcon: FontAwesome.plus
fontAwesomeFallbackSize: 14
image: {
if (checkBox.checked || checkBox.uncheckedIcon == "")
return checkBox.checkedIcon;
}
return checkBox.uncheckedIcon;
}
visible: checkBox.checked || checkBox.uncheckedIcon != ""
}
}
Text {
MoneroComponents.TextPlain {
id: label
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: checkBox.fontSize

View File

@@ -26,24 +26,24 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import FontAwesome 1.0
import "." 1.0
import "." as MoneroComponents
import "effects/" as MoneroEffects
RowLayout {
id: checkBox
property alias text: label.text
property string checkedIcon: "../images/checkedIcon-black.png"
property string uncheckedIcon
property bool checked: false
property string background: "backgroundRect.color"
property int fontSize: 14 * scaleRatio
property int fontSize: 14
property alias fontColor: label.color
property int textMargin: 8 * scaleRatio
property bool darkDropIndicator: false
property int textMargin: 8
signal clicked()
height: 25 * scaleRatio
height: 25
function toggle(){
checkBox.checked = !checkBox.checked
@@ -58,7 +58,7 @@ RowLayout {
width: (label.width + indicatorRect.width + checkBox.textMargin)
color: "transparent"
Text {
MoneroComponents.TextPlain {
id: label
font.family: Style.fontLight.name
font.pixelSize: checkBox.fontSize
@@ -75,23 +75,29 @@ RowLayout {
anchors.left: label.right
anchors.leftMargin: textMargin
color: "transparent"
rotation: checkBox.checked ? 180 * scaleRatio : 0
rotation: checkBox.checked ? 180 : 0
Image {
MoneroEffects.ImageMask {
id: indicatorImage
anchors.centerIn: parent
source: "../images/whiteDropIndicator.png"
visible: !darkDropIndicator
}
ColorOverlay {
anchors.fill: indicatorImage
source: indicatorImage
color: "#FF000000"
visible: darkDropIndicator
width: 12
height: 8
image: "qrc:///images/whiteDropIndicator.png"
color: MoneroComponents.Style.defaultFontColor
opacity: MoneroComponents.Style.blackTheme ? 1 : 0.75
fontAwesomeFallbackIcon: FontAwesome.arrowDown
fontAwesomeFallbackSize: 14
MoneroEffects.ColorTransition {
targetObj: indicatorImage
blackColor: "white"
whiteColor: "black"
duration: 500
}
}
}
MouseArea{
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
@@ -100,7 +106,5 @@ RowLayout {
}
}
}
}
}

View File

@@ -26,14 +26,15 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.2
import "../components" as MoneroComponents
import "." as MoneroComponents
import "effects/" as MoneroEffects
import "../js/Windows.js" as Windows
import "../js/Utils.js" as Utils
@@ -64,10 +65,18 @@ Window {
width: 480
height: 280
// background gradient
Image {
// background
MoneroEffects.GradientBackground {
anchors.fill: parent
source: "../images/middlePanelBg.jpg"
fallBackColor: MoneroComponents.Style.middlePanelBackgroundColor
initialStartColor: MoneroComponents.Style.middlePanelBackgroundGradientStart
initialStopColor: MoneroComponents.Style.middlePanelBackgroundGradientStop
blackColorStart: MoneroComponents.Style._b_middlePanelBackgroundGradientStart
blackColorStop: MoneroComponents.Style._b_middlePanelBackgroundGradientStop
whiteColorStart: MoneroComponents.Style._w_middlePanelBackgroundGradientStart
whiteColorStop: MoneroComponents.Style._w_middlePanelBackgroundGradientStop
start: Qt.point(0, 0)
end: Qt.point(height, width)
}
// Make window draggable
@@ -83,9 +92,9 @@ Window {
id: mainLayout
anchors.fill: parent
anchors.topMargin: 20 * scaleRatio
anchors.margins: 35 * scaleRatio
spacing: 20 * scaleRatio
anchors.topMargin: 20
anchors.margins: 35
spacing: 20
Item {
Layout.fillHeight: true
@@ -109,22 +118,22 @@ Window {
selectByMouse: true
selectByKeyboard: true
font.family: MoneroComponents.Style.defaultFontColor
font.pixelSize: 14 * scaleRatio
font.pixelSize: 14
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
wrapMode: TextEdit.Wrap
readOnly: true
function logCommand(msg){
msg = log_color(msg, "lime");
msg = log_color(msg, MoneroComponents.Style.blackTheme ? "lime" : "#009100");
textArea.append(msg);
}
function logMessage(msg){
msg = msg.trim();
var color = "white";
var color = MoneroComponents.Style.defaultFontColor;
if(msg.toLowerCase().indexOf('error') >= 0){
color = "red";
color = MoneroComponents.Style.errorColor;
} else if (msg.toLowerCase().indexOf('warning') >= 0){
color = "yellow";
color = MoneroComponents.Style.warningColor;
}
// format multi-lines

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
@@ -89,12 +89,14 @@ Window {
}
}
Text {
text: qsTr("Starting local node in %1 seconds").arg(countDown);
MoneroComponents.TextPlain {
text: qsTr("Starting local node in %1 seconds").arg(countDown) + translationManager.emptyString;
font.pixelSize: 18
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
themeTransition: false
color: "black"
}
}
@@ -108,7 +110,7 @@ Window {
id: okButton
visible:false
fontSize: 14
text: qsTr("Start daemon (%1)").arg(countDown)
text: qsTr("Start daemon (%1)").arg(countDown) + translationManager.emptyString
KeyNavigation.tab: cancelButton
onClicked: {
timer.stop();
@@ -121,7 +123,7 @@ Window {
MoneroComponents.StandardButton {
id: cancelButton
fontSize: 14
text: qsTr("Use custom settings")
text: qsTr("Use custom settings") + translationManager.emptyString
onClicked: {
timer.stop();

View File

@@ -26,18 +26,22 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.2
import QtQuick 2.9
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.2
import QtGraphicalEffects 1.0
import QtQuick.Controls.Styles 1.2
import "../components" as MoneroComponents
import "." as MoneroComponents
import "effects/" as MoneroEffects
Item {
id: datePicker
z: parent.z + 1
property bool expanded: false
property date currentDate
property bool showCurrentDate: true
property color backgroundColor : "#404040"
property color backgroundColor : MoneroComponents.Style.appWindowBorderColor
property color errorColor : "red"
property bool error: false
property alias inputLabel: inputLabel
@@ -67,7 +71,7 @@ Item {
height: 22
width: parent.width
Text {
MoneroComponents.TextPlain {
id: inputLabel
anchors.top: parent.top
anchors.topMargin: 2
@@ -77,6 +81,7 @@ Item {
font.bold: false
textFormat: Text.RichText
color: MoneroComponents.Style.defaultFontColor
themeTransition: false
MouseArea {
anchors.fill: parent
@@ -89,7 +94,7 @@ Item {
Item {
id: head
anchors.top: inputLabelRect.bottom
anchors.topMargin: 6 * scaleRatio
anchors.topMargin: 6
anchors.left: parent.left
anchors.right: parent.right
height: 28
@@ -106,45 +111,14 @@ Item {
color: datePicker.backgroundColor
}
Item {
id: buttonItem
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.margins: 4
width: height
Image {
id: button
anchors.centerIn: parent
source: "../images/whiteDropIndicator.png"
rotation: datePicker.expanded ? 180 : 0
}
MouseArea {
anchors.fill: parent
onClicked: datePicker.expanded = !datePicker.expanded
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
}
}
Rectangle {
id: separator
anchors.verticalCenter: parent.verticalCenter
anchors.right: buttonItem.left
anchors.rightMargin: 4
height: 16
width: 1
color: "#808080"
visible: datePicker.expanded
}
Row {
RowLayout {
id: dateInput
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10
anchors.leftMargin: 2
anchors.right: parent.right
property string headerFontColor: MoneroComponents.Style.blackTheme ? "#e6e6e6" : "#333333"
spacing: 0
function setDate(date) {
var day = date.getDate()
@@ -164,12 +138,14 @@ Item {
TextInput {
id: dayInput
readOnly: true
width: 22
Layout.preferredWidth: childrenRect.width + 40
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14
color: datePicker.error ? errorColor : MoneroComponents.Style.defaultFontColor
maximumLength: 2
color: datePicker.error ? errorColor : parent.headerFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectByMouse: true
horizontalAlignment: TextInput.AlignHCenter
maximumLength: 2
validator: IntValidator{bottom: 01; top: 31;}
KeyNavigation.tab: monthInput
@@ -187,22 +163,25 @@ Item {
}
}
Text {
MoneroComponents.TextPlain {
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14
color: datePicker.error ? errorColor : MoneroComponents.Style.defaultFontColor
text: "-"
themeTransition: false
}
TextInput {
id: monthInput
readOnly: true
width: 22
Layout.preferredWidth: childrenRect.width + 40
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14
color: datePicker.error ? errorColor : MoneroComponents.Style.defaultFontColor
maximumLength: 2
color: datePicker.error ? errorColor : parent.headerFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectByMouse: true
horizontalAlignment: TextInput.AlignHCenter
maximumLength: 2
validator: IntValidator{bottom: 01; top: 12;}
KeyNavigation.tab: yearInput
text: {
@@ -219,23 +198,27 @@ Item {
}
}
Text {
MoneroComponents.TextPlain {
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14
color: datePicker.error ? errorColor : MoneroComponents.Style.defaultFontColor
text: "-"
themeTransition: false
}
TextInput {
id: yearInput
width: 44
Layout.preferredWidth: childrenRect.width + 60
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14
color: datePicker.error ? errorColor : MoneroComponents.Style.defaultFontColor
maximumLength: 4
color: datePicker.error ? errorColor : parent.headerFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectByMouse: true
horizontalAlignment: TextInput.AlignHCenter
maximumLength: 4
validator: IntValidator{bottom: 1000; top: 9999;}
text: if(datePicker.showCurrentDate) datePicker.currentDate.getFullYear()
onFocusChanged: {
if(focus === false) {
var d = new Date()
@@ -245,6 +228,36 @@ Item {
}
}
}
Rectangle {
Layout.preferredHeight: parent.height
Layout.fillWidth: true
color: "transparent"
Image {
id: button
anchors.right: parent.right
anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
source: "qrc:///images/whiteDropIndicator.png"
visible: false
}
ColorOverlay {
source: button
anchors.fill: button
color: MoneroComponents.Style.defaultFontColor
rotation: datePicker.expanded ? 180 : 0
opacity: 1
}
MouseArea {
anchors.fill: parent
onClicked: datePicker.expanded = !datePicker.expanded
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
}
}
}
}
@@ -253,12 +266,12 @@ Item {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: head.bottom
color: "#FFFFFF"
anchors.topMargin: 10
color: MoneroComponents.Style.middlePanelBackgroundColor
border.width: 1
border.color: "#DBDBDB"
border.color: MoneroComponents.Style.appWindowBorderColor
height: datePicker.expanded ? calendar.height + 2 : 0
clip: true
//radius: 4
Behavior on height {
NumberAnimation { duration: 100; easing.type: Easing.InQuad }
@@ -270,7 +283,7 @@ Item {
anchors.leftMargin: 1
anchors.rightMargin: 1
anchors.top: parent.top
color: "#FFFFFF"
color: MoneroComponents.Style.appWindowBorderColor
height: 1
}
@@ -280,40 +293,58 @@ Item {
anchors.right: parent.right
anchors.top: parent.top
anchors.margins: 1
height: 180
anchors.bottomMargin: 10
height: 220
frameVisible: false
style: CalendarStyle {
gridVisible: false
background: Rectangle { color: "transparent" }
background: Rectangle { color: MoneroComponents.Style.middlePanelBackgroundColor }
dayDelegate: Item {
z: parent.z + 1
implicitHeight: implicitWidth
implicitWidth: calendar.width / 7
Rectangle {
id: dayRect
anchors.fill: parent
radius: parent.implicitHeight / 2
color: dayArea.pressed && styleData.visibleMonth ? "#FF6C3B" : "transparent"
color: {
if(dayArea.pressed && styleData.visibleMonth)
return MoneroComponents.Style.blackTheme ? "#20FFFFFF" : "#10000000"
return "transparent";
}
}
Text {
MoneroComponents.TextPlain {
id: dayText
anchors.centerIn: parent
font.family: "Arial"
font.pixelSize: 12
font.bold: dayArea.pressed
font.family: MoneroComponents.Style.fontMonoRegular.name
font.pixelSize: {
if(!styleData.visibleMonth) return 12
return 14
}
font.bold: {
if(dayArea.pressed || styleData.visibleMonth) return true;
return false;
}
text: styleData.date.getDate()
themeTransition: false
color: {
if(!styleData.visibleMonth) return "#DBDBDB"
if(dayArea.pressed) return "#FFFFFF"
if(styleData.today) return "#FF6C3B"
return "#4A4848"
if(!styleData.visibleMonth) return MoneroComponents.Style.lightGreyFontColor
if(dayArea.pressed) return MoneroComponents.Style.defaultFontColor
if(styleData.today) return MoneroComponents.Style.orange
return MoneroComponents.Style.defaultFontColor
}
}
MouseArea {
id: dayArea
anchors.fill: parent
hoverEnabled: true
onEntered: dayRect.color = MoneroComponents.Style.blackTheme ? "#20FFFFFF" : "#10000000"
onExited: dayRect.color = "transparent"
cursorShape: Qt.PointingHandCursor
onClicked: {
if(styleData.visibleMonth) {
currentDate = styleData.date
@@ -325,7 +356,7 @@ Item {
else calendar.showPreviousMonth()
}
dateChanged();
datePicker.dateChanged();
}
}
}
@@ -334,12 +365,13 @@ Item {
implicitHeight: 20
implicitWidth: calendar.width / 7
Text {
MoneroComponents.TextPlain {
anchors.centerIn: parent
elide: Text.ElideRight
font.family: "Arial"
font.pixelSize: 9
color: "#535353"
font.family: MoneroComponents.Style.fontMonoRegular.name
font.pixelSize: 12
color: MoneroComponents.Style.lightGreyFontColor
themeTransition: false
text: {
var locale = Qt.locale()
return locale.dayName(styleData.dayOfWeek, Locale.ShortFormat)
@@ -348,29 +380,44 @@ Item {
}
navigationBar: Rectangle {
color: MoneroComponents.Style.middlePanelBackgroundColor
implicitWidth: calendar.width
implicitHeight: 30
Text {
MoneroComponents.TextPlain {
anchors.centerIn: parent
font.family: "Arial"
font.pixelSize: 12
color: "#4A4646"
font.family: MoneroComponents.Style.fontMonoRegular.name
font.pixelSize: 14
color: MoneroComponents.Style.dimmedFontColor
themeTransition: false
text: styleData.title
}
Item {
anchors.left: parent.left
anchors.leftMargin: 4
anchors.top: parent.top
anchors.bottom: parent.bottom
width: height
Image {
id: prevMonthIcon
anchors.centerIn: parent
source: "../images/prevMonth.png"
source: "qrc:///images/prevMonth.png"
visible: false
}
ColorOverlay {
source: prevMonthIcon
anchors.fill: prevMonthIcon
color: MoneroComponents.Style.defaultFontColor
opacity: 0.5
}
MouseArea {
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: calendar.showPreviousMonth()
}
@@ -378,18 +425,29 @@ Item {
Item {
anchors.right: parent.right
anchors.rightMargin: 4
anchors.top: parent.top
anchors.bottom: parent.bottom
width: height
Image {
id: nextMonthIcon
anchors.centerIn: parent
source: "../images/prevMonth.png"
transformOrigin: Item.Center
source: "qrc:///images/prevMonth.png"
visible: false
}
ColorOverlay {
source: nextMonthIcon
anchors.fill: nextMonthIcon
color: MoneroComponents.Style.defaultFontColor
opacity: 0.5
rotation: 180
}
MouseArea {
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: calendar.showNextMonth()
}

View File

@@ -1,506 +0,0 @@
// Copyright (c) 2014-2018, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import moneroComponents.Clipboard 1.0
import moneroComponents.AddressBookModel 1.0
import "../components" as MoneroComponents
import "../js/TxUtils.js" as TxUtils
ListView {
id: listView
clip: true
boundsBehavior: ListView.StopAtBounds
property var previousItem
property int rowSpacing: 12
property var addressBookModel: null
function buildTxDetailsString(tx_id, paymentId, tx_key,tx_note, destinations, rings, address, address_label) {
var trStart = '<tr><td width="85" style="padding-top:5px"><b>',
trMiddle = '</b></td><td style="padding-left:10px;padding-top:5px;">',
trEnd = "</td></tr>";
return '<table border="0">'
+ (tx_id ? trStart + qsTr("Tx ID:") + trMiddle + tx_id + trEnd : "")
+ (address_label ? trStart + qsTr("Address label:") + trMiddle + address_label + trEnd : "")
+ (address ? trStart + qsTr("Address:") + trMiddle + address + trEnd : "")
+ (paymentId ? trStart + qsTr("Payment ID:") + trMiddle + paymentId + trEnd : "")
+ (tx_key ? trStart + qsTr("Tx key:") + trMiddle + tx_key + trEnd : "")
+ (tx_note ? trStart + qsTr("Tx note:") + trMiddle + tx_note + trEnd : "")
+ (destinations ? trStart + qsTr("Destinations:") + trMiddle + destinations + trEnd : "")
+ (rings ? trStart + qsTr("Rings:") + trMiddle + rings + trEnd : "")
+ "</table>"
+ translationManager.emptyString;
}
function lookupPaymentID(paymentId) {
if (!addressBookModel)
return ""
var idx = addressBookModel.lookupPaymentID(paymentId)
if (idx < 0)
return ""
idx = addressBookModel.index(idx, 0)
return addressBookModel.data(idx, AddressBookModel.AddressBookDescriptionRole)
}
footer: Rectangle {
height: 127 * scaleRatio
width: listView.width
color: "transparent"
Text {
anchors.centerIn: parent
font.family: "Arial"
font.pixelSize: 14
color: "#545454"
text: qsTr("No more results") + translationManager.emptyString
}
}
delegate: Rectangle {
id: delegate
property bool collapsed: index ? false : true
height: collapsed ? 180 * scaleRatio : 70 * scaleRatio
width: listView.width
color: "transparent"
function collapse(){
delegate.height = 180 * scaleRatio;
}
// borders
Rectangle{
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
width: 1
color: "#404040"
}
Rectangle{
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
width: collapsed ? 2 : 1
color: collapsed ? "#BBBBBB" : "#404040"
}
Rectangle{
anchors.right: parent.right
anchors.bottom: parent.top
anchors.left: parent.left
height: 1
color: "#404040"
}
Rectangle{
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.left: parent.left
height: 1
color: "#404040"
}
Rectangle {
id: row1
anchors.left: parent.left
anchors.leftMargin: 20 * scaleRatio
anchors.right: parent.right
anchors.rightMargin: 20 * scaleRatio
anchors.top: parent.top
anchors.topMargin: 15 * scaleRatio
height: 40 * scaleRatio
color: "transparent"
Image {
id: arrowImage
source: isOut ? "../images/downArrow.png" : confirmationsRequired === 60 ? "../images/miningxmr.png" : "../images/upArrow-green.png"
height: 18 * scaleRatio
width: (confirmationsRequired === 60 ? 18 : 12) * scaleRatio
anchors.top: parent.top
anchors.topMargin: 12 * scaleRatio
}
Text {
id: txrxLabel
anchors.left: arrowImage.right
anchors.leftMargin: 18 * scaleRatio
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 14 * scaleRatio
text: isOut ? qsTr("Sent") + translationManager.emptyString : qsTr("Received") + translationManager.emptyString
color: "#808080"
}
Text {
id: amountLabel
anchors.left: arrowImage.right
anchors.leftMargin: 18 * scaleRatio
anchors.top: txrxLabel.bottom
anchors.topMargin: 0 * scaleRatio
font.family: MoneroComponents.Style.fontBold.name
font.pixelSize: 18 * scaleRatio
font.bold: true
text: {
var _amount = amount;
if(_amount === 0){
// *sometimes* amount is 0, while the 'destinations string'
// has the correct amount, so we try to fetch it from that instead.
_amount = TxUtils.destinationsToAmount(destinations);
_amount = (_amount *1);
}
return _amount + " XMR";
}
color: isOut ? MoneroComponents.Style.white : MoneroComponents.Style.green
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.orange
}
onExited: {
parent.color = isOut ? MoneroComponents.Style.white : MoneroComponents.Style.green }
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(parent.text.split(" ")[0]);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
Rectangle {
anchors.right: parent.right
width: 300 * scaleRatio
height: parent.height
color: "transparent"
Text {
id: dateLabel
anchors.left: parent.left
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14 * scaleRatio
text: date
color: "#808080"
}
Text {
id: timeLabel
anchors.left: dateLabel.right
anchors.leftMargin: 7 * scaleRatio
anchors.top: parent.top
anchors.topMargin: 1 * scaleRatio
font.pixelSize: 12 * scaleRatio
text: time
color: "#808080"
}
Text {
id: toLabel
property string address: ""
color: "#BBBBBB"
anchors.left: parent.left
anchors.top: dateLabel.bottom
anchors.topMargin: 0
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 16 * scaleRatio
text: {
if(isOut){
address = TxUtils.destinationsToAddress(destinations);
if(address){
var truncated = TxUtils.addressTruncate(address);
return qsTr("To ") + translationManager.emptyString + truncated;
} else {
return "Unknown recipient";
}
}
return "";
}
MouseArea{
visible: parent.address !== undefined
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
toLabel.color = "white";
}
onExited: {
toLabel.color = "#BBBBBB";
}
onClicked: {
if(parent.address){
console.log("Address copied to clipboard");
clipboard.setText(parent.address);
appWindow.showStatusMessage(qsTr("Address copied to clipboard"),3)
}
}
}
}
Rectangle {
height: 24 * scaleRatio
width: 24 * scaleRatio
color: "transparent"
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
Image {
id: dropdownImage
height: 8 * scaleRatio
width: 12 * scaleRatio
source: "../images/whiteDropIndicator.png"
rotation: delegate.collapsed ? 180 : 0
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
}
MouseArea{
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
delegate.collapsed = !delegate.collapsed;
}
}
}
}
}
Rectangle {
id: row2
anchors.left: parent.left
anchors.leftMargin: 20 * scaleRatio
anchors.right: parent.right
anchors.rightMargin: 20 * scaleRatio
anchors.top: row1.bottom
anchors.topMargin: 15 * scaleRatio
height: 40 * scaleRatio
color: "transparent"
visible: delegate.collapsed
// left column
MoneroComponents.HistoryTableInnerColumn{
anchors.left: parent.left
anchors.leftMargin: 30 * scaleRatio
labelHeader: qsTr("Transaction ID") + translationManager.emptyString
labelValue: hash.substring(0, 18) + "..."
copyValue: hash
}
// right column
MoneroComponents.HistoryTableInnerColumn{
anchors.right: parent.right
anchors.rightMargin: 100 * scaleRatio
width: 200 * scaleRatio
height: parent.height
color: "transparent"
labelHeader: qsTr("Fee")
labelValue: {
if(!isOut && !fee){
return "-";
} else if(isOut && fee){
return fee + " XMR";
} else {
return "Unknown"
}
}
copyValue: {
if(isOut && fee){ return fee }
else { return "" }
}
}
}
Rectangle {
id: row3
anchors.left: parent.left
anchors.leftMargin: 20 * scaleRatio
anchors.right: parent.right
anchors.rightMargin: 20 * scaleRatio
anchors.top: row2.bottom
anchors.topMargin: 15 * scaleRatio
height: 40 * scaleRatio
color: "transparent"
visible: delegate.collapsed
// left column
MoneroComponents.HistoryTableInnerColumn{
anchors.left: parent.left
anchors.leftMargin: 30 * scaleRatio
labelHeader: qsTr("Blockheight")
labelValue: {
if (!isPending)
if(confirmations < confirmationsRequired)
return blockHeight + " " + qsTr("(%1/%2 confirmations)").arg(confirmations).arg(confirmationsRequired);
else
return blockHeight;
if (!isOut)
return qsTr("UNCONFIRMED") + translationManager.emptyString
if (isFailed)
return qsTr("FAILED") + translationManager.emptyString
return qsTr("PENDING") + translationManager.emptyString
}
copyValue: labelValue
}
// right column
MoneroComponents.HistoryTableInnerColumn {
anchors.right: parent.right
anchors.rightMargin: 80 * scaleRatio
width: 220 * scaleRatio
height: parent.height
color: "transparent"
hashValue: hash
labelHeader: qsTr("Description") + translationManager.emptyString
labelHeaderIconImageSource: "../images/editIcon.png"
labelValue: {
var note = currentWallet.getUserNote(hash);
if(note){
if(note.length > 28) {
return note.substring(0, 28) + "...";
} else {
return note;
}
} else {
return qsTr("None") + translationManager.emptyString;
}
}
copyValue: {
return currentWallet.getUserNote(hash);
}
}
Rectangle {
id: proofButton
visible: isOut
color: "#404040"
height: 24 * scaleRatio
width: 24 * scaleRatio
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.bottomMargin: 36
radius: 20 * scaleRatio
MouseArea {
id: proofButtonMouseArea
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
var address = TxUtils.destinationsToAddress(destinations);
if(address === undefined){
console.log('getProof: Error fetching address')
return;
}
var checked = (TxUtils.checkTxID(hash) && TxUtils.checkAddress(address, appWindow.persistentSettings.nettype));
if(!checked){
console.log('getProof: Error checking TxId and/or address');
}
console.log("getProof: Generate clicked: txid " + hash + ", address " + address);
root.getProofClicked(hash, address, '');
}
onEntered: {
proofButton.color = "#656565";
}
onExited: {
proofButton.color = "#404040";
}
}
Text {
color: MoneroComponents.Style.defaultFontColor
text: "P"
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: 14 * scaleRatio
}
}
Rectangle {
id: detailsButton
color: "#404040"
height: 24 * scaleRatio
width: 24 * scaleRatio
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.bottomMargin: 6
radius: 20 * scaleRatio
MouseArea {
id: detailsButtonMouseArea
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
var tx_key = currentWallet.getTxKey(hash)
var tx_note = currentWallet.getUserNote(hash)
var rings = currentWallet.getRings(hash)
var address_label = subaddrIndex == 0 ? qsTr("Primary address") : currentWallet.getSubaddressLabel(subaddrAccount, subaddrIndex)
var address = currentWallet.address(subaddrAccount, subaddrIndex)
if (rings)
rings = rings.replace(/\|/g, '\n')
informationPopup.title = "Transaction details";
informationPopup.content = buildTxDetailsString(hash,paymentId,tx_key,tx_note,destinations, rings, address, address_label);
informationPopup.onCloseCallback = null
informationPopup.open();
}
onEntered: {
detailsButton.color = "#656565";
}
onExited: {
detailsButton.color = "#404040";
}
}
Text {
color: MoneroComponents.Style.defaultFontColor
text: "?"
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: 14 * scaleRatio
}
}
}
}
Clipboard { id: clipboard }
}

View File

@@ -1,124 +0,0 @@
// Copyright (c) 2014-2015, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.2
import moneroComponents.Clipboard 1.0
import moneroComponents.PendingTransaction 1.0
import moneroComponents.Wallet 1.0
import "." as MoneroComponents
Rectangle{
Clipboard { id: clipboard }
width: label1.width > label2.width ? label1.width : label2.width
height: label1.height + label2.height
color: "transparent"
property string copyValue: ""
property string hashValue: ""
property alias labelHeader: label1.text
property alias labelValue: label2.text
property alias labelHeaderIcon: icon
property alias labelHeaderIconImageSource: icon.imageSource
ColumnLayout {
Layout.fillWidth: true
spacing: 2 * scaleRatio
RowLayout {
Layout.fillWidth: true
Text {
id: label1
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14 * scaleRatio
text: labelHeader
color: MoneroComponents.Style.dimmedFontColor
}
MoneroComponents.IconButton {
id: icon
visible: imageSource !== ""
Layout.leftMargin: 8 * scaleRatio
width: image.width
height: image.height
onClicked: {
editDescription(hashValue);
}
}
}
Text {
id: label2
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14 * scaleRatio
text: labelValue
color: MoneroComponents.Style.dimmedFontColor
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
label1.color = MoneroComponents.Style.defaultFontColor;
label2.color = MoneroComponents.Style.defaultFontColor;
}
onExited: {
label1.color = MoneroComponents.Style.dimmedFontColor;
label2.color = MoneroComponents.Style.dimmedFontColor;
}
onClicked: {
if(copyValue){
console.log("Copied to clipboard");
clipboard.setText(copyValue);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
}
}
function editDescription(_hash){
inputDialog.labelText = qsTr("Set description:") + translationManager.emptyString;
inputDialog.onAcceptedCallback = function() {
appWindow.currentWallet.setUserNote(_hash, inputDialog.inputText);
appWindow.showStatusMessage(qsTr("Updated description."),3);
middlePanel.historyView.update();
}
inputDialog.onRejectedCallback = null;
inputDialog.open()
}
}

View File

@@ -1,222 +0,0 @@
// Copyright (c) 2014-2018, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick.Layouts 1.1
import moneroComponents.Clipboard 1.0
import moneroComponents.AddressBookModel 1.0
import "../components" as MoneroComponents
ListView {
id: listView
clip: true
boundsBehavior: ListView.StopAtBounds
property var previousItem
property var addressBookModel: null
function buildTxDetailsString(tx_id, paymentId, tx_key,tx_note, destinations, rings) {
var trStart = '<tr><td width="85" style="padding-top:5px"><b>',
trMiddle = '</b></td><td style="padding-left:10px;padding-top:5px;">',
trEnd = "</td></tr>";
return '<table border="0">'
+ (tx_id ? trStart + qsTr("Tx ID:") + trMiddle + tx_id + trEnd : "")
+ (paymentId ? trStart + qsTr("Payment ID:") + trMiddle + paymentId + trEnd : "")
+ (tx_key ? trStart + qsTr("Tx key:") + trMiddle + tx_key + trEnd : "")
+ (tx_note ? trStart + qsTr("Tx note:") + trMiddle + tx_note + trEnd : "")
+ (destinations ? trStart + qsTr("Destinations:") + trMiddle + destinations + trEnd : "")
+ (rings ? trStart + qsTr("Rings:") + trMiddle + rings + trEnd : "")
+ "</table>"
+ translationManager.emptyString;
}
function lookupPaymentID(paymentId) {
if (!addressBookModel)
return ""
var idx = addressBookModel.lookupPaymentID(paymentId)
if (idx < 0)
return ""
idx = addressBookModel.index(idx, 0)
return addressBookModel.data(idx, AddressBookModel.AddressBookDescriptionRole)
}
footer: Rectangle {
height: 127 * scaleRatio
width: listView.width
color: "transparent"
Text {
anchors.centerIn: parent
font.family: "Arial"
font.pixelSize: 14 * scaleRatio
color: "#545454"
text: qsTr("No more results") + translationManager.emptyString
}
}
delegate: Rectangle {
id: delegate
height: tableContent.height + 20 * scaleRatio
width: listView.width
color: "transparent"
Layout.leftMargin: 10 * scaleRatio
z: listView.count - index
function collapseDropdown() { dropdown.expanded = false }
Rectangle{
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
width: 1
color: "#404040"
}
Rectangle{
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.top: parent.top
width: 1
color: "#404040"
}
Rectangle{
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.left: parent.left
height: 1
color: "#404040"
}
MouseArea {
anchors.fill: parent
onClicked: {
var tx_key = currentWallet.getTxKey(hash)
var tx_note = currentWallet.getUserNote(hash)
var rings = currentWallet.getRings(hash)
if (rings)
rings = rings.replace(/\|/g, '\n')
informationPopup.title = "Transaction details";
informationPopup.text = buildTxDetailsString(hash,paymentId,tx_key,tx_note,destinations, rings);
informationPopup.open();
informationPopup.onCloseCallback = null
}
}
Rectangle {
anchors.right: parent.right
anchors.rightMargin: 15 * scaleRatio
anchors.top: parent.top
anchors.topMargin: parent.height/2 - this.height/2
width: 30 * scaleRatio; height: 30 * scaleRatio
radius: 25
color: "#404040"
Image {
width: 20 * scaleRatio
height: 20 * scaleRatio
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
source: "qrc:///images/nextPage.png"
}
}
ColumnLayout {
id: tableContent
// Date
RowLayout {
Layout.topMargin: 20 * scaleRatio
Layout.leftMargin: 10 * scaleRatio
Text {
font.family: MoneroComponents.Style.fontMedium.name
font.pixelSize: 14 * scaleRatio
color: MoneroComponents.Style.defaultFontColor
text: date
}
Text {
font.family: Style.fontRegular.name
font.pixelSize: 14 * scaleRatio
color: MoneroComponents.Style.dimmedFontColor
text: time
}
// Show confirmations
Text {
visible: confirmations < confirmationsRequired || isPending
Layout.leftMargin: 5 * scaleRatio
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14 * scaleRatio
color: (confirmations < confirmationsRequired)? "#FF6C3C" : "#545454"
text: {
if (!isPending)
if(confirmations < confirmationsRequired)
return qsTr("(%1/%2 confirmations)").arg(confirmations).arg(confirmationsRequired)
if (!isOut)
return qsTr("UNCONFIRMED") + translationManager.emptyString
if (isFailed)
return qsTr("FAILED") + translationManager.emptyString
return qsTr("PENDING") + translationManager.emptyString
}
}
}
// Amount & confirmations
RowLayout {
Layout.leftMargin: 10 * scaleRatio
spacing: 2
Text {
font.family: "Arial"
font.pixelSize: 14 * scaleRatio
color: isOut ? MoneroComponents.Style.defaultFontColor : "#2eb358"
text: isOut ? "↓" : "↑"
}
Text {
id: amountText
font.family: "Arial"
font.pixelSize: 18 * scaleRatio
color: isOut ? MoneroComponents.Style.defaultFontColor : "#2eb358"
text: displayAmount
}
}
}
}
ListModel {
id: dropModel
ListElement { name: "<b>Copy address to clipboard</b>"; icon: "../images/dropdownCopy.png" }
ListElement { name: "<b>Add to address book</b>"; icon: "../images/dropdownAdd.png" }
ListElement { name: "<b>Send to this address</b>"; icon: "../images/dropdownSend.png" }
ListElement { name: "<b>Find similar transactions</b>"; icon: "../images/dropdownSearch.png" }
}
Clipboard { id: clipboard }
}

View File

@@ -26,55 +26,33 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import "../components" as MoneroComponents
import "../components/effects" as MoneroEffects
import QtQuick 2.0
Item {
property alias image : buttonImage
property alias imageSource : buttonImage.source
MoneroEffects.ImageMask {
id: button
z: 666
color: MoneroComponents.Style.defaultFontColor
image: ""
signal clicked(var mouse)
id: button
width: parent.height
height: parent.height
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
Image {
id: buttonImage
source: ""
x : (parent.width - width) / 2
y : (parent.height - height) / 2
z: 100
}
MouseArea {
id: buttonArea
anchors.fill: buttonImage
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onPressed: {
buttonImage.x = buttonImage.x + 2
buttonImage.y = buttonImage.y + 2
}
onReleased: {
buttonImage.x = (parent.width - width) / 2
buttonImage.y = (parent.height - height) / 2
onEntered: {
button.width = button.width + 2
button.height = button.height + 2
}
onExited: {
if (pressed) {
buttonImage.x = (parent.width - width) / 2
buttonImage.y = (parent.height - height) / 2
}
button.width = button.width - 2
button.height = button.height - 2
}
onClicked: {
parent.clicked(mouse)
}
onClicked: button.clicked(mouse)
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2015, The Monero Project
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
@@ -26,10 +26,12 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import "../components" as MoneroComponents
import "." as MoneroComponents
import "./effects/" as MoneroEffects
Item {
id: inlineButton
@@ -43,11 +45,13 @@ Item {
property string pressedColor: "#FF4304"
property string releasedColor: "#FF6C3C"
property string icon: ""
property string textColor: "#FFFFFF"
property int fontSize: small ? 14 * scaleRatio : 16 * scaleRatio
property int rectHeight: small ? 24 * scaleRatio : 28 * scaleRatio
property int rectHMargin: small ? 16 * scaleRatio : 22 * scaleRatio
property string textColor: MoneroComponents.Style.inlineButtonTextColor
property int fontSize: small ? 14 : 16
property int rectHeight: small ? 24 : 24
property int rectHMargin: small ? 16 : 22
property alias text: inlineText.text
property alias fontPixelSize: inlineText.font.pixelSize
property alias fontFamily: inlineText.font.family
property alias buttonColor: rect.color
signal clicked()
@@ -59,23 +63,30 @@ Item {
Rectangle{
id: rect
color: MoneroComponents.Style.buttonBackgroundColorDisabled
border.color: "black"
height: 28 * scaleRatio
width: inlineText.text ? (inlineText.width + 22) * scaleRatio : inlineButton.icon ? (inlineImage.width + 16) * scaleRatio : rect.height
color: MoneroComponents.Style.buttonInlineBackgroundColor
height: 24
width: inlineText.text ? (inlineText.width + 16) : inlineButton.icon ? (inlineImage.width + 16) : rect.height
radius: 4
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 4
Text {
MoneroComponents.TextPlain {
id: inlineText
font.family: MoneroComponents.Style.fontBold.name
font.bold: true
font.pixelSize: inlineButton.fontSize
color: "black"
color: inlineButton.textColor
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
themeTransition: false
MoneroEffects.ColorTransition {
targetObj: inlineText
blackColor: MoneroComponents.Style._b_inlineButtonTextColor
whiteColor: MoneroComponents.Style._w_inlineButtonTextColor
}
}
Image {
@@ -102,6 +113,18 @@ Item {
}
}
DropShadow {
visible: !MoneroComponents.Style.blackTheme
anchors.fill: rect
horizontalOffset: 2
verticalOffset: 2
radius: 7.0
samples: 10
color: "#1B000000"
cached: true
source: rect
}
Keys.onSpacePressed: doClick()
Keys.onReturnPressed: doClick()
}

View File

@@ -27,19 +27,19 @@
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick.Controls 2.0
import QtQuick 2.7
import QtQuick 2.9
import "../components" as MoneroComponents
TextField {
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 18 * scaleRatio
font.pixelSize: 18
font.bold: true
horizontalAlignment: TextInput.AlignLeft
selectByMouse: true
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectedTextColor: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
background: Rectangle {
color: "transparent"

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.7
import QtQuick 2.9
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
@@ -49,8 +49,7 @@ Item {
inactiveOverlay.visible = true
leftPanel.enabled = false
middlePanel.enabled = false
titleBar.enabled = false
show()
titleBar.state = "essentials"
root.visible = true;
input.focus = true;
input.text = "";
@@ -60,7 +59,7 @@ Item {
inactiveOverlay.visible = false
leftPanel.enabled = true
middlePanel.enabled = true
titleBar.enabled = true
titleBar.state = "default"
root.visible = false;
}
@@ -75,13 +74,13 @@ Item {
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: 400 * scaleRatio
Layout.maximumWidth: 400
Label {
id: label
Layout.fillWidth: true
font.pixelSize: 16 * scaleRatio
font.pixelSize: 16
font.family: MoneroComponents.Style.fontLight.name
color: MoneroComponents.Style.defaultFontColor
@@ -95,20 +94,20 @@ Item {
horizontalAlignment: TextInput.AlignLeft
verticalAlignment: TextInput.AlignVCenter
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 24 * scaleRatio
font.pixelSize: 24
KeyNavigation.tab: okButton
bottomPadding: 10
leftPadding: 10
topPadding: 10
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectedTextColor: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
background: Rectangle {
radius: 2
border.color: Qt.rgba(255, 255, 255, 0.35)
border.color: MoneroComponents.Style.inputBorderColorActive
border.width: 1
color: "black"
color: MoneroComponents.Style.blackTheme ? "black" : "#A9FFFFFF"
}
Keys.onReturnPressed: {
@@ -124,7 +123,7 @@ Item {
// Ok/Cancel buttons
RowLayout {
id: buttons
spacing: 16 * scaleRatio
spacing: 16
Layout.topMargin: 16
Layout.alignment: Qt.AlignRight
@@ -145,7 +144,7 @@ Item {
small: true
width: 120
fontSize: 14
text: qsTr("Ok")
text: qsTr("Ok") + translationManager.emptyString
KeyNavigation.tab: cancelButton
onClicked: {
root.close()

View File

@@ -27,13 +27,13 @@
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick.Controls 2.0
import QtQuick 2.7
import QtQuick 2.9
import "../js/TxUtils.js" as TxUtils
import "../components" as MoneroComponents
TextArea {
property int fontSize: 18 * scaleRatio
property int fontSize: 18
property bool fontBold: false
property string fontColor: MoneroComponents.Style.defaultFontColor
@@ -48,10 +48,10 @@ TextArea {
font.bold: fontBold
horizontalAlignment: TextInput.AlignLeft
selectByMouse: mouseSelection
selectionColor: MoneroComponents.Style.dimmedFontColor
selectedTextColor: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
property int minimumHeight: 100 * scaleRatio
property int minimumHeight: 100
height: contentHeight > minimumHeight ? contentHeight : minimumHeight
onTextChanged: {

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.5
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
@@ -37,24 +37,24 @@ Item {
property alias color: label.color
property int textFormat: Text.PlainText
property string tipText: ""
property int fontSize: 16 * scaleRatio
property int fontSize: 16
property bool fontBold: false
property string fontColor: MoneroComponents.Style.defaultFontColor
property string fontFamily: ""
property alias wrapMode: label.wrapMode
property alias horizontalAlignment: label.horizontalAlignment
property alias hoveredLink: label.hoveredLink
property alias elide: label.elide
property alias textWidth: label.width
property alias themeTransition: label.themeTransition
signal linkActivated()
height: label.height * scaleRatio
width: label.width * scaleRatio
Layout.topMargin: 10 * scaleRatio
height: label.height
width: label.width
Layout.topMargin: 10
Text {
MoneroComponents.TextPlain {
id: label
anchors.bottom: parent.bottom
anchors.bottomMargin: 2 * scaleRatio
anchors.bottomMargin: 2
anchors.left: parent.left
font.family: {
if(fontFamily){

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
@@ -37,14 +37,14 @@ Rectangle {
property alias text: labelButtonText.text
id: labelButton
color: "#808080"
color: MoneroComponents.Style.buttonBackgroundColorDisabled
radius: 3
height: 20
width: labelButtonText.width + 14
anchors.right: copyButton.left
anchors.rightMargin: 6
Text {
MoneroComponents.TextPlain {
id: labelButtonText
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
@@ -52,7 +52,7 @@ Rectangle {
font.pixelSize: 12
font.bold: true
text: ""
color: "black"
color: MoneroComponents.Style.inlineButtonTextColor
}
MouseArea {
@@ -61,11 +61,11 @@ Rectangle {
hoverEnabled: true
onClicked: labelButton.clicked()
onEntered: {
labelButton.color = "#707070";
labelButton.color = MoneroComponents.Style.buttonBackgroundColorDisabledHover;
labelButtonText.opacity = 0.8;
}
onExited: {
labelButton.color = "#808080";
labelButton.color = MoneroComponents.Style.buttonBackgroundColorDisabled;
labelButtonText.opacity = 1.0;
}
}

View File

@@ -26,13 +26,14 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import "../components" as MoneroComponents
import "../components/effects/" as MoneroEffects
Label {
id: item
fontSize: 18 * scaleRatio
fontSize: 18
Rectangle {
anchors.top: item.bottom
@@ -40,13 +41,12 @@ Label {
anchors.left: parent.left
anchors.right: parent.right
height: 2
color: MoneroComponents.Style.dividerColor
opacity: MoneroComponents.Style.dividerOpacity
}
color: MoneroComponents.Style.appWindowBorderColor
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.NoButton
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
MoneroEffects.ColorTransition {
targetObj: parent
blackColor: MoneroComponents.Style._b_appWindowBorderColor
whiteColor: MoneroComponents.Style._w_appWindowBorderColor
}
}
}

View File

@@ -28,7 +28,7 @@
import "../components" as MoneroComponents
import QtQuick 2.7
import QtQuick 2.9
import QtQuick.XmlListModel 2.0
import QtQuick.Layouts 1.2
import QtQuick.Controls 2.0
@@ -48,7 +48,7 @@ Drawer {
isOpened = true;
}
width: 240 * scaleRatio
width: 240
height: parent.height - (persistentSettings.customDecorations ? 50 : 0)
y: titleBar.height
@@ -77,13 +77,13 @@ Drawer {
id: item
color: "transparent"
width: sideBar.width
height: 32 * scaleRatio
height: 32
Text {
MoneroComponents.TextPlain {
anchors.left: parent.left
anchors.leftMargin: 16 * scaleRatio
anchors.leftMargin: 16
font.bold: true
font.pixelSize: 14 * scaleRatio
font.pixelSize: 14
color: MoneroComponents.Style.defaultFontColor
text: display_name
anchors.verticalCenter: parent.verticalCenter
@@ -101,7 +101,7 @@ Drawer {
// button gradient while checked
Image {
anchors.fill: parent
source: "../images/menuButtonGradient.png"
source: "qrc:///images/menuButtonGradient.png"
opacity: 0.65
visible: true

View File

@@ -26,19 +26,21 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtGraphicalEffects 1.0
import "../components" as MoneroComponents
Item {
id: item
property alias input: input
property alias text: input.text
property alias placeholderText: placeholderLabel.text
property bool placeholderCenter: false
property string placeholderFontFamily: MoneroComponents.Style.fontRegular.name
property bool placeholderFontBold: false
property int placeholderFontSize: 18 * scaleRatio
property int placeholderFontSize: 18
property string placeholderColor: MoneroComponents.Style.defaultFontColor
property real placeholderOpacity: 0.35
@@ -63,7 +65,7 @@ Item {
}
}
property int fontSize: 18 * scaleRatio
property int fontSize: 18
property bool fontBold: false
property alias fontColor: input.color
property bool error: false
@@ -72,19 +74,19 @@ Item {
property alias labelTextFormat: inputLabel.textFormat
property string backgroundColor: "transparent"
property string tipText: ""
property int labelFontSize: 16 * scaleRatio
property int labelFontSize: 16
property bool labelFontBold: false
property alias labelWrapMode: inputLabel.wrapMode
property alias labelHorizontalAlignment: inputLabel.horizontalAlignment
property bool showingHeader: inputLabel.text !== "" || copyButton
property int inputHeight: 42 * scaleRatio
property int inputHeight: 42
signal labelLinkActivated(); // input label, rich text <a> signal
signal editingFinished();
signal accepted();
signal textUpdated();
height: showingHeader ? (inputLabel.height + inputItem.height + 2) * scaleRatio : 42 * scaleRatio
height: showingHeader ? (inputLabel.height + inputItem.height + 2) : 42
onTextUpdated: {
// check to remove placeholder text when there is content
@@ -105,7 +107,7 @@ Item {
}
}
Text {
MoneroComponents.TextPlain {
id: inputLabel
anchors.top: parent.top
anchors.left: parent.left
@@ -125,7 +127,7 @@ Item {
MoneroComponents.LabelButton {
id: copyButtonId
text: qsTr("Copy")
text: qsTr("Copy") + translationManager.emptyString
anchors.right: parent.right
onClicked: {
if (input.text.length > 0) {
@@ -139,13 +141,13 @@ Item {
Item{
id: inputItem
height: inputHeight * scaleRatio
height: inputHeight
anchors.top: showingHeader ? inputLabel.bottom : parent.top
anchors.topMargin: showingHeader ? 12 * scaleRatio : 2 * scaleRatio
anchors.topMargin: showingHeader ? 12 : 2
width: parent.width
clip: true
Text {
MoneroComponents.TextPlain {
id: placeholderLabel
visible: input.text ? false : true
anchors.verticalCenter: parent.verticalCenter
@@ -155,14 +157,14 @@ Item {
if(placeholderCenter){
return undefined;
}
else if(inlineIcon.visible){ return 50 * scaleRatio; }
else { return 10 * scaleRatio; }
else if(inlineIcon.visible){ return 50; }
else { return 10; }
}
opacity: item.placeholderOpacity
color: item.placeholderColor
font.family: item.placeholderFontFamily
font.pixelSize: placeholderFontSize * scaleRatio
font.pixelSize: placeholderFontSize
font.bold: item.placeholderFontBold
text: ""
z: 3
@@ -170,7 +172,7 @@ Item {
Rectangle {
anchors.fill: parent
anchors.topMargin: 1 * scaleRatio
anchors.topMargin: 1
color: "transparent"
}
@@ -185,34 +187,34 @@ Item {
Image {
id: inlineIcon
width: 26 * scaleRatio
height: 26 * scaleRatio
width: 26
height: 26
anchors.top: parent.top
anchors.topMargin: 8 * scaleRatio
anchors.topMargin: 8
anchors.left: parent.left
anchors.leftMargin: 12 * scaleRatio
source: "../images/moneroIcon-28x28.png"
anchors.leftMargin: 12
source: "qrc:///images/moneroIcon-28x28.png"
visible: false
}
MoneroComponents.Input {
id: input
anchors.fill: parent
anchors.leftMargin: inlineIcon.visible ? 44 * scaleRatio : 0
anchors.leftMargin: inlineIcon.visible ? 44 : 0
font.pixelSize: item.fontSize
font.bold: item.fontBold
onEditingFinished: item.editingFinished()
onAccepted: item.accepted();
onTextChanged: item.textUpdated()
topPadding: 10 * scaleRatio
bottomPadding: 10 * scaleRatio
topPadding: 10
bottomPadding: 10
}
MoneroComponents.InlineButton {
id: inlineButtonId
visible: item.inlineButtonText ? true : false
anchors.right: parent.right
anchors.rightMargin: 8 * scaleRatio
anchors.rightMargin: 8
}
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2015, The Monero Project
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
@@ -41,16 +41,16 @@ ColumnLayout {
property alias labelButtonText: labelButton.text
property alias placeholderText: placeholderLabel.text
property int inputPaddingLeft: 10 * scaleRatio
property int inputPaddingRight: 10 * scaleRatio
property int inputPaddingTop: 10 * scaleRatio
property int inputPaddingBottom: 10 * scaleRatio
property int inputPaddingLeft: 10
property int inputPaddingRight: 10
property int inputPaddingTop: 10
property int inputPaddingBottom: 10
property int inputRadius: 4
property bool placeholderCenter: false
property string placeholderFontFamily: MoneroComponents.Style.fontRegular.name
property bool placeholderFontBold: false
property int placeholderFontSize: 18 * scaleRatio
property int placeholderFontSize: 18
property string placeholderColor: MoneroComponents.Style.defaultFontColor
property real placeholderOpacity: 0.35
@@ -69,12 +69,12 @@ ColumnLayout {
property string labelFontColor: MoneroComponents.Style.defaultFontColor
property bool labelFontBold: false
property int labelFontSize: 16 * scaleRatio
property int labelFontSize: 16
property bool labelButtonVisible: false
property string fontColor: "white"
property string fontColor: MoneroComponents.Style.defaultFontColor
property bool fontBold: false
property int fontSize: 16 * scaleRatio
property int fontSize: 16
property bool mouseSelection: true
property alias readOnly: input.readOnly
@@ -100,10 +100,10 @@ ColumnLayout {
id: inputLabelRect
color: "transparent"
Layout.fillWidth: true
height: (inputLabel.height + 10) * scaleRatio
height: (inputLabel.height + 10)
visible: showingHeader ? true : false
Text {
MoneroComponents.TextPlain {
id: inputLabel
anchors.top: parent.top
anchors.left: parent.left
@@ -123,7 +123,7 @@ ColumnLayout {
RowLayout {
anchors.right: parent.right
spacing: 16 * scaleRatio
spacing: 16
MoneroComponents.LabelButton {
id: labelButton
@@ -134,7 +134,7 @@ ColumnLayout {
MoneroComponents.LabelButton {
id: copyButtonId
visible: copyButton && input.text !== ""
text: qsTr("Copy")
text: qsTr("Copy") + translationManager.emptyString
onClicked: {
if (input.text.length > 0) {
console.log("Copied to clipboard");
@@ -147,7 +147,7 @@ ColumnLayout {
MoneroComponents.LabelButton {
id: pasteButtonId
onClicked: item.onPaste(clipboard.text())
text: qsTr("Paste")
text: qsTr("Paste") + translationManager.emptyString
visible: pasteButton
}
}
@@ -172,12 +172,12 @@ ColumnLayout {
onEditingFinished: item.editingFinished()
error: item.error
Text {
MoneroComponents.TextPlain {
id: placeholderLabel
visible: input.text ? false : true
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10 * scaleRatio
anchors.leftMargin: 10
opacity: item.placeholderOpacity
color: item.placeholderColor
font.family: item.placeholderFontFamily
@@ -200,9 +200,7 @@ ColumnLayout {
id: inlineButtonId
visible: (inlineButtonId.text || inlineButtonId.icon) && inlineButtonVisible ? true : false
anchors.right: parent.right
anchors.rightMargin: 8 * scaleRatio
anchors.top: parent.top
anchors.topMargin: 4 * scaleRatio
anchors.rightMargin: 8
}
}
}

View File

@@ -26,9 +26,11 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.5
import QtQuick 2.9
import QtGraphicalEffects 1.0
import "../components" as MoneroComponents
import "effects/" as MoneroEffects
Rectangle {
id: button
@@ -46,12 +48,11 @@ Rectangle {
clicked();
}
function getOffset() {
var offset = 0
var item = button
while (item.under) {
offset += 20 * scaleRatio
offset += 20
item = item.under
}
return offset
@@ -59,77 +60,93 @@ Rectangle {
color: "transparent"
property bool present: !under || under.checked || checked || under.numSelectedChildren > 0
height: present ? ((appWindow.height >= 800) ? 44 * scaleRatio : 38 * scaleRatio ) : 0
height: present ? ((appWindow.height >= 800) ? 44 : 38 ) : 0
// button gradient while checked
Image {
LinearGradient {
visible: isOpenGL && button.checked
height: parent.height
width: 260
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: -20
anchors.leftMargin: parent.getOffset()
source: "../images/menuButtonGradient.png"
visible: button.checked
start: Qt.point(width, 0)
end: Qt.point(0, 0)
gradient: Gradient {
GradientStop { position: 0.0; color: MoneroComponents.Style.menuButtonGradientStart }
GradientStop { position: 1.0; color: MoneroComponents.Style.menuButtonGradientStop }
}
}
// fallback hover effect when opengl is not available
Rectangle {
visible: !isOpenGL && button.checked
anchors.fill: parent
color: MoneroComponents.Style.menuButtonFallbackBackgroundColor
}
// button decorations that are subject to leftMargin offsets
Rectangle {
anchors.left: parent.left
anchors.leftMargin: parent.getOffset() + 20 * scaleRatio
anchors.leftMargin: parent.getOffset() + 20
height: parent.height
width: button.checked ? 20: 10
color: "#00000000"
color: "transparent"
// dot if unchecked
Rectangle {
id: dot
anchors.centerIn: parent
width: button.checked ? 20 * scaleRatio : 8 * scaleRatio
height: button.checked ? 20 * scaleRatio : 8 * scaleRatio
radius: button.checked ? 20 * scaleRatio : 4 * scaleRatio
width: button.checked ? 20 : 8
height: button.checked ? 20 : 8
radius: button.checked ? 20 : 4
color: button.dotColor
// arrow if checked
Image {
anchors.centerIn: parent
anchors.left: parent.left
source: "../images/arrow-right-medium-white.png"
source: MoneroComponents.Style.menuButtonImageDotArrowSource
visible: button.checked
}
}
// button text
Text {
MoneroComponents.TextPlain {
id: label
color: MoneroComponents.Style.menuButtonTextColor
themeTransitionBlackColor: MoneroComponents.Style._b_menuButtonTextColor
themeTransitionWhiteColor: MoneroComponents.Style._w_menuButtonTextColor
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.right
anchors.leftMargin: 8 * scaleRatio
font.family: MoneroComponents.Style.fontMedium.name
anchors.leftMargin: 8
font.bold: true
font.pixelSize: 16 * scaleRatio
color: "#FFFFFF"
font.pixelSize: 14
}
}
// menu button right arrow
Image {
MoneroEffects.ImageMask {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 20 * scaleRatio
anchors.leftMargin: parent.getOffset()
source: "../images/right.png"
opacity: button.checked ? 1.0 : 0.4
anchors.right: parent.right
anchors.rightMargin: 20
height: 14
width: 8
image: MoneroComponents.Style.menuButtonImageRightSource
color: button.checked ? MoneroComponents.Style.menuButtonImageRightColorActive : MoneroComponents.Style.menuButtonImageRightColor
opacity: button.checked ? 0.8 : 0.25
}
Text {
MoneroComponents.TextPlain {
id: symbolText
anchors.right: parent.right
anchors.rightMargin: 44 * scaleRatio
anchors.rightMargin: 44
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: 12 * scaleRatio
font.pixelSize: 12
font.bold: true
color: button.checked || buttonArea.containsMouse ? "#FFFFFF" : dot.color
color: button.checked || buttonArea.containsMouse ? MoneroComponents.Style.menuButtonTextColor : dot.color
visible: appWindow.ctrlPressed
themeTransition: false
}
MouseArea {

View File

@@ -0,0 +1,15 @@
import QtQuick 2.9
import "." as MoneroComponents
import "effects/" as MoneroEffects
Rectangle {
color: MoneroComponents.Style.appWindowBorderColor
height: 1
MoneroEffects.ColorTransition {
targetObj: parent
blackColor: MoneroComponents.Style._b_appWindowBorderColor
whiteColor: MoneroComponents.Style._w_appWindowBorderColor
}
}

View File

@@ -1,4 +1,4 @@
import QtQuick 2.2
import QtQuick 2.9
import QtGraphicalEffects 1.0
import QtQuick.Layouts 1.1
@@ -11,17 +11,17 @@ Rectangle {
anchors.leftMargin: 1
anchors.rightMargin: 1
Layout.fillWidth: true
Layout.preferredHeight: 64 * scaleRatio
Layout.preferredHeight: 64
color: "#FFFFFF"
Image {
id: logo
visible: appWindow.width > 460 * scaleRatio
visible: appWindow.width > 460
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: -5
anchors.left: parent.left
anchors.leftMargin: 50 * scaleRatio
source: "../images/moneroLogo2.png"
anchors.leftMargin: 50
source: "qrc:///images/moneroLogo2.png"
}
Image {
@@ -29,24 +29,24 @@ Rectangle {
visible: !logo.visible
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 40 * scaleRatio
source: "../images/moneroIcon.png"
anchors.leftMargin: 40
source: "qrc:///images/moneroIcon.png"
}
Grid {
anchors.verticalCenter: parent.verticalCenter
anchors.top: parent.top
anchors.right: parent.right
anchors.topMargin: 10 * scaleRatio
width: 256 * scaleRatio
anchors.topMargin: 10
width: 256
columns: 3
Text {
MoneroComponents.TextPlain {
id: balanceLabel
width: 116 * scaleRatio
height: 20 * scaleRatio
width: 116
height: 20
font.family: "Arial"
font.pixelSize: 12 * scaleRatio
font.pixelSize: 12
font.letterSpacing: -1
elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft
@@ -55,12 +55,12 @@ Rectangle {
text: leftPanel.balanceLabelText + ":"
}
Text {
MoneroComponents.TextPlain {
id: balanceText
width: 110 * scaleRatio
height: 20 * scaleRatio
width: 110
height: 20
font.family: "Arial"
font.pixelSize: 18 * scaleRatio
font.pixelSize: 18
font.letterSpacing: -1
elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft
@@ -70,21 +70,21 @@ Rectangle {
}
Item {
height: 20 * scaleRatio
width: 20 * scaleRatio
height: 20
width: 20
Image {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
source: "../images/lockIcon.png"
source: "qrc:///images/lockIcon.png"
}
}
Text {
width: 116 * scaleRatio
height: 20 * scaleRatio
MoneroComponents.TextPlain {
width: 116
height: 20
font.family: "Arial"
font.pixelSize: 12 * scaleRatio
font.pixelSize: 12
font.letterSpacing: -1
elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft
@@ -93,12 +93,12 @@ Rectangle {
text: qsTr("Unlocked Balance:")
}
Text {
MoneroComponents.TextPlain {
id: availableBalanceText
width: 110 * scaleRatio
height: 20 * scaleRatio
width: 110
height: 20
font.family: "Arial"
font.pixelSize: 14 * scaleRatio
font.pixelSize: 14
font.letterSpacing: -1
elide: Text.ElideRight
horizontalAlignment: Text.AlignLeft

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import moneroComponents.Wallet 1.0
@@ -41,7 +41,7 @@ Rectangle {
if (status == Wallet.ConnectionStatus_Connected) {
if(!appWindow.daemonSynced)
return qsTr("Synchronizing")
if(appWindow.remoteNodeConnected)
if(persistentSettings.useRemoteNode)
return qsTr("Remote node")
return appWindow.isMining ? qsTr("Connected") + " + " + qsTr("Mining"): qsTr("Connected")
}
@@ -58,12 +58,12 @@ Rectangle {
}
RowLayout {
Layout.preferredHeight: 40 * scaleRatio
Layout.preferredHeight: 40
Item {
id: iconItem
width: 40 * scaleRatio
height: 40 * scaleRatio
width: 40
height: 40
opacity: {
if(item.connected == Wallet.ConnectionStatus_Connected){
return 1
@@ -74,20 +74,21 @@ Rectangle {
Image {
anchors.top: parent.top
anchors.topMargin: !appWindow.isMining ? 6 * scaleRatio : 4 * scaleRatio
anchors.topMargin: !appWindow.isMining ? 6 : 4
anchors.right: parent.right
anchors.rightMargin: !appWindow.isMining ? 11 * scaleRatio : 0
anchors.rightMargin: !appWindow.isMining ? 11 : 0
source: {
if(appWindow.isMining) {
return "../images/miningxmr.png"
return "qrc:///images/miningxmr.png"
} else if(item.connected == Wallet.ConnectionStatus_Connected) {
return "../images/lightning.png"
return "qrc:///images/lightning.png"
} else {
return "../images/lightning-white.png"
return "qrc:///images/lightning-white.png"
}
}
MouseArea {
anchors.fill: parent
visible: appWindow.walletMode >= 2
cursorShape: Qt.PointingHandCursor
onClicked: {
if(!appWindow.isMining) {
@@ -102,33 +103,38 @@ Rectangle {
}
Item {
height: 40 * scaleRatio
width: 260 * scaleRatio
height: 40
width: 260
Text {
MoneroComponents.TextPlain {
id: statusText
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 0
font.family: MoneroComponents.Style.fontMedium.name
font.bold: true
font.pixelSize: 13 * scaleRatio
color: "white"
opacity: 0.5
font.pixelSize: 13
color: MoneroComponents.Style.dimmedFontColor
opacity: MoneroComponents.Style.blackTheme ? 0.65 : 0.5
text: qsTr("Network status") + translationManager.emptyString
themeTransition: false
}
Text {
MoneroComponents.TextPlain {
id: statusTextVal
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 14
font.family: MoneroComponents.Style.fontMedium.name
font.pixelSize: 20 * scaleRatio
color: "white"
font.pixelSize: 20
color: MoneroComponents.Style.defaultFontColor
text: getConnectionStatusString(item.connected) + translationManager.emptyString
opacity: MoneroComponents.Style.blackTheme ? 1.0 : 0.7
themeTransition: false
MouseArea {
anchors.fill: parent
visible: appWindow.walletMode >= 2
cursorShape: Qt.PointingHandCursor
onClicked: {
if(!appWindow.isMining) {

View File

@@ -1,295 +0,0 @@
// Copyright (c) 2017, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.0
import "../components" as MoneroComponents
Item {
id: root
visible: false
z: parent.z + 2
property bool isHidden: true
property alias password: passwordInput1.text
// same signals as Dialog has
signal accepted()
signal rejected()
signal closeCallback()
function open() {
inactiveOverlay.visible = true
leftPanel.enabled = false
middlePanel.enabled = false
titleBar.enabled = false
show();
root.visible = true;
passwordInput1.text = "";
passwordInput2.text = "";
passwordInput1.focus = true
}
function close() {
inactiveOverlay.visible = false
leftPanel.enabled = true
middlePanel.enabled = true
titleBar.enabled = true
root.visible = false;
closeCallback();
}
function toggleIsHidden() {
passwordInput1.echoMode = isHidden ? TextInput.Normal : TextInput.Password;
passwordInput2.echoMode = isHidden ? TextInput.Normal : TextInput.Password;
isHidden = !isHidden;
}
// TODO: implement without hardcoding sizes
width: 480
height: 360
// Make window draggable
MouseArea {
anchors.fill: parent
property point lastMousePos: Qt.point(0, 0)
onPressed: { lastMousePos = Qt.point(mouseX, mouseY); }
onMouseXChanged: root.x += (mouseX - lastMousePos.x)
onMouseYChanged: root.y += (mouseY - lastMousePos.y)
}
ColumnLayout {
z: inactiveOverlay.z + 1
id: mainLayout
spacing: 10
anchors { fill: parent; margins: 35 * scaleRatio }
ColumnLayout {
id: column
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: 400 * scaleRatio
Label {
text: qsTr("Please enter new password")
Layout.fillWidth: true
font.pixelSize: 16 * scaleRatio
font.family: MoneroComponents.Style.fontLight.name
color: MoneroComponents.Style.defaultFontColor
}
TextField {
id : passwordInput1
Layout.topMargin: 6
Layout.fillWidth: true
horizontalAlignment: TextInput.AlignLeft
verticalAlignment: TextInput.AlignVCenter
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 24 * scaleRatio
echoMode: TextInput.Password
bottomPadding: 10
leftPadding: 10
topPadding: 10
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectedTextColor: MoneroComponents.Style.defaultFontColor
KeyNavigation.tab: passwordInput2
background: Rectangle {
radius: 2
border.color: Qt.rgba(255, 255, 255, 0.35)
border.width: 1
color: "black"
Image {
width: 26 * scaleRatio
height: 26 * scaleRatio
opacity: 0.7
fillMode: Image.PreserveAspectFit
source: isHidden ? "../images/eyeShow.png" : "../images/eyeHide.png"
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 20
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
toggleIsHidden()
}
onEntered: {
parent.opacity = 0.9
parent.width = 28 * scaleRatio
parent.height = 28 * scaleRatio
}
onExited: {
parent.opacity = 0.7
parent.width = 26 * scaleRatio
parent.height = 26 * scaleRatio
}
}
}
}
Keys.onEscapePressed: {
root.close()
root.rejected()
}
}
// padding
Rectangle {
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
height: 10
opacity: 0
color: "black"
}
Label {
text: qsTr("Please confirm new password")
Layout.fillWidth: true
font.pixelSize: 16 * scaleRatio
font.family: MoneroComponents.Style.fontLight.name
color: MoneroComponents.Style.defaultFontColor
}
TextField {
id : passwordInput2
Layout.topMargin: 6
Layout.fillWidth: true
horizontalAlignment: TextInput.AlignLeft
verticalAlignment: TextInput.AlignVCenter
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 24 * scaleRatio
echoMode: TextInput.Password
KeyNavigation.tab: okButton
bottomPadding: 10
leftPadding: 10
topPadding: 10
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectedTextColor: MoneroComponents.Style.defaultFontColor
background: Rectangle {
radius: 2
border.color: Qt.rgba(255, 255, 255, 0.35)
border.width: 1
color: "black"
Image {
width: 26 * scaleRatio
height: 26 * scaleRatio
opacity: 0.7
fillMode: Image.PreserveAspectFit
source: isHidden ? "../images/eyeShow.png" : "../images/eyeHide.png"
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 20
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
toggleIsHidden()
}
onEntered: {
parent.opacity = 0.9
parent.width = 28 * scaleRatio
parent.height = 28 * scaleRatio
}
onExited: {
parent.opacity = 0.7
parent.width = 26 * scaleRatio
parent.height = 26 * scaleRatio
}
}
}
}
Keys.onReturnPressed: {
if (passwordInput1.text === passwordInput2.text) {
root.close()
root.accepted()
}
}
Keys.onEscapePressed: {
root.close()
root.rejected()
}
}
// padding
Rectangle {
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
height: 10
opacity: 0
color: "black"
}
// Ok/Cancel buttons
RowLayout {
id: buttons
spacing: 16 * scaleRatio
Layout.topMargin: 16
Layout.alignment: Qt.AlignRight
MoneroComponents.StandardButton {
id: cancelButton
text: qsTr("Cancel") + translationManager.emptyString
KeyNavigation.tab: passwordInput1
onClicked: {
root.close()
root.rejected()
}
}
MoneroComponents.StandardButton {
id: okButton
text: qsTr("Continue")
KeyNavigation.tab: cancelButton
enabled: passwordInput1.text === passwordInput2.text
onClicked: {
root.close()
root.accepted()
}
}
}
}
}
}

View File

@@ -26,16 +26,17 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Controls 1.4
import moneroComponents.Wallet 1.0
import "." as MoneroComponents
Item {
id: item
property string message: ""
property bool active: false
height: 120
width: 240
height: 180
width: 320
property int margin: 15
x: parent.width - width - margin
y: parent.height - height * scale.yScale - margin * scale.yScale
@@ -51,11 +52,12 @@ Item {
backgroundVisible: false
textFormat: TextEdit.AutoText
anchors.fill: parent
font.family: "Arial"
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 12
textMargin: 20
textColor: "white"
text: item.message
wrapMode: Text.WrapAnywhere
}
}
@@ -70,7 +72,7 @@ Item {
Timer {
id: hider
interval: 12000; running: false; repeat: false
interval: 30000; running: false; repeat: false
onTriggered: { item.active = false }
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
@@ -26,14 +26,17 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.7
import QtQuick 2.9
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.0
import FontAwesome 1.0
import "../components" as MoneroComponents
import "." as MoneroComponents
import "effects/" as MoneroEffects
import "../js/Utils.js" as Utils
Item {
id: root
@@ -41,30 +44,63 @@ Item {
z: parent.z + 2
property bool isHidden: true
property alias password: passwordInput.text
property alias password: passwordInput1.text
property string walletName
property string errorText
property bool passwordDialogMode
property bool passphraseDialogMode
property bool newPasswordDialogMode
// same signals as Dialog has
signal accepted()
signal acceptedNewPassword()
signal acceptedPassphrase()
signal rejected()
signal rejectedNewPassword()
signal rejectedPassphrase()
signal closeCallback()
function open(walletName, errorText) {
function _openInit(walletName, errorText) {
isHidden = true
capsLockTextLabel.visible = oshelper.isCapsLock();
passwordInput1.echoMode = TextInput.Password
passwordInput2.echoMode = TextInput.Password
passwordInput1.text = ""
passwordInput2.text = ""
passwordInput1.forceActiveFocus();
inactiveOverlay.visible = true // draw appwindow inactive
root.walletName = walletName ? walletName : ""
root.errorText = errorText ? errorText : "";
errorTextLabel.text = errorText ? errorText : "";
leftPanel.enabled = false
middlePanel.enabled = false
titleBar.enabled = false
show()
wizard.enabled = false
titleBar.state = "essentials"
root.visible = true;
passwordInput.forceActiveFocus();
passwordInput.text = ""
appWindow.hideBalanceForced = true;
appWindow.updateBalance();
}
function open(walletName, errorText) {
passwordDialogMode = true;
passphraseDialogMode = false;
newPasswordDialogMode = false;
_openInit(walletName, errorText);
}
function openPassphraseDialog() {
passwordDialogMode = false;
passphraseDialogMode = true;
newPasswordDialogMode = false;
_openInit("", "");
}
function openNewPasswordDialog() {
passwordDialogMode = false;
passphraseDialogMode = false;
newPasswordDialogMode = true;
_openInit("", "");
}
function showError(errorText) {
open(root.walletName, errorText);
}
@@ -73,96 +109,144 @@ Item {
inactiveOverlay.visible = false
leftPanel.enabled = true
middlePanel.enabled = true
titleBar.enabled = true
wizard.enabled = true
titleBar.state = "default"
root.visible = false;
appWindow.hideBalanceForced = false;
appWindow.updateBalance();
closeCallback();
}
function toggleIsHidden() {
passwordInput1.echoMode = isHidden ? TextInput.Normal : TextInput.Password;
passwordInput2.echoMode = isHidden ? TextInput.Normal : TextInput.Password;
isHidden = !isHidden;
}
ColumnLayout {
z: inactiveOverlay.z + 1
id: mainLayout
spacing: 10
anchors { fill: parent; margins: 35 * scaleRatio }
anchors { fill: parent; margins: 35 }
ColumnLayout {
id: column
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: 400 * scaleRatio
Layout.maximumWidth: 400
Label {
text: root.walletName.length > 0 ? qsTr("Please enter wallet password for: ") + root.walletName : qsTr("Please enter wallet password")
text: {
if (newPasswordDialogMode) {
return qsTr("Please enter new wallet password") + translationManager.emptyString;
} else {
var device = passwordDialogMode ? qsTr("wallet password") : qsTr("wallet device passphrase");
return (root.walletName.length > 0 ? qsTr("Please enter %1 for: ").arg(device) + root.walletName : qsTr("Please enter %1").arg(device)) + translationManager.emptyString;
}
}
Layout.fillWidth: true
font.pixelSize: 16 * scaleRatio
font.pixelSize: 16
font.family: MoneroComponents.Style.fontLight.name
color: MoneroComponents.Style.defaultFontColor
}
Label {
text: root.errorText
visible: root.errorText
text: qsTr("Warning: passphrase entry on host is a security risk as it can be captured by malware. It is advised to prefer device-based passphrase entry.") + translationManager.emptyString
visible: passphraseDialogMode
Layout.fillWidth: true
wrapMode: Text.Wrap
font.pixelSize: 14
font.family: MoneroComponents.Style.fontLight.name
color: MoneroComponents.Style.warningColor
}
Label {
id: errorTextLabel
visible: root.errorText || text !== ""
color: MoneroComponents.Style.errorColor
font.pixelSize: 16 * scaleRatio
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 16
font.family: MoneroComponents.Style.fontLight.name
Layout.fillWidth: true
wrapMode: Text.Wrap
}
Label {
id: capsLockTextLabel
visible: false
color: MoneroComponents.Style.errorColor
font.pixelSize: 16
font.family: MoneroComponents.Style.fontLight.name
Layout.fillWidth: true
wrapMode: Text.Wrap
text: qsTr("CAPSLOCKS IS ON.") + translationManager.emptyString;
}
TextField {
id : passwordInput
id: passwordInput1
Layout.topMargin: 6
Layout.fillWidth: true
horizontalAlignment: TextInput.AlignLeft
verticalAlignment: TextInput.AlignVCenter
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 24 * scaleRatio
font.pixelSize: 24
echoMode: TextInput.Password
KeyNavigation.tab: okButton
KeyNavigation.tab: {
if (passwordDialogMode) {
return okButton
} else {
return passwordInput2
}
}
bottomPadding: 10
leftPadding: 10
topPadding: 10
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.dimmedFontColor
selectedTextColor: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
onTextChanged: capsLockTextLabel.visible = oshelper.isCapsLock();
background: Rectangle {
radius: 2
border.color: Qt.rgba(255, 255, 255, 0.35)
color: MoneroComponents.Style.blackTheme ? "black" : "#A9FFFFFF"
border.color: MoneroComponents.Style.inputBorderColorInActive
border.width: 1
color: "black"
Image {
width: 26 * scaleRatio
height: 26 * scaleRatio
MoneroEffects.ColorTransition {
targetObj: parent
blackColor: "black"
whiteColor: "#A9FFFFFF"
}
MoneroComponents.Label {
fontSize: 20
text: isHidden ? FontAwesome.eye : FontAwesome.eyeSlash
opacity: 0.7
fillMode: Image.PreserveAspectFit
source: isHidden ? "../images/eyeShow.png" : "../images/eyeHide.png"
anchors.verticalCenter: parent.verticalCenter
fontFamily: FontAwesome.fontFamily
anchors.right: parent.right
anchors.rightMargin: 20
anchors.rightMargin: 15
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: 1
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
passwordInput.echoMode = isHidden ? TextInput.Normal : TextInput.Password;
isHidden = !isHidden;
toggleIsHidden();
}
onEntered: {
parent.opacity = 0.9
parent.width = 28 * scaleRatio
parent.height = 28 * scaleRatio
parent.fontSize = 24
}
onExited: {
parent.opacity = 0.7
parent.width = 26 * scaleRatio
parent.height = 26 * scaleRatio
parent.fontSize = 20
}
}
}
@@ -171,46 +255,173 @@ Item {
Keys.enabled: root.visible
Keys.onReturnPressed: {
root.close()
root.accepted()
if (passwordDialogMode) {
root.accepted()
} else if (newPasswordDialogMode) {
root.acceptedNewPassword()
} else if (passphraseDialogMode) {
root.acceptedPassphrase()
}
}
Keys.onEscapePressed: {
root.close()
root.rejected()
if (passwordDialogMode) {
root.rejected()
} else if (newPasswordDialogMode) {
root.rejectedNewPassword()
} else if (passphraseDialogMode) {
root.rejectedPassphrase()
}
}
}
// padding
Rectangle {
visible: !passwordDialogMode
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
height: 10
opacity: 0
color: "black"
}
Label {
visible: !passwordDialogMode
text: newPasswordDialogMode ? qsTr("Please confirm new password") : qsTr("Please confirm wallet device passphrase") + translationManager.emptyString
Layout.fillWidth: true
font.pixelSize: 16
font.family: MoneroComponents.Style.fontLight.name
color: MoneroComponents.Style.defaultFontColor
}
TextField {
id: passwordInput2
visible: !passwordDialogMode
Layout.topMargin: 6
Layout.fillWidth: true
horizontalAlignment: TextInput.AlignLeft
verticalAlignment: TextInput.AlignVCenter
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 24
echoMode: TextInput.Password
KeyNavigation.tab: okButton
bottomPadding: 10
leftPadding: 10
topPadding: 10
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
onTextChanged: capsLockTextLabel.visible = oshelper.isCapsLock();
background: Rectangle {
radius: 2
border.color: MoneroComponents.Style.inputBorderColorInActive
border.width: 1
color: MoneroComponents.Style.blackTheme ? "black" : "#A9FFFFFF"
MoneroComponents.Label {
fontSize: 20
text: isHidden ? FontAwesome.eye : FontAwesome.eyeSlash
opacity: 0.7
fontFamily: FontAwesome.fontFamily
anchors.right: parent.right
anchors.rightMargin: 15
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: 1
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
toggleIsHidden()
}
onEntered: {
parent.opacity = 0.9
parent.fontSize = 24
}
onExited: {
parent.opacity = 0.7
parent.fontSize = 20
}
}
}
}
Keys.onReturnPressed: {
if (passwordInput1.text === passwordInput2.text) {
root.close()
if (newPasswordDialogMode) {
root.acceptedNewPassword()
} else if (passphraseDialogMode) {
root.acceptedPassphrase()
}
}
}
Keys.onEscapePressed: {
root.close()
if (newPasswordDialogMode) {
root.rejectedNewPassword()
} else if (passphraseDialogMode) {
root.rejectedPassphrase()
}
}
}
// padding
Rectangle {
visible: !passwordDialogMode
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
height: 10
opacity: 0
color: "black"
}
// Ok/Cancel buttons
RowLayout {
id: buttons
spacing: 16 * scaleRatio
spacing: 16
Layout.topMargin: 16
Layout.alignment: Qt.AlignRight
MoneroComponents.StandardButton {
id: cancelButton
small: true
text: root.walletName.length > 0 ? qsTr("Change wallet") + translationManager.emptyString : qsTr("Cancel") + translationManager.emptyString
KeyNavigation.tab: passwordInput
text: qsTr("Cancel") + translationManager.emptyString
KeyNavigation.tab: passwordInput1
onClicked: {
root.close()
root.rejected()
if (passwordDialogMode) {
root.rejected()
} else if (newPasswordDialogMode) {
root.rejectedNewPassword()
} else if (passphraseDialogMode) {
root.rejectedPassphrase()
}
}
}
MoneroComponents.StandardButton {
id: okButton
small: true
text: qsTr("Continue")
text: qsTr("Ok") + translationManager.emptyString
KeyNavigation.tab: cancelButton
enabled: (passwordDialogMode == true) ? true : passwordInput1.text === passwordInput2.text
onClicked: {
root.close()
root.accepted()
if (passwordDialogMode) {
root.accepted()
} else if (newPasswordDialogMode) {
root.acceptedNewPassword()
} else if (passphraseDialogMode) {
root.acceptedPassphrase()
}
}
}
}
}
}
}

View File

@@ -1,193 +0,0 @@
// Copyright (c) 2014-2018, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// @TODO: Remove component after wizard redesign
import QtQuick 2.0
Item {
id: item
property alias interactive: mouseArea.enabled
property alias background: bar.color
property int fillLevel: 0
height: 40
clip: true
onFillLevelChanged: {
if (!interactive) {
//print("fillLevel: " + fillLevel)
fillRect.width = ruler.positions[fillLevel].currentX + ruler.x
}
}
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
height: 24
//radius: 4
color: "#DBDBDB"
}
Rectangle {
id: bar
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.topMargin: 1
height: 24
//radius: 4
color: "#FFFFFF"
Rectangle {
id: fillRect
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.margins: 4
//radius: 2
width: ruler.x
color: "#FF6C3C"
Timer {
interval: 500
running: true
repeat: false
onTriggered: fillRect.loaded = true
}
property bool loaded: false
Behavior on width {
enabled: fillRect.loaded
NumberAnimation { duration: 100; easing.type: Easing.InQuad }
}
}
Text {
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
font.pixelSize: 15
color: "#000000"
x: ruler.x + (ruler.positions[0] !== undefined ? ruler.positions[0].currentX - 3 : 0) - width
text: qsTr("Low") + translationManager.emptyString
}
Text {
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
font.pixelSize: 15
color: "#000000"
x: ruler.x + (ruler.positions[4] !== undefined ? ruler.positions[4].currentX - 3 : 0) - width
text: qsTr("Medium") + translationManager.emptyString
}
Text {
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
font.pixelSize: 15
color: "#000000"
x: ruler.x + (ruler.positions[13] !== undefined ? ruler.positions[13].currentX - 3 : 0) - width
text: qsTr("High") + translationManager.emptyString
}
MouseArea {
id: mouseArea
anchors.fill: parent
function positionBar() {
var xDiff = 999999
var index = -1
for(var i = 0; i < 14; ++i) {
var tmp = Math.abs(ruler.positions[i].currentX + ruler.x - mouseX)
if(tmp < xDiff) {
xDiff = tmp
index = i
}
}
if(index !== -1) {
fillRect.width = Qt.binding(function(){ return ruler.positions[index].currentX + ruler.x })
item.fillLevel = index
print ("fillLevel: " + item.fillLevel)
}
}
onClicked: positionBar()
onMouseXChanged: positionBar()
}
}
Row {
id: ruler
anchors.right: bar.right
anchors.rightMargin: 8
anchors.top: bar.bottom
anchors.topMargin: 5
property var positions: []
Row {
id: row2
spacing: ((bar.width - 8) / 2.23) / 4
Repeater {
model: 4
delegate: Rectangle {
id: delegateItem2
property int currentX: x + row2.x
height: 8
width: 1
color: "#DBDBDB"
Component.onCompleted: {
ruler.positions[index] = delegateItem2
}
}
}
}
Row {
id: row1
spacing: ((bar.width - 8) / 2.23) / 10
Repeater {
model: 10
delegate: Rectangle {
id: delegateItem1
property int currentX: x + row1.x
height: index === 4 ? 8 : 4
width: 1
color: "#DBDBDB"
Component.onCompleted: {
ruler.positions[index + 4] = delegateItem1
}
}
}
}
}
}

View File

@@ -26,21 +26,23 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Window 2.1
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
Rectangle {
id: root
color: "white"
color: MoneroComponents.Style.blackTheme ? "white" : "transparent"
visible: false
z:11
z: 11
property alias messageText: messageTitle.text
property alias heightProgressText : heightProgress.text
width: 200 * scaleRatio
height: 100 * scaleRatio
width: 200
height: 100
opacity: 0.7
function show() {
@@ -58,34 +60,40 @@ Rectangle {
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.leftMargin: 30 * scaleRatio
anchors.rightMargin: 30 * scaleRatio
anchors.leftMargin: 30
anchors.rightMargin: 30
spacing: 12
BusyIndicator {
running: parent.visible
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
}
Text {
MoneroComponents.TextPlain {
id: messageTitle
text: "Please wait..."
font {
pixelSize: 22 * scaleRatio
pixelSize: 22
}
horizontalAlignment: Text.AlignHCenter
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Layout.fillWidth: true
themeTransition: false
color: "black"
}
Text {
MoneroComponents.TextPlain {
id: heightProgress
font {
pixelSize: 18 * scaleRatio
pixelSize: 18
}
horizontalAlignment: Text.AlignHCenter
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Layout.fillWidth: true
themeTransition: false
color: "black"
}
}
}

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import moneroComponents.Wallet 1.0
import "../components" as MoneroComponents
@@ -46,53 +46,71 @@ Rectangle {
fillLevel = progressLevel
if(typeof statusTxt != "undefined" && statusTxt != "") {
progressText.text = statusTxt;
progressTextValue.text = "";
} else {
progressText.text = syncText + remaining.toFixed(0);
progressText.text = syncText;
progressTextValue.text = remaining.toFixed(0);
}
}
}
Item {
anchors.top: item.top
anchors.topMargin: 10 * scaleRatio
anchors.leftMargin: 15 * scaleRatio
anchors.rightMargin: 15 * scaleRatio
anchors.topMargin: 10
anchors.leftMargin: 15
anchors.rightMargin: 15
anchors.fill: parent
Text {
MoneroComponents.TextPlain {
id: progressText
anchors.top: parent.top
anchors.topMargin: 6
font.family: MoneroComponents.Style.fontMedium.name
font.pixelSize: 13 * scaleRatio
font.bold: true
color: "white"
font.pixelSize: 13
font.bold: MoneroComponents.Style.progressBarProgressTextBold
color: MoneroComponents.Style.defaultFontColor
text: qsTr("Synchronizing %1").arg(syncType) + translationManager.emptyString
height: 18 * scaleRatio
height: 18
}
Text {
MoneroComponents.TextPlain {
id: progressTextValue
anchors.top: parent.top
anchors.topMargin: 6
anchors.right: parent.right
font.family: MoneroComponents.Style.fontMedium.name
font.pixelSize: 13 * scaleRatio
font.bold: true
color: "white"
height:18 * scaleRatio
font.pixelSize: 13
font.bold: MoneroComponents.Style.progressBarProgressTextBold
color: MoneroComponents.Style.defaultFontColor
height:18
}
Rectangle {
id: bar
anchors.left: parent.left
anchors.right: parent.right
anchors.top: progressText.bottom
anchors.topMargin: 4
height: 8 * scaleRatio
radius: 8 * scaleRatio
color: "#333333" // progressbar bg
height: 8
radius: 8
color: MoneroComponents.Style.progressBarBackgroundColor
states: [
State {
name: "black";
when: MoneroComponents.Style.blackTheme
PropertyChanges { target: bar; color: MoneroComponents.Style._b_progressBarBackgroundColor}
}, State {
name: "white";
when: !MoneroComponents.Style.blackTheme
PropertyChanges { target: bar; color: MoneroComponents.Style._w_progressBarBackgroundColor}
}
]
transitions: Transition {
enabled: appWindow.themeTransition
ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: 300 }
}
Rectangle {
id: fillRect
@@ -100,10 +118,9 @@ Rectangle {
anchors.bottom: parent.bottom
anchors.left: parent.left
height: bar.height
property int maxWidth: bar.width * scaleRatio
property int maxWidth: bar.width
width: (maxWidth * fillLevel) / 100
radius: 8
// could change color based on progressbar status; if(item.fillLevel < 99 )
color: "#FA6800"
}
@@ -111,12 +128,9 @@ Rectangle {
color:"#333"
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.leftMargin: 8 * scaleRatio
anchors.leftMargin: 8
}
}
}
}

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtMultimedia 5.4
import QtQuick.Dialogs 1.2
import moneroComponents.QRCodeScanner 1.0

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
@@ -35,14 +35,14 @@ Item {
id: radioButton
property alias text: label.text
property bool checked: false
property int fontSize: 14 * scaleRatio
property int fontSize: 14
property alias fontColor: label.color
signal clicked()
height: 26 * scaleRatio
height: 26
width: layout.width
// legacy properties
property var checkedColor: "white"
property var borderColor: checked ? Qt.rgba(1, 1, 1, 0.35) : Qt.rgba(1, 1, 1, 0.25)
property var checkedColor: MoneroComponents.Style.blackTheme ? "white" : "#666666"
property var borderColor: checked ? MoneroComponents.Style.inputBorderColorActive : MoneroComponents.Style.inputBorderColorInActive
function toggle(){
radioButton.checked = !radioButton.checked
@@ -65,16 +65,16 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
color: checkedColor
width: 10 * scaleRatio
height: 10 * scaleRatio
width: 10
height: 10
radius: 10
opacity: 0.8
}
}
Text {
MoneroComponents.TextPlain {
id: label
Layout.leftMargin: (!isMobile ? 10 : 8) * scaleRatio
Layout.leftMargin: (!isMobile ? 10 : 8)
color: MoneroComponents.Style.defaultFontColor
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: radioButton.fontSize

View File

@@ -28,7 +28,7 @@
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QtQuick 2.2
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "../js/Utils.js" as Utils
@@ -47,16 +47,16 @@ GridLayout {
// the wizards get redesigned to the black-theme
property string placeholderFontFamily: MoneroComponents.Style.fontRegular.name
property bool placeholderFontBold: false
property int placeholderFontSize: 18 * scaleRatio
property int placeholderFontSize: 15
property string placeholderColor: MoneroComponents.Style.defaultFontColor
property real placeholderOpacity: 0.35
property int labelFontSize: 14
property string lineEditBorderColor: Qt.rgba(0, 0, 0, 0.15)
property string lineEditBackgroundColor: "white"
property string lineEditFontColor: "black"
property int lineEditFontSize: 18 * scaleRatio
property int labelFontSize: 16 * scaleRatio
property bool lineEditFontBold: true
property string lineEditBackgroundColor: "transparent"
property string lineEditBorderColor: MoneroComponents.Style.inputBorderColorInActive
property string lineEditFontColor: MoneroComponents.Style.defaultFontColor
property bool lineEditFontBold: false
property int lineEditFontSize: 15
signal editingFinished()
signal textChanged()

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import "." as MoneroComponents
Item {

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
@@ -39,18 +39,18 @@ Item {
property bool small: false
property alias text: label.text
property int fontSize: {
if(small) return 14 * scaleRatio;
else return 16 * scaleRatio;
if(small) return 14;
else return 16;
}
property alias label: label
signal clicked()
height: small ? 30 * scaleRatio : 36 * scaleRatio
width: buttonLayout.width + 22 * scaleRatio
height: small ? 30 : 36
width: buttonLayout.width + 22
implicitHeight: height
implicitWidth: width
function doClick() {
// Android workaround
function doClick(){
releaseFocus();
clicked();
}
@@ -63,6 +63,7 @@ Item {
state: button.enabled ? "active" : "disabled"
Component.onCompleted: state = state
states: [
State {
name: "hover"
@@ -89,7 +90,9 @@ Item {
}
}
]
transitions: Transition {
enabled: appWindow.themeTransition
ColorAnimation { duration: 100 }
}
}
@@ -97,18 +100,19 @@ Item {
RowLayout {
id: buttonLayout
height: button.height
spacing: 11 * scaleRatio
spacing: 11
anchors.centerIn: parent
Text {
MoneroComponents.TextPlain {
id: label
font.family: MoneroComponents.Style.fontBold.name
font.bold: true
font.pixelSize: button.fontSize
color: !buttonArea.pressed ? button.textColor : "transparent"
visible: text !== ""
themeTransition: false
Text {
MoneroComponents.TextPlain {
anchors.centerIn: parent
color: button.textColor
font.bold: label.font.bold
@@ -116,14 +120,15 @@ Item {
font.pixelSize: label.font.pixelSize - 1
text: label.text
opacity: buttonArea.pressed ? 1 : 0
themeTransition: false
}
}
Image {
visible: button.rightIcon !== ""
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
width: button.small ? 16 * scaleRatio : 20 * scaleRatio
height: button.small ? 16 * scaleRatio : 20 * scaleRatio
width: button.small ? 16 : 20
height: button.small ? 16 : 20
source: {
if(button.rightIconInactive !== "" && !button.enabled) {
return button.rightIconInactive;

View File

@@ -26,7 +26,7 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
@@ -34,6 +34,7 @@ import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.0
import "../components" as MoneroComponents
import "effects/" as MoneroEffects
Rectangle {
id: root
@@ -56,12 +57,18 @@ Rectangle {
signal rejected()
signal closeCallback();
Image {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
source: "../images/middlePanelBg.jpg"
// background
MoneroEffects.GradientBackground {
anchors.fill: parent
fallBackColor: MoneroComponents.Style.middlePanelBackgroundColor
initialStartColor: MoneroComponents.Style.middlePanelBackgroundGradientStart
initialStopColor: MoneroComponents.Style.middlePanelBackgroundGradientStop
blackColorStart: MoneroComponents.Style._b_middlePanelBackgroundGradientStart
blackColorStop: MoneroComponents.Style._b_middlePanelBackgroundGradientStop
whiteColorStart: MoneroComponents.Style._w_middlePanelBackgroundGradientStart
whiteColorStop: MoneroComponents.Style._w_middlePanelBackgroundGradientStop
start: Qt.point(0, 0)
end: Qt.point(height, width)
}
// Make window draggable
@@ -79,7 +86,6 @@ Rectangle {
root.x = parent.width/2 - root.width/2
root.y = 100
}
show()
root.z = 11
root.visible = true;
}
@@ -90,23 +96,23 @@ Rectangle {
}
// TODO: implement without hardcoding sizes
width: isMobile ? screenWidth : 520 * scaleRatio
height: isMobile ? screenHeight : 380 * scaleRatio
width: isMobile ? screenWidth : 520
height: isMobile ? screenHeight : 380
ColumnLayout {
id: mainLayout
spacing: 10 * scaleRatio
spacing: 10
anchors.fill: parent
anchors.margins: (isMobile? 17 : 20) * scaleRatio
anchors.margins: (isMobile? 17 : 20)
RowLayout {
id: column
Layout.topMargin: 14 * scaleRatio
Layout.topMargin: 14
Layout.fillWidth: true
MoneroComponents.Label {
id: dialogTitle
fontSize: 18 * scaleRatio
fontSize: 18
fontFamily: "Arial"
color: MoneroComponents.Style.defaultFontColor
}
@@ -115,7 +121,7 @@ Rectangle {
Item {
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredHeight: 240 * scaleRatio
Layout.preferredHeight: 240
Flickable {
id: flickable
@@ -130,7 +136,7 @@ Rectangle {
font.family: MoneroComponents.Style.fontLight.name
textFormat: TextEdit.AutoText
readOnly: true
font.pixelSize: 14 * scaleRatio
font.pixelSize: 14
selectByMouse: false
wrapMode: TextEdit.Wrap
color: MoneroComponents.Style.defaultFontColor
@@ -155,7 +161,7 @@ Rectangle {
// Ok/Cancel buttons
RowLayout {
id: buttons
spacing: 60 * scaleRatio
spacing: 60
Layout.alignment: Qt.AlignHCenter
MoneroComponents.StandardButton {
@@ -184,15 +190,17 @@ Rectangle {
id: closeButton
anchors.top: parent.top
anchors.right: parent.right
width: 48 * scaleRatio
height: 48 * scaleRatio
width: 48
height: 48
color: "transparent"
Image {
MoneroEffects.ImageMask {
anchors.centerIn: parent
width: 16 * scaleRatio
height: 16 * scaleRatio
source: "../images/close.png"
width: 16
height: 16
image: MoneroComponents.Style.titleBarCloseSource
color: MoneroComponents.Style.defaultFontColor
opacity: 0.75
}
MouseArea {
@@ -209,7 +217,7 @@ Rectangle {
// window borders
Rectangle{
width: 1 * scaleRatio
width: 1
color: MoneroComponents.Style.grey
anchors.left: parent.left
anchors.top: parent.top
@@ -217,7 +225,7 @@ Rectangle {
}
Rectangle{
width: 1 * scaleRatio
width: 1
color: MoneroComponents.Style.grey
anchors.right: parent.right
anchors.top: parent.top
@@ -225,7 +233,7 @@ Rectangle {
}
Rectangle{
height: 1 * scaleRatio
height: 1
color: MoneroComponents.Style.grey
anchors.left: parent.left
anchors.top: parent.top
@@ -233,7 +241,7 @@ Rectangle {
}
Rectangle{
height: 1 * scaleRatio
height: 1
color: MoneroComponents.Style.grey
anchors.left: parent.left
anchors.bottom: parent.bottom

View File

@@ -26,9 +26,11 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
import QtQuick 2.9
import QtGraphicalEffects 1.0
import "../components" as MoneroComponents
import "../components/effects/" as MoneroEffects
Item {
id: dropdown
@@ -36,14 +38,14 @@ Item {
property alias dataModel: repeater.model
property string shadowPressedColor
property string shadowReleasedColor
property string pressedColor
property string releasedColor
property string textColor: "#FFFFFF"
property string pressedColor: MoneroComponents.Style.appWindowBorderColor
property string releasedColor: MoneroComponents.Style.titleBarButtonHoverColor
property string textColor: MoneroComponents.Style.defaultFontColor
property alias currentIndex: columnid.currentIndex
property bool expanded: false
property int dropdownHeight: 42
property int fontHeaderSize: 16 * scaleRatio
property int fontItemSize: 14 * scaleRatio
property int fontHeaderSize: 16
property int fontItemSize: 14
property string colorBorder: MoneroComponents.Style.inputBorderColorInActive
property string colorHeaderBackground: "transparent"
property bool headerBorder: true
@@ -81,23 +83,23 @@ Item {
height: dropdown.dropdownHeight
Rectangle {
color: dropdown.colorHeaderBackground
color: "transparent"
border.width: dropdown.headerBorder ? 1 : 0
border.color: dropdown.colorBorder
radius: 4
anchors.fill: parent
}
Text {
MoneroComponents.TextPlain {
id: firstColText
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 12 * scaleRatio
anchors.leftMargin: 12
elide: Text.ElideRight
font.family: MoneroComponents.Style.fontRegular.name
font.bold: dropdown.headerFontBold
font.pixelSize: dropdown.fontHeaderSize
color: "#FFFFFF"
color: dropdown.textColor
}
Item {
@@ -105,12 +107,21 @@ Item {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 32 * scaleRatio
width: 32
Image {
id: dropdownIcon
anchors.centerIn: parent
source: "../images/whiteDropIndicator.png"
rotation: dropdown.expanded ? 180 * scaleRatio : 0
source: "qrc:///images/whiteDropIndicator.png"
visible: false
}
ColorOverlay {
source: dropdownIcon
anchors.fill: dropdownIcon
color: MoneroComponents.Style.defaultFontColor
rotation: dropdown.expanded ? 180 : 0
opacity: 1
}
}
@@ -131,19 +142,18 @@ Item {
clip: true
height: dropdown.expanded ? columnid.height : 0
color: dropdown.pressedColor
//radius: 4
Rectangle {
anchors.left: parent.left
anchors.top: parent.top
width: 3 * scaleRatio; height: 3 * scaleRatio
width: 3; height: 3
color: dropdown.pressedColor
}
Rectangle {
anchors.right: parent.right
anchors.top: parent.top
width: 3 * scaleRatio; height: 3 * scaleRatio
width: 3; height: 3
color: dropdown.pressedColor
}
@@ -176,16 +186,16 @@ Item {
delegate: Rectangle {
anchors.left: parent.left
anchors.right: parent.right
height: (dropdown.dropdownHeight * 0.75) * scaleRatio
height: (dropdown.dropdownHeight * 0.75)
//radius: index === repeater.count - 1 ? 4 : 0
color: itemArea.containsMouse || index === columnid.currentIndex || itemArea.containsMouse ? dropdown.releasedColor : dropdown.pressedColor
Text {
MoneroComponents.TextPlain {
id: col1Text
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.right: col2Text.left
anchors.leftMargin: 12 * scaleRatio
anchors.leftMargin: 12
anchors.rightMargin: 0
font.family: MoneroComponents.Style.fontRegular.name
font.bold: true
@@ -194,13 +204,13 @@ Item {
text: qsTr(column1) + translationManager.emptyString
}
Text {
MoneroComponents.TextPlain {
id: col2Text
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 45 * scaleRatio
anchors.rightMargin: 45
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14 * scaleRatio
font.pixelSize: 14
color: "#FFFFFF"
text: ""
}
@@ -208,14 +218,14 @@ Item {
Rectangle {
anchors.left: parent.left
anchors.top: parent.top
width: 3 * scaleRatio; height: 3 * scaleRatio
width: 3; height: 3
color: parent.color
}
Rectangle {
anchors.right: parent.right
anchors.top: parent.top
width: 3 * scaleRatio; height: 3 * scaleRatio
width: 3; height: 3
color: parent.color
}

View File

@@ -3,35 +3,192 @@ pragma Singleton
import QtQuick 2.5
QtObject {
property bool blackTheme: true
property QtObject fontMedium: FontLoader { id: _fontMedium; source: "qrc:/fonts/Roboto-Medium.ttf"; }
property QtObject fontBold: FontLoader { id: _fontBold; source: "qrc:/fonts/Roboto-Bold.ttf"; }
property QtObject fontLight: FontLoader { id: _fontLight; source: "qrc:/fonts/Roboto-Light.ttf"; }
property QtObject fontRegular: FontLoader { id: _fontRegular; source: "qrc:/fonts/Roboto-Regular.ttf"; }
property QtObject fontMonoMedium: FontLoader { id: _fontMonoMedium; source: "qrc:/fonts/RobotoMono-Medium.ttf"; }
property QtObject fontMonoBold: FontLoader { id: _fontMonoBold; source: "qrc:/fonts/RobotoMono-Bold.ttf"; }
property QtObject fontMonoLight: FontLoader { id: _fontMonoLight; source: "qrc:/fonts/RobotoMono-Light.ttf"; }
property QtObject fontMonoRegular: FontLoader { id: _fontMonoRegular; source: "qrc:/fonts/RobotoMono-Regular.ttf"; }
property string grey: "#404040"
property string orange: "#FF6C3C"
property string white: "#FFFFFF"
property string green: "#2EB358"
property string moneroGrey: "#4C4C4C"
property string warningColor: "orange"
property string defaultFontColor: "white"
property string dimmedFontColor: "#BBBBBB"
property string lightGreyFontColor: "#DFDFDF"
property string errorColor: "#FA6800"
property string inputBoxBackground: "black"
property string inputBoxBackgroundError: "#FFDDDD"
property string inputBoxColor: "white"
property string legacy_placeholderFontColor: "#BABABA"
property string inputBorderColorActive: Qt.rgba(255, 255, 255, 0.38)
property string inputBorderColorInActive: Qt.rgba(255, 255, 255, 0.32)
property string inputBorderColorInvalid: Qt.rgba(255, 0, 0, 0.40)
property string defaultFontColor: blackTheme ? _b_defaultFontColor : _w_defaultFontColor
property string dimmedFontColor: blackTheme ? _b_dimmedFontColor : _w_dimmedFontColor
property string lightGreyFontColor: blackTheme ? _b_lightGreyFontColor : _w_lightGreyFontColor
property string errorColor: blackTheme ? _b_errorColor : _w_errorColor
property string textSelectionColor: blackTheme ? _b_textSelectionColor : _w_textSelectionColor
property string textSelectedColor: blackTheme ? _b_textSelectedColor : _w_textSelectedColor
property string buttonBackgroundColor: "#FA6800"
property string buttonBackgroundColorHover: "#E65E00"
property string buttonBackgroundColorDisabled: "#707070"
property string buttonBackgroundColorDisabledHover: "#808080"
property string buttonTextColor: "white"
property string buttonTextColorDisabled: "black"
property string dividerColor: "white"
property real dividerOpacity: 0.20
property string inputBoxBackground: blackTheme ? _b_inputBoxBackground : _w_inputBoxBackground
property string inputBoxBackgroundError: blackTheme ? _b_inputBoxBackgroundError : _w_inputBoxBackgroundError
property string inputBoxColor: blackTheme ? _b_inputBoxColor : _w_inputBoxColor
property string legacy_placeholderFontColor: blackTheme ? _b_legacy_placeholderFontColor : _w_legacy_placeholderFontColor
property string inputBorderColorActive: blackTheme ? _b_inputBorderColorActive : _w_inputBorderColorActive
property string inputBorderColorInActive: blackTheme ? _b_inputBorderColorInActive : _w_inputBorderColorInActive
property string inputBorderColorInvalid: blackTheme ? _b_inputBorderColorInvalid : _w_inputBorderColorInvalid
property string buttonBackgroundColor: blackTheme ? _b_buttonBackgroundColor : _w_buttonBackgroundColor
property string buttonBackgroundColorHover: blackTheme ? _b_buttonBackgroundColorHover : _w_buttonBackgroundColorHover
property string buttonBackgroundColorDisabled: blackTheme ? _b_buttonBackgroundColorDisabled : _w_buttonBackgroundColorDisabled
property string buttonBackgroundColorDisabledHover: blackTheme ? _b_buttonBackgroundColorDisabledHover : _w_buttonBackgroundColorDisabledHover
property string buttonInlineBackgroundColor: blackTheme ? _b_buttonInlineBackgroundColor : _w_buttonInlineBackgroundColor
property string buttonTextColor: blackTheme ? _b_buttonTextColor : _w_buttonTextColor
property string buttonTextColorDisabled: blackTheme ? _b_buttonTextColorDisabled : _w_buttonTextColorDisabled
property string dividerColor: blackTheme ? _b_dividerColor : _w_dividerColor
property real dividerOpacity: blackTheme ? _b_dividerOpacity : _w_dividerOpacity
property string titleBarBackgroundGradientStart: blackTheme ? _b_titleBarBackgroundGradientStart : _w_titleBarBackgroundGradientStart
property string titleBarBackgroundGradientStop: blackTheme ? _b_titleBarBackgroundGradientStop : _w_titleBarBackgroundGradientStop
property string titleBarBackgroundBorderColor: blackTheme ? _b_titleBarBackgroundBorderColor : _w_titleBarBackgroundBorderColor
property string titleBarLogoSource: blackTheme ? _b_titleBarLogoSource : _w_titleBarLogoSource
property string titleBarMinimizeSource: blackTheme ? _b_titleBarMinimizeSource : _w_titleBarMinimizeSource
property string titleBarExpandSource: blackTheme ? _b_titleBarExpandSource : _w_titleBarExpandSource
property string titleBarFullscreenSource: blackTheme ? _b_titleBarFullscreenSource : _w_titleBarFullscreenSource
property string titleBarCloseSource: blackTheme ? _b_titleBarCloseSource : _w_titleBarCloseSource
property string titleBarButtonHoverColor: blackTheme ? _b_titleBarButtonHoverColor : _w_titleBarButtonHoverColor
property string wizardBackgroundGradientStart: blackTheme ? _b_wizardBackgroundGradientStart : _w_wizardBackgroundGradientStart
property string middlePanelBackgroundGradientStart: blackTheme ? _b_middlePanelBackgroundGradientStart : _w_middlePanelBackgroundGradientStart
property string middlePanelBackgroundGradientStop: blackTheme ? _b_middlePanelBackgroundGradientStop : _w_middlePanelBackgroundGradientStop
property string middlePanelBackgroundColor: blackTheme ? _b_middlePanelBackgroundColor : _w_middlePanelBackgroundColor
property string menuButtonFallbackBackgroundColor: blackTheme ? _b_menuButtonFallbackBackgroundColor : _w_menuButtonFallbackBackgroundColor
property string menuButtonGradientStart: blackTheme ? _b_menuButtonGradientStart : _w_menuButtonGradientStart
property string menuButtonGradientStop: blackTheme ? _b_menuButtonGradientStop : _w_menuButtonGradientStop
property string menuButtonTextColor: blackTheme ? _b_menuButtonTextColor : _w_menuButtonTextColor
property string menuButtonImageRightColorActive: blackTheme ? _b_menuButtonImageRightColorActive : _w_menuButtonImageRightColorActive
property string menuButtonImageRightColor: blackTheme ? _b_menuButtonImageRightColor : _w_menuButtonImageRightColor
property string menuButtonImageRightSource: blackTheme ? _b_menuButtonImageRightSource : _w_menuButtonImageRightSource
property string menuButtonImageDotArrowSource: blackTheme ? _b_menuButtonImageDotArrowSource : _w_menuButtonImageDotArrowSource
property string inlineButtonTextColor: blackTheme ? _b_inlineButtonTextColor : _w_inlineButtonTextColor
property string inlineButtonBorderColor: blackTheme ? _b_inlineButtonBorderColor : _w_inlineButtonBorderColor
property string appWindowBackgroundColor: blackTheme ? _b_appWindowBackgroundColor : _w_appWindowBackgroundColor
property string appWindowBorderColor: blackTheme ? _b_appWindowBorderColor : _w_appWindowBorderColor
property bool progressBarProgressTextBold: blackTheme ? _b_progressBarProgressTextBold : _w_progressBarProgressTextBold
property string progressBarBackgroundColor: blackTheme ? _b_progressBarBackgroundColor : _w_progressBarBackgroundColor
property string leftPanelBackgroundGradientStart: blackTheme ? _b_leftPanelBackgroundGradientStart : _w_leftPanelBackgroundGradientStart
property string leftPanelBackgroundGradientStop: blackTheme ? _b_leftPanelBackgroundGradientStop : _w_leftPanelBackgroundGradientStop
property string historyHeaderTextColor: blackTheme ? _b_historyHeaderTextColor : _w_historyHeaderTextColor
property string _b_defaultFontColor: "white"
property string _b_dimmedFontColor: "#BBBBBB"
property string _b_lightGreyFontColor: "#DFDFDF"
property string _b_errorColor: "#FA6800"
property string _b_textSelectionColor: "#BBBBBB"
property string _b_textSelectedColor: "white"
property string _b_inputBoxBackground: "black"
property string _b_inputBoxBackgroundError: "#FFDDDD"
property string _b_inputBoxColor: "white"
property string _b_legacy_placeholderFontColor: "#BABABA"
property string _b_inputBorderColorActive: Qt.rgba(255, 255, 255, 0.38)
property string _b_inputBorderColorInActive: Qt.rgba(255, 255, 255, 0.32)
property string _b_inputBorderColorInvalid: Qt.rgba(255, 0, 0, 0.40)
property string _b_buttonBackgroundColor: "#FA6800"
property string _b_buttonBackgroundColorHover: "#E65E00"
property string _b_buttonBackgroundColorDisabled: "#707070"
property string _b_buttonBackgroundColorDisabledHover: "#808080"
property string _b_buttonInlineBackgroundColor: "#707070"
property string _b_buttonTextColor: "white"
property string _b_buttonTextColorDisabled: "black"
property string _b_dividerColor: "white"
property real _b_dividerOpacity: 0.20
property string _b_titleBarBackgroundGradientStart: "#262626";
property string _b_titleBarBackgroundGradientStop: "#191919"
property string _b_titleBarBackgroundBorderColor: "#2f2f2f"
property string _b_titleBarLogoSource: "qrc:///images/titlebarLogo.png"
property string _b_titleBarMinimizeSource: "qrc:///images/minimize.svg"
property string _b_titleBarExpandSource: "qrc:///images/sidebar.svg"
property string _b_titleBarFullscreenSource: "qrc:///images/fullscreen.svg"
property string _b_titleBarCloseSource: "qrc:///images/close.svg"
property string _b_titleBarButtonHoverColor: "#10FFFFFF"
property string _b_wizardBackgroundGradientStart: "#1e1e1e"
property string _b_middlePanelBackgroundGradientStart: "#232323"
property string _b_middlePanelBackgroundGradientStop: "#101010"
property string _b_middlePanelBackgroundColor: "#181818"
property string _b_menuButtonFallbackBackgroundColor: "#09FFFFFF"
property string _b_menuButtonGradientStart: "#11FFFFFF"
property string _b_menuButtonGradientStop: "#00000000"
property string _b_menuButtonTextColor: "white"
property string _b_menuButtonImageRightColorActive: "white"
property string _b_menuButtonImageRightColor: "white"
property string _b_menuButtonImageRightSource: "qrc:///images/right.svg"
property string _b_menuButtonImageDotArrowSource: "qrc:///images/arrow-right-medium-white.png"
property string _b_inlineButtonTextColor: "black"
property string _b_inlineButtonBorderColor: "black"
property string _b_appWindowBackgroundColor: "white"
property string _b_appWindowBorderColor: "#313131"
property bool _b_progressBarProgressTextBold: true
property string _b_progressBarBackgroundColor: "#24FFFFFF"
property string _b_leftPanelBackgroundGradientStart: "#222222"
property string _b_leftPanelBackgroundGradientStop: "#1a1a1a"
property string _b_historyHeaderTextColor: "#C0C0C0"
property string _w_defaultFontColor: "black"
property string _w_dimmedFontColor: "#3f3f3f"
property string _w_lightGreyFontColor: "#515151"
property string _w_errorColor: "#FA6800"
property string _w_textSelectionColor: "#BBBBBB"
property string _w_textSelectedColor: "black"
property string _w_inputBoxBackground: "white"
property string _w_inputBoxBackgroundError: "#FFDDDD"
property string _w_inputBoxColor: "black"
property string _w_legacy_placeholderFontColor: "#BABABA"
property string _w_inputBorderColorActive: Qt.rgba(0, 0, 0, 0.30)
property string _w_inputBorderColorInActive: Qt.rgba(0, 0, 0, 0.16)
property string _w_inputBorderColorInvalid: Qt.rgba(255, 0, 0, 0.50)
property string _w_buttonBackgroundColor: "#FA6800"
property string _w_buttonBackgroundColorHover: "#E65E00"
property string _w_buttonBackgroundColorDisabled: "#bbbbbb"
property string _w_buttonBackgroundColorDisabledHover: "#D1D1D1"
property string _w_buttonInlineBackgroundColor: "#bbbbbb"
property string _w_buttonTextColor: "white"
property string _w_buttonTextColorDisabled: "black"
property string _w_dividerColor: "black"
property real _w_dividerOpacity: 0.20
property string _w_titleBarBackgroundGradientStart: "#fcfcfc"
property string _w_titleBarBackgroundGradientStop: "#FBFBFB"
property string _w_titleBarBackgroundBorderColor: "#DEDEDE"
property string _w_titleBarLogoSource: "qrc:///images/themes/white/titlebarLogo.png"
property string _w_titleBarMinimizeSource: "qrc:///images/themes/white/minimize.svg"
property string _w_titleBarExpandSource: "qrc:///images/themes/white/expand.svg"
property string _w_titleBarFullscreenSource: "qrc:///images/themes/white/fullscreen.svg"
property string _w_titleBarCloseSource: "qrc:///images/themes/white/close.svg"
property string _w_titleBarButtonHoverColor: "#11000000"
property string _w_wizardBackgroundGradientStart: "white"
property string _w_middlePanelBackgroundGradientStart: "white"
property string _w_middlePanelBackgroundGradientStop: "#ededed"
property string _w_middlePanelBackgroundColor: "#f5f5f5"
property string _w_menuButtonFallbackBackgroundColor: "#09000000"
property string _w_menuButtonGradientStart: "#08000000"
property string _w_menuButtonGradientStop: "#10FFFFFF"
property string _w_menuButtonTextColor: "#787878"
property string _w_menuButtonImageRightSource: "qrc:///images/right.svg"
property string _w_menuButtonImageRightColorActive: "#FA6800"
property string _w_menuButtonImageRightColor: "#808080"
property string _w_menuButtonImageDotArrowSource: "qrc:///images/arrow-right-medium-white.png"
property string _w_inlineButtonTextColor: "white"
property string _w_inlineButtonBorderColor: "transparent"
property string _w_appWindowBackgroundColor: "black"
property string _w_appWindowBorderColor: "#dedede"
property bool _w_progressBarProgressTextBold: false
property string _w_progressBarBackgroundColor: "#24000000"
property string _w_leftPanelBackgroundGradientStart: "white"
property string _w_leftPanelBackgroundGradientStop: "#f5f5f5"
property string _w_historyHeaderTextColor: "#515151"
}

View File

@@ -1,237 +0,0 @@
// Copyright (c) 2014-2018, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.0
Item {
id: dropdown
property bool expanded: false
property alias dataModel: repeater.model
signal collapsed()
signal optionClicked(int option)
width: 72
height: 37
onExpandedChanged: if(expanded) appWindow.currentItem = dropdown
function hide() { dropdown.expanded = false }
function containsPoint(px, py) {
if(px < 0)
return false
if(px > width)
return false
if(py < 0)
return false
if(py > height + dropArea.height)
return false
return true
}
Item {
id: head
anchors.fill: parent
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
height: parent.height - 1
y: dropdown.expanded || dropArea.height > 0 ? 0 : 1
//radius: 3
color: dropdown.expanded || dropArea.height > 0 ? "#888888" : "#DBDBDB"
}
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
height: parent.height - 1
y: dropdown.expanded || dropArea.height > 0 ? 1 : 0
//radius: 3
color: dropdown.expanded || dropArea.height > 0 ? "#DBDBDB" : "#F0EEEE"
}
Rectangle {
anchors.left: parent.left
anchors.bottom: parent.bottom
height: 3
width: 3
color: "#DBDBDB"
visible: dropdown.expanded || dropArea.height > 0
}
Rectangle {
anchors.right: parent.right
anchors.bottom: parent.bottom
height: 3
width: 3
color: "#DBDBDB"
visible: dropdown.expanded || dropArea.height > 0
}
Image {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10
source: "../images/tableOptions.png"
}
Rectangle {
anchors.centerIn: parent
anchors.horizontalCenterOffset: 1
height: 23
width: 1
color: dropdown.expanded || dropArea.height > 0 ? "#FFFFFF" : "#DBDBDB"
}
Image {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 10
source: "../images/dropIndicator.png"
}
}
Timer {
id: timer
interval: 50
repeat: true
running: false
onTriggered: {
if(((appWindow.toolTip.visible && !appWindow.toolTip.containsMouse) || !appWindow.toolTip.visible) && !mouseArea.containsMouse) {
appWindow.toolTip.visible = false
dropdown.expanded = false
currentIndex = -1
timer.stop()
}
}
}
MouseArea {
id: mouseArea
anchors.left: head.left
anchors.right: head.right
anchors.top: head.top
height: head.height + dropArea.height
hoverEnabled: true
onEntered: dropdown.expanded = true
property int currentIndex: -1
onMouseYChanged: {
if(mouseY > head.height) {
var posY = parseInt((mouseY - head.height) / 30)
currentIndex = posY
} else {
currentIndex = -1
}
}
onClicked: {
optionClicked(currentIndex)
}
onExited: timer.start()
preventStealing: true
z: 1
Item {
id: dropArea
anchors.left: parent.left
anchors.right: parent.right
y: head.height
height: dropdown.expanded ? column.height : 0
onHeightChanged: if(height === 0) dropdown.collapsed()
clip: true
Behavior on height {
NumberAnimation { duration: 100; easing.type: Easing.InQuad }
}
Column {
id: column
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
Repeater {
id: repeater
// Workaround for translations in listElements. All translated strings needs to be listed in this file.
property string stringCopy: qsTr("<b>Copy address to clipboard</b>") + translationManager.emptyString
property string stringSend: qsTr("<b>Send to this address</b>") + translationManager.emptyString
property string stringFind: qsTr("<b>Find similar transactions</b>") + translationManager.emptyString
property string stringRemove: qsTr("<b>Remove from address book</b>") + translationManager.emptyString
delegate: Rectangle {
id: delegate
property bool containsMouse: index === mouseArea.currentIndex
anchors.left: parent.left
anchors.right: parent.right
height: 30
color: containsMouse ? "#F0EEEE" : "#DBDBDB"
//radius: index === repeater.count - 1 ? 5 : 0
Rectangle {
anchors.left: parent.left
anchors.top: parent.top
width: 5
height: 5
color: delegate.color
}
Rectangle {
anchors.right: parent.right
anchors.top: parent.top
width: 5
height: 5
color: delegate.color
}
Image {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10
source: icon
}
onContainsMouseChanged: {
if(containsMouse) {
var pos = rootItem.mapFromItem(delegate, 30, -25)
appWindow.toolTip.text = qsTr(name) + translationManager.emptyString
appWindow.toolTip.x = pos.x - appWindow.toolTip.width
// if(appWindow.toolTip.height > 30)
// pos.y -= appWindow.toolTip.height - 30
appWindow.toolTip.y = pos.y
appWindow.toolTip.visible = true
appWindow.toolTip.z = 3
}
}
}
}
}
}
}
}

View File

@@ -1,11 +1,11 @@
import QtQuick 2.0
import QtQuick 2.9
import "../components" as MoneroComponents
TextEdit {
color: MoneroComponents.Style.defaultFontColor
font.family: MoneroComponents.Style.fontRegular.name
selectionColor: MoneroComponents.Style.dimmedFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
wrapMode: Text.Wrap
readOnly: true
selectByMouse: true

28
components/TextPlain.qml Normal file
View File

@@ -0,0 +1,28 @@
import QtQuick 2.9
import "." as MoneroComponents
import "effects/" as MoneroEffects
Text {
// When using this component, please note that if you use a color different
// than `defaultFontColor`, you are required to also define `themeTransitionXColor`.
// If you do not set these the component will receive the wrong color after a transition.
// If you do not want to set these, use `themeTransition: false`.
id: root
property bool themeTransition: true
property string themeTransitionBlackColor: ""
property string themeTransitionWhiteColor: ""
font.family: MoneroComponents.Style.fontMedium.name
font.bold: false
font.pixelSize: 14
textFormat: Text.PlainText
MoneroEffects.ColorTransition {
enabled: root.themeTransition
themeTransition: root.themeTransition
targetObj: root
duration: 750
blackColor: root.themeTransitionBlackColor !== "" ? root.themeTransitionBlackColor : MoneroComponents.Style._b_defaultFontColor
whiteColor: root.themeTransitionWhiteColor !== "" ? root.themeTransitionWhiteColor : MoneroComponents.Style._w_defaultFontColor
}
}

View File

@@ -0,0 +1,48 @@
import QtQuick 2.9
import QtQuick.Controls 2.0
import "." as MoneroComponents
TextArea {
id: textArea
property bool themeTransition: true
property string colorWhiteTheme: ""
property string colorBlackTheme: ""
color: MoneroComponents.Style.defaultFontColor
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14
selectByMouse: false
wrapMode: Text.WordWrap;
textMargin: 0
leftPadding: 0
topPadding: 0
readOnly: true
textFormat: TextEdit.PlainText
states: [
State {
name: "black";
when: textArea.themeTransition && MoneroComponents.Style.blackTheme
PropertyChanges {
target: textArea
color: {
return textArea.colorBlackTheme ? textArea.colorBlackTheme : MoneroComponents.Style._b_defaultFontColor
}
}
}, State {
name: "white";
when: textArea.themeTransition && !MoneroComponents.Style.blackTheme
PropertyChanges {
target: textArea
color: {
return textArea.colorWhiteTheme ? textArea.colorWhiteTheme : MoneroComponents.Style._w_defaultFontColor
}
}
}
]
transitions: Transition {
enabled: appWindow.themeTransition
ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: 750 }
}
}

View File

@@ -26,9 +26,11 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.2
import QtQuick 2.9
import QtQuick.Window 2.1
import "../components" as MoneroComponents
Window {
property alias text: content.text
property alias containsMouse: tipArea.containsMouse
@@ -55,10 +57,10 @@ Window {
anchors.top: parent.bottom
anchors.left: parent.left
anchors.leftMargin: 5
source: "../images/tip.png"
source: "qrc:///images/tip.png"
}
Text {
MoneroComponents.TextPlain {
id: content
anchors.horizontalCenter: parent.horizontalCenter
y: 6

View File

@@ -26,304 +26,320 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.5
import QtQuick 2.9
import QtQuick.Window 2.0
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import QtQuick.Layouts 1.2
import FontAwesome 1.0
import "." as MoneroComponents
import "effects/" as MoneroEffects
Rectangle {
id: titleBar
height: {
if(!customDecorations || isMobile){
return 0;
}
if(small) return 38 * scaleRatio;
else return 50 * scaleRatio;
}
y: -height
z: 1
property string title
id: root
property int mouseX: 0
property bool containsMouse: false
property bool basicButtonVisible: false
property bool customDecorations: persistentSettings.customDecorations
property bool showWhatIsButton: true
property bool showMinimizeButton: false
property bool showMaximizeButton: false
property bool showMinimizeButton: true
property bool showMaximizeButton: true
property bool showCloseButton: true
property bool showMoneroLogo: false
property bool small: false
property alias titleBarGradientImageOpacity: titleBarGradientImage.opacity
property bool orange: false
property string buttonHoverColor: "#262626"
property string buttonHoverColorOrange: "#44FFFFFF"
height: {
if(!persistentSettings.customDecorations || isMobile) return 0;
return 50;
}
z: 1
color: "transparent"
signal closeClicked
signal maximizeClicked
signal minimizeClicked
signal languageClicked
signal goToBasicVersion(bool yes)
Item {
// Background gradient
width: parent.width
height: parent.height
z: parent.z + 1
Image {
id: titleBarGradientImage
visible: !titleBar.orange
anchors.fill: parent
height: titleBar.height
width: titleBar.width
source: "../images/titlebarGradient.jpg"
state: "default"
states: [
State {
name: "default";
PropertyChanges { target: btnSidebarCollapse; visible: true}
PropertyChanges { target: btnLanguageToggle; visible: true}
}, State {
// show only theme switcher and window controls
name: "essentials";
PropertyChanges { target: btnSidebarCollapse; visible: false}
PropertyChanges { target: btnLanguageToggle; visible: false}
}
]
Rectangle {
visible: titleBar.orange
width: parent.width
height: parent.height
color: "#ff6600"
}
}
Item {
id: titlebarlogo
width: 125
height: parent.height
anchors.centerIn: parent
visible: customDecorations
z: parent.z + 1
Image {
visible: !isMobile && showMoneroLogo && !titleBar.orange
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 11
width: 125
height: 28
source: "../images/titlebarLogo.png"
}
Image {
visible: !isMobile && showMoneroLogo && titleBar.orange
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 11
width: 132
height: 22
source: "../images/moneroLogo_white.png"
}
}
Label {
id: titleLabel
visible: !showMoneroLogo && customDecorations && titleBar.title !== ''
anchors.centerIn: parent
fontSize: 18
text: titleBar.title
z: parent.z + 1
MoneroEffects.GradientBackground {
anchors.fill: parent
duration: 300
fallBackColor: MoneroComponents.Style.middlePanelBackgroundColor
initialStartColor: MoneroComponents.Style.titleBarBackgroundGradientStart
initialStopColor: MoneroComponents.Style.titleBarBackgroundGradientStop
blackColorStart: MoneroComponents.Style._b_titleBarBackgroundGradientStart
blackColorStop: MoneroComponents.Style._b_titleBarBackgroundGradientStop
whiteColorStart: MoneroComponents.Style._w_titleBarBackgroundGradientStart
whiteColorStop: MoneroComponents.Style._w_titleBarBackgroundGradientStop
start: Qt.point(width, 0)
end: Qt.point(0, 0)
}
RowLayout {
anchors.left: parent.left
anchors.top: parent.top
width: 40
height: parent.height
spacing: 0
z: parent.z + 2
spacing: 0
anchors.fill: parent
// collapse sidebar
Rectangle {
id: btnSidebarCollapse
visible: root.basicButtonVisible
color: "transparent"
Layout.preferredWidth: parent.height
Layout.preferredHeight: parent.height
Layout.preferredWidth: Layout.preferredHeight
id: goToBasicVersionButton
property bool containsMouse: titleBar.mouseX >= x && titleBar.mouseX <= x + width
property bool checked: false
color: "transparent"
height: titleBar.height
width: height
visible: !titleBar.orange && titleBar.basicButtonVisible
Image {
width: 14
MoneroEffects.ImageMask {
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
height: 14
anchors.centerIn: parent
source: "../images/expand.png"
width: 14
image: MoneroComponents.Style.titleBarExpandSource
color: MoneroComponents.Style.defaultFontColor
fontAwesomeFallbackIcon: FontAwesome.cube
fontAwesomeFallbackSize: 14
fontAwesomeFallbackOpacity: MoneroComponents.Style.blackTheme ? 1.0 : 0.9
opacity: 0.75
}
MouseArea {
id: basicMouseArea
hoverEnabled: true
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: { goToBasicVersionButton.color = titleBar.orange ? titleBar.buttonHoverColorOrange : titleBar.buttonHoverColor }
onExited: goToBasicVersionButton.color = "transparent";
onClicked: {
releaseFocus()
parent.checked = !parent.checked
titleBar.goToBasicVersion(leftPanel.visible)
}
onEntered: parent.color = MoneroComponents.Style.titleBarButtonHoverColor
onExited: parent.color = "transparent"
onClicked: root.goToBasicVersion(leftPanel.visible)
}
}
// language selection
Rectangle {
Layout.preferredHeight: parent.height
Layout.preferredWidth: Layout.preferredHeight
visible: !titleBar.orange && persistentSettings.customDecorations
id: languageSelection
property bool containsMouse: titleBar.mouseX >= x && titleBar.mouseX <= x + width
property bool checked: false
color: "transparent"
height: titleBar.height
width: height
z: parent.z + 2
Image {
width: 14
height: 14
anchors.centerIn: parent
source: "../images/langFlagGrey.png"
}
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: parent.color = "#262626";
onExited: parent.color = "transparent";
onClicked: {
releaseFocus();
appWindow.toggleLanguageView();
}
}
}
}
Row {
id: row
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
visible: parent.customDecorations
z: parent.z + 2
Rectangle {
id: minimizeButton
visible: showMinimizeButton
anchors.top: parent.top
anchors.bottom: parent.bottom
width: 42
id: btnLanguageToggle
color: "transparent"
Layout.preferredWidth: parent.height
Layout.preferredHeight: parent.height
Image {
anchors.centerIn: parent
source: "../images/minimize.png"
Text {
text: FontAwesome.globe
font.family: FontAwesome.fontFamily
font.pixelSize: 16
color: MoneroComponents.Style.defaultFontColor
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
opacity: 0.75
}
MouseArea {
id: minimizeArea
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: {
if(titleBar.orange){
minimizeButton.color = titleBar.buttonHoverColorOrange;
} else {
minimizeButton.color = titleBar.buttonHoverColor;
}
}
onExited: minimizeButton.color = "transparent";
onClicked: minimizeClicked();
onEntered: parent.color = MoneroComponents.Style.titleBarButtonHoverColor
onExited: parent.color = "transparent"
onClicked: root.languageClicked()
}
}
// switch theme
Rectangle {
id: maximizeButton
visible: showMaximizeButton
anchors.top: parent.top
anchors.bottom: parent.bottom
width: 42
color: "transparent";
color: "transparent"
Layout.preferredWidth: parent.height
Layout.preferredHeight: parent.height
Image {
anchors.centerIn: parent
height: 16
width: 16
source: appWindow.visibility === Window.FullScreen ? "../images/backToWindowIcon.png" :
"../images/fullscreen.png"
Text {
text: MoneroComponents.Style.blackTheme ? FontAwesome.lightbulbO : FontAwesome.moonO
font.family: FontAwesome.fontFamily
font.pixelSize: 16
color: MoneroComponents.Style.defaultFontColor
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
opacity: 0.75
}
MouseArea {
id: maximizeArea
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: {
if(titleBar.orange){
maximizeButton.color = titleBar.buttonHoverColorOrange;
} else {
maximizeButton.color = titleBar.buttonHoverColor;
}
onEntered: parent.color = MoneroComponents.Style.titleBarButtonHoverColor
onExited: parent.color = "transparent"
onClicked: {
MoneroComponents.Style.blackTheme = !MoneroComponents.Style.blackTheme;
persistentSettings.blackTheme = MoneroComponents.Style.blackTheme;
}
onExited: maximizeButton.color = "transparent";
onClicked: maximizeClicked();
}
}
Rectangle {
id: closeButton
visible: showCloseButton
anchors.top: parent.top
anchors.bottom: parent.bottom
width: 42
color: containsMouse ? "#E04343" : "#00000000"
Item {
// make dummy space when hiding buttons when titlebar
// state is 'essentials' in order for the
// monero logo to still be centered
Layout.preferredWidth: parent.height * 2 // amount of buttons we hide
Layout.preferredHeight: parent.height
visible: root.state == "essentials"
}
// monero logo
Item {
Layout.fillWidth: true
Layout.preferredHeight: parent.height
Image {
anchors.centerIn: parent
width: 16
height: 16
source: "../images/close.png"
id: imgLogo
width: 125
height: 28
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
source: MoneroComponents.Style.titleBarLogoSource
visible: {
if(!isOpenGL) return true;
if(!MoneroComponents.Style.blackTheme) return true;
return false;
}
}
Colorize {
visible: isOpenGL && MoneroComponents.Style.blackTheme
anchors.fill: imgLogo
source: imgLogo
saturation: 0.0
}
}
// minimize
Rectangle {
color: "transparent"
visible: root.showMinimizeButton
Layout.preferredWidth: parent.height
Layout.preferredHeight: parent.height
MoneroEffects.ImageMask {
anchors.bottom: parent.bottom
anchors.bottomMargin: 18
anchors.horizontalCenter: parent.horizontalCenter
height: 3
width: 15
image: MoneroComponents.Style.titleBarMinimizeSource
color: MoneroComponents.Style.defaultFontColor
fontAwesomeFallbackIcon: FontAwesome.minus
fontAwesomeFallbackSize: 18
fontAwesomeFallbackOpacity: MoneroComponents.Style.blackTheme ? 0.8 : 0.6
opacity: 0.75
}
MouseArea {
anchors.fill: parent
onClicked: closeClicked();
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: {
if(titleBar.orange){
closeButton.color = titleBar.buttonHoverColorOrange;
} else {
closeButton.color = titleBar.buttonHoverColor;
}
}
onExited: closeButton.color = "transparent";
onEntered: parent.color = MoneroComponents.Style.titleBarButtonHoverColor
onExited: parent.color = "transparent"
onClicked: root.minimizeClicked();
}
}
// maximize
Rectangle {
id: test
visible: root.showMaximizeButton
color: "transparent"
Layout.preferredWidth: parent.height
Layout.preferredHeight: parent.height
Image {
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
source: MoneroComponents.Style.titleBarFullscreenSource
sourceSize.width: 16
sourceSize.height: 16
smooth: true
mipmap: true
opacity: 0.75
rotation: appWindow.visibility === Window.FullScreen ? 180 : 0
}
MouseArea {
id: buttonArea
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: parent.color = MoneroComponents.Style.titleBarButtonHoverColor
onExited: parent.color = "transparent"
onClicked: root.maximizeClicked();
}
}
// close
Rectangle {
visible: root.showCloseButton
color: "transparent"
Layout.preferredWidth: parent.height
Layout.preferredHeight: parent.height
MoneroEffects.ImageMask {
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
height: 16
width: 16
image: MoneroComponents.Style.titleBarCloseSource
color: MoneroComponents.Style.defaultFontColor
fontAwesomeFallbackIcon: FontAwesome.timesRectangle
fontAwesomeFallbackSize: 18
fontAwesomeFallbackOpacity: MoneroComponents.Style.blackTheme ? 0.8 : 0.6
opacity: 0.75
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: parent.color = MoneroComponents.Style.titleBarButtonHoverColor
onExited: parent.color = "transparent"
onClicked: root.closeClicked();
}
}
}
// window borders
Rectangle {
visible: !titleBar.orange
z: parent.z + 3
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.left: parent.left
height: 1
color: "#2F2F2F"
z: parent.z + 1
anchors.right: parent.right
height: MoneroComponents.Style.blackTheme ? 1 : 1
color: MoneroComponents.Style.titleBarBackgroundBorderColor
MoneroEffects.ColorTransition {
targetObj: parent
blackColor: MoneroComponents.Style._b_titleBarBackgroundBorderColor
whiteColor: MoneroComponents.Style._w_titleBarBackgroundBorderColor
}
}
Rectangle {
visible: titleBar.small && !titleBar.orange
anchors.top: parent.top
anchors.right: parent.right
anchors.left: parent.left
height: 1
color: "#2F2F2F"
z: parent.z + 1
MouseArea {
enabled: persistentSettings.customDecorations
property var previousPosition
anchors.fill: parent
propagateComposedEvents: true
onPressed: previousPosition = globalCursor.getPosition()
onPositionChanged: {
if (pressedButtons == Qt.LeftButton) {
var pos = globalCursor.getPosition()
var dx = pos.x - previousPosition.x
var dy = pos.y - previousPosition.y
appWindow.x += dx
appWindow.y += dy
previousPosition = pos
}
}
}
}

View File

@@ -1,4 +1,4 @@
import QtQuick 2.7
import QtQuick 2.9
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
@@ -8,12 +8,12 @@ Rectangle {
id: root
property alias text: content.text
property alias textColor: content.color
property int fontSize: 15 * scaleRatio
property int fontSize: 15
Layout.fillWidth: true
Layout.preferredHeight: warningLayout.height
color: "#09FFFFFF"
color: MoneroComponents.Style.titleBarButtonHoverColor
radius: 4
border.color: MoneroComponents.Style.inputBorderColorInActive
border.width: 1
@@ -28,13 +28,13 @@ Rectangle {
Image {
Layout.alignment: Qt.AlignVCenter
Layout.preferredHeight: 33 * scaleRatio
Layout.preferredWidth: 33 * scaleRatio
Layout.rightMargin: 12 * scaleRatio
Layout.leftMargin: 18 * scaleRatio
Layout.topMargin: 12 * scaleRatio
Layout.bottomMargin: 12 * scaleRatio
source: "../images/warning.png"
Layout.preferredHeight: 33
Layout.preferredWidth: 33
Layout.rightMargin: 12
Layout.leftMargin: 18
Layout.topMargin: 12
Layout.bottomMargin: 12
source: "qrc:///images/warning.png"
}
TextArea {
@@ -48,15 +48,15 @@ Rectangle {
textFormat: Text.RichText
wrapMode: Text.WordWrap
textMargin: 0
leftPadding: 4 * scaleRatio
rightPadding: 18 * scaleRatio
topPadding: 10 * scaleRatio
bottomPadding: 10 * scaleRatio
leftPadding: 4
rightPadding: 18
topPadding: 10
bottomPadding: 10
readOnly: true
onLinkActivated: root.linkActivated();
selectionColor: MoneroComponents.Style.dimmedFontColor
selectedTextColor: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
}
}
}

View File

@@ -0,0 +1,58 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtGraphicalEffects 1.0
import "../" as MoneroComponents
Item {
id: root
property var targetObj
property string blackColor: ""
property string whiteColor: ""
property int duration: 300
property bool themeTransition: true
states: [
State {
name: "black";
when: MoneroComponents.Style.blackTheme && root.themeTransition
PropertyChanges { target: root.targetObj; color: root.blackColor}
}, State {
name: "white";
when: !MoneroComponents.Style.blackTheme && root.themeTransition
PropertyChanges { target: root.targetObj; color: root.whiteColor}
}
]
transitions: Transition {
enabled: appWindow.themeTransition
ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: root.duration }
}
}

View File

@@ -0,0 +1,107 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtGraphicalEffects 1.0
import "../" as MoneroComponents
Item {
id: root
property string fallBackColor: ""
property string blackColorStart: ""
property string blackColorStop: ""
property string whiteColorStart: ""
property string whiteColorStop: ""
property string initialStartColor: ""
property string initialStopColor: ""
property double posStart: 0.1
property double posStop: 1.0
property int duration: 300
property variant start
property variant end
anchors.fill: parent
// background software renderer
Rectangle {
visible: !isOpenGL
anchors.fill: parent
color: root.fallBackColor
}
// background opengl
LinearGradient {
visible: isOpenGL
anchors.fill: parent
start: root.start
end: root.end
gradient: Gradient {
GradientStop {
id: gradientStart
position: root.posStart
color: root.initialStartColor
}
GradientStop {
id: gradientStop
position: root.posStop
color: root.initialStopColor
}
}
states: [
State {
name: "black";
when: isOpenGL && MoneroComponents.Style.blackTheme
PropertyChanges {
target: gradientStart
color: root.blackColorStart
}
PropertyChanges {
target: gradientStop
color: root.blackColorStop
}
}, State {
name: "white";
when: isOpenGL && !MoneroComponents.Style.blackTheme
PropertyChanges {
target: gradientStart
color: root.whiteColorStart
}
PropertyChanges {
target: gradientStop
color: root.whiteColorStop
}
}
]
transitions: Transition {
enabled: appWindow.themeTransition
ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: root.duration }
}
}
}

View File

@@ -0,0 +1,84 @@
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtGraphicalEffects 1.0
import "../" as MoneroComponents
import FontAwesome 1.0
Item {
// Use this component to color+opacity change images with transparency (svg/png)
// Does not work in low graphics mode, use fontAwesome fallback option.
id: root
property string image: ""
property string color: ""
property bool fontAwesomeFallbackEnabled: true
property var fontAwesomeFallbackIcon: ""
property int fontAwesomeFallbackSize: 16
property double fontAwesomeFallbackOpacity: 0.8
property string fontAwesomeFallbackColor: MoneroComponents.Style.defaultFontColor
property alias fontAwesomeFallback: fontAwesomeFallback
property alias svgMask: svgMask
property alias imgMockColor: imgMockColor
width: 0
height: 0
Image {
id: svgMask
source: root.image
sourceSize.width: root.width
sourceSize.height: root.height
smooth: true
mipmap: true
visible: false
}
ColorOverlay {
id: imgMockColor
anchors.fill: root
source: svgMask
color: root.color
visible: isOpenGL
}
Text {
id: fontAwesomeFallback
visible: !isOpenGL && root.fontAwesomeFallback
text: !isOpenGL ? root.fontAwesomeFallbackIcon : ""
font.family: FontAwesome.fontFamily
font.pixelSize: root.fontAwesomeFallbackSize
color: root.fontAwesomeFallbackColor
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
opacity: root.fontAwesomeFallbackOpacity
}
}

0
empty
View File

View File

@@ -27,9 +27,14 @@
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "filter.h"
#include <QtGlobal>
#include <QKeyEvent>
#include <QDebug>
#ifdef QT_DEBUG
#include "private/qabstractanimation_p.h"
#endif
filter::filter(QObject *parent) :
QObject(parent)
{
@@ -38,6 +43,13 @@ filter::filter(QObject *parent) :
}
bool filter::eventFilter(QObject *obj, QEvent *ev) {
// macOS sends fileopen signal for incoming uri handlers
if (ev->type() == QEvent::FileOpen) {
QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(ev);
QUrl scheme = openEvent->url();
emit uriHandler(scheme);
}
if(ev->type() == QEvent::KeyPress || ev->type() == QEvent::MouseButtonRelease){
emit userActivity();
}
@@ -79,6 +91,21 @@ bool filter::eventFilter(QObject *obj, QEvent *ev) {
case QEvent::KeyRelease: {
QKeyEvent *ke = static_cast<QKeyEvent*>(ev);
#ifdef QT_DEBUG
if(ke->key() == Qt::Key_F9){
QUnifiedTimer::instance()->setSlowModeEnabled(true);
QUnifiedTimer::instance()->setSlowdownFactor(10);
qDebug() << "Slow animations enabled";
}
if(ke->key() == Qt::Key_F10){
QUnifiedTimer::instance()->setSlowModeEnabled(false);
QUnifiedTimer::instance()->setSlowdownFactor(1);
qDebug() << "Slow animations disabled";
}
#endif
if(ke->key() == Qt::Key_Backtab)
m_backtabPressed = false;

View File

@@ -1,21 +1,21 @@
// Copyright (c) 2014-2018, The Monero Project
//
// Copyright (c) 2014-2019, The Monero Project
//
// All rights reserved.
//
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
@@ -49,6 +49,7 @@ signals:
void mousePressed(const QVariant &o, const QVariant &x, const QVariant &y);
void mouseReleased(const QVariant &o, const QVariant &x, const QVariant &y);
void userActivity();
void uriHandler(const QUrl &url);
};
#endif // FILTER_H

View File

@@ -1,5 +1,5 @@
pragma Singleton
import QtQuick 2.0
import QtQuick 2.9
Object {

View File

@@ -1,4 +1,4 @@
import QtQuick 2.0
import QtQuick 2.9
QtObject {
id: object

BIN
fonts/RobotoMono-Bold.ttf Executable file

Binary file not shown.

BIN
fonts/RobotoMono-Light.ttf Executable file

Binary file not shown.

BIN
fonts/RobotoMono-Medium.ttf Executable file

Binary file not shown.

BIN
fonts/RobotoMono-Regular.ttf Executable file

Binary file not shown.

View File

@@ -17,7 +17,7 @@ if [ ! -d $MONERO_DIR/src ]; then
fi
git submodule update --remote
git -C $MONERO_DIR fetch
git -C $MONERO_DIR checkout origin/release-v0.13
git -C $MONERO_DIR checkout v0.14.1.2
# get monero core tag
pushd $MONERO_DIR
@@ -94,6 +94,7 @@ BUILD_TREZOR_FLAGS=" -DUSE_DEVICE_TREZOR=ON"
if [ "$BUILD_TREZOR" == false ]; then
BUILD_TREZOR_FLAGS=" -DUSE_DEVICE_TREZOR=OFF"
fi
BUILD_TREZOR_FLAGS=" -DUSE_DEVICE_TREZOR_UDP_RELEASE=ON ${BUILD_TREZOR_FLAGS}"
STATIC=false
ANDROID=false

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<g fill="none" fill-rule="evenodd" stroke="#FFF" stroke-width="1.5" opacity="1">
<path fill-rule="nonzero" d="M10 .75C4.9.75.75 4.9.75 10S4.9 19.25 10 19.25s9.25-4.15 9.25-9.25S15.1.75 10 .75z"/>
<g stroke-linecap="round">
<path d="M11.1 12.786L13.5 10l-2.4-2.786M5.7 10h7.627"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 425 B

BIN
images/arrow-right-in-circle.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 396 B

3
images/check-white.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="14" viewBox="0 0 16 14">
<path fill="none" fill-rule="evenodd" stroke="#FFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.647" d="M1 8.295L6.732 13 15 1"/>
</svg>

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

5
images/close.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<g fill="none" fill-rule="evenodd" stroke="#FFF" stroke-linecap="round" stroke-width="1.85" opacity="1">
<path d="M1 1l14 14M15 1L1 15"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

6
images/copy.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="21" viewBox="0 0 16 21">
<g fill="none" fill-rule="evenodd" opacity="1">
<path fill="#FFF" d="M4 1v2H2v16h12V3h-2V1h2.5A1.5 1.5 0 0 1 16 2.5v17a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 19.5v-17A1.5 1.5 0 0 1 1.5 1H4zm2-1h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1z"/>
<path stroke="#FFF" stroke-linecap="round" stroke-linejoin="round" d="M4.41 11.634l2.874 2.44 4.08-5.926"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 821 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

7
images/edit.svg Normal file
View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="23" height="21" viewBox="0 0 23 21">
<g fill="none" fill-rule="evenodd" opacity="1">
<path fill="#FFF" d="M7.642 20H1.5A1.5 1.5 0 0 1 0 18.5v-17A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v6.372h-2V2H2v16h5.642v2zM4 4.615h8v2H4v-2zm0 9.231h5v2H4v-2zm0-4.615h8v2H4v-2z"/>
<path stroke="#FFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.08" d="M21.771 10.034l-8.44 8.695-3.205.886.908-3.323 8.387-8.695"/>
<path fill="#FFF" fill-rule="nonzero" d="M21.985 10.532l.374-.387a2.333 2.333 0 0 0 0-3.213 2.138 2.138 0 0 0-3.098 0l-.374.388 3.098 3.212zM11.087 16.237l2.35 2.381-3.097.776z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More