Commit Graph

437 Commits

Author SHA1 Message Date
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
05b248e31a Make config file reloading work again 2019-08-27 20:06:58 -04:00
miruka
eb11e7a13a Disable invite and room sidepane expand icon
Their functions are not implemented yet.
2019-08-27 19:51:25 -04:00
miruka
0a0e11e1f4 Rework the LoadingScreen and HBusyIndicator 2019-08-27 19:47:58 -04:00
miruka
410a42bc59 Show EditAccount page loading until profile ready 2019-08-27 15:07:08 -04:00
miruka
6cb7589cca Loading icon for accounts until synced 2019-08-27 15:00:50 -04:00
miruka
b457f46247 Close HTTP session when logging in fails
Avoids "Unclosed client session" error messages in the terminal
2019-08-27 14:23:09 -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
f5e52aed4e Fix qrc resources not working 2019-08-25 15:39:00 -04:00
miruka
8ebd7189cc Disable SidePane shortcuts when no account present 2019-08-23 11:06:19 -04:00
miruka
7eda87217c Add keybind to add new account 2019-08-23 11:03:18 -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
3749d1e135 Allow pressing escape to cancel in edit profile 2019-08-22 10:22:21 -04:00
miruka
cc7fbc5ab7 Fix invite icon size when room side pane collapsed 2019-08-22 10:03:43 -04:00
miruka
627a186700 Add tooltips to buttons and room invite button 2019-08-22 09:27:41 -04:00
miruka
3082c64666 Show user ID as member tile subtitle
Also move member styling in theme to the right place
2019-08-22 05:42:48 -04:00
miruka
6b64800ed7 Fix highlight not set when logging in new account 2019-08-21 17:55:27 -04:00
miruka
b8d43ecfec Add account logout feature via context menu 2019-08-21 17:45:05 -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
fea2178461 Make linkify regex work with port in URL 2019-08-21 14:22:34 -04:00
miruka
d2938f8730 Don't linkify image links for outgoing html 2019-08-21 14:14:44 -04:00
miruka
206f5494c8 Use hsluv for display names & remove hsl funcs 2019-08-21 12:43:07 -04:00
miruka
9332eadbbf Use hsluv instead of hsla for avatar colors 2019-08-21 12:35:55 -04:00
miruka
7624ce5fcb hsluv/hsl(a) functions: wrap around hue 2019-08-21 12:32:14 -04:00
miruka
1886303481 Fix member filtering 2019-08-21 12:17:12 -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
073a2eacee Add arrow navigation to sidepane when focused 2019-08-20 13:55:20 -04:00
miruka
203eb3b299 Make focus sidepane keybind swipe if reduced 2019-08-20 13:27:13 -04:00
miruka
e127b96158 Fix collapsed sidepane spacing for the nth time 2019-08-20 13:12:40 -04:00
miruka
c865de6dc7 Fix wrong collapse keybind: Alt+Shift+(R → L) 2019-08-20 13:01:22 -04:00
miruka
57b13131a0 Fix ListView transition bugs? 2019-08-19 20:50:14 -04:00
miruka
16ac335d43 Fix last account always being hidden 2019-08-19 18:49:56 -04:00
miruka
5c75de68ea Don't run ToggleCollapseAccount() if filter active 2019-08-19 18:40:23 -04:00
miruka
d427465425 Don't animate highlight rectangle sliding on click 2019-08-19 18:32:43 -04:00
miruka
de4d984ded Use smart case for filters 2019-08-19 18:25:00 -04:00
miruka
aba01d54e8 Rate-limit next/previous room activation 2019-08-19 18:17:59 -04:00
miruka
109082c8d8 Use a Loader instead of StackView for pageStack 2019-08-19 15:38:45 -04:00
miruka
99bbe7f3ee Keep the highlighted ListView item centered 2019-08-19 14:46:40 -04:00
miruka
c841a7a841 Add keybind to toggle collapsing account 2019-08-19 14:28:12 -04:00
miruka
e713eb7e24 Hide harmless error when no matches for filter 2019-08-19 14:06:11 -04:00
miruka
314b2c30ad Add keybind to clear room filter 2019-08-19 14:05:59 -04:00
miruka
af14038909 Rename filterRooms keybind to FocusSidePane 2019-08-19 13:58:31 -04:00
miruka
36dd6457ea Change focus filter rooms keybind to (Alt/Ctrl)+S 2019-08-19 13:18:45 -04:00
miruka
98803e8c23 Hide PyOtherSide error when EventList is destroyed 2019-08-19 13:14:25 -04:00
miruka
5e5a658173 Add keybinds to go to previous/next room 2019-08-19 13:09:05 -04:00
miruka
6ec193d554 obj.__dict__ calls → obj.serialized or vars(obj) 2019-08-19 11:52:52 -04:00
miruka
9220a75980 DelegateAccount: don't force collapsed to false 2019-08-19 11:42:24 -04:00
miruka
4349643345 filter_string is now a class property
- Support serializing class properties instead of just dataclass fields
- filter_string is now a property that's always up-to-date
- Account display names matching the current SidePane filter are shown
2019-08-19 11:34:51 -04:00
miruka
d1eec2ee6b Set client max timeout retry wait time to 10s 2019-08-19 10:31:53 -04:00
miruka
165c1b797e Repair room filter, performance improvements
Chnaging delegate heights is a terrible idea that leads to graphic bugs.
Handle filtering (both room and accounts) and collapsing from a function
that sets the JsonListModel source.
2019-08-19 10:28:49 -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
543f7ac747 Smarter adjust of messages line height
Increase line height is the message is multiline, except if there's an
<img> tag in it (due to a bug in Qt, workaround will be to implement
proper images support)
2019-08-18 03:25:56 -04:00
miruka
d0e77eb061 Increase messages line height again to 1.3 2019-08-17 23:54:32 -04:00
miruka
4067d8c4ab Get flat SidePane data on Account/Room models sync
QML: Get the data from Python and print it (for now)

