Commit Graph

32 Commits

Author SHA1 Message Date
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 26b48c5c49 Add Android shortcut: Scan QML
On Android an app can ship with (static) shortcuts. We use this feature
to allow the user to create a new icon which still starts Flowee Pay,
but it instantly opens the payment screen on the QR scanner.
2024-10-31 12:09:19 +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 0fc17ea5f8 Add bch-wif scheme support for mobile
This allows a user to click on a link in a browser with the bch-wif
scheme and we'll handle that with a sweep page on startup.

To avoid this being just-another-special case we introduce a new
module (read: plugin) concept that is a Start-screen type.
The idea is that we can have a generic handling of this type in
various parts of the app without it being specifically about the
wif handling.

Notice that it doesn't matter if the user has the module enabled,
which just operates the display of the menu option to start it manually.
2024-10-27 21:54:48 +01:00
tomFlowee 9efafda55d Reuse the QRScanner widget on desktop.
"Desktop" in most people's cases means laptop, of which many have
a camera. So why not allow the camera to be used to scan things?
2024-05-07 15:45:07 +02:00
tomFlowee d614ebe836 Fix warning. 2024-03-07 10:49:53 +01:00
tomFlowee a2560d98a7 Separate 'singleAccount' concept between UIs
The isSingleAccount property controls if the UI is simple or more
complex.
The single account setup doesn't show you that you have any concept on
differnt accounts at all. No account chooser etc.

On Desktop, however, we choose to always show the archived wallets
anyway. Even though its not in-your-face. Which makes the behavior
between those UIs slightly different.
The addition of the limitedArchiveView property is meant to
facilitate that.
2024-02-14 00:02:53 +01:00
tomFlowee 038cd72428 Re-work 'back' button behavior
Pressing 'Escape' or (android) back button is now more logical.
Closing the menu is new, going back to the 'main' tab as well.
This also fixes some odd behavior when using the back button while the
camera is active.

And last, when there is nothing more to back out of, on Android we end
up closing the application. This is what people expect on that platform.
2023-11-06 16:27:19 +01:00
tomFlowee 2600dd960c Remove stop 2023-10-29 15:59:12 +01:00
tomFlowee e67d5a1453 {Android} fetch phone dark-theme setting.
This calls Java code on Android through the Qt JNI bridge
in order to learn the phone-wide setting of dark-theme.

For new installs this will now follow the phone setting by default.
Add GuiSettings: dark mode option.
2023-10-28 12:18:11 +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 a56e762853 After hiding on Android for some minutes we lock again
The Android design is that you can "close" the app while it is not
actually killed. It stays frozen but in the background.
This makes Pay check the clock on 'wake up' and if 10 minutes has passed
it will lock again.
2023-07-06 11:23:08 +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 df717aa967 Set minimum size of mobile wallet.
This really only is relevent on desktop, though.
2023-05-17 14:28:24 +02:00
tomFlowee 47b4e1ea0a Synchronize the errorRed colors
This adds a errorRedBg 'background' color for a popup with normal white
text on top of it.
2023-04-18 21:54:43 +02:00
tomFlowee a11614a66f Continue adding functionality to the PayToOthers screen 2023-03-13 12:14:23 +01:00
tomFlowee e153e35d32 Avoid closing the app on pressing back too often 2023-02-22 22:23:39 +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 ab75be981e Add landing page
For all times we start with a completely empty Flowee Pay, show a
landing page which guides the user to create a new wallet or deposit
funds into the default wallet.
2023-02-09 18:25:10 +01:00
tomFlowee ebae4b6bcd Add gui-font-scaling config option.
Allow the user to change the font sizing of the GUI.
2022-12-15 12:37:21 +01:00
tomFlowee a0c4f9be7a Much improvement with the camera section.
This adds a prettty cutout screen and better feedback on the camera view
popping up.
We also make visible the scan overlay instantly, hiding out any other UI
that is hidden beneath it.

We correctly handle various odd issues with Qt / Android.

- the permissions request (QFuture) returned in a different thread, we
now move back to the main thread before doing any calls on the
multimedia objects.

- The popping up of the android permissions requestor actually makes the
app think its being made inactive. Now we no longer cancel the QR scan
request in such cases.
2022-12-14 14:21:56 +01:00
tomFlowee 324255c0ea Refactor camera support
After working on android and the qtmultimedia library for a week,
I have a much better understanding of what works and what doesn't.
The resulting design is thus presented. We will have one
CameraController class which refers to one overlay panel in QML
and in different places in the GUI objects based on QRScanner
can be created to initiate a scan.

This additionally moves the actual scanning out of the GUI thread
since blocking that is a no-no.

Now to move towards actually supporting scanning usecases.
2022-12-03 19:34:23 +01:00
tomFlowee a98efcbb1e Remove the mouse-touch feedback
It was neat, but probably not the best way to do it since this seems to
interfere with scrolling.
2022-11-23 16:07:17 +01:00
tomFlowee d8cfc9767d Provide a means to properly move keyboard input
As most of our app will be based on Pages pushed to the stack,
a simple structure to move focus forcefully to the new child
has been added.

Children would basically only need to mark the first item as
taking focus.
2022-11-23 10:35:31 +01:00
tomFlowee ef3498ee67 Only enable touch-feedback on Android
This approach works great for touch events, not so wonderful for mouse
events as it stops me being able to swipe on lists with the mouse.
So disable this on platforms that don't use touch primarily.
2022-11-21 14:11:55 +01:00
tomFlowee 7def5fd4e9 Make the account history tab mostly functional. 2022-11-18 21:53:31 +01:00
tomFlowee e426188f95 Boring GUI updates
Add tabbar icon, fix font usage, add basic history list. Show wallet
balance with the right label.
2022-11-18 13:43:04 +01:00
tomFlowee bb8a940fbf Continue implementing the UX design.
This adds account showing and selection.
Icons for the "night-theme" selector.
Improvements to the color set and a splashscreen.
2022-11-17 23:10:06 +01:00
tomFlowee e2ab48e816 Make the phone UI look the same as my Linux one.
We now hardcode the style and I needed to override the Label
in order to explicitly use the palette from the mainWindow. Not
sure why the one on Android behaved different than on Linux.
2022-11-15 15:19:35 +01:00
tomFlowee e2bea6a5af Start basic mobile GUI structure
On the mainscreen have some big tab-buttons for the main features
then we have a menu overlay which can hold various other screens
and features. Those screens will be placed on top of the main
tabbed screen using a stack-view which is common on touch-interfaces.
2022-11-15 11:38:28 +01:00
tomFlowee d384167445 Prepare for better shared-widgets setup
QML allows re-usable components, this makes the already created
list of widgets for Desktop easy to use for mobile as well.
2022-11-14 21:25:36 +01:00