Commit Graph

895 Commits

Author SHA1 Message Date
miruka
737e102629 Color upload icon but not text on pause/error 2019-12-06 18:37:18 -04:00
miruka
74efce589b Remove periods at the end of room info events 2019-12-06 18:23:25 -04:00
miruka
4ada039384 Upload UI/code improvements 2019-12-06 16:44:25 -04:00
miruka
54df551b08 Rename theme "uploadsBar" to "fileTransfer" 2019-12-06 09:22:38 -04:00
miruka
150a783c28 Split UploadBars into a new FileTransfer/ dir 2019-12-06 09:20:34 -04:00
miruka
8ae4bbb6cf Fix uplaod item delete, pause and cancel bugs 2019-12-06 08:59:35 -04:00
miruka
e51f1f2c79 Implement upload pause function 2019-12-06 08:44:45 -04:00
miruka
d354480840 Work around Qt hover bug for tooltips 2019-12-06 08:21:48 -04:00
miruka
d70260d007 Add visual upload pause button, not working yet 2019-12-06 07:10:22 -04:00
miruka
6c92f4cad1 Hide tooltips when window not hovered anymore 2019-12-06 07:07:40 -04:00
miruka
d893c4f534 SidePane: consider uiScale for manualSize 2019-12-05 10:59:29 -04:00
miruka
97cf7b6dcd EventImage: respect uiScale 2019-12-05 10:51:57 -04:00
miruka
a555ad0e19 Upload stats 2019-12-05 10:00:23 -04:00
miruka
3aff20006c Handle OSError happening in send_file() 2019-12-05 09:51:31 -04:00
miruka
b3f93b969c Fix RoomMessageUnknown not seen as general event 2019-12-04 18:27:56 -04:00
miruka
9d89409379 Support UnknownEvent and UnknownEncryptedEvent 2019-12-04 18:20:30 -04:00
miruka
2fe8c80aa5 Enable high DPI scaling 2019-12-04 11:49:20 -04:00
miruka
c3dfb523b6 Don't bind ctrl+backspace to zoom reset
ctrl+backspace is used to delete previous word in a text field
2019-12-04 10:06:00 -04:00
miruka
b25f3f3e51 FindSomeone: reject invalid user ID 2019-12-04 10:00:29 -04:00
miruka
a992b51ac5 Fix being able to make room with inexistant user 2019-12-04 09:43:04 -04:00
miruka
470b031a6f Standardize usage of period in UI sentences 2019-12-04 09:32:07 -04:00
miruka
915c96f174 Fix power icons position when room pane collapsed 2019-12-04 09:17:13 -04:00
miruka
34e0ec7c7d Implement UI zooming 2019-12-04 09:08:38 -04:00
miruka
87a81ed1a7 Use real UUIDs for pendingCoroutines 2019-12-04 06:22:04 -04:00
miruka
26e63e4ab2 Use new nio AsyncClient.mxc_to_http()
Has the correct behavior for all servers,
e.g. mxc://privacytoosl.io/id → https://chat.privacytools.io/...
2019-12-02 06:42:48 -04:00
miruka
3919b964ca Add ability to cancel uploads 2019-12-02 05:06:21 -04:00
miruka
ae009c7412 Serialize Python UUIDs to strings for QML 2019-12-02 04:40:29 -04:00
miruka
bbb872e5dc Improve HButton behavior on small fixed size 2019-12-02 04:40:01 -04:00
miruka
92bfb02446 UploadBars: tooltip and expand text on error/click 2019-12-02 03:19:43 -04:00
miruka
e4aa3b6572 Handle upload errors 2019-12-02 02:57:47 -04:00
miruka
08694388dd Serialize Python types to their __name__ attribute 2019-12-01 12:21:37 -04:00
miruka
3e214dc26b Don't use Animators for ListView transitions
They're buggy
2019-12-01 11:24:20 -04:00
miruka
9e9737d8ad Don't use HOpacityAnimator in ListView, flickering 2019-11-30 16:27:34 -04:00
miruka
df0020e62c Fix EventImageTextBubble shown when no text 2019-11-30 15:03:07 -04:00
miruka
c5a8be9ef9 Use new HScaleAnimator instead of HNumberAnimation 2019-11-30 14:59:48 -04:00
miruka
29cdc0f3f8 Use HRotationAnimator instead of HNumberAnimation 2019-11-30 14:37:04 -04:00
miruka
68d7c11c58 Add HX/YAnimator, used instead of HNumberAnimation 2019-11-30 11:45:24 -04:00
miruka
6a442da16f Use OpacityAnimators instead of NumberAnimations 2019-11-30 11:41:19 -04:00
miruka
d1e1ed07dd Hide EventImage bubbles on hover 2019-11-30 11:15:54 -04:00
miruka
db36ab6a74 No html styling in processedEventText() + cleanups 2019-11-30 08:20:41 -04:00
miruka
c8095f4874 EventContent: rename eventSender to senderText 2019-11-30 08:01:00 -04:00
miruka
2fd2806514 Support RoomMessageNotice events 2019-11-30 07:10:48 -04:00
miruka
3b2ab048fb Rework import keys pass confirmation
- Show button as loading until the import is done, *then* close popup
- Remove the dedicated backend password checking function, we can use
  import_keys() directly now