Also:
- Remove useless Model.sortable field, all models/items are sortable
- Change SyncId type hint for less mypy complaints
- Remove ModelItem.main_key class attributes, useless since last big
  refactor
2019-08-17 22:46:54 -04:00
miruka
3cc39210b4 Work in progress keybard sidepane navigation 2019-08-17 20:29:56 -04:00
miruka
4e14828004 Fix Room inviter_avatar getting set to None 2019-08-17 18:17:14 -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
2e89dcae9e Add shortcut to focus filter rooms field 2019-08-17 15:58:32 -04:00
miruka
43f8f4131d Slightly increase messages line height 2019-08-17 15:49:33 -04:00
miruka
bfbcc73c43 Hide expand arrows when rooms are filtering
Any account with matching rooms is expanded until there is no more
active filter.
2019-08-17 15:42:56 -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
ec17e36911 Better plain text to html conversion
Replace \n and space characters instead of just wrapping the whole text
in pre and having to set a css style
2019-08-17 15:05:05 -04:00
miruka
5e63331f8b Increase h6 titles font size 2019-08-17 14:54:34 -04:00
miruka
d98b215c0f Fix plain text messages newlines being ignored 2019-08-17 14:51:04 -04:00
miruka
717680bf0c No leading 0 for RoomDelegate last event time
To save some pixels
2019-08-17 14:22:32 -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
3e48d63cf3 Show date instead of "Yesterday" for RoomDelegate
"Yesterday" takes too much space
2019-08-17 13:00:32 -04:00
miruka
28b5fbd267 Disable login button until ID & password entered 2019-08-16 16:44:28 -04:00
miruka
c7adb5b02f Show error messages on login screen 2019-08-16 16:30:18 -04:00
miruka
e920299db4 Update JSON config file if it lacks keys 2019-08-16 15:12:14 -04:00
miruka
be18a5db41 Make alert show for time set in cfg (default 4s) 2019-08-16 15:07:30 -04:00
miruka
0c493f88d8 Don't set alert if window already focused 2019-08-16 14:44:45 -04:00
miruka
1061498160 Alert (set urgency hint) on new messages 2019-08-16 14:27:25 -04:00
miruka
da4bb55f43 RoomDelegate last event time year 2019-08-16 13:44:44 -04:00
miruka
656dbbdf4a Make room filter field consider room's last event 2019-08-16 13:31:53 -04:00
miruka
186d42a45e Change accentText hue 2019-08-16 13:24:48 -04:00
miruka
2d031a3fd2 After remember dialog, show edit account page 2019-08-16 13:20:12 -04:00
miruka
f9ef75714d Increase padding between RoomDelegates 2019-08-16 13:10:40 -04:00
miruka
7d4da8952f Reduce RoomDelegate opacity for left rooms 2019-08-16 13:04:54 -04:00
miruka
e8b173163d Add icon to RoomDelegate for invited rooms 2019-08-16 12:55:54 -04:00
miruka
cf8ae13eae Set local echoes as room last events 2019-08-16 12:23:34 -04:00
miruka
9ca66b6044 Sort rooms by last event date again 2019-08-16 12:19:43 -04:00
miruka
2bb3952225 Show last event time in RoomDelegate
Also respect locale for message times
2019-08-16 12:07:22 -04:00
miruka
c76ebe4fe2 Improve some texts 2019-08-16 09:47:44 -04:00
miruka
564ad4fa8f Fix invited/left rooms sorting 2019-08-16 03:01:40 -04:00
miruka
653934be71 Fix declining invitation being ignored 2019-08-16 02:12:37 -04:00
miruka
8baf336cf9 Room subtitle: show member but not profile events
Instead of not showing any kind of RoomMemberEvent.
2019-08-16 01:51:42 -04:00
miruka
729235fe6a When a room is left, set UI state to default page 2019-08-16 01:31:46 -04:00
miruka
69a3f4377d Show Default.qml from forget room button callback 2019-08-16 01:26:32 -04:00
miruka
6a7376d498 Update LeftBanner, fix forget button crash 2019-08-15 13:00:15 -04:00
miruka
3270c6dd19 Have inviter display name and avatar for rooms 2019-08-15 12:13:41 -04:00
miruka
2ac484b8f5 Remove now broken "don't read user theme if debug" 2019-08-15 12:08:43 -04:00
miruka
ea4ba38056 Give pane toolbar a stronger background 2019-08-15 12:06:51 -04:00
miruka
947c706638 Improve "nothing events to show yet" message 2019-08-15 11:56:28 -04:00
miruka
34edf923d0 Fix past events loading error for invited room 2019-08-15 11:46:40 -04:00
miruka
626f464c53 Save/load the sidepane filter text in ui state 2019-08-15 11:31:24 -04:00
miruka
710a5c0914 Keep filter bars from different sidePanes in sync 2019-08-15 11:30:22 -04:00
miruka
24ea8fa673 Register invited rooms 2019-08-15 10:51:37 -04:00
miruka
e027c56047 Add/improve ModelStore and Model __str__ 2019-08-15 09:57:58 -04:00
miruka
5f72397afe HLoader component, use Loader.asynchronous prop 2019-08-11 23:25:22 -04:00
miruka
fbd7c45fe4 Fix MemberDelegate v padding when collapsed 2019-08-11 23:01:14 -04:00
miruka
9924b0565a Fix RoomDelegates v padding when collapsed 2019-08-11 22:57:36 -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
7e9106ee9c Utils.hsla(): use py.callSync 2019-07-25 19:19:24 -04:00
miruka
858c9f337d Add decryption keys import in account settings 2019-07-25 02:43:52 -04:00
miruka
93a6867735 Set own messages color 2019-07-25 00:10:07 -04:00
miruka
f5aa2c194a "ui-settings.json", "ui-state.json": no ui- prefix 2019-07-24 20:02:31 -04:00
miruka
99c3cc7d9f Put nio encryption files in an encryption subdir 2019-07-24 20:00:01 -04:00
miruka
504644e641 Fix JSONConfigFile read() when no file exists 2019-07-24 19:56:23 -04:00
miruka
a2469bd994 Don't use user theme in debug mode 2019-07-24 18:46:13 -04:00
miruka
b6290ad3c9 Fix SignIn circle buttons colors 2019-07-24 18:41:40 -04:00
miruka
607d1d8f5a Remove license header from theme file 2019-07-24 18:27:26 -04:00
miruka
6638a66578 Finish replacing light-thin icons 2019-07-24 18:25:12 -04:00
miruka
de11b53c4e Copy default theme to user data dir if not exist 2019-07-24 18:14:43 -04:00
miruka
5dc6c071d6 Add animation when reloading config file 2019-07-24 17:40:06 -04:00
miruka
eb97f08d6a Add keybind to reload config file (default Alt+R) 2019-07-24 17:26:40 -04:00
miruka
cf5d76dd10 Recursively merge default and user config 2019-07-24 17:20:21 -04:00
miruka
efa4ad0ae0 Add keybinds to config file 2019-07-24 17:05:27 -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
47d30352fa EditAccount header: match Display name field 2019-07-24 16:37:14 -04:00
miruka
c3746fa106 Set display name saturation to match base colors 2019-07-24 16:28:56 -04:00
miruka
9c7a7e256d Fix green text color 2019-07-24 16:24:46 -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