Commit Graph

143 Commits

Author SHA1 Message Date
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
46e685847f Replace HInteractiveRectangle by HTiledelegate 2019-08-21 04:39:07 -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
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
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
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
miruka
d302a5cf5f Rename bottomElementsHeight to baseElementsHeight 2019-07-16 05:13:19 -04:00
miruka
d5dd1292ff wrap/elide: use Layout.fillWidth when possible 2019-07-16 05:08:27 -04:00
miruka
4b2cbffc83 Auto-set maximumLineCount for elide in HLabel 2019-07-16 04:47:56 -04:00
miruka
751a27157c Add account settings page
Display name change working
2019-07-13 20:15:20 -04:00
miruka
eeea0af4cd Change every QtQuick import versions to 2.12 2019-07-13 05:39:01 -04:00
miruka
6916039546 Add "Edit Account" interface skeleton 2019-07-13 05:34:58 -04:00
miruka
3a05d9bd60 Fix side panes spacing animation 2019-07-12 18:17:02 -04:00
miruka
338986f022 Highlighting and cleanup for MemberDelegate 2019-07-12 18:15:06 -04:00
miruka
cb0d7e8a77 Highlight account and room delegates 2019-07-12 17:07:45 -04:00
miruka
4b45c119ff Fix side pane artifacts when collapsed 2019-07-11 22:25:50 -04:00
miruka
a2136dfe3c Rename HButton to HUIButton 2019-07-10 15:03:05 -04:00
miruka
0f6474532b Add LGPL license headers 2019-07-07 23:53:08 -04:00
miruka
2170b16175 Rename users.getUser to users.find 2019-07-07 22:41:32 -04:00
miruka
fcd492ff2d Fix room categories sorting 2019-07-07 22:25:30 -04:00
miruka
b02fc11903 Remove forgotten rooms from the view 2019-07-07 22:19:45 -04:00
miruka
47327c64cf Working filter field for room members 2019-07-07 05:50:42 -04:00
miruka
be152c3acf Fix getUser binding loops & coro race conditions 2019-07-07 01:37:13 -04:00
miruka
683ee3e1cf Add HUserAvatar and HRoomAvatar components 2019-07-07 00:24:23 -04:00
miruka
d83508742c Replace HStyle singleton by global Theme in Window 2019-07-06 17:50:55 -04:00
miruka
6db870a372 HNumberAnimation component for standard duration 2019-07-06 17:42:04 -04:00
miruka
388967c737 Improve TypingMembersBar 2019-07-06 17:29:45 -04:00
miruka
f09e1491c4 Fix spacing when sidepane is collapsed 2019-07-05 16:55:25 -04:00
miruka
5812dcb051 Eliminate room delegate subtitile binding loop 2019-07-04 19:21:07 -04:00
miruka
07438150db Optimize model upsert, ensure right type for roles 2019-07-04 18:41:08 -04:00
miruka
fde7f4aee6 Move models to their own files 2019-07-04 16:01:44 -04:00
miruka
c27480d395 timelines lastEventOf func, clickable subtitle <a> 2019-07-04 14:43:09 -04:00
miruka
63645b73a5 RoomDelegate subtitle, take only 1 arg for getUser 2019-07-04 00:28:13 -04:00
miruka
5fa2892fda Move various functions in QML code to new utils.js 2019-07-03 22:31:29 -04:00
miruka
06c823aa67 Build system, messages support and more 2019-07-02 13:59:52 -04:00
miruka
a1b4d8900f New backend work
Models, account connection, fetching user profiles,
show connected accounts in sidebar
2019-06-28 18:12:45 -04:00
miruka
3344debbbf Start rewriting backend with pyotherside+asyncio 2019-06-27 02:31:03 -04:00