1
0
Commit Graph

14616 Commits

Author SHA1 Message Date
Sander van Grieken
64745ece10 add simple internal notification popup,
refactor MessageDialog
2022-07-07 18:29:01 +02:00
Sander van Grieken
6cf4fc9e1e implement user notifications for new_transaction events
As the QML app can have multiple active wallets managed from
a single window (unlike the desktop Qt version), we let each
wallet manage its own user notification queue (as there are
some rules here specific to each wallet, e.g. not emitting
user notifications for each tx while the wallet is still
syncing), including collating and rate limiting. The app then
consumes the userNotify events from all active wallets, and
adds these to its own queue, which get displayed (eventually,
again implementing rate limiting) to the user.

It also uses timers efficiently, only enabling them if there
are actual userNotify events waiting.

If at any point the QML app wants to use multiple windows,
it can forego on the app user notification queue and instead
attach each window to the associated wallet userNotify signal.

        app
         ▲
         │
         │  timer -> userNotify(msg) signal
         │
  ┌──┬───┴───────┐
  │  │           │  app user notification queue
  └──┴───▲───────┘
         │
         │  timer -> userNotify(wallet, msg) signal
         │
  ┌──┬───┴───────┐
  │  │           │  wallet user notification queue
  └──┴───▲───────┘
         │
         │  new_transaction
         │
      wallet
2022-07-07 18:29:01 +02:00
Sander van Grieken
d1623c5ed3 QRParser now a type, not a context property 2022-07-07 18:29:01 +02:00
Sander van Grieken
3942745270 add input method hints 2022-07-07 18:29:01 +02:00
Sander van Grieken
5e039a215a forgot RequestDialog 2022-07-07 18:29:01 +02:00
Sander van Grieken
da727278fa small fixes 2022-07-07 18:29:01 +02:00
Sander van Grieken
490862d096 add RequestDialog, open request on create, and implement UI delete request 2022-07-07 18:29:01 +02:00
Sander van Grieken
1609fe8663 parse QR async 2022-07-07 18:29:01 +02:00
Sander van Grieken
756cd9706f use fixed font on amount, address fields 2022-07-07 18:29:01 +02:00
Sander van Grieken
758a30462e implement QR code scanning 2022-07-07 18:29:01 +02:00
Sander van Grieken
62009c647e add buttons in address drawers
also copies two kivy icons to gui/icons
2022-07-07 18:28:00 +02:00
Sander van Grieken
f60eca054d add watch-only indicator
use default state instead of named state
set font defaults where it is convenient
2022-07-07 18:28:00 +02:00
Sander van Grieken
16a2d0c7fb add PT Mono bold 2022-07-07 18:28:00 +02:00
Sander van Grieken
d427be70b2 move wallet name to qewallet 2022-07-07 18:28:00 +02:00
Sander van Grieken
ead4600da6 UI address list 2022-07-07 18:28:00 +02:00
Sander van Grieken
cc9cc67775 add PaneInsetBackground 2022-07-07 18:28:00 +02:00
Sander van Grieken
88e8993442 Add PT Mono monospace font. 2022-07-07 18:28:00 +02:00
Sander van Grieken
7e6991c097 UI 2022-07-07 18:28:00 +02:00
Sander van Grieken
7b71323506 cleanup 2022-07-07 18:28:00 +02:00
Sander van Grieken
a75960a70d use configured units everywhere 2022-07-07 18:28:00 +02:00
Sander van Grieken
5cfa1fd772 add Preferences to menu and add icons 2022-07-07 18:28:00 +02:00
Sander van Grieken
695f7a31cd add padding constants 2022-07-07 18:28:00 +02:00
Sander van Grieken
3d0fbe5f21 add initial Preferences page 2022-07-07 18:28:00 +02:00
Sander van Grieken
426198dd42 add base unit setting and conversion methods in qeconfig.py 2022-07-07 18:28:00 +02:00
Sander van Grieken
cf059cb31b add initial fee histogram 2022-07-07 18:28:00 +02:00
Sander van Grieken
03048d39b6 handle gap limit warning when creating Request.
(using string error code for now, ideally should be properly defined
as an enum)