- Handle all the possible errors that could be thrown from python
2019-11-30 05:55:27 -04:00
miruka
a09e811e56 Remove old import dialog cruft 2019-11-30 05:55:27 -04:00
miruka
580f92e0be Color member name on hover in sidepane 2019-11-30 05:55:27 -04:00
miruka
a01de1f3d6 Add power icons for room members 2019-11-30 05:55:23 -04:00
miruka
a35526a0b5 Show higher power-level room members first 2019-11-30 04:04:24 -04:00
miruka
61c2919c7f Sort members and undated rooms case-insensitively 2019-11-30 03:59:44 -04:00
miruka
710dd56109 Correct "Empty room" display 2019-11-27 10:04:55 -04:00
miruka
81ce4635fc Linkify alias in m.room.alias events 2019-11-27 06:30:42 -04:00
miruka
f187a5f0ab Handle m.room.avatar, improve name/topic/alias
- Display the new room's avatar as an EventImage
- Show "x removed the room's avatar" if it's set to none
- Show "x removed the room's y" for empty name/topic/canonical alias
  events instead of "x changed the y to ''"
2019-11-27 06:18:06 -04:00
miruka
e57ffdae3f Room.__lt__(): use tuple comparison 2019-11-26 16:18:48 -04:00
miruka
2754fff0df Fix set_avatar_from_file() 2019-11-26 15:52:04 -04:00
miruka
2b288bdfc6 Import/export keys improvements 2019-11-23 11:14:14 -04:00
miruka
1d3ca08957 Reintroduce (reduced) event list cacheBuffer
This is needed until we have proper url preview support
2019-11-22 10:36:59 -04:00
miruka
6eff9e0513 Animate HBox apparition 2019-11-22 10:35:53 -04:00
miruka
66d7428da2 Don't disable loading tab buttons 2019-11-22 04:51:55 -04:00
miruka
301384dc57 Fix collapse buttons always disabled 2019-11-22 04:50:40 -04:00
miruka
60c64ad96f Fix logout 2019-11-22 04:27:20 -04:00
miruka
5a70adcc93 Use ES6 template strings 2019-11-18 03:57:13 -04:00
miruka
2123f5a66f Improve upload code, based on nio PR #76 2019-11-17 13:31:00 -04:00
miruka
25ce08891d Fix which EventImage url gets opened/copied 2019-11-16 08:06:56 -04:00
miruka
fc2fb605e3 Prefer using own client for fetching own profile 2019-11-14 16:20:30 -04:00
miruka
f727645342 Fix progress bar indeterminate ←→ normal switching 2019-11-12 18:22:57 -04:00
miruka
7e5bd5299e Fix logout not properly stopping the sync task 2019-11-12 18:19:48 -04:00
miruka
c2590abe12 Fix saved_accounts.add bad arguments 2019-11-12 18:12:41 -04:00
miruka
ea980e0241 Show coro uuid when logging py exception from QML 2019-11-12 18:12:08 -04:00
miruka
c4a65b0cff Remove big cacheBuffer from EventList 2019-11-12 10:00:32 -04:00
miruka
9f3bb1aa4d set_avatar_from_file: raise if file isn't an image 2019-11-12 09:48:11 -04:00
miruka
5f04628178 No need to str(path) anymore for model item Upload 2019-11-12 09:46:29 -04:00
miruka
37f5f5973c Clarify upload data type, guess_mime seek on end 2019-11-12 09:37:21 -04:00
miruka
47bfad1d72 Move Size type alias to utils 2019-11-12 09:26:43 -04:00
miruka
ef391d1eb1 Make utils function accept Path, str, bytes and IO 2019-11-12 09:24:58 -04:00
miruka
5832c3ca2d Raise on init if homeserver url is missing scheme 2019-11-12 09:13:45 -04:00
miruka
73541ad7a5 download/thumbnail don't need authentification 2019-11-12 09:10:00 -04:00
miruka
4cc2ebf6e3 Use exceptions for get_profile 2019-11-12 08:47:03 -04:00
miruka
6558bdc87f Put custom exceptions in their own file 2019-11-12 08:38:43 -04:00
miruka
290d3e9f6b Simplify Backend.get_profile 2019-11-12 08:34:08 -04:00
miruka
3ebb11aa69 Raise on room send error instead of logging 2019-11-12 07:45:54 -04:00
miruka
5a04bbaa93 Remove leftover debug console call 2019-11-11 11:07:38 -04:00
miruka
a7e505a387 Document utils.py 2019-11-11 09:26:35 -04:00
miruka
746a9259db SignIn: cancel previous task when clicking button 2019-11-11 09:12:31 -04:00
miruka
c9ddd4ee80 Change error msg when server URL may be invalid 2019-11-11 06:57:33 -04:00
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