Commit Graph

294 Commits

Author SHA1 Message Date
miruka
692749e72f Support video events, new media player 2019-09-17 16:30:04 -04:00
miruka
76ffdfd28a Fix HTile left/right click handling 2019-09-14 18:52:43 -04:00
miruka
c6395ff940 EventDelegate context menu, EventFile click
Improve/extend choosing the cursor shape, how context menu handles the
current hovered thing, and open link on EventFile click
2019-09-14 18:33:32 -04:00
miruka
38e781c9f7 Fix HButton/HTile focus and click 2019-09-14 17:39:17 -04:00
miruka
784cb3b19c Split HTileDelegate into HTile and HTileDelegate 2019-09-14 16:05:57 -04:00
miruka
0db34cc3c8 Add EventMediaLoader
Handles loading of URL previews and will handle all
matrix media messages types.
2019-09-14 00:36:19 -04:00
miruka
f6b2c59fdc Remove quadruple click message selection
A tripple click is too easily detected as a quadruple when the user
actually did a triple.
2019-09-12 20:17:43 -04:00
miruka
ebf6d36c01 Transparent black for hovered avatar background
Also add theme property to change it.
2019-09-12 20:04:46 -04:00
miruka
fcdd960779 Fix avatar tooltips 2019-09-12 19:54:31 -04:00
miruka
7313d6cf1d Remove debug print in HImage 2019-09-12 17:39:28 -04:00
miruka
0b60b2b5bc Add autoplay GIF setting 2019-09-12 17:32:48 -04:00
miruka
1f58cfeae8 Add GIF pause overlay 2019-09-12 17:27:26 -04:00
miruka
5192fe8b55 Click to play/pause animated image 2019-09-12 16:25:05 -04:00
miruka
125d1e24aa Support GIFs 2019-09-12 16:16:35 -04:00
miruka
2e3d21aa31 HToolTip: fix binding loop 2019-09-11 16:47:13 -04:00
miruka
0e6b6c830d Support inline HTML/links for room topic 2019-09-11 16:01:37 -04:00
miruka
e53f6ed292 Fix selection disappearing after delegates unload
Make delegates update their selection when they're loaded again.
2019-09-11 15:49:00 -04:00
miruka
d998b471f0 Fix text selection start drag delay 2019-09-11 15:25:57 -04:00
miruka
7c0bed79a9 ImportKeys/ExportKeys separate dialog componants 2019-09-09 14:42:58 -04:00
miruka
85bdbcf5be Move HBox stuff from HPopup to BoxPopup 2019-09-09 12:50:00 -04:00
miruka
38781502c6 HBox: make buttons a column if not enough width 2019-09-09 12:37:01 -04:00
miruka
035ab1add6 HMenu: Fix width calculation (padding) 2019-09-09 11:21:49 -04:00
miruka
d7fc0ad0b8 HButtonContent: Enable label eliding 2019-09-09 11:20:59 -04:00
miruka
c38cc9d3df Move popups to their own folder 2019-09-09 08:57:38 -04:00
miruka
3ef32b4c04 Use verb when possible instead of "OK" for buttons 2019-09-09 08:20:24 -04:00
miruka
9f8ac6ca9f Auto-focus OK only for ClearMessagesPopup 2019-09-09 08:16:05 -04:00
miruka
7f995c749f HPasswordPopup: enable OK if password not empty 2019-09-09 07:49:07 -04:00
miruka
e5893c5569 HBox: Add arrow keys navigation
Also rename enterButtonTarget to clickButtonOnEnter
2019-09-09 07:41:48 -04:00
miruka
7f89604789 button/checkbox: highlight on activeFocus
Not just tab-induced focus.
2019-09-09 07:19:06 -04:00
miruka
af17151c11 Fix shortcut focus issue? 2019-09-09 06:47:36 -04:00
miruka
6f7695ad22 HBoxPopup: split text into summary and details 2019-09-09 06:32:29 -04:00
miruka
9286f54cd5 Rename HOkCancelPopup to HBoxPopup 2019-09-09 06:25:08 -04:00
miruka
2611e86517 Confirmation popup to clear messages 2019-09-09 06:23:46 -04:00
miruka
d547df62fb Fix HPasswordPopup valid/wrong icon color 2019-09-08 12:19:40 -04:00
miruka
aae26672de Split HPasswordPopup into HPopup, HOkCancelPopup 2019-09-08 12:17:42 -04:00
miruka
a87f98fae0 Add key exporting to account settings 2019-09-07 19:17:32 -04:00
miruka
8113ba468d HTextField: remove ugly _tf property 2019-09-07 17:02:09 -04:00
miruka
31e1daa046 Set placeholder text color for text field and area 2019-09-07 17:00:12 -04:00
miruka
a6b154c207 Composer scrollbar: invisible unless really needed 2019-09-07 15:48:13 -04:00
miruka
cde0c15a68 Add full name/topic tooltip to room header 2019-09-07 14:14:04 -04:00
miruka
66871aefe6 Set a (max) content width for HToolTip 2019-09-07 14:00:01 -04:00
miruka
5674d0c7b7 Use a component to display image link previews 2019-09-06 23:34:40 -04:00
miruka
0651fbd100 Make page scrolling less slippery 2019-09-06 17:03:52 -04:00
miruka
14e01159c6 Increase max flick velocity for HListView 2019-09-06 16:51:26 -04:00
miruka
c35492ca62 Restore HListView scrollbar 2019-09-06 16:46:04 -04:00
miruka
164f09c939 Add theme property to control hovered avatar size 2019-09-06 16:14:39 -04:00
miruka
812fc3aff7 Background color for HMenu instead of transparent 2019-09-06 16:11:25 -04:00
miruka
e1f24657f1 Fix mouse wheel not working on eventList 2019-09-06 16:08:16 -04:00
miruka
01f8bc3d6c Add context menu to copy message link URLs 2019-09-06 15:07:19 -04:00
miruka
bf2004ed84 Don't deselect area text from label container 2019-09-06 15:07:19 -04:00
miruka
85aaf7bcce Don't copy combined invisible names 2019-09-06 15:07:19 -04:00
miruka
9936a7e2ee Fix ctrl-c behavior 2019-09-06 15:07:19 -04:00
miruka
5ce71834f9 Fix clicking a link breaking scroll shortcuts 2019-09-06 15:07:19 -04:00
miruka
24a976e3ee Fix clicking on eventList top/bot making it scroll 2019-09-06 15:06:35 -04:00
miruka
6a346264be Improve multiple clicks message selection
- Triple click selects the message body without date or name
- Quadruple click (yes) selects the entire message with name and date
- Quadruple click on the name label does the same
2019-09-06 15:06:35 -04:00
miruka
32fde57ba7 Make message display names selectable 2019-09-06 15:06:35 -04:00
miruka
b610a404af Clear selection if event list loses focus 2019-09-06 15:06:35 -04:00
miruka
522d078d7b Accept ctrl-c to copy selected messages 2019-09-06 15:06:35 -04:00
miruka
131a20e9c5 Add context menu to copy selected messages 2019-09-06 15:06:35 -04:00
miruka
016f76167f Initial implementation of message selection 2019-09-06 15:06:35 -04:00
miruka
f5cbbd0a44 Reduce needed width to show room times
Also remove excess spacing between the title and time
2019-09-06 14:04:18 -04:00
miruka
970b0c82d3 Disable long press to open context menu
Interferes with drag-scrolling for HTileDelegate
2019-09-02 19:35:18 -04:00
miruka
28d8721fe2 Fix HShortcutHandler not processing shortcuts 2019-08-31 15:34:05 -04:00
miruka
e506a70767 Fix random shortcuts getting triggered
Caused the "window bounces when typing text" bug
2019-08-30 19:06:42 -04:00
miruka
6953250e50 Adjust padding for Buttons, TextFields, TextAreas 2019-08-30 18:10:25 -04:00
miruka
a6aec2d5bf Fix HButton size on KDE 2019-08-30 17:37:13 -04:00
miruka
a40b274c7d Explicitely unset font.pointSize
Avoid warnings on desktop environments
2019-08-30 17:04:42 -04:00
miruka
aec83c66f3 Fix apply button loading on profile change 2019-08-30 11:42:01 -04:00
miruka
e1da7be253 Gray out disabled button icons 2019-08-28 18:32:16 -04:00
miruka
6cda69ad67 Restore icon colors 2019-08-28 18:21:13 -04:00
miruka
37e762d241 Remove hard-coded colors and cleanup SVG icons
Also remove old filled icons pack, and rename the "light-thin" pack to just
"thin".
2019-08-28 16:30:48 -04:00
miruka
18120f5216 Add HProgressBar component 2019-08-28 14:28:20 -04:00
miruka
3a5d8bff9e Remove HInteractiveRectangle and HRateLimiter 2019-08-28 12:02:53 -04:00
miruka
b1e1ea30d2 Rename HInterfaceBox component to HBox 2019-08-28 11:56:05 -04:00
miruka
7c3ed5ca14 Use HInterfaceBox for ImportExportKeys 2019-08-28 11:54:25 -04:00
miruka
f65c0176ba Better error handling and fixes for key import 2019-08-27 23:51:38 -04:00
miruka
97b1608bcb Ensure opacity/rotation of button icon is reset
After loading finished
2019-08-27 22:59:26 -04:00
miruka
560981a97e Remove uneeded HRectangle component 2019-08-27 22:46:31 -04:00
miruka
77dbc3a502 Fix accent and input colors 2019-08-27 22:44:41 -04:00
miruka
9b83b91d9d Remove unused HScalingBox component 2019-08-27 22:44:20 -04:00
miruka
ebfebbeae1 Improve import keys password popup 2019-08-27 22:43:57 -04:00
miruka
0a0e11e1f4 Rework the LoadingScreen and HBusyIndicator 2019-08-27 19:47:58 -04:00
miruka
6cb7589cca Loading icon for accounts until synced 2019-08-27 15:00:50 -04:00
miruka
0c0ede8b40 Disable buttons when they're loading 2019-08-27 14:21:10 -04:00
miruka
bf3847dd66 Animate button loading 2019-08-27 14:11:33 -04:00
miruka
9077ea3925 Fix timer setting current AccountsRoomList index 2019-08-23 10:53:54 -04:00
miruka
2ff65af6ab Prevent alt+letter from writting text in fields 2019-08-22 14:31:13 -04:00
miruka
a47351a5ad Adapt auto-repeat shortcuts to new system 2019-08-22 14:16:49 -04:00
miruka
8de26c11a1 HShortcutHandler & HShortcut components
Provide more powerful shortcuts handling than what's available with
QML's Shortcut component, notably being able to react differently to key
presses, releases and auto-repeats.
2019-08-22 13:03:26 -04:00
miruka
627a186700 Add tooltips to buttons and room invite button 2019-08-22 09:27:41 -04:00
miruka
6b64800ed7 Fix highlight not set when logging in new account 2019-08-21 17:55:27 -04:00
miruka
7331c1fa1c MenuItem: don't take space when not visible 2019-08-21 16:41:52 -04:00
miruka
26b01be23c Add accept invite to room context menu 2019-08-21 16:38:34 -04:00
miruka
076ff743ad Add forget to room context menu
Also show Leave only if not already left, and rename forget-room.svg to
room-forget.svg
2019-08-21 16:29:44 -04:00
miruka
437324bd64 Improve HMenu/HMenuItem style 2019-08-21 16:23:22 -04:00
miruka
ed96409645 Split HButton components, add HMenu/HMenuItem 2019-08-21 15:45:13 -04:00
miruka
6067c8ec96 Add room context menu with Leave/Decline invite 2019-08-21 14:58:57 -04:00
miruka
9332eadbbf Use hsluv instead of hsla for avatar colors 2019-08-21 12:35:55 -04:00
miruka
8ef3a6dc33 Fix expand icon size and startup highlight
Remove "hide hover highlight when keyboard pressed" feature, too hacky.
2019-08-21 06:02:00 -04:00
miruka
1f5b46c257 Merge HListView and HFixedListView components 2019-08-21 05:02:37 -04:00
miruka
6e3924ca4e Add ListView highlight color to theme 2019-08-21 04:58:53 -04:00
miruka
bd94cc3625 Fix button icon position 2019-08-21 04:52:34 -04:00
miruka
713aaf3635 Set padding for HCheckBox 2019-08-21 04:46:40 -04:00
miruka
bdf7a63e6f Increase sign in login method icons size 2019-08-21 04:43:37 -04:00
miruka
46e685847f Replace HInteractiveRectangle by HTiledelegate 2019-08-21 04:39:07 -04:00
miruka
4abf57c8d4 Make HCheckBox themable 2019-08-20 18:31:20 -04:00
miruka
e012cf6e31 Highlight HButton when tab-focused 2019-08-20 17:43:59 -04:00
miruka
ce128d5ab5 Refactor HButton 2019-08-20 17:41:24 -04:00
miruka
7e7852b51e Hide hover highlight when moving with keybinds 2019-08-20 14:39:37 -04:00
miruka
57b13131a0 Fix ListView transition bugs? 2019-08-19 20:50:14 -04:00
miruka
aba01d54e8 Rate-limit next/previous room activation 2019-08-19 18:17:59 -04:00
miruka
99bbe7f3ee Keep the highlighted ListView item centered 2019-08-19 14:46:40 -04:00
miruka
5e5a658173 Add keybinds to go to previous/next room 2019-08-19 13:09:05 -04:00
miruka
2865d86d19 Refactor SidePane ListView in a flat way
Also adjust some colors (accentBackground)