Also fix animation bug and work around broken ListView header implementation
2022-07-07 18:28:00 +02:00
Sander van Grieken
271f36d3b3 add yes/no button option to generic messagedialog, so it can be used
to ask the user a simple yes/no question.
2022-07-07 18:28:00 +02:00
Sander van Grieken
dec0cdd0d3 refactor QEAddressListModel and QETransactionListModel to their own files 2022-07-07 18:28:00 +02:00
Sander van Grieken
cd6d2f8a69 add QERequestListModel and hook up the gui in Receive tab 2022-07-07 18:28:00 +02:00
Sander van Grieken
e04dbe1eff remove leftover, don't eagerly set wizard pages to not visible 2022-07-07 18:28:00 +02:00
Sander van Grieken
f5807df91c add a container for styling constants, so we don't repeat literals all over the code 2022-07-07 18:28:00 +02:00
Sander van Grieken
492f246b9a qml: add QR code imageprovider using qrcode/PIL
adds buildozer 'pillow' recipe to requirements

add initial PoC on qml receive tab
2022-07-07 18:28:00 +02:00
Sander van Grieken
8000327097 gui: copy wallet.png from kivy to gui/icons/ 2022-07-07 18:28:00 +02:00
Sander van Grieken
a2fac2e3e3 buildozer: exclude env dir, don't include vs, fs extensions 2022-07-07 18:28:00 +02:00
Sander van Grieken
45f50d3078 fixes 2022-07-07 18:28:00 +02:00
Sander van Grieken
4680521d07 ui history page 2022-07-07 18:28:00 +02:00
Sander van Grieken
e329c54162 implement bip39 seed to wallet
fix auto-upgrade wallet
2022-07-07 18:28:00 +02:00
Sander van Grieken
bbd0ff8b91 move wizard components to separate files, add initial bip39 refine page 2022-07-07 18:28:00 +02:00
Sander van Grieken
17820b9346 add QEAddressListModel and initial Addresses.qml page.
show sane main view when no wallet loaded.
show error dialog when wallet could not be loaded.
show wallet up_to_date indicator in title bar.
refactor QETransactionListModel to be more self-contained.
2022-07-07 18:28:00 +02:00
Sander van Grieken
7e1606fe86 validate seeds for Electrum, BIP39, SLIP39 seeds and perform create wallet in from seed scenario
Currently only Electrum seeds are considered valid.
For BIP39 additional dialog is needed.
For SLIP39 multiple mnemonics need to be supported to generate a seed
2022-07-07 18:28:00 +02:00
Sander van Grieken
c79414012c fix bug where undefined wallet instance crashes app 2022-07-07 18:28:00 +02:00
Sander van Grieken
49b7a7518c upgrade wallet automatically when needed 2022-07-07 18:28:00 +02:00
Sander van Grieken
670882c3c0 improve wallet open flow
remove load_wallet from walletDB, route all wallet loading through QEDaemon.
QEDaemon emits walletLoaded and walletRequiresPassword signals. main.qml opens
OpenWallet view when extra user interaction is needed
2022-07-07 18:28:00 +02:00
Sander van Grieken
539197e8f3 fix up styling ServerConnectWizard 2022-07-07 18:28:00 +02:00
Sander van Grieken
c3bc42f434 add clipping for flickable 2022-07-07 18:28:00 +02:00
Sander van Grieken
d49b168389 wrap potentially large pages in a flickable, for small form factors 2022-07-07 18:28:00 +02:00
Sander van Grieken
48d47b008e move seed text component to its own type 2022-07-07 18:28:00 +02:00
Sander van Grieken
5d5204db1e wizard styling, infotext component, add some boilerplate for existing seed 2022-07-07 18:28:00 +02:00
Sander van Grieken
07452a6a7a seed generation can take some time, do it in a background thread and
show a busy indicator while we wait
2022-07-07 18:28:00 +02:00
Sander van Grieken
4cae116ad8 create wallet at end of new wallet wizard 2022-07-07 18:28:00 +02:00