Commit Graph

2048 Commits

Author SHA1 Message Date
miruka
18e184d1f0 Cache local media on upload, fix media local echo 2019-11-06 09:43:05 -04:00
miruka
1de82492dd media_cache: remove leftover pdb call 2019-11-06 09:03:50 -04:00
miruka
de41e859be Fix picking same file twice not working 2019-11-06 08:55:47 -04:00
miruka
487446046f Fix upload avatar overlay shown after picking one 2019-11-06 08:52:23 -04:00
miruka
4b47b0f7ec Remove useless UploadStatus.Success 2019-11-06 07:52:43 -04:00
miruka
4c15b7dc62 Fix SVG uploads, fix entire Upload model deleted 2019-11-06 07:50:31 -04:00
miruka
ace79a169c UploadsBar: fix qsTr.arg(arg1, arg2) call 2019-11-06 07:45:28 -04:00
miruka
e45f2c9d2d Fix thumbnail API error when QML gives float sizes 2019-11-06 06:51:55 -04:00
miruka
93a4015369 EventImage: set prop correctly if no thumbnail
Fix cases where a m.image event doesn't have a thumbnail but we tried to
download one anyway, resulting in a DownloadFailed exception.
2019-11-06 06:34:52 -04:00
miruka
92d3390106 Fix CryptDict redefined in media_cache.py 2019-11-06 06:30:17 -04:00
miruka
078cf61b7e Show an uploads bar in chats when uploading files 2019-11-06 06:28:48 -04:00
miruka
91064fc625 Fix error when using upload button more than once 2019-11-05 18:30:51 -04:00
miruka
8f3df28b9d ModelItem: serialize enum members to their values 2019-11-05 18:03:48 -04:00
miruka
7408322fbe Fix/improve image sizes 2019-11-05 09:19:48 -04:00
miruka
82104266fe Encrypt uploads in a thread 2019-11-04 15:18:01 -04:00
miruka
3c1d926188 Open decrypted file in browser for crypt images 2019-11-04 14:57:56 -04:00
miruka
ea0cda6aa8 HMxcImage: Fix "invalid write to property httpUrl" 2019-11-04 14:55:26 -04:00
miruka
6586403985 Event/RoomDelegate: consider RoomEncrypted- events 2019-11-04 14:45:20 -04:00
miruka
2d682516e8 Support encrypted file reading & caching
Also don't convert palette images to JPEG when creating thumbnails.
2019-11-04 14:37:48 -04:00
miruka
bf9ced1acd Don't cache local GIFs in memory 2019-11-04 10:53:13 -04:00
miruka
de8d0b5823 Fix image events opened/copied url 2019-11-04 10:46:06 -04:00
miruka
ca09effd6e Download and show full picture for m.image GIFs 2019-11-04 10:29:41 -04:00
miruka
02c6ec4500 Implement Media download 2019-11-04 10:29:18 -04:00
miruka
484eefe86d Fix image URL preview, add Thumbnail.create()
- Make HMxcImage's mxc property work with http too (temporary quick
solution)

- Thumbnail objects can now be initialized with existing bytes and not
  have to download anything.
2019-11-04 07:00:28 -04:00
miruka
337603595a Backend: separate wait_until_(any_?)client_exists() 2019-11-04 06:56:26 -04:00
miruka
e1600389fc Upload 800x600 thumbnails instead of 512x512
Maximum thumbnail size, match Riot's behavior.
2019-11-03 14:08:29 -04:00
miruka
2f19ff493b Rewrite media caching (old image provider)
- Doesn't use pyotherside's image provider feature, for more flexibility
  and simplicity
- Suitable for supporting matrix media events and more later
- Avoid a lot of duplicate files that the old cache created due to
  server not returning what we expect, mistakes in Python/QML code, etc
- Changed file structure
  (e.g. thumbnails/32x32/<mxc id> instead of
   thumbnails/<mxc id>.32.32.crop)

- Backend.wait_until_account_exist: start issuing warnings if the
  function runs for more than 10s, which means in most case a bad user
  ID was passed