TODO: Repair Filter rooms field
2019-08-18 03:35:28 -04:00
miruka
3cc39210b4 Work in progress keybard sidepane navigation 2019-08-17 20:29:56 -04:00
miruka
1663b166c7 HInteractiveRectangle: add missing pressed effect 2019-08-17 17:05:52 -04:00
miruka
7319c8d7b4 Highlight currently select account/room delegate 2019-08-17 16:59:13 -04:00
miruka
c5d5768f2e Adjust RoomDelegates opacity when filtering
Accounts with no matching rooms to show will have their opacity reduced.
2019-08-17 15:30:25 -04:00
miruka
72b5954ce3 Simplify startup and improve its animation
- Remove Python.loadingAccounts/willLoadAccounts
- Fix HPage SwipeView bug that caused its inner SidePane to steal focus

- Use overshoot for animation
- Get rid of sidepane flickering
- Set default HNumberAnimation easing.type to OutQuad, specify InOutQuad
  for HCheckBox
2019-08-17 14:14:18 -04:00
miruka
1ab79347e9 Refactor HInterfaceBox and SignIn page
- Cleaned up code
- Sizes are standardized
- New HCheckBox component
- Replace RememberAccount page by a checkbox on the SignIn page
- The page can now be flicked if it's not tall enough to display
  everything

