Commit Graph

83 Commits

Author SHA1 Message Date
Lukáš Tinkl 9d9fb69e3b feat(StatusEmojiPopup): reimplement around C++ EmojiModel
- the new C++ EmojiModel provides a simple wrapper around the existing
JSON to facilitate a faster access and to be able to search/filter in
QML using SFPM
- no more nested GridViews inside Repeaters
- get rid of emoji manipulation and search/filter using JavaScript
- included the C++ script to generate the emojiList.js
2024-09-03 10:19:54 +02:00
Michał Cieślak 9c4e1a8fe9 SubmodelProxyModel removed
Closes: #15825
2024-09-02 20:20:10 +02:00
Michał Cieślak 4ac9a9b305 copyImageToClipboardByUrl moved to ClipboardUtils 2024-08-29 15:46:17 +02:00
Michał Cieślak 7757f4e615 QClipboardProxy QML type renamed to ClipboardUtils
Additionally, copyTextToClipboard is renamed to setText, mimicking
QClipboard naming.
2024-08-29 15:46:17 +02:00
Michał Cieślak 781133238a ClipboardUtils: isValidImageUrl and isValidImageUrl excluded to UrlUtils 2024-08-29 15:46:17 +02:00
Michał Cieślak 9311ebe7fe QClipboardProxy renamed to ClipboardUtils 2024-08-29 15:46:17 +02:00
Lukáš Tinkl aae265123b feat(GenericValidator): expose locale name
- make it possible to configure the locale of the validator
- use the correct default decimal point in AmountValidator
- update/add the relevant tests for AmountToSendNew
2024-08-17 09:39:42 +02:00
Lukáš Tinkl 3c18ac0f7a feat(AboutViewPage): display the runtime Qt version in Settings/About
- it's easier to make sure and detect what users are using, esp. when
they report bugs
- with a clickable link to the release notes
2024-08-12 23:52:51 +02:00
Michał Cieślak baa1baa17f StatusQ/ConcatModel: flag added changing behavior on source model's reset
Closes: #15891
2024-08-01 10:52:22 +02:00
Stefan 98c18901e0 fix(dapps) Wallet Connect internet connection reestablishing issue
Add a new NetworkChecker QObject to StatusQ to be used in checking
internet connection status. This is used by the WebEngineLoader
to only allow loading of web pages when there is an active internet
to cover for a corner case on MacOS where the internet connection is
not reestablished if the WebEngineView was loaded without an active
internet connection.

Closes: #15598, #15806
2024-07-31 14:08:16 +02:00
Michał Cieślak 44d04bb514 StatusQ(ObjectProxyModel): const_cast removed from proxyObject method
Closes: #15744
2024-07-23 18:17:02 +02:00
Alex Jbanca 73bcacbfc0 chore(ModelEntry): Emit itemChanged event when the ModelEntry points to another model item
+ emit row changed after data is avaialble

to squash - modelEntry
2024-07-19 19:07:51 +03:00
Michał Cieślak 44808424a4 StatusQ: QValidator fully exposed to QML
Closes: #15581
2024-07-17 01:32:04 +02:00
Lukáš Tinkl 48d8846e29 chore: factor out and create new `SendRecipientInput` component
- some minor visual fixes (padding & clear button color)
- make it always paste plain text, eventhough the base component has to
stay RichText
- use it in SendModal->RecipientView
- add a storybook page
- added QML tests

Fixes #15252
2024-07-08 21:16:53 +02:00
Lukáš Tinkl 5d9c5d46fd feat(StringUtils): implement `plainText(htmlFragment)`
- converts an HTML fragment to plain text
- move the impl to C++ so that it can be used directly from QML too
2024-07-08 21:16:53 +02:00
Michał Cieślak d3d0080b2d feat(StatusQ): Generic attachd type for providing model count
Closes: #15374
2024-07-01 13:59:20 +02:00
Michał Cieślak a2b8eb333d feat(StatusQ): GroupingModel for grouping rows with the same key into
submodels

