The aim here is to tidy up the reply component and make it so it sizes automatically without any need to manually set widths or heights. This is achieved by putting the layout in a grid layout. The implicitwidth and height variables are also simplified meaning that the margins are no longer prone to being slightly off because the calculation didn't add up the margins and spacing right.
Also added here is a mime component which is used to provide a nicer representation for files, videos and audio in the reply because trying to put the full component in wouldn't look good.
This also fixes the situation in right to left mode where the layout now mirror properly and everything sits where it should.
New reply elements

Uses Matrix's preview API to generate embedded link previews.
Only title and description for now.

This commit adds the ability to set the master push rule and set push rules for individual rooms as per the matrix spec. See https://spec.matrix.org/v1.3/client-server-api/#push-rules.
The master push rule is just on/off and uses the existing notification setting in general setting to enable/disable the server default master push rule .m.rule.master.
For each room there is now a page in the room setting that allows the following to be set:
- Default
- All messages
- @mentions and keywords
- off
New room or override rules are added/removed to achieve this.
There is also functionality to check the master/room notification state whenever the setting menu is entered. This allows the status to be updated if changed in another client or get the initial state for a room as it isn't stored.
Note - There is currently no menu items in the room list for setting the room push rule settings. This will be added in a later commit, the aim is to focus on making sure the technical implementation is good for now.
Tells the user that the message could not be decrypted because the key
was not shared with the device. At the moment, this is technically not
completely correct, but it will be when libQuotient supports reading
encrypted messages
- ChatBar: Contains the main TextArea and standard buttons.
- Usually visible, but can be disabled when necessary.
- AttachmentPane: Contains an image when attaching an image and also a filename with mimetype icon.
- Has a toolbar to cancel the attachment or edit it if it's an image.
- Shown when there is an attachment.
- ReplyPane: Shows who you are replying to and the content of their message.
- Also shows edits and has a button to cancel replies/edits
- Shown when replying or editing
- CompletionMenu
- Now a vertical list using a QQC2.Popup
- Either a Pane or a Menu/Popup
- EmojiPickerPane
@teams/vdg
It turnout that using an QML Singleton was a bad idea, instead create a
qml object in the main component and refer to it in the rest of the
codebase.
This commit also simplify a bit the qml structure of the Menu and fix
some visual bugs.