- HNumberAnimation now has an overshoot property that will set the right
  easing type, overshoot and adapt the animation factor/duration.
- HImage can now be colorized
2019-08-17 13:04:43 -04:00
miruka
28b5fbd267 Disable login button until ID & password entered 2019-08-16 16:44:28 -04:00
miruka
5f72397afe HLoader component, use Loader.asynchronous prop 2019-08-11 23:25:22 -04:00
miruka
3c35616eaa Remove copyright headers in code 2019-08-11 08:34:36 -04:00
miruka
67dde68126 Big performance refactoring & various improvements
Instead of passing all sorts of events for the JS to handle and manually
add to different data models, we now handle everything we can in Python.

For any change, the python models send a sync event with their
contents (no more than 4 times per second) to JS, and the QSyncable
library's JsonListModel takes care of converting it to a QML ListModel
and sending the appropriate signals.

The SortFilterProxyModel library is not used anymore, the only case
where we need to filter/sort something now is when the user interacts
with the "Filter rooms" or "Filter members" fields. These cases are
handled by a simple JS function.

We now keep separated room and timeline models for different accounts,
the previous approach of sharing all the data we could between accounts
created a lot of complications (local echoes, decrypted messages
replacing others, etc).

The users's own account profile changes are now hidden in the timeline.
On startup, if all events for a room were only own profile changes, more
events will be loaded.

