Prior to this commit, a `StatusMessage` can hold only a single
`messageImage`.
There will be scenarios where messages can have multiple attachments.
This is the case when importing messages from discord.
Hence, this commit introduces a new `messageAttachments` property which
is a whitespace separated list of attachment URLs (very analogous to the
already existing `linkUrls` property).
For now, we can safely assume these URLs will resolve to image content.
In future versions however, we might want to support additional content
types to handle any byte stream.
We will then change `messageAttachments` from `string` to a list model
that holds `attachment`s where we also have access to its `contentType`.
This will allow us to decide at runtime which component should be used
to view/play the attachment.
- fix evaluating "Today" and "Yesterday"; can't just compare the two Date
objects, the timestamp will always differ so need to compare
year/month/day only
- best attempt to have the month translated, and year added if they
differ (until Qt6 at least, left a TODO)
Closes#843
`StatusBaseButton` comes with a `MouseArea` that is disabled when the
button is set to being disabled. Prior to this commit it's *also* disabled
when the button is in `loading` state.
This makes sense because a button that is in `loading` state shouldn't
not emit any click signals or trigger hover indications.
There's a scenario though in which we want render a tooltip on top of
the button which is in `loading` state. For the tooltip to show, the
`MouseArea` of the button needs to be enabled.
Hence, this commit adjust `StatusBaseButton`'s behaviour to *not*
disable the `MouseArea` when it's `loading`. Mouse events are already
prevented via the `loading` flag. So the only thing left to do is to
ensure the button doesn't trigger any hover indication when in `loading`
state.
This is analogue to `profileClickable` available on `StatusMessage`,
preventing users to activate a reply-to-message's profile avatar.
At the time of this commit, this is only the case for imported messages.
So we can derive that, if `StatusMessage.profileClickable` is false, then
`StatusMessageReply.profileClickable` is also false.
Hence, we don't need to expose this property to higher level APIs.
- fix the control's width (don't have to be explicit, the QQC2 Control
takes care of calculating the implicitWidth/Height automatically based on
contents)
- while at it, fix the metrics to be able to support RTL
languages too (it was off for Arabic)
- some smaller cleanups too
- Created StatusMainLayout to be used as the apps' main
layout
- Created StatusSectionLayout to be used for all sections as
their base
- Created StatusToolBar as part of StatusAppLayout with
standard component the ActivityButton and posibility to
add custom implementation components
Needed for https://github.com/status-im/status-desktop/issues/6635
This property allows for enabling/disabling whether or not the profile
picture and display name of a message is clickable and also dictates the
cursor type accordingly.
The reason this is being introduced is that, with imported messages from
other systems (e.g. discord, telegram etc), we don't want the user to
trigger the popup menu for more profile information because we don't
know any profile information of messages coming from such systems.
Such messages are signed by the community.
Closes https://github.com/status-im/status-desktop/issues/6680
This is a property that allows for adding information about the origin
of a message (e.g. "Imported from discord").
This will most likely be only useful for messages that have been
imported from any other platform.
Because importing from other platforms requires those message to be
signed by a Status Account, it's undesirable to render the public key of
the account that signed imported messages.
Hence, when there's a `messageOriginInfo`, we don't render the elided
public key.
The culprit here is at the very bottom, in StatusListItem: the toplevel
item was a MouseArea handling the clicks and this causes problems as any
extra buttons placed on top of it get their mouseClick events delivered
in wrong order (after StatusListItem). Fix this by having a MouseArea
handling click events behind the actual toplevel item as a last resort,
catch all handler plus the actual "sensor" being just a MouseArea that
handles merely the hover events
- drop unneeded onPressed/onReleased handlers in StatusChatListCategoryItem
- fix some warnings (typos, unreachable code, shadowed variables)
Fixes: #6733
Scope was to validate why StatusChatListCategoryItem miss behaves when
used in StatusChatListCategory.
On its own all the events works fine, as it can be seen by monitoring
the click events for each item (title, item and buttons).
However, inside StatusChatListCategory the mouse events are overlapped and
button events trigger also for the item. Tried obvious fiexes like
disabling steal of mouse events from buttons but this break the hovering
effect.
Updates: #6733
Fix by disabling layering, leftover from the previous approach of not
using Canvas.
Also investigate TODO regarding artefacts workaround and implement
a proper approach
Fixes: #6640
* fix(StatusAccountSelector): Refactored and reimplemented using `StatusComboBox`
* fix(StatusAssetSelector): Refactored and reimplemented using `StatusComboBox`
* fix(StatusColorSelector): Reimplemented using `StatusComboBox`
* fix(StatusCardPage): Replaced `StatusSelect` with `StatusComboBox`
* fix(StatusSelect): Expose a property to make arrow in the select item visible/invisible
* chore: Remove StatusAssetSelector from StatusQ as its base component StatusSelect is enough to build this further on desktop side.
This component also has dependecy on BE and hence should be moved out.
BREAKING CHANGE:
New `resetSearchLocationClicked` signal introduced.
Click on `X` button is emitting `resetSearchLocationClicked` signal and
lets a component which is using this one to decide what to do instead just
reseting search selection locally to this component.
Needed for https://github.com/status-im/status-desktop/issues/6551
* chore: Remove StatusAssetSelector from StatusQ as its base component StatusSelect is enough to build this further on desktop side.
This component also has dependecy on BE and hence should be moved out.
BREAKING CHANGE:
* fix(StatusSelect): Expose a property to make arrow in the select item visible/invisible
- Resolved binding loops in StatusInput
- Replaced all instances of StatusBaseinput
with StatusInput
- Cleaned up min/max height properties
- Fixed total height calculation
Needed for https://github.com/status-im/status-desktop/issues/6358
- cmake is superior to qmake (e.g. linking custom libraries)
- maintaining two build system generators is costly
iterates: status-im/status-desktop#6510
Component refactor to have a clean and easy-to-read code.
Unnecessary stuff removed.
BREAKING CHANGES: Removed unnecessary properties since the parent already has them.
Needed for status-im/status-desktop#6428
- set the default icon background color to "transparent"; otherwise it
would be black when unset
- set the popup default size to 560x122 (as designed)
- add placeholder for the search field
- correct the font and icon sizes, spacing and margins according to
design
- fix some warnings
add a possibility to override the font size for the contentItem's
StatusBaseText
otherwise it's impossible to do stuff like:
```
StatusCheckBox {
font.pixelSize: 15
}
```¨
1. Fix the issue of floating buttons having incorrect color in Dark theme
2. Added balances param in StatusAssetSelector. ideally should be removed in another task as it is not the correct place for business logic
* Include auto generated object names for all Icons.
This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274
* Include auto generated object names for all Icons.
This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274
* Include auto generated object names for all Icons.
This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274
* refactor(isContact): rename isMutualContact to isContact
BREAKING CHANGE: isMutualContact is replaced by isContact anywhere it was used
* fix(StatusStackModal): init the next/finish buttons
call `updateRightButtons()` also on creation to correctly initialize the
Next and Finish buttons in derived classes, when one overrrides these
can be seen in the Backup Seed dialog where the Next button is not
enabled even though all 3 boxes are checked
* feat(StatusFontSettings): Add StatusFontSettings component to change StatusMenuItems font attributes (#749)
Required by #6090
* fix(StatusPinInput): `forceFocus` function exposed
* fix(StatusTagSelector): corrected font size in to label
Needed for https://github.com/status-im/status-desktop/issues/6349
* fix(StatusActivityCenterButton): fixed actvity icon position (#763)
Closes https://github.com/status-im/status-desktop/issues/6350
* Include auto generated object names for all Icons.
This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274
* Include auto generated object names for all Icons.
This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274
* Include auto generated object names for all Icons.
This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274
Co-authored-by: Jonathan Rainville <rainville.jonathan@gmail.com>
Co-authored-by: Lukáš Tinkl <lukast@status.im>
Co-authored-by: Michał Iskierko <61889657+endulab@users.noreply.github.com>
Co-authored-by: Sale Djenic <aleksandardjenic@status.im>
Co-authored-by: Alexandra Betouni <31625338+alexandraB99@users.noreply.github.com>
call `updateRightButtons()` also on creation to correctly initialize the
Next and Finish buttons in derived classes, when one overrrides these
can be seen in the Backup Seed dialog where the Next button is not
enabled even though all 3 boxes are checked
both StatusChatList and StatusChatListItem have the same hardcoded width
of 288, so if we want to make the former smaller, StatusChatListItem has
to obey that, otherwise it's cut on its right side in status-desktop
Status Desktop's new designs have a smaller width (272), this fix is
needed for status-im/status-desktop#6343
- set the Image's sourceSize only if it's an SVG, otherwise it is
rendered blurry
- remove antialiasing/mipmap; it's not the correct fix, doesn't really
improve the visual quality for smallish items like icons and just causes
memory/GPU overhead
Similar to what we did in status desktop under
d0a26a326e
- since Qt 5.xy, hover is not enabled by default for QQC2, so enable it
unconditionally as we are a desktop app anyway
- this fixes several hover effects being broken, mostly for builtin
components like MenuItem and some buttons (eg. the leftmost NavBar)
where we haven't enabled those with `hoverEnabled: true` explicitely
since most of the compilation time is spent on creating the QRC bundle
and the resulting binary is quite huge, advice the `rcc` compiler to add
support for "big resources"
(cf https://doc.qt.io/qt-6/resources.html#embedding-large-files)
Also pass the env $LDFLAGS to qmake (to be able to link e.g. with mold,
which again greatly reduces the time to link the binary)
this leads to 6-10x faster time when recompiling
(Linux, gcc 12.1.1, mold 1.3.0)
BEFORE:
Clean build:
real 0m57,256s
user 1m25,869s
sys 0m40,963s
Incremental build, one file touched:
real 0m54,323s
user 0m54,012s
sys 0m2,934s
AFTER:
Clean build:
real 0m7,276s
user 0m21,001s
sys 0m37,256s
Incremental build, one file touched:
real 0m5,569s
user 0m4,850s
sys 0m0,840s
- Added community banner.
- Added community restrictions / private.
- Modified card background shape.
- Modified logo shape and position.
- Modified text position and size.
- Modified `loading state` card.
- Added `DropShadow` effect.
- Added new icons.
- Added new community images and updated model.
- Added numbers format function.
- Added following new properties: `banner`,`activeUsers` `communityColor`, `isPrivate` and `tokenLogo`.
Closes#692
- Different tag color depending if the entry `isReadonly` or not.
- Tag disabled if the entry `isReadonly`.
- Possibility to show icon if entry contains the proper info.
- Added property `orderByReadonly` to position `isReadonly` entries in the left.
Updated sandbox project examples according to new tag updates.
Closes#694
- Added loader in right component position and removed `StatusChatInfoButton` specific.
- Updated sandbox and added new example in Layouts with another different component than the `StatusChatInfoButton`.
BREAKING CHANGES:
The toolbar now expects a component to be loaded. The previous `StatusChatInfoButton` component has been removed and needs to be passed as a component from outside whenever needed.
Breaking changes in `desktop` will be addressed in: https://github.com/status-im/status-desktop/pull/5823
It includes logo, title, community members, description, loaded, community id, popularity, tags row (that must be replaced to a new StatusQ component `StatusListItemTagRow`.
It also contains `locale` property used to decide the member's number format.
Added loading card.
Added Community Card page (components test) and view (demo app) in sandbox.
Added component documentation.
Part of task: https://github.com/status-im/status-desktop/issues/4936
In case you're dynamically change source image and image width and height
are way bigger than the rounded image component width and height, resizing
was not done correctly.
update
update
The click handler used inside the component broke in one of the latest
changes done in `StatusListItem` where it expects two arguments being
passed to its click handler.
This commit fixes it by supplying all needed arguments (where `itemId`
is always `''` unless set differently)
The problem was that if the clicked word (or tabbed) was not alone in the suggestion list, the done signal was not called. Now it is always called when clicking on using tab or enter.
Issues
- The slider only handle mouse events in its own control space.
- In oder to use the entire area it needs to be centered.
Fixes
- Center the content vertically (handle and slider bar)
- Height and implicitHeight defaults to heigh of the handle
- Add note to create awareness about the mouse handling requirements
Currently only fit image is supported as minimum limit
This change sdds option to fill crop window with image as
minimum zoom which is required by status-go crop function
When button changed from loading to their normal shape it kept the width of the loader as it was visible in the row component.
It has been added a binding between loader `visible` property and root `loading` property that fixes the issue with the width.
Also, removed some `break` leftovers.
Fixes#5606 --> https://github.com/status-im/status-desktop/issues/5606
- `open` property set to `true` by default
- `duration` property added (if set to anything greater than 0, will trigger
close toast signal after `duration` milliseconds)
- `close` signal is now emitted once animation gets completed
New QML component StatusQ.Components.StatusImageCropPanel
that extends on StatusImageCrop with simper interface and extra features
Features:
- Minimizes drawing with Canvas to the crop window
- Adds user interactions: pan, zoom
- Zoom slider for zooming, beside the mouse scroll action
- Optional checker pattern for background for the user to have a visual feedback on the transparent areas or image margins
fixes: #5401
updates: #5118
New QML control StatusQ.Controls.StatusImageCrop allows user to crop an image for avatar/banner purpuses
Features:
- Support rectangular and elliptical crop windows
- Transparency for the wall
- Controlling the crop window in image coordinates using cropRect
- The image support is based on `Image`
- Limits the
fixes: #5401
Disabled uncheck option if component is configured as single selection mode.
Added binding to reset searcher input text when picker is closed.
BREAKING CHANGE: Renamed `searchText` property for `placeholderSearchText` to control placeholder text in searcher and added / used existing `searchText` property to control searcher input text.
Added property `textPixelSize` to be configurable in `StatusPickerButton`.
Added signal `itemPickerChanged` to be directly notified when an item changes its selected property value.
Updated `selected` property properly in `StatusListPicker`.
Added new property `enableSelectableItem` to highlight an item when hovering.
Some documentation improvements.
It adds the `StatusItemPicker` control and `StatusListPicker` component and its corresponding documentation.
The new selector component is composed by a `StatusButtonPicker` and a drop-down list.
It adds sections in `ListView` by using `category` model property.
It incorporates a searcher in header.
The selector type can be customised as a `StatusRadioButton` or a `StatusCheckbox`.
It adds dynamic selection mechanism.
It adds a dynamic text fit between `name` and `shortName` text components.
It adds a specific page in `sandbox` and some models to play with that.
It extends `StatusPickerButton` to allow more than one type.
Closes#563
* feat(StatusSeedPhraseInput): exposed touch/keys pressed events
Exposed keys.onPressed signal, mouse on clicked signal
as well as tabNavItem to be set in KeyNavigation.tab
when needed
Needed for task https://github.com/status-im/status-desktop/issues/4955
* feat(StatusListItem): Added new tags inline in the StatusListItem (#607)
Co-authored-by: Khushboo-dev-cpp <60327365+Khushboo-dev-cpp@users.noreply.github.com>
* feat: Add emoji support
1. StatusChatListItem (only updated parts already done by Jo)
2. StatusListItem
3. StatusInput
* feat(StatusColorSelectorGrid): Added new widget for color selection as needed in wallet
* fix(StatusInput): on reset, valid should be set to true else error mode is shown even though the user hasnt entered a value
* fix(StatusLetterIdenticon): Removed the clicked event out from the LetterIdenticon and added it to the StatusBaseInput as other places that use the letterIdenticon dont need the mouse area is not needed
Makes it possible disable the propagation of the mouse event when it's not wanted, for example in the search popup, where if the user clicks the title, we want to show the profile popup, but not navigate to the channel
Moved `remove` function below remove contact signal
also removed online status badge from CreateChatView
Fixed as well name tags to be adapting on parent's
width and scrolling the list to the end when this is
bigger than the available width. Switcehd to use
nameCountLimit property where needed
It creates `StatusPinInput` control that allows customzing its circle diameter, circle spacing and pin length. It contains a `TextInput` object that will provide the component, input text management like validation rules.
It incorporates a blinking animation when the control is focused and feedback (mouse shape changed) when hovering it.
It adds new page in sandbox to play with `StatusPinInput` control.
It adds component documentation.
Also it creates 2 new `StatusValidator` controls with their corresponding documentation:
- `StatusRegularExpressionValidator` which wraps a QML type `RegularExpressionValidator`.
- `StatusIntValidator` which wraps a QML type `IntValidator`.
Closes#524
Created new control `StatusIdenticonRing` and used in `StatusSmartIdenticon` component.
Added property assignments in sandbox models to display the `StatusIdenticonRing` when needed.
Added first documentation approach for `StatusIdenticonRing` and `StatusIdenticonRingSettings`.
Closes#517
Create `StatusContactVerificationIcons` row component.
Refactor in `StatusMemberListItem`. It now uses `StatusContactVerificationIcons` component.
Refactor in `StatusListItem`. It now contains a Loader for dynamically decide if a row icons component is defined aside the title.
Refactor in `StatusMessageHeader` and `StatusMessage`. They now use `StatusContactVerificationIcons` component.
Closes#542
BREAKING CHANGES:
Removed `titleIcon1Visible` and `titleIcon1Visible` from `StatusListItem`.
Removed `ContactType` enumeration in `StatusMessage`. Now, contact verification type is managed by enum `TrustedType` in `StatusContactVerificationIcons` component.
To generate docs, from doc folder run
/path/to/Qt/installation/bin/qdoc statusq.qdocconf
A folder named "html" will be generated under doc,
open the statusq-index.html to get to the home page.
Fixed alignment when results are being filtered.
If the x position that the popup should be aligned
goes off the screen, the popup appears back on
position 0. Also fixed result list item was not
vertically centered.