Commit Graph

69 Commits

Author SHA1 Message Date
tomFlowee 6667ea3f37 Remove unneeded semicolons 2026-03-14 21:14:42 +01:00
tomFlowee 876120f3f7 Make comment copying declarative
The functional version didn't cover the comment needing to be copied
when the payment went through on instant pay.
2026-02-06 11:55:09 +01:00
tomFlowee 02e940bfd2 New feature; prefer BCH input in payments setting.
This adds a setting in the mobile client where the user to select to
prefer to start inputting the BCH value on payments (that require manual
input of price).
The default is to start with the user selected fiat value.
2025-09-23 00:13:28 +02:00
tomFlowee 4fff156631 Make more GUIs to use screenInsets
For Page inhering screens (BroadcastFeedback/UnlockApplication)
This changes the Page.hideHeader to now act like a full screen,
removing all insets from the Page object when enabled.
The insets are then re-added on the child pages, but
without affecting the background fields, so they cover the insets.

UnlockApplication is a simply full screen widget, we added the
insets to it too.
2025-09-05 12:44:35 +02:00
tomFlowee decee30dd5 Bugfixes and re-enable creating repeat payment
This fixes a bunch of little issues and possible issues, including the
ability to swipe horizontal the main transaction view before we have a
second tab to scroll to.

This also re-enables the adding of the action that turns a payment into
a repeat payment. Currently our only way to create them.
A bit hidden, but we expect that in future other methods will become
available that make more sense.
2025-08-13 16:37:58 +02:00
tomFlowee 36db99fb08 Disable creation of repeating payments for now.
To allow a bugfix release to be sent, lets remove the one action
that can open the entire path to repeating payments for now.
Allowing more time to be used for actually making repeat payments
first public release more smooth.
2025-07-12 16:08:54 +02:00
tomFlowee e0b3bbebd5 Add default comment 2025-07-10 16:31:23 +02:00
tomFlowee dd0c0a81e7 Make tab bar on Home screen optional. 2025-07-10 16:31:23 +02:00
tomFlowee b455ed01a0 Add a context menu to pay screen for a planned payment 2025-07-10 16:31:23 +02:00
tomFlowee dfabcde813 Use Basic QQ Controls theme
The non-themed import basically is just a proxy using some
auto-detection to find out which theme to use.
As the app only uses the basic theme, this is what we'll import.
2025-06-19 15:09:36 +02:00
tomFlowee b42c5c3aaf Fix regression; on instapay
InstaPay should not be enabled when the user is supposed to type their
own amount.
2025-05-20 20:44:58 +02:00
tomFlowee 872e37b572 Make notes properties more declarative
This changes the notes property to be only set by the user of the
BroadcastFeedback.qml, and not from inside anymore which could break the
property binding causing strange things to happen.
2025-03-16 22:14:20 +01:00
tomFlowee 31e6dea3fd Fix scanning an unsupported QR causing a problem 2025-03-03 16:18:15 +01:00
tomFlowee 3ee2663241 Make broadcastfeedback work on instaPay payments too. 2025-02-17 16:23:24 +01:00
tomFlowee c4cea6ce61 Improve the BroadcastFeedback page 2025-02-04 22:33:08 +01:00
tomFlowee 30ccadb026 Unify the broadcast feedback screen.
This avoids duplication in the send-sweep module.
2025-02-04 21:20:35 +01:00
tomFlowee e200766dda Split camera and intent out of the handling pages
In the send-sweep module as well as in the PayWithQR this removes
the UserIntent handling and instead moves that to the main.qml
exclusively.
Additionally in the send-sweep module the camera work is split
into its own page, like in the other parts of the app. This helps
us avoiding hacks when we want the main functionality without the
camera.

This is the last of the series of reworks, we should have all
former functionality working again.
2024-12-23 18:36:36 +01:00
tomFlowee 3800093643 Rework 'Send' page. Part 1.
The initial design has done well for over 2 years, but problems
are starting to show.

This does a bit of cleanup in the UX and many cleanups in the
underlying architecture that were the result of those UX choices.

We remove the clipboard (paste) concept from the camera pipeline
completely and simply make it a new top-level button "paste" on the
send page. This helps discovery AND helps architecture!

The both workflows now also become 2 stage affairs, when the button
is pressed we open a page that does the scanning or pasting and then
introspects the actual data in order to redirect to the right page.
This means that we auto-detect if the scanned item is an address or
a private key or whatever, and handle it appropriately without needing
any user interaction.
2024-12-22 14:56:14 +01:00
tomFlowee 7e60f1fdea Refactor Intent: disconnect from app lifetime
The idea of using Flowee Pay to open a payment screen, or a sweep
screen, was so far married to the executable lifetime due to it being
passed as a command line argument.
This does not reflect reality, on neither desktop nor on mobile as
multi-tasking is possible and we should allow that.