Any kind of image format supported by Qt is now handled by the
pyotherside image provider, instead of just PNG/JPG.
SVGs which previously caused errors are supported as well.

The typing members bar paddings/margins are fixed.

The behavior of the avatar/"upload a profile picture" overlay is fixed.

Config files read from disk are now cached (TODO: make them reloadable
again).

Pylint is not used anymore because of all its annoying false warnings
and lack of understanding for dataclasses, it is replaced by flake8 with
a custom config and various plugins.

Debug mode is now considered on if the program was compiled with
the right option, instead of taking an argument from CLI.
When on, C++ will set a flag in the Window QML component.

The loading screen is now unloaded after the UI is ready, where
previously it just stayed in the background invisible and wasted CPU.

The overall refactoring and improvements make us now able to handle
rooms with thousand of members and no lazy-loading, where previously
everything would freeze and simply scrolling up to load past events
in any room would block the UI for a few seconds.
2019-08-11 08:27:53 -04:00
miruka
858c9f337d Add decryption keys import in account settings 2019-07-25 02:43:52 -04:00
miruka
b6290ad3c9 Fix SignIn circle buttons colors 2019-07-24 18:41:40 -04:00
miruka
2be23128b1 Fix button hover overlay colors 2019-07-24 16:44:35 -04:00
miruka
cb25c30cb9 Fix EditAccount currentSpacing 2019-07-24 16:41:32 -04:00
miruka
72eff47012 Adjust/fix header, fields and buttons colors 2019-07-24 16:21:34 -04:00
miruka
29107ca7f2 Hide tooltips when they're not hovered anymore
Fix hovered avatar staying visible when cursor goes outside of window
(in most cases)
2019-07-24 15:59:34 -04:00
miruka
3439a74dab Add color animation to HBusyIndicator 2019-07-24 15:34:29 -04:00
miruka
ec27ecf498 Initial themes implementation, new default theme 2019-07-24 02:14:34 -04:00
miruka
2bd8514e9b Label link colors 2019-07-21 17:50:01 -04:00
miruka
5b421f02d8 Avoid some more avatar errors when forgetting room 2019-07-21 07:48:56 -04:00
miruka
853bb350b4 Make EditAccount show a spinner until ready
Instead of crashing if userInfo is not yet available.