- New HMxcImage QML component, used in H(User/Room)Avatar
2019-11-03 13:48:12 -04:00
miruka
55d4035f60 DebugConsole: show "t = ..." instead of "target =" 2019-11-03 13:47:33 -04:00
miruka
b9fbd36661 Restart sync if exception occurs 2019-10-30 11:15:35 -04:00
miruka
ce2a7f1018 Support encrypting uploads
For files and thumbnails.
Also fix the PIL thumbnail() bad argument function call.
2019-10-30 10:34:20 -04:00
miruka
b6609c5435 DebugConsole: remove debug print 2019-10-30 09:26:02 -04:00
miruka
ba527abedc Add bubbles on top of EventImage to show name-date 2019-10-30 09:25:49 -04:00
miruka
2e4a7904d5 Play m.image events GIFs, rename some properties 2019-10-30 06:47:59 -04:00
miruka
b11c9d5675 Use lanczos filter and optimize saved thumbnail 2019-10-30 05:47:22 -04:00
miruka
adeec71fac Log warning when thumbnailing fails 2019-10-30 05:36:54 -04:00
miruka
48bcc91582 Never upscale images when thumbnailing 2019-10-30 05:34:32 -04:00
miruka
412a86762e Generate thumbnail when uploading images 2019-10-29 16:42:56 -04:00
miruka
7a5a1fc650 Print python exception tracebacks 2019-10-29 13:34:55 -04:00
miruka
001d6eff71 Initial upload implementation 2019-10-28 15:27:36 -04:00
miruka
820cc68373 Rename MatrixClient.send_markdown() to send_text
Because it deals with text command parsing too
2019-10-28 13:51:46 -04:00
miruka
662b60d7a8 Separate _function for local echoing 2019-10-28 13:49:55 -04:00
miruka
09a50f8bc7 Separate _function for general message sending 2019-10-28 13:34:59 -04:00
miruka
6eb3a378bc Proper upload exceptions, handle in QML set avatar 2019-10-28 08:06:22 -04:00
miruka
5894481dc5 Python exceptions can now be handled via QML
callCoro/callBackendCoro can now take onSuccess(result) and
onError(type, args, errorObject) callbacks.
2019-10-28 06:26:02 -04:00
miruka
fe4eff62c5 Add basic loading indicator to images 2019-10-27 16:35:58 -04:00
miruka
a67d611958 Composer: add an upload button + file dialog
Upload not working yet
2019-10-27 15:12:57 -04:00
miruka
8c41142b43 HFileDialogOpener: provide better default title 2019-10-27 15:07:58 -04:00
miruka
eb582424b9 Ensure typing bar is invisible when reduced 2019-10-27 14:51:46 -04:00
miruka
040bfe37f8 Improve/fix EventImage size handling 2019-10-27 13:32:22 -04:00
miruka
bf4517b146 Disable non-image media support for now 2019-10-27 12:10:44 -04:00
miruka
07e6d74b91 Fix HTML escaping for markdown parsing
Use mistune's escape option instead of `html.escape()` which messes up
links.
2019-10-27 12:06:19 -04:00
miruka
3bc185f4e6 Change X11 selection only if any text selected 2019-10-25 09:02:21 -04:00
miruka
30ebb7c88e Support X11 selection mechanism for messages 2019-10-25 08:49:19 -04:00
miruka
6aac5a9edb Replace QML clipboard hack by proper new Clipboard 2019-10-25 08:42:04 -04:00
miruka
30823a9bf5 Add C++ Clipboard class accessible from QML 2019-10-25 08:36:24 -04:00
miruka
7090ff601f Don't have local echoes stay fixed at the bottom 2019-10-24 10:28:07 -04:00
miruka
986e39cdc2 Fix quotes rendering in inline filtered html
Before:
a
>x
b
>z

