Commit Graph

812 Commits

Author SHA1 Message Date
miruka
7f48c1b35d Properly handle login errors with new exceptions 2019-11-11 06:39:11 -04:00
miruka
de7053f196 Improve MatrixError.from_nio, use it for upload() 2019-11-11 06:08:31 -04:00
miruka
dbdb7b9bb0 Make thumbnail min/max size configurable via theme 2019-11-11 05:43:17 -04:00
miruka
deedc8c7aa Fix EventFile sizing/elliding 2019-11-11 05:34:46 -04:00
miruka
4b76725006 Bring back EventFile (also for video/audio for now) 2019-11-11 05:26:32 -04:00
miruka
717b18fede Fix HPage and EventList flickTarget conflict 2019-11-10 09:38:16 -04:00
miruka
f2ab84c754 Add tab navigation shortcuts (for AddChat) 2019-11-10 09:28:57 -04:00
miruka
484e9e595d Rename EditAccount to AccountSettings 2019-11-10 09:07:35 -04:00
miruka
e3165d0a7c HPage: fix header text vertical centering 2019-11-10 08:58:47 -04:00
miruka
c0adf8353b Add account settings keybinds 2019-11-10 08:54:45 -04:00
miruka
e32747d434 Keybinds: remove old sidepane workaround binds 2019-11-10 08:50:50 -04:00
miruka
4920ef8155 Keybinds: Alt(+Shift)+N for add new chat/account 2019-11-10 08:49:51 -04:00
miruka
f552a16d51 HPage: set shortcuts.flickTarget on init
This makes any HPage by default keyboard-scrollable, notably
the new AddChat pages.
2019-11-10 08:44:36 -04:00
miruka
35a3ae2558 Change default collapse keybind to Alt+O 2019-11-10 08:36:54 -04:00
miruka
e2a7b690b3 Keybind: collapse first account if none selected 2019-11-10 08:34:05 -04:00
miruka
5d4840dcd8 Add shortcut to add new chats 2019-11-10 08:32:17 -04:00
miruka
14ba4b50b5 Avatars on FindSomeone/JoinRoom pages 2019-11-09 15:19:10 -04:00
miruka
72c480471a Add encryption check box to FindSomeone page 2019-11-09 14:57:46 -04:00
miruka
793024434f Set icon for starting direct chat 2019-11-09 14:29:19 -04:00
miruka
de59948214 When leaving room, try to go to previous page 2019-11-09 14:25:48 -04:00
miruka
46ff911bfa Add FindSomeone page 2019-11-09 14:20:53 -04:00
miruka
0aedc1a7d0 Prevent "failed to convert null" qt warning 2019-11-09 13:41:12 -04:00
miruka
b34387ad79 Implement enabling encryption when creating room 2019-11-09 13:38:21 -04:00
miruka
e7283f48f1 Create/JoinRoom: fix clickButtonOnEnter 2019-11-09 11:18:49 -04:00
miruka
35a4030cc0 Hide previous errors when clicking accept buttons 2019-11-09 11:15:24 -04:00
miruka
02888eb63d Change join/create room button icons 2019-11-09 11:10:25 -04:00
miruka
66fe230044 JoinRoom: enable join button if field is not empty 2019-11-09 10:48:48 -04:00
miruka
fa25c101ff Fix HRepeater childrenImplicitWidth property 2019-11-09 10:48:05 -04:00
miruka
5d4b699104 CreateRoom: show message if creation fails 2019-11-09 10:39:43 -04:00
miruka
c34676e5a0 Turn JoinRoom field red on error 2019-11-09 10:34:54 -04:00
miruka
e95a23ef90 Handle JoinRoom errors, error clases overhaul 2019-11-09 10:20:16 -04:00
miruka
dbcca17192 Add JoinRoom page 2019-11-09 09:52:16 -04:00
miruka
a9a99e4a65 Add ctrl+tab keybind to go to last page 2019-11-08 16:01:09 -04:00
miruka
b53acb3113 Implement pageLoader history + CreateRoom cancel 2019-11-08 15:56:20 -04:00
miruka
ad34d2d171 Implement room creation functions 2019-11-08 15:32:12 -04:00
miruka
bfbeb83ce5 Size CreateRoom box correctly if window too small 2019-11-08 10:31:07 -04:00
miruka
37e6ced259 Readd nio_callbacks.py 2019-11-08 10:20:48 -04:00
miruka
0ebbbc4a27 HCheckBox: fix bad default subtitle text value 2019-11-08 10:17:23 -04:00
miruka
2f20361f5c AddChat: make SwipeView non-interactive
Prevent accidentally switching tab by pressing left/right arrow (?)
2019-11-08 10:17:23 -04:00
miruka
8742b7803c Tabs theme, even/odd color, no gaps between tabs 2019-11-08 10:17:23 -04:00
miruka
8c111904a5 AddChat: move create room tab to last position 2019-11-08 10:17:23 -04:00
miruka
11c8af7c19 Show the creator or future room's avatar 2019-11-08 10:17:23 -04:00
miruka
d6fd518334 Add HTabButton component 2019-11-08 10:17:23 -04:00
miruka
7bed1eca30 AddChat page 2019-11-08 10:17:23 -04:00
miruka
45951554a5 Add "+" button to account delegates 2019-11-08 10:17:23 -04:00
miruka
83ff9bf61d Put all nio callbacks in a new separate class 2019-11-08 10:17:23 -04:00
miruka
693ae1c78e Put all nio callbacks in a new separate class 2019-11-08 10:13:50 -04:00
miruka
eee2162575 Serialize Path objects to QML
- media_cache.get_(thumbnail/media) now return a Path instead of str
- When converted to strings in the serialization, the "file://" prefix
  is prepended. This fixes problems when the app is built in release
  mode with QRC resources.
2019-11-07 04:02:41 -04:00
miruka
a8f4a00e5e Remove old broken __main__.py 2019-11-07 03:53:59 -04:00
miruka
acd69108e8 Common func for ModelItem/POSEvent value serializ 2019-11-07 03:43:05 -04:00
miruka
4a6f634f7a Allow picking multiple files to upload 2019-11-06 17:13:15 -04:00
miruka
6953239bc3 Add shortcut to send file from path in clipboard 2019-11-06 17:03:34 -04:00
miruka
25a86bc484 Add shortcut to send file 2019-11-06 16:45:33 -04:00
miruka
5c6b6ef68a Have a dedicated SendFilePicker component 2019-11-06 16:45:30 -04:00
miruka
c6bb41573f Add uploadsBar section to theme 2019-11-06 16:14:48 -04:00
miruka
67cffa854d EventImage: fix empty bubble in the corner 2019-11-06 16:11:12 -04:00
miruka
3acd3ba66a Show broken image icon when image fails to load 2019-11-06 16:09:32 -04:00
miruka
8383b6d3e4 Add radial progress bars to images 2019-11-06 15:47:18 -04:00
miruka
96839ea69a Add forked RadialBar module 2019-11-06 15:30:51 -04:00
miruka
8eca875499 Use new HCircleProgressBar for HBusyIndicator 2019-11-06 14:30:31 -04:00
miruka
f9fd8055f2 Add HCircleProgressBar 2019-11-06 13:49:48 -04:00
miruka
3cbbd6042b Show upload file size instead of index/upcount 2019-11-06 11:03:08 -04:00
miruka
28dd35fc1b Indeterminate progress bar styling 2019-11-06 10:08:55 -04:00
miruka
6cdd6de1b3 Show local echo icon on pure media events 2019-11-06 09:48:27 -04:00
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