statusMessage is removed for now from UserUpdated events,
and the users model items will have a "loading" property.
2019-07-21 07:14:16 -04:00
miruka
d033ea84e8 Add scrollbars to flickable and listviews 2019-07-20 15:07:31 -04:00
miruka
db3a9efe8a Hide status field for now, adjust big font size 2019-07-19 00:12:23 -04:00
miruka
4f1884b121 Animate button enabled state change 2019-07-18 21:43:18 -04:00
miruka
519d3610ef Change HTextField borders, SignIn disable buttons
By default now, fields have a transparent border if not focused and
accent-color border if focused.
Set `bordered: false` for no border at all.

The register and forgot buttons on the SignIn screen are now disabled,
since their functions aren't implemented yet.
2019-07-18 20:39:13 -04:00
miruka
50930aec36 Fix profile cancel button not restoring avatar 2019-07-18 18:48:32 -04:00
miruka
1fa8b70359 ES5 → 7: Use for in/of and let 2019-07-18 05:18:13 -04:00
miruka
8a38274280 Make all JS functions and variables camelCase
According to conventions.
2019-07-18 04:48:34 -04:00
miruka
ea02ce2316 ES5 → 7: Use enhanced object properties
http://es6-features.org/#PropertyShorthand

Instead of doing {"foo": foo, "bar": bar, ...}, we can just do
{foo, bar} now.

The function parameters of EventHandlers have all been renamed to
camelCase to make use of this, as the JS style conventions intend.
Other functions will follow in a later commit.
2019-07-18 04:17:35 -04:00
miruka
4920ff6212 ES5 → 7: Use function default parameters 2019-07-18 03:35:30 -04:00
miruka
f5d747cbc4 Fix wrong avatar for unamed rooms 2019-07-18 02:36:08 -04:00
miruka
44a998f31b Rename HHighlightRectangle → HInteractiveRectangle 2019-07-18 01:56:58 -04:00
miruka
d8295302a5 HTextField active color, HColorAnimation + factor 2019-07-18 01:53:28 -04:00
miruka
fa61e8f0e3 Standard way of knowing if window "is wide" 2019-07-18 01:18:06 -04:00
miruka
332b6f1c0d Big improvements on sidepane auto/manual sizing
See gui-tests.md for the expected sidepane behaviors.
2019-07-17 13:34:56 -04:00
miruka
e173253f74 Sidebar size fixes 2019-07-16 17:08:06 -04:00