Closes: #12683
2024-06-28 17:35:41 +02:00
Lukáš Tinkl a12a6a4894 feat[UI - Wallet Stability] Create generic/reusable assets listview component
TLDR: later this should form a basic building block for a new
TokenSelector picker component, potentially replacing the current
HoldingSelector* and TokenListView components (support for collectibles
TBD as part of https://github.com/status-im/status-desktop/issues/15121)

- create reusable `TokenSelectorAssetDelegate` and `TokenSelectorView`
- add corresponding SB page, showcasing the flow/integration and the
separation of concerns between the view, adaptor and delegate layers
- add QML testcase for TokenSelectorView
- don't display crypto symbol for token balances per chain tags
- update the stores and SB pages
- add some missing formatter functions to LocaleUtils and CurrenciesStore

Fixes #14716
2024-06-18 23:09:20 +02:00
Alex Jbanca f943440915 refactor(ProfileView): Adapt the profile view to the new `ContactDetails` component 2024-06-14 17:17:18 +03:00
Alex Jbanca f241928cc9 chore(ConcatModel): Forward setData to proxy models
This is a nice to have feature to allow ContactModel.sourceModel instances to implement setData
2024-06-14 17:17:18 +03:00
Michał Cieślak 793e82ac7e chore(SubmodelProxyModel): Marked as deprecated 2024-06-05 14:18:43 +02:00
Michał Cieślak 958dc7c5ba chore(ObjectProxyModel): Generalized version of SubmodelProxyModel
Closes: #14893
2024-06-05 14:18:43 +02:00
Michał Cieślak 2868d22a3a fix(ModelSyncedContainer): Proper disconnection from previously used model 2024-06-05 14:18:43 +02:00
Alex Jbanca 4e81f8f220
feat(StatusQ.Models): Adding SingleModelItemData helper component (#14891)
SingleModelItemData is a generic component that can provide a live object extract from an arbitrary QAbstractItemModel*
2024-06-04 13:08:52 +03:00
Michał Cieślak 2dfb61fe1c fix(SubmodelProxyModel): Proxy model made non-intrusive
Now SubmodelProxyModel doesn't affect source model therefore it's
possible to safely use multiple SubmodelProxyModels over the same source
model.

Closes: #14550
2024-05-27 12:03:17 +02:00
Michał Cieślak d9707091d3 feat(StatusQ): ModelSyncedContainer utility 2024-05-27 12:03:17 +02:00
Lukáš Tinkl 2537cdc2f2 fix(CommunityPortal): don't show PermissionsRow for free communities
- hide the permissions row and tokens when the community is free to join
- fix evaluating the `requirementsMet` property which affects the lock
icon state; that role was never part of the model
- add a helper C++ method `isTokenGatedCommunity`
- adjust the SB models, adding different variations of the
permissionsModel for the CommunitiesPortalLayoutPage

Fixes #14671
2024-05-13 16:21:07 +02:00
Michał Cieślak 587594f3b9 feat(StatusQ): General purpose js function-based aggregator
Closes: #14617
2024-05-13 15:54:03 +02:00
Michał Cieślak ae636ef5a7 fix(StatusQ/Aggregator): Proper recalculation on layout change removing rows
Closes: #14554
2024-05-13 15:53:00 +02:00
Michał Cieślak ed33f21828 fix(SubmodelProxyModel): model reset emitted properly when roles change
Closes: #14650
2024-05-13 11:12:09 +02:00
Lukáš Tinkl 523e0490fe fix(StatusWindow): fix changing the window state(s)
- since the window can be a combination of several states (e.g.
maximized + fullscreen + minimized), use the newer `windowStates()` to
track and toggle them
- call `makeStatusAppActive()` in all the identical codepaths (clicking
tray icon, activating a mac or win instance, running a second instance,
etc)
- fixes restoring the window to its previous state(s) when activating
from the tray or dock icon
- use some more standard keyboard shortcuts

Fixes #14132
2024-05-10 16:11:37 +02:00
Michał Cieślak 27c53f4154 feat(StatusQ/SubmodelProxyModel): Exposing roles computed per submodel to the top-level model
Closes: #14390
2024-05-07 16:26:44 +02:00
Lukáš Tinkl bbd0e71fd6 chore(StoryBook): add Colors page
- gives an overview of all the `Theme.palette.foo` colors
- the color name/code can be copied to clipboard
- light/dark variant supported via storybook's "Dark mode" switch
- integrated search (both the color name and value)
2024-04-23 17:11:49 +02:00
Michał Cieślak 5d4380e4d9 feat(StatusQ/ConcatModel): Proper handling of source models layout change
Whenever source model emits layoutAboutToBeChanged/layoutChanged,
persisten model are updated appropriately, also scenario when items are
removed is covered.

Closes: #14244
Closes: #14245
2024-04-12 11:05:08 +02:00
Michał Cieślak 0b47e6ff8a feat(StatusQ/LeftJoinModel): Add init check on componentComplete
Earier attempts to initialize proxy may fail bc left/right models
may be not ready when they are set. It may lead to a situation where
the model remains uninitialized and reporint 0 row count.
2024-04-05 14:58:06 +02:00
Michał Cieślak 0c34325841 feat(StatusQ/LeftJoinModel): Add possibility to explicitly define roles to be joined
The new property is added to allow indicating which roles from the right
model should be used. It prevents from unnecessary renamings.

Closes: #14298
2024-04-05 14:58:06 +02:00
Lukáš Tinkl 375de59cfa chore(SharedAddressesPermissionsPanel): optimize the speed
- don't use the expensive `ExpressionFoo` in SFPM, just use
`AnyOf/AllOf` combinations where possible
- in HoldingsSelectionModel, don't call the `getTokenByKey` twice to
construct the `text`, once is enough
- lastly, rewrite the JS helper `PermissionsHelpers.getTokenByKey` to
C++; this method gets called recursively way too often from many places

In the longterm, we should provide a specific C++ transformation model
for SharedAddressesPermissionsPanel to follow the UI requirements more
closely; that way we'd be able to fix the issues here for good

Fixes #14276
2024-04-04 16:59:26 +02:00
Michał Cieślak b91cf08066 feat(SharedAddressesAccountSelector): Support for collectibles in account's delegate tags
Closes: #14102
2024-04-02 12:18:36 +02:00
Lukáš Tinkl b191caaec6 feat: Add missing eligible to join tag in CommunityMembershipSetupDialog
- implement the eligibility check in C++, returning the highest possible
role the user would be allowed to join under
- enable/disable the "Share" button based on the above permissions check
- remove all the locally placed components, access teh popup only via
Global/Popups
- calculate the `accessType` internally based on the permissions present
- update the eligibility as the async check for permissions is finished
- fix the permissions panel background color
- partially revert the share/finish/cancel buttons behavior; it must be
one button due to StatusStackModal limitations
- fix some other minor UI issues or differences to current Figma designs
- adjust SB, add the possibility to play around with different
permission models

Fixes #14100
2024-03-29 16:11:59 +01:00
Alex Jbanca 3b17134451 fix(StatusTextMessage): Allow user to copy parts of a message containing URLs
The root cause of this issue is that the `TextEdit.text` was replaced on hover to add specific styling for the hovered state. As a result the selection was dropped.

To fix this I've moved the highlighted hyperlink style to the StatusSyntaxHighlighter.
2024-03-14 12:21:52 +02:00
Alex Jbanca 204bfb30b6 feat(WritableProxyModel): Add syncedRemoval flag to allow source to remove edited rows 2024-03-11 20:58:55 +02:00
Alex Jbanca 07ac4eb8a6 fix(StatusQ): Don't emit layoutChanged on source model reset in MovableModel
+ Update tests
2024-03-07 22:07:49 +02:00
Michał Cieślak 00af1d0e90 StatusQ(WritableProxyModel): Handling of layoutChanged/rowsMoved from source models fixed
Closes: #13601
2024-03-01 15:47:41 +02:00
Michał Cieślak 0497ecd82e StatusQ(LeftJoinModel): Handling of layoutChanged from source models fixed
Closes: #13683
2024-02-27 10:12:47 +02:00
Michał Cieślak 0d4e7bd458 StatusQ(MovableModel): layoutChanged handling fixed
Closes: #13602
2024-02-22 14:39:31 +01:00
Michał Cieślak 29c15a5bff feat(StatusQ): custom UndefinedFilter filter for filtering undefined role values
Generic filter for handling undefined values. This kind of filtering
cannot be done using ValueFilter. On the other hand using
FastExpressionFilter is much more costy in terms of performance
overhead.

Closes: #13638
2024-02-21 09:42:05 +01:00
Michał Cieślak b949fb7b3b StatusQ(MovableModel): Methods naming refactor, Storybook pages updated/improved 2024-02-21 09:42:05 +01:00
Michał Cieślak f747791f50 StatusQ(MovableModel): Add ability to restore and bypass original order of source model 2024-02-21 09:42:05 +01:00
Alex Jbanca 8a69f3bc63
fix(SeedPhrase): Fixing seed phrase validation (#13496)
* fix(SeedPhrase): Fixing seed phrase validation

1. Validate each word after the editing is finished
2. Fixing the seed phrase suggestions where the suggestions box was hidden behind other ui elements
3. Propagate editingFinished signal in StatusBaseInput, StatusInput, StatusSeedPhraseInput
4. Fixing undefined `mnemonicIndex` errors

* fix: Refactoring of SeedPhraseInputView

Remove duplicated code and use EnterSeedPhrase component

+ Added storybook page

* fix(Onboarding): Fixing seed phrase validation on windows

The seed phrase validation fails on windows due to the dictionary line endings

* chore(squish): Update e2e tests to the new enter seed phrase panel construction

* fix: Load english dictionary from local file using StringUtils
2024-02-14 15:50:14 +02:00
Alex Jbanca 9d4bc9466e chore(WritableProxyModel): Adding possibility to get the model changes 2024-02-07 19:54:47 +02:00