As a result the new object "Intent" has been introduced with the
usecase specific properties. Setting those properties at any time
during the lifetime of the app now pushes the correct page to the
stack on mobile. Desktop is in need of more love in this department.
2024-10-27 21:54:48 +01:00
tomFlowee 5a729b4da2 Ensure that the feedback instantly opens
This way we don't depend on the backend, but the actual user interaction
is the one that starts the process.
2024-10-14 20:09:43 +02:00
tomFlowee 0ecb7521ad Make AccountSelectorWidget reusable without a Payment 2024-10-05 21:30:39 +02:00
tomFlowee 6312a468af Improve the entry of pin and numbers. 2024-02-14 00:02:53 +01:00
tomFlowee 6f9f17a46b Make scanning simple QRs better.
This specifically allows pasting and scanning of bitcoincash addresses
without the 'bitcoincash' prefix.
Additionally this cleans up the QRScanner API a little and merges two
methods.

Last, at popular request, this makes showing the address on the
confirmation screen default to be on.
This allows people to actually verify the address they pay to.

Except when paying to a BIP70 payment because that is practically
speaking a system that avoids talking about addresses in the first
place. No point in trying to verify the actual address THERE.
2023-12-22 19:25:16 +01:00
tomFlowee d976ebbb59 Set focus properly after scanning.
In the case where there is no specific input needed, because the amounts
were all specified, we still need to set the focus to the page because
otherwise 'back' / 'esc' don't behave correctly.
2023-11-06 17:17:18 +01:00
tomFlowee 1deccd9226 Make fiat mode an actual bool on BitcoinValue
The CPP now does more of the (heavy) lifting and the UI layer can
ignore
most of the details with regards to there being digits behind the
separator for fiat at all.

The internal change is that the fiat based values are always processed
in cents, even if the cents are not displayed. This solves incorrect
display and generally removes special cases.
2023-10-18 11:43:23 +02:00
tomFlowee c0598d2f88 Fix interaction with this screen.
A Flickable seems to eat mouse clicks by default, so even if there was
no warnings it would stop allowing any interaction with the screen.
2023-09-06 16:21:09 +02:00
tomFlowee 02288299fc Improve BIP activation on startup
For desktop we now properly support starting a payment when
the user clicks on a bitcoincash link in a browser.

For Android the activation logic _should_ work, except that the
Android specific way has yet to be tied to our app.
2023-09-05 20:45:32 +02:00
tomFlowee 69e0fe8869 Finish up BIP70 feature
Squash of 12 commits, this makes the UX actually useful and
we detect errors and show errors and warnings to the user.
This also adds an 'editable' bool to OutputDetail in order to
disable editing of a payment request address.
Additionally, this introduces the ability for a Payment to carry
a raw script instead of an address. So op-return or more complex
payment requests will be sent just fine.

Fun fact is that our broadcast is INV/SendData, which is two
roundtrips and thus slow, which is needed to be sure we get proper
rejection messages.
The sending of the transaction via BIP70 causes the network to
already know about the tx because the server we send it to has
likely much better Internet than we do.
So confirmation from the payment provider is used to show success
instead of the normal way.
2023-09-05 13:38:24 +02:00
tomFlowee bc459f74d5 PaymentProtocol abstraction
The PaymentProtcol class now handles the pasting of a payment uri,
like bip21.

Additionally this adds the feature where we pass in the payment uri on
the commandline which then results in an auto-opened payment screen.
2023-08-30 23:46:00 +02:00
tomFlowee b671dfc3a7 Allow showing address in more cases.
The QR scan page now also allows showing the destination address
while the number keypad is up, being smarter with the layout of
the various lines in order to fit the important info on screen.

Additionally we require the user to first enable the 'edit amount'
option before we make available the option to 'send all'.
2023-08-30 12:50:40 +02:00
tomFlowee bff9cd5dc2 Introduce app-level password feature and more.
We already allowed individual wallets to get PIN-to-Open/PIN-to-Pay
but that is too advanced for most users. Not to mention that encrypted
private keys means a slower payment process and certain types of
features become impossible. Like auto-invoicing (incasso).

The gap, for mobile, is a simple not-encrypting password on startup
of the app which is likely what 80% of the privacy / security minded
people on mibile will be more than happy with.

