Commit Graph

81 Commits

Author SHA1 Message Date
miruka
109082c8d8 Use a Loader instead of StackView for pageStack 2019-08-19 15:38:45 -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
af14038909 Rename filterRooms keybind to FocusSidePane 2019-08-19 13:58:31 -04:00
miruka
5e5a658173 Add keybinds to go to previous/next room 2019-08-19 13:09:05 -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
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
3cc39210b4 Work in progress keybard sidepane navigation 2019-08-17 20:29:56 -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
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
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
3e48d63cf3 Show date instead of "Yesterday" for RoomDelegate
"Yesterday" takes too much space
2019-08-17 13:00:32 -04:00
miruka
da4bb55f43 RoomDelegate last event time year 2019-08-16 13:44:44 -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
2bb3952225 Show last event time in RoomDelegate
Also respect locale for message times
2019-08-16 12:07:22 -04:00
miruka
69a3f4377d Show Default.qml from forget room button callback 2019-08-16 01:26:32 -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
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
ec27ecf498 Initial themes implementation, new default theme 2019-07-24 02:14:34 -04:00
miruka
238f38c9f0 Save/load which room categories are collapsed 2019-07-21 09:35:52 -04:00
miruka
f7d286cdc2 Save/load which accounts are collapsed 2019-07-21 09:26:47 -04:00
miruka
daa2c36af1 Save/load sidePane manually-set width 2019-07-21 09:08:22 -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
cea586120e Rework how messages and events are handled
- No more translatable, content_type, show_name_line attrs for
  TimelineEventReceived.
  Since they are UI concerns, they are handled directly in QML.

- Refactor the EventDelegate and get rid of errors when new items
  are added to the timeline

- Messages, events and emotes all combine correctly.

- No more 28px wide avatars for events, to make them uniform with
  messages.
2019-07-20 01:30:58 -04:00
miruka
ecc2c099f1 Add /me command 2019-07-19 20:55:52 -04:00
miruka
2ce45e8059 Convert option button into add account button
Temporary
2019-07-19 00:22:31 -04:00
miruka
db3a9efe8a Hide status field for now, adjust big font size 2019-07-19 00:12:23 -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
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
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
miruka
a813b1c715 HPage with SwipeView to show reduced side pane 2019-07-16 12:37:11 -04:00
miruka
9f4aadfd83 Reduce (make invisible) pane if window too small 2019-07-16 09:27:38 -04:00
miruka
797d63b988 Big code cleanup for SidePane.qml 2019-07-16 09:22:20 -04:00
miruka
4be4834883 Move side pane props and stuff to SidePane.qml 2019-07-16 08:52:26 -04:00
miruka
522b689ce7 Add sidePane settings to theme 2019-07-16 08:36:11 -04:00
miruka
1abec4cf2c Remove some useless Layout.maximumWidth props 2019-07-16 05:55:07 -04:00
miruka
d2dfafb4e7 Standardize spacings 2019-07-16 05:29:47 -04:00