This message would have been shown all gray in the client due to it not
beginning with a >. Now, the colors are properly shown for both quotes
and the non-quote text in between.
2019-10-24 09:43:40 -04:00
miruka
39b4706c75 Have return symbols in inline filtered html
Before: "foo\nbar" was rendered as "foobar"
Now: "foo\nbar" is rendered as "foo ⏎ bar" (U+23CE unicode).
2019-10-24 09:08:10 -04:00
miruka
756edc90dd JS: use slice() instead of splice()
slice() does the same as splice() without the unintended effect of
transforming the array.
2019-10-24 08:09:33 -04:00
miruka
5522de5165 html_filter: don't remove \n in <pre> content 2019-10-24 08:06:50 -04:00
miruka
c4b05befa4 html_filter: html escape markdown before filtering
Fixes the problem where a user sends e.g. "hi <test>" and the "<test>" is
removed because it's seen as a bad html tag.
2019-10-24 07:27:13 -04:00
miruka
652cd059c4 Prevent makeObject callback from running twice 2019-10-22 03:40:09 -04:00
miruka
8416eb33e3 main.cpp: remove useless includes 2019-09-26 17:46:55 -04:00
miruka
579ec94094 Don't vertically center message avatars 2019-09-19 19:36:09 -04:00
miruka
9de34d4d3f Fix own medias in events positions 2019-09-19 19:28:28 -04:00
miruka
a3d2fc9b98 Fix debug console history when editing entry text 2019-09-19 18:43:25 -04:00
miruka
d9addff8ef Put message debug thing in EventContent 2019-09-19 18:39:45 -04:00
miruka
c1a27328d9 Add up/down history browsing to DebugConsole 2019-09-19 18:29:10 -04:00
miruka
7b482de727 DebugConsole must now be created from components
Remove the default console from UI.qml and add a utils.js function
to create one quickly.
Using this function from the component we actually want to debug gives
the console full access to that component's scope, children IDs, etc.
2019-09-19 16:47:35 -04:00
miruka
d20ab5a348 Refactor EventContent
Use proper layouts and get rid of multiple annoyances/bugs like
text-wrapping randomly happening in the middle of words, background
rectangles being too large, a certain binding loop, etc
2019-09-19 15:49:29 -04:00
miruka
4c4d747ecf Add AudioPlayer & EventAudio 2019-09-17 23:23:47 -04:00
miruka
f19d337817 Move hover preview height from settings to theme 2019-09-17 16:39:45 -04:00
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
a80f294610 Add EventFile (unfunctional for now) 2019-09-14 17:49:25 -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
fe087ba724 Expose new CppUtils class with formattedBytes() 2019-09-14 15:42:24 -04:00
miruka
69aea0e37f EventImage: open/copy original image on clicks 2019-09-14 01:06:53 -04:00
miruka
45b6714bcb Hide EventContent contentLabel if no text 2019-09-14 00:56:38 -04:00
miruka
451038641e Display RoomMessageImage events 2019-09-14 00:46:54 -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
8ad13b033d Event: optional (inline_)content, auto-gen inline 2019-09-13 23:02:11 -04:00
miruka
a5095274ba MatrixClient: RoomMessageMedia support 2019-09-13 22:48:33 -04:00
miruka
a2ab7b3090 Add event callback for RoomUnknownMessage 2019-09-13 19:58:45 -04:00
miruka
d3a02deb46 Update version to 0.2.3 2019-09-12 20:59:12 -04:00
miruka
8334f88418 Reduce mouse wheel speed in eventList 2019-09-12 20:54:25 -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
7f29716a61 Fix message times being on a separate line 2019-09-12 20:14:02 -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
f8811f4e0c Disable underscore emphasis syntaxes for markdown 2019-09-11 17:25:50 -04:00
miruka
5676a369b2 MemberDelegate: fix missing right padding 2019-09-11 16:49:40 -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
51e544ddf1 Fix triple click not selecting last message char 2019-09-11 01:55:07 -04:00
miruka
72bcb9bbe3 Update version to v0.2.2 2019-09-10 22:07:41 -04:00
miruka
60663ed040 Leave non-image links out from Event.previe_links
normal links preview isn't implemented yet, which caused any message
with a link to take at least 256px due to the preview repeater.
2019-09-10 22:07:06 -04:00
miruka
7211dd8fda Fix account settings name field getting reset 2019-09-10 21:58:28 -04:00
miruka
7797b0e1eb HtmlFilter: Remove excess newlines
To avoid additional blank lines with HTML/CSS using `white-space: pre`
2019-09-10 21:22:42 -04:00
miruka
b3135601ed Stop supporting starting without pyotherside 2019-09-10 20:49:01 -04:00
miruka
d6b8fae30a matrix_client: leave room before forgetting it 2019-09-10 01:34:01 -04:00
miruka
988ab94772 Fix ForgetRoomPopup destruction/callback 2019-09-09 20:56:10 -04:00
miruka
3e01eeef71 LeftBanner: use ForgotRoomPopup 2019-09-09 20:24:29 -04:00
miruka
b7b309ad4c SignIn: increase box width again
To avoid the Login button loading icon from making the button grid
switch to column mode.
2019-09-09 14:50:45 -04:00
miruka
82f0c273e7 LogoutPopup: implement export keys button callback 2019-09-09 14:49:54 -04:00
miruka
7c0bed79a9 ImportKeys/ExportKeys separate dialog componants 2019-09-09 14:42:58 -04:00
miruka
15add6d91c Confirm account logout and propose exporting keys
Key export button callback not implemented yet.
2019-09-09 12:58:13 -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
a3b56519f7 ForgetRoomPopup: improve texts 2019-09-09 12:35:19 -04:00
miruka
2f7fbd2621 Profile: fix eliding, increase wide width needed 2019-09-09 11:35:46 -04:00
miruka
81f54641ba SignIn: increase box width to avoid eliding 2019-09-09 11:24:42 -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
4ffa3470c7 Confirm forgetting room with popup 2019-09-09 09:24:45 -04:00
miruka
88042cd111 Confirm leaving room with popup 2019-09-09 09:12:51 -04:00
miruka
c38cc9d3df Move popups to their own folder 2019-09-09 08:57:38 -04:00
miruka
6b26aa6d0b load_past_events: Catch RoomMessagesError 2019-09-09 08:26:09 -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
f40e853078 Word-wrap name label for messages 2019-09-08 21:56:15 -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
aefb314999 Fix exporting key to a path that doesn't exist yet 2019-09-08 12:17:08 -04:00
miruka
df753b5262 Say "change profile picture" if avatar already set 2019-09-08 11:53:01 -04:00
miruka
e93c251624 Add clear messages shortcut 2019-09-08 11:51:03 -04:00
miruka
db0de237e6 Add message context menu entry to clear events 2019-09-08 11:40:39 -04:00
miruka
405573bb2d Fix room subtitle quotes: second+ quote not green 2019-09-08 10:48:58 -04:00
miruka
916f6d8327 Update version to v0.2.1 2019-09-07 23:14:31 -04:00
miruka
a87f98fae0 Add key exporting to account settings 2019-09-07 19:17:32 -04:00
miruka
11486ab51d Add homeserver URL field to login screen 2019-09-07 17:24:58 -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
c5bd5a1eb1 Add transparency to typing members bar 2019-09-07 16:55:07 -04:00
miruka
134543728e Add escape to exit and clear room filter field 2019-09-07 16:48:23 -04:00
miruka
a15fba92cb Add clearRoomFilterOnEnter setting, default true 2019-09-07 16:39:14 -04:00
miruka
a731013a8c Fix Utils.minutesBetween()
minutesBetween(
    new Date(2019, 01, 01, 13, 20, 00), new Date(2019, 01, 01, 14, 20, 00)
)
returned 0 instead of 60, the fixed function property return numbers of
minutes after 60.
2019-09-07 16:33:16 -04:00
miruka
a6b154c207 Composer scrollbar: invisible unless really needed 2019-09-07 15:48:13 -04:00
miruka
66129a9eb2 Remove seconds from message dates
Makes them easier to read
2019-09-07 15:16:03 -04:00
miruka
78119d1ef0 Wrap text in <pre> 2019-09-07 14:34:14 -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
fd543f3204 Re-fix quote parsing 2019-09-07 02:22:42 -04:00
miruka
9f8bdfc6fb Fix html quote regex
Also allow quoting in title, e.g. "# > blah blah blah"
2019-09-07 01:44:51 -04:00
miruka
07fb63aa1e rstrip excess \n from html filter output
Caused the event time to be incorrectly shown on its own on a new line
for messages that were ~600px
2019-09-07 00:19:36 -04:00
miruka
393d404242 Fix name alignment for own messages on left 2019-09-06 23:36:37 -04:00
miruka
6e40f29ebe Consider preview thumbnails to calculate msg width
Also move thumbnails width setting from settings.json to the theme
2019-09-06 23:36:37 -04:00
miruka
ea9caa69f6 Change cursor shape when image hovered 2019-09-06 23:36:37 -04:00
miruka
be481b778a Fix message width making time on its separate line 2019-09-06 23:36:37 -04:00
miruka
7c42066d75 Eventdelegate: Merge menu print and debug console
Also fix avatar-message spacing
2019-09-06 23:36:14 -04:00
miruka
5674d0c7b7 Use a component to display image link previews 2019-09-06 23:34:40 -04:00
miruka
3c4ca7d433 Fix past loading not triggering in some cases 2019-09-06 17:05:49 -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
d353056db9 Fix scroll to top/bottom 2019-09-06 15:20:22 -04:00
miruka
f6a24ec020 Remove overshoot check for smartVerticalFlick()
Keyboard flicking feels better witohut rather than just abruptly
stopping or not doing anything if the user is already at the top/bottom
of the flickable.
2019-09-06 15:07:19 -04:00
miruka
ddce551360 Add option to target message for debug console 2019-09-06 15:07:19 -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
922eac4ea9 Pseudo-clipboard safety modifications 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
b867584784 Make qrc path aliases the same as filesystem ones 2019-09-06 15:07:19 -04:00
miruka
ddd1587b7d Update version to v0.2.0 2019-09-06 15:07:19 -04:00
miruka
e6a133598f Prevent non-left buttons from drag-scrolling 2019-09-06 15:06:35 -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
aaaff814a1 Update version to v0.1.3 2019-09-06 15:04:19 -04:00
miruka
87ff343cc3 Reduce quotes brightness in room subtitles 2019-09-06 14:12:32 -04:00
miruka
fd0cd35152 Enable logging of nio errors 2019-09-06 14:05:47 -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
5eaa877554 Avoid import harmless error messages at the end 2019-09-05 17:51:38 -04:00
miruka
dc209bc5d4 Press esc to hide debug console 2019-09-05 16:28:06 -04:00
miruka
58d491a2b3 Add basic JS/QML debug console 2019-09-05 15:43:00 -04:00
miruka
eab6d1c2ee Fix linkify regex to allow # characters 2019-09-04 05:10:53 -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
6b18ac6d26 Fix members list overlapping with filter field 2019-09-02 13:24:25 -04:00
miruka
175caba2e9 Ignore member events where prev_content == content 2019-09-02 13:21:46 -04:00
miruka
d5dbb1368f Fix RoomHeader icon paddings 2019-09-01 20:33:05 -04:00
miruka
a0509465e6 live-reload: allow specifying a component to load 2019-08-31 21:52:45 -04:00
miruka
11dbd1e457 Force model sync when receiving remote echo
Forcing model sync on local and remote echo make our own messages
appearing and the loading icon disappearing both feel faster.
2019-08-31 16:18:27 -04:00
miruka
69ed35d4dd Trigger model sync ASAP when creating local echoes 2019-08-31 16:14:14 -04:00
miruka
28d8721fe2 Fix HShortcutHandler not processing shortcuts 2019-08-31 15:34:05 -04:00
miruka
0bbc61fd64 Remove pdb call 2019-08-30 20:40:09 -04:00
miruka
9aff5450db Reduce icons brightness 2019-08-30 20:30:39 -04:00
miruka
ca2ecc75bb Make uvloop dependency optional 2019-08-30 20:24:13 -04:00
miruka
cc4a33bb04 Write to disk merged base + user config files 2019-08-30 19:43:58 -04:00
miruka
92f6274458 Use QtGraphicalEffects.LinearGradient
Instead of using a Rectangle and its gradient prop, since there's no
need for the rotation/scale hack and it gives better quality.
2019-08-30 19:21:51 -04:00
miruka
f25a0d7c87 mainUI: be an Item instead of Rectangle 2019-08-30 19:09:21 -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
546761f591 Fix sidePane toolBar id/property name 2019-08-30 13:48:24 -04:00
miruka
70b82b7b59 Add scroll to top/bottom keybinds 2019-08-30 13:40:56 -04:00
miruka
6a540f6397 Add keybinds to scroll page up/down 2019-08-30 13:06:54 -04:00
miruka
927323909d Rename "greentext" to "quote" 2019-08-30 12:29:01 -04:00
miruka
b651be3c30 Support greentext in RoomDelegate subtitle 2019-08-30 12:07:50 -04:00
miruka
720eb78fe8 Fix displaying local echo html formatting 2019-08-30 11:53:55 -04:00
miruka
aec83c66f3 Fix apply button loading on profile change 2019-08-30 11:42:01 -04:00
miruka
8a2053fcaf Fix collapsing account with keyboard
When collapsing the account and the current page/focus is a room of this
account, switch focus to the account.
2019-08-30 11:24:47 -04:00
miruka
8276e800be Rename SidePane components 2019-08-30 11:05:11 -04:00
miruka
244fc12465 Fix using up/down arrows when focusing sidepane
Pause the HTileDelegates setCurrentTimer when the SidePane has focus.
2019-08-30 10:56:38 -04:00
miruka
4587599cf5 Fix sending typing state when no configured alias 2019-08-30 10:49:41 -04:00
miruka
498bee2e20 Improve image path matching regex for html_filter 2019-08-30 10:37:13 -04:00
miruka
06d75a18fc Remove useless print 2019-08-30 10:33:58 -04:00
miruka
f0612c2a51 Fix daybreak not showing before RoomCreateEvent 2019-08-30 10:33:17 -04:00
miruka
10a53d7afb Fix room past events loading in some cases 2019-08-30 10:28:53 -04:00
miruka
a987cf48e6 Don't add profile events to the timeline (for now) 2019-08-30 10:09:09 -04:00
miruka
19cbfc9cfe Fix html_filter.py for html_sanitizer 1.7.3 2019-08-30 00:07:41 -04:00
miruka
3a6ecce4f7 Improve background gradient 2019-08-29 21:06:24 -04:00
miruka
552a4b53fb Use the now fixed nio.MatrixRoom.display_name
The property behaves according to the Matrix standard starting from nio
0.5, no need to generate the room display name ourself anymore.
2019-08-29 16:47:07 -04:00
miruka
665211a8d3 Increase inputs color saturation 2019-08-28 19:47:28 -04:00
miruka
73af3bd2c5 Reduce button hover/highlight overlay opacity 2019-08-28 19:44:52 -04:00
miruka
1eaec701dc Fix banners position 2019-08-28 19:39:22 -04:00
miruka
ff9f8127d7 UI gradient background, adjust some colors 2019-08-28 19:34:50 -04:00
miruka
1806ac6ac0 Color "upload profile picture" icon
Also fix hover zone to span the entire avatar rectangle
2019-08-28 18:47:04 -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
4bee87ed5d Add positive/negativeBackground to theme 2019-08-28 16:41:58 -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
21b44bcf66 Add animated icon to ImportingKeys box 2019-08-28 13:50:29 -04:00
miruka
4ff3ebe255 Fix room subtitle for local echoes 2019-08-28 13:29:49 -04:00
miruka
f8a392883b Retry decrypting megolm events after a key import 2019-08-28 13:23:12 -04:00
miruka
b9f593fb27 Fix opening import key file picker and button 2019-08-28 13:16:06 -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
ce3404a516 Show import keys error in the UI 2019-08-28 11:42:52 -04:00
miruka
7d2cbae26f Show key import progression 2019-08-28 03:54:53 -04:00
miruka
f65c0176ba Better error handling and fixes for key import 2019-08-27 23:51:38 -04:00
miruka
399a35dacb Rename SendBox to Composer 2019-08-27 23:03:52 -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
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
miruka
8ad62eff58 Remove old default background image 2019-07-24 15:03:17 -04:00
miruka
921a0586cf Add background image variable to theme 2019-07-24 14:58:16 -04:00
miruka
ec27ecf498 Initial themes implementation, new default theme 2019-07-24 02:14:34 -04:00
miruka
345b17b21f Catch ErrorResponse json.dumps error 2019-07-23 14:48:37 -04:00
miruka
9397687122 Parse theme from a custom simpler format 2019-07-23 03:14:02 -04:00
miruka
cb1b95766c Remove indents in sendbox with backspace 2019-07-22 18:06:34 -04:00
miruka
4c7815554c Auto-indent new line in sendbox 2019-07-21 19:12:32 -04:00
miruka
67e06aa739 Remove debug print 2019-07-21 18:26:53 -04:00
miruka
5a1d974702 SendBox: insert 4 space on tab instead of huge \t 2019-07-21 18:23:45 -04:00
miruka
ab2a73dbfc Set html style for code 2019-07-21 18:17:51 -04:00
miruka
95c05356da Set style for html titles 2019-07-21 17:58:48 -04:00
miruka
2bd8514e9b Label link colors 2019-07-21 17:50:01 -04:00
miruka
843d40ca26 Fix > parsing and local echo 2019-07-21 17:41:43 -04:00
miruka
459880903d Message stylesheet; turn "> ..." into greentext 2019-07-21 16:53:34 -04:00
miruka
6e65376612 markdown: don't parse "> ..." as blockquote 2019-07-21 16:08:40 -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
3287888a5c JSON configs read(): Merge default and user data 2019-07-21 09:24:11 -04:00
miruka
daa2c36af1 Save/load sidePane manually-set width 2019-07-21 09:08:22 -04:00
miruka
c0b51b574c ui-settings: Rename write_aliases to writeAliases 2019-07-21 08:57:17 -04:00
miruka
df920da2a6 Save & restore previous page when relaunching app 2019-07-21 08:55:25 -04:00
miruka
246058e647 Make Chat show spinner until ready
Like EditAccount, instead of crashing if the room isn't loaded yet.
2019-07-21 08:38:49 -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
71f78feec6 Define UIState config file 2019-07-21 06:05:01 -04:00
miruka
414082d258 Make EditAccount keyboard-flickable, fix function 2019-07-20 18:28:00 -04:00
miruka
41eea44fff Add keyboard shortcuts to flick the events list 2019-07-20 18:08:58 -04:00
miruka
d033ea84e8 Add scrollbars to flickable and listviews 2019-07-20 15:07:31 -04:00
miruka
1ffca37021 Fix sendbox modifier+enter for newline not working 2019-07-20 14:37:21 -04:00
miruka
cf54c0a29f Never show our own users in typing bar 2019-07-20 02:33:02 -04:00
miruka
7a959115ef Have bottom padding again for DayBreak 2019-07-20 02:27:17 -04:00
miruka
3e1e924147 Fix messed up delegate positions on new message 2019-07-20 02:21:12 -04:00
miruka
0488a7dde8 Fix nameLabel binding loop 2019-07-20 01:35:25 -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
58079a4ac2 Support RoomMessageEmote events 2019-07-19 19:19:43 -04:00
miruka
a10a395e0b Only send a formatted_body if it's truly needed 2019-07-19 18:13:04 -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
a3e2233391 Fix window/content sizes for EditAccount page 2019-07-18 23:59:05 -04:00
miruka
28b6114218 Make profile edit avatar 256px instead of 240 2019-07-18 23:52:51 -04:00
miruka
2cf0864b18 Implement multi-account writing for sendbox 2019-07-18 23:50:23 -04:00
miruka
93bc2ff5a9 Add multiaccount write-as alias account setting 2019-07-18 21:58:21 -04:00
miruka
4f1884b121 Animate button enabled state change 2019-07-18 21:43:18 -04:00
miruka
ff7c2413df Change "Save" button to "Apply" in EditAccount 2019-07-18 20:58:38 -04:00
miruka
329c34cf94 Limit concurrent thumbnail downloads to 8 2019-07-18 20:49:47 -04:00
miruka
9decd58992 Use aiofiles for image provider file writes 2019-07-18 20:44:17 -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
d597e1dda8 Refactor Backend and config file operations 2019-07-18 20:30:41 -04:00
miruka
31184071db call(Client)Coro: support nested.getattr.retrieval 2019-07-18 20:24:59 -04:00
miruka
50930aec36 Fix profile cancel button not restoring avatar 2019-07-18 18:48:32 -04:00
miruka
a842981406 Improve README 2019-07-18 18:35:47 -04:00
miruka
4d32adaa41 Animate event side change 2019-07-18 07:22:41 -04:00
miruka
67efde9116 Show own events on right only under certain width 2019-07-18 06:33:09 -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
3939470679 Add "use strict" directive to all .js files 2019-07-18 04:38:22 -04:00
miruka
240885c32a Fix bad icon_names → icon-names 2019-07-18 04:23:23 -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
8f53d2e018 Qt 5.12 ES5 → 7: Use "() =>" and array.includes 2019-07-18 03:13:34 -04:00
miruka
f5d747cbc4 Fix wrong avatar for unamed rooms 2019-07-18 02:36:08 -04:00
miruka
4c0b947d1a Handle nio.ThumbnailError cases
Return a 1x1 transparent PNG for now.
2019-07-18 02:08:01 -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
271b3e3829 Change all colors to use the new hsl(a) functions 2019-07-18 01:31:51 -04:00
miruka
cf13315d4f Add normal hsl and hsla functions 2019-07-18 01:27:14 -04:00
miruka
fa61e8f0e3 Standard way of knowing if window "is wide" 2019-07-18 01:18:06 -04:00
miruka
902ac250b0 Fix file names to respect conventions
Important markdown/text files: UPPERCASE.ext
QML module dirs, qml files: PascalCase
Python module dirs, py files, js files: snake_case
Everything else (including icons): hyphen-case
2019-07-17 13:40:28 -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
96745902f3 Move header definition from EditAccount to HPage 2019-07-16 12:53:52 -04:00
miruka
a813b1c715 HPage with SwipeView to show reduced side pane 2019-07-16 12:37:11 -04:00
miruka
29e21bc7c2 Fix avatar upload overlay overflow at small size 2019-07-16 11:48:57 -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
5cc701113e Fix banners, adapt to app width 2019-07-16 08:10:37 -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
7f46bafc9e Use HRowLayout for typingMembersBar 2019-07-16 04:54:12 -04:00
miruka
4b2cbffc83 Auto-set maximumLineCount for elide in HLabel 2019-07-16 04:47:56 -04:00
miruka
6ae37dc31f Always center button text (for now) 2019-07-16 04:41:26 -04:00
miruka
aef777d853 Fix image selection and overlay bugs 2019-07-16 04:37:39 -04:00
miruka
73ecbaad10 Add upload avatar hover overlay
Also fix name colors and always use fit-crop mode for avatars.
2019-07-15 20:10:43 -04:00
miruka
83cc148cdc Prevent flicking page when it 100% fits in window 2019-07-15 18:54:21 -04:00
miruka
18c9ff30cb Hide edit account header when page too small 2019-07-15 18:10:11 -04:00
miruka
503252f1c7 Make edit account UI more scalable
Put content in flickable, reduce avatar height as needed.
The minimum supported resolution of the app should now be 240x120.
2019-07-15 17:43:53 -04:00
miruka
62056b6124 Avatar change working 2019-07-15 16:14:08 -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
6dab79ae9a Remove uneeded HEntityButton 2019-07-12 19:01:27 -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
cc937b38c4 Replace MouseAreas by input handlers 2019-07-12 18:02:14 -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
a2ae569511 Split HButton into HBaseButton and HButton 2019-07-10 15:00:57 -04:00
miruka
eb9f02df31 Fix text overflowing from compacted HButton 2019-07-10 15:00:34 -04:00
miruka
e2696ea928 Prevent TypingMembersBar text from overflowing 2019-07-10 00:18:50 -04:00
miruka
58ebe6475e Use uvloop to make asyncio faster 2019-07-10 00:05:42 -04:00
miruka
d091f3bcb6 Propagate mouse click events on avatars 2019-07-09 23:49:59 -04:00
miruka
7e4cee31c7 Prevent avatar tooltip from going out of bound 2019-07-09 23:42:03 -04:00
miruka
eeca8b639d HToolTip component, enter/exit fade effect 2019-07-09 22:51:52 -04:00
miruka
3dd16ba072 Add avatar tooltips 2019-07-09 22:48:59 -04:00
miruka
9af9e88b0d Support room avatars 2019-07-09 21:54:53 -04:00
miruka
2ced310ce1 Add initial support for user avatar thumbnails 2019-07-09 21:46:21 -04:00
miruka
faccc7ba90 Fix decrypted events replaced by encrypted ones 2019-07-08 13:29:05 -04:00
miruka
861347ce64 Fix "tarfindId" sed rename mistakes 2019-07-08 13:24:05 -04:00
miruka
4472d44320 Enable encryption 2019-07-08 13:08:46 -04:00
miruka
7f7a7621cf Cleanup TODO.md 2019-07-08 12:52:07 -04:00
miruka
e827c9fba2 Fix debug initialRoomTimer causing segfaults 2019-07-08 12:39:58 -04:00
miruka
4314767ac2 Fix creating UserUpdated events from nio rooms 2019-07-08 12:28:49 -04:00
miruka
0f6474532b Add LGPL license headers 2019-07-07 23:53:08 -04:00
miruka
8dccfffc8b Drop kwargs support for callCoro/callClientCoro 2019-07-07 23:38:37 -04:00
miruka
4f0ba24373 Send typing notifications from sendbox 2019-07-07 23:28:10 -04:00
miruka
d26f087df9 More checks to avoid errors on forgetting room 2019-07-07 22:49:28 -04:00
miruka
2170b16175 Rename users.getUser to users.find 2019-07-07 22:41:32 -04:00
miruka
f64a2c68e9 Fix undefined profile being requested 2019-07-07 22:36:12 -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
1af8c97734 Sort the room members 2019-07-07 05:25:03 -04:00
miruka
ea600a1450 Reintroduce RoomSidePane with members list 2019-07-07 05:15:18 -04:00
miruka
735707bade Add members to room updates 2019-07-07 05:12:17 -04:00
miruka
0ac4874ddf Sort typing members by display name 2019-07-07 03:53:32 -04:00
miruka
2923d440d0 Fix html filter autolink regex
Two links in the text like "http://foo.org ... http://bar.org"
were seen as a single match.
2019-07-07 03:19:51 -04:00
miruka
472b8fe993 Fix "joined room" event shown as "declined invite" 2019-07-07 02:48:28 -04:00
miruka
a47e6b5c07 When room changes category, affect the Chat too 2019-07-07 02:35:22 -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
064fb6e9a2 Remove now uneeded Chat/utils.js 2019-07-06 23:58:41 -04:00
miruka
1ec660807e Rename Chat "sender" prop to "senderInfo" 2019-07-06 23:46:06 -04:00
miruka
03d9079d63 Show LeftBanner with a generic left text 2019-07-06 23:43:51 -04:00
miruka
3ff0e1bd70 Use nio RoomMemberEvent new attrs 2019-07-06 22:38:56 -04:00
miruka
cf04f8ad2f Display Left rooms, shorter onSyncResponse func 2019-07-06 22:35:42 -04:00
miruka
2ac1d6da17 Remove "readonly"s from Theme for readability 2019-07-06 21:06:18 -04:00
miruka
708488545e Change some property types 2019-07-06 17:59:19 -04:00
miruka
34d68af51f Rename SendBox root id 2019-07-06 17:56:04 -04:00
miruka
1981a0f79a Colored names for typingMembersBar 2019-07-06 17:53:51 -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
7b92264ef6 Animate TypingMembersBar 2019-07-06 17:35:51 -04:00
miruka
388967c737 Improve TypingMembersBar 2019-07-06 17:29:45 -04:00
miruka
556749aa35 LimitExceededError → ErrorResponse 2019-07-06 17:29:00 -04:00
miruka
ecd7768c70 Change how our own messages are displayed
Avatar and name won't be shown for our messages
(the avatar is still visible in sendbox), but they will have a different
background color.