This adds this mode and additionally streamlines the encrypted modes
of wallets.
2023-07-04 18:39:16 +02:00
tomFlowee 049d735a53 Add decrypt of PinToPay wallet in mobile
this also changes the API propertes that handle encryption details a
little. Making them faster and the meaning follows the logical
conclusion of the naming better.

Specifically:

when needsPinToOpen would return true, now needsPinToPay will also
always return true.
2023-06-30 23:18:31 +02:00
tomFlowee 8db23ba624 Provide a screen to unlock encrypted wallets.
This detects that the currently selected wallet is fully encryted and if
it is, it shows a password request page on top of the current screen.
The default setup aims to have people type a PIN in numbers to unlock
the wallet, but we also provide a way to make it use a textual password
instead.
2023-06-27 20:39:11 +02:00
tomFlowee 973fc94950 when paste is used turn instaPay off
clipboards based addresses are a lot less secure, physically, than
scanning a QR.
So the user really should validate the payment and thus we turn off
instaPay in those cases.
2023-06-11 18:10:06 +02:00
tomFlowee c84af22bc0 Add feedback on incorrect QR.
The scanner doesn't validate the QR, but the Payment object does. So,
verify the result after setting the url on the Payment object and raise
a dialog when the address did not work.
2023-06-05 18:12:29 +02:00
tomFlowee 752cc9b68a Respect amount of incoming payment request.
A payment request, for instance a QR code, which includes an amount to
be paid is expected to not change the to-be-paid amount, uses being
dropped
in the price editing UI is therefore a bit weird. Almost an
anti-pattern.

This honors that concept and when the price is included in the scanned
QR, we change the UI layout to removed the editing widgets and show
static display widgets instead.

This also adds a header menu item to edit the amount to be paid and
get back to the old UI.
Additionally, a new UI is added to show the address we are about to pay
to, likewise reachable from the header menu.
2023-05-31 15:20:11 +02:00
tomFlowee 7806914fc3 Various small fixes and UX improvements. 2023-05-18 21:52:51 +02:00
tomFlowee 4c96b5ee44 Make numerickeyboard have a static height for keys.
This makes the layout look more square and not so cramped.
Make sure that the layouts of the payment pages still fit at the same
time.
2023-05-17 23:26:54 +02:00
tomFlowee 38345aba5a Further design the InstaPay dataset
This is essentially the backend work for the instapay setup.
GUI still needs to be done.
2023-05-16 20:16:12 +02:00
tomFlowee 09b03faab7 Make sure that the hamburger menu is removed on broadcast
We now make sure that the menu accessible from the header is only
there when we are actually on the page where it is relevant.
2023-03-13 18:17:23 +01:00
tomFlowee b133c8fec3 Minor UX fixes 2023-03-13 18:17:23 +01:00
tomFlowee 2a03a3efa6 Re-enable the action.
After moving the AccountSelectorWidget to its own file, the
link to the action was broken. This re-establishes that.
2023-03-13 16:58:05 +01:00
tomFlowee 76b79a1c0a Rename AccountSelector to {}Popup
Following the pattern of ending with what it is.
We now have Widget and Popup and Page.

The idea is that the widgets and popups are re-usable.
2023-03-13 12:14:23 +01:00
tomFlowee 6d036b0721 Move code to new file
Move the code that shows the account info and amount held in it into a
new file called AccountSelectorWidget
2023-03-13 12:14:23 +01:00
tomFlowee 400f16b636 Make loading and using of the PriceInputWidget work
We now can edit the payment details in our new 'build transaction'
screens.
2023-03-13 12:14:23 +01:00
tomFlowee 8bc4e70d09 Move widgets to their own files
Allow them to be re-used.
2023-03-11 22:59:10 +01:00
tomFlowee 8742108fd1 Use bool instead of list-length 2023-02-24 23:48:26 +01:00
tomFlowee c10510b139 Behave correctly on accounts lists
The GUI confused 'userowned' and having a list of wallets.
Basically we can just trust the backend 'accounts' list, making
the GUI eaier to understand.
2023-02-22 22:23:39 +01:00
tomFlowee 018a27ceb0 cleanup; use local palette
In Qt5 the palette was introduced in the Control object (part of Qt-
Quick-Controls-2).
In Qt6 this property was moved to the superclass 'Item'.

This means that we no longer need to refer to a control when using a
palette, every single thing in QtQuick is an Item, afterall.
2023-02-21 16:40:46 +01:00
tomFlowee a8ecf888d6 fix i18n string 2023-02-21 15:52:33 +01:00