Also make bottom UI elements 36px tall, for avatars to match size with
the rest of the UI.
2019-07-05 21:38:32 -04:00
miruka
4c4603691f Working typing users bar 2019-07-05 19:54:16 -04:00
miruka
f09e1491c4 Fix spacing when sidepane is collapsed 2019-07-05 16:55:25 -04:00
miruka
ee4e6470a9 Invite banner (callbacks not implemented yet) 2019-07-05 16:48:30 -04:00
miruka
c95308106b Increase small font size (12 → 13) 2019-07-05 03:27:32 -04:00
miruka
c70c7d555d Load only 25 past events at once until lag solved 2019-07-05 03:18:24 -04:00
miruka
57577ba8b8 Fix arrows and other keys not working in sendbox 2019-07-05 03:16:52 -04:00
miruka
ecba7c47ec Past events loading (with two bugs) 2019-07-05 03:12:27 -04:00
miruka
83694d387b Prevent HRichLabel from stealing any mouse event 2019-07-05 01:54:29 -04:00
miruka
78663df09e Always linkify <img> tags, no matter the src 2019-07-04 23:21:27 -04:00
miruka
dbcfad1c50 Keep local echo delegates at the bottom 2019-07-04 23:12:21 -04:00
miruka
1db406d9af Add LimitExceededError nio callback 2019-07-04 22:49:37 -04:00
miruka
55e14e96bc Ensure msgs are sent in right order, fix echo bug
bug: only one local echo message delegate could be seen because all
echo eventId were the same
2019-07-04 21:37:20 -04:00
miruka
13266303ff Fix room subtitle not passing click events 2019-07-04 19:23:40 -04:00
miruka
5812dcb051 Eliminate room delegate subtitile binding loop 2019-07-04 19:21:07 -04:00
miruka
634796b7d9 Don't put our own profile changes in the timeline 2019-07-04 19:11:22 -04:00
miruka
e97773dc97 Sort rooms lexically 2019-07-04 18:53:10 -04:00
miruka
07438150db Optimize model upsert, ensure right type for roles 2019-07-04 18:41:08 -04:00
miruka
6b83d79f16 stripRoomName: don't return "" if name is just "#" 2019-07-04 17:11:00 -04:00
miruka
22dfd83d32 Rename avatar/nameHue funcs to avatar/nameColor 2019-07-04 16:56:34 -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
8ac731149d Sending messages and local echo 2019-07-03 21:20:49 -04:00
miruka
1f73f634e8 Strip leading/trailing \n from html filter output 2019-07-03 18:36:03 -04:00
miruka
441c9d0c1d Have different background for events and messages 2019-07-02 23:48:36 -04:00
miruka
c8347647b9 Fix messages and non-messages getting combined 2019-07-02 23:32:39 -04:00
miruka
f0c5afe8c7 Rename RoomEventList components 2019-07-02 22:29:09 -04:00
miruka
9d5701da19 Add support for non-message room events 2019-07-02 22:24:21 -04:00
miruka
a6653179e5 nio.AsyncClient can now have event callbacks 2019-07-02 15:06:45 -04:00
miruka
5e7ce561b0 Sort accounts and room categories models 2019-07-02 14:13:45 -04:00
miruka
06c823aa67 Build system, messages support and more 2019-07-02 13:59:52 -04:00
miruka
933341b7e6 Implement avatar hue from name 2019-06-28 18:39:00 -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
e5bdf6a497 Rename "system events" to "app events" 2019-06-27 02:36:31 -04:00
miruka
3344debbbf Start rewriting backend with pyotherside+asyncio 2019-06-27 02:31:03 -04:00