Commit Graph

1042 Commits

Author SHA1 Message Date
miruka
61cd3b2f55 Rename config_files module → user_files + document 2019-12-18 08:41:02 -04:00
miruka
23be12fb60 Document backend & qml_bridge + minor code changes 2019-12-18 08:14:35 -04:00
miruka
87b262ebee Move backend.__about__ stuff into __init__ 2019-12-18 06:55:05 -04:00
miruka
9e372d01d5 Python backend "App" becomes QmlBridge
Is now strictly about setting up asyncio/uvloop and providing the
functions for QML to interact with it and call backend coroutines.

The appdirs attribute is moved to Backend.
2019-12-18 06:44:18 -04:00
miruka
5d7d66f99b Have a QML Future object instead of JS dict 2019-12-18 06:16:24 -04:00
miruka
d675b3a40b Fix HDrawer import versions 2019-12-18 05:02:37 -04:00
miruka
717c5078c7 Move QML Python stuff to its own subfolder 2019-12-18 05:00:27 -04:00
miruka
f4d7636df6 Move Chat/ dir under Pages/ 2019-12-18 04:53:08 -04:00
miruka
2bdf21d528 Rename some filers and folder for clarity 2019-12-18 04:45:09 -04:00
miruka
127f724357 Comment C++ files 2019-12-18 04:32:32 -04:00
miruka
12c7e44d8a Turn event_handlers.js into EventHandlers.qml 2019-12-17 18:10:18 -04:00
miruka
705fb31f88 Fix Utils.flickToBottom() 2019-12-17 18:07:15 -04:00
miruka
2cb64c5346 Turn utils.js into a Utils.qml QtObject
When a .js module is used, every single file that imports it creates
its own duplicated environment in memory for that module.

Instead, use a simple QtObject with all the functions, and declare it in
Window.qml so that it is available to all children everywhere in the
app.
2019-12-17 17:59:53 -04:00
miruka
c16731b239 Fix "transfered" → "transferred" spelling 2019-12-17 17:43:32 -04:00
miruka
b0cf708246 Differentiate invited members in room pane 2019-12-17 09:46:18 -04:00
miruka
216514f19c Don't desaturate disabled button icons 2019-12-17 08:55:04 -04:00
miruka
c99ca8de44 Show progress bar when loading past room events 2019-12-17 08:54:46 -04:00
miruka
026c049d62 Improve message delegate code, fix multiple issues
- Fix the ListView not auto-scrolling like it should when message
  delegates changed height, such as when images were loaded

- Fix messed up delegate positions overlapping each others when
  movements happen

- Fix previous/nextItem binding broken due to imperative modification

- Fix "messageBodyWidth" binding loop
2019-12-17 03:45:00 -04:00
miruka
b3e3fd7bc6 EventFile: be as tall as the message avatars 2019-12-16 18:28:51 -04:00
miruka
1d43d522e6 Strip file:// prefix from copied downloaded paths 2019-12-16 18:22:25 -04:00
miruka
ce23d2c992 Reactivate EventFile for video and audio events
Temporary solution until the media player is ready
2019-12-16 18:19:06 -04:00
miruka
45ff9bba99 EventFile now downloadable 2019-12-16 18:05:09 -04:00
miruka
8215d127c8 Move EventImage.download() to EventMediaLoader 2019-12-16 17:48:58 -04:00
miruka
011b870d0b Don't show EventFile for video/audio links 2019-12-16 17:42:05 -04:00
miruka
1ec8ed466f Implement crude encrypted EventImage downloading
When a message image is clicked in an encrypted room, the full file will
be download (no GUI indication for now, just a print in terminal) and
opened when ready.

Before downloading, copying the image address via right click will put
the full image mxc:// URL in clipboard. After downloading, it will be
the local downloaded image path instead.
2019-12-16 17:36:14 -04:00
miruka
5dbf06ba6c Fix multiple accounts local echo issues
- Messages should now always be in the order they were sent in when
  sending from multiple accounts to a same slow room

- Fixed dead lock that occured when sending a message
  from account A, then from account B, then from account A, in a
  room slow enough so that all of them would be in local echo transition
  at the same time.
2019-12-16 10:53:26 -04:00
miruka
423c657fea Disable HListView animation debug prints 2019-12-16 07:35:39 -04:00
miruka
817ae905fe Backend._any_clients(): only pick a healthy client
When selecting a random client for get_profile(), thumbnail(), or
download() requests, ignore those that aren't currently syncing.
Also warn if we still can't find a healthy client after 30s.
2019-12-16 07:02:42 -04:00
miruka
5b4146c854 Fix main pane not updating on Account changes
The pane only updated on Room model changes. If an account with no
joined rooms was added, it would be invisible until a client restart.
2019-12-16 07:01:19 -04:00
miruka
9da0b12e45 Resume accounts faster on client startup 2019-12-16 05:14:26 -04:00
miruka
7d8f67bfe2 Retry if initial profile retrieval on login fails 2019-12-16 05:03:57 -04:00
miruka
18822b9102 Remove unused ImportError.qml 2019-12-16 04:51:52 -04:00
miruka
b307b596d2 Animators are buggy crap, drop them 2019-12-16 04:42:41 -04:00
miruka
aad317126a Fix sign out 2019-12-16 04:11:46 -04:00
miruka
5765638466 Fix click on room setting buttons not working 2019-12-15 15:23:15 -04:00
miruka
88df501f13 Remove now unused pane properties in theme 2019-12-15 15:11:51 -04:00
miruka
5e3a621f8b Respect uiScale for panes 2019-12-15 15:10:50 -04:00
miruka
52956954e5 Fix filter field overflowing at some sizes/zooms 2019-12-15 14:56:40 -04:00
miruka
a9507bdbeb Change HListView transitions to run on scale 2019-12-15 14:36:24 -04:00
miruka
5a3eb2c2e5 Disable room pane buttons startup animation
Looks weird
2019-12-15 13:04:51 -04:00
miruka
2cfe76fd8e Wrap image progress bars in loaders, fix cpu usage 2019-12-15 13:02:40 -04:00
miruka
2d501dca5a Use a Loader for HTile context menus 2019-12-15 05:37:14 -04:00
miruka
59260e108a makeObject(): accept a component as first argument 2019-12-15 05:26:36 -04:00
miruka
986b117fbc Prevent HDrawer resizer events from being stolen 2019-12-15 03:45:46 -04:00
miruka
a8dbd9185a Update matrix client update() usage 2019-12-14 17:40:31 -04:00
miruka
73dfcce8a7 Prevent crash in loading past evnts 2019-12-14 13:50:21 -04:00
miruka
47c53644e7 Fix/improve transfer speed-related stuff 2019-12-14 13:49:31 -04:00
miruka
c5ed3be031 RoomPane flickable: ignore unimplemented views 2019-12-13 18:04:31 -04:00
miruka
c6295225fb Make tab keybinds work on room pane views 2019-12-13 17:59:58 -04:00
miruka
d8639db8ee Fix HSwipeView binding loop 2019-12-13 17:55:41 -04:00
miruka
17452ea69b Update TODO 2019-12-13 17:37:31 -04:00
miruka
ff7393b7c3 HSplitView with state saving and default props 2019-12-13 17:19:47 -04:00
miruka
51c68cf998 Fix Room.given_name possibly being None 2019-12-13 17:18:36 -04:00
miruka
df76efa359 Italicize room name in leave/forget poups
Like for the invite popup now
2019-12-13 17:11:01 -04:00
miruka
843389693e Add room name to invite popup 2019-12-13 17:08:59 -04:00
miruka
a493b0cf61 Add "invite members" to room context menu 2019-12-13 17:04:56 -04:00
miruka
55506dd10e Disable the room settings save button for now 2019-12-13 16:40:48 -04:00
miruka
c8ce50a01c Fix Room.plain_topic accidentally set to None 2019-12-13 15:09:13 -04:00
miruka
8a4c160df6 Working cancel button in settings 2019-12-13 10:14:54 -04:00
miruka
0ab7a008cf Add default... + reset() to field, area & checkbox 2019-12-13 09:56:52 -04:00
miruka
407396e01e Put RoomPane inside a loader 2019-12-13 09:53:11 -04:00
miruka
bd8fa997c4 CreateRoom: Room names must not exceed 255 bytes 2019-12-13 09:22:29 -04:00
miruka
d240de702f Implement (read-only for now) room settings 2019-12-13 09:22:13 -04:00
miruka
f8d5260fd7 Update some icons 2019-12-13 08:31:40 -04:00
miruka
c191adfd0b Rename "Find someone" page to "Direct chat" 2019-12-13 07:17:11 -04:00
miruka
dff7be33f9 AddChat: Simplify EncryptCheckBox subtitle 2019-12-13 07:03:36 -04:00
miruka
621a4e415a HTextField: disabledText and opacity handling 2019-12-13 06:29:58 -04:00
miruka
4cd4386abe Improve HScrollableTextArea disabled handling
Don't hide text if no disabledText is explicitely set, set opacity
using theme.disableElementsOpacity
2019-12-13 06:24:58 -04:00
miruka
2ca79a212f Increase chechbox indicator opacity when disabled 2019-12-13 06:21:30 -04:00
miruka
37023638c0 Hide avatar tooltip if avatar already big enough 2019-12-13 06:21:12 -04:00
miruka
82e4dff2ab Fix left rooms appearing as joined rooms 2019-12-12 10:33:52 -04:00
miruka
438b0d26a4 Don't share room members models between accounts
Is unsafe and creates subtile bugs, like "invite member → member
declines → member disappears from the member list, then reappears a
second after" (race condition)
2019-12-12 10:11:24 -04:00
miruka
707ac61ff6 Support and sort invited room members 2019-12-12 10:03:39 -04:00
miruka
4b13b75617 Restore previous focus after HPopup closed 2019-12-12 08:39:26 -04:00
miruka
1bd012c871 Restore focus to previous element on HMenu closed 2019-12-12 08:36:51 -04:00
miruka
2769d60fdc Add copy room/user ID context menus 2019-12-12 08:32:50 -04:00
miruka
6813a2c9b4 Fix double click on event to open console 2019-12-12 08:20:26 -04:00
miruka
1ecd383791 Hide avatar tooltips for broken thumbnails 2019-12-11 15:16:14 -04:00
miruka
5bef84064d Don't show MemberDelegate subtitle if same as name 2019-12-11 15:12:21 -04:00
miruka
c4ee77ca15 Disable composer/upload button when no permission 2019-12-11 13:54:18 -04:00
miruka
c2b7b458f9 Use the "Binding on ..." syntax whenever possible 2019-12-11 13:03:33 -04:00
miruka
e694f1739b Trim some text fields 2019-12-11 12:46:43 -04:00
miruka
001c643406 Implement inviting to room 2019-12-11 12:42:59 -04:00
miruka
fd2f8c9828 Reorder HButton props 2019-12-11 11:44:59 -04:00
miruka
ed3a3726e1 Don't call onError() for python CancelledError 2019-12-11 10:51:04 -04:00
miruka
1f12a19b48 Utils.makePopup(): allow setting different parent 2019-12-11 07:54:42 -04:00
miruka
e4f1cb6545 BoxPopup: more reliable implicitWidth (margins) 2019-12-11 07:54:13 -04:00
miruka
1c7015bbd2 Prevent HDrawer from being in front of an HPopup 2019-12-11 07:53:27 -04:00
miruka
d56b590edc Rate-limit config files writing 2019-12-10 17:59:04 -04:00
miruka
3c4c92dbc0 Save/load composer text 2019-12-10 17:04:03 -04:00
miruka
98c2efb773 Unified API to save/restore state properties 2019-12-10 16:29:49 -04:00
miruka
2cd177dc13 Add text remembering ability to HTextField 2019-12-10 15:32:42 -04:00
miruka
888df282a8 Rename side pane stuff to main pane 2019-12-10 15:17:41 -04:00
miruka
3a3e0e9dbb Rename some chat components 2019-12-10 15:03:05 -04:00
miruka
f65425957b Builtin ability to remember size for HDrawer 2019-12-10 15:01:56 -04:00
miruka
8c8ba221d3 HDrawer resizer: use MouseArea's pressed prop 2019-12-10 14:23:14 -04:00
miruka
0578844eef Rename some HDrawer props for more clarity 2019-12-10 14:19:25 -04:00
miruka
29cf78fe18 SidePane: default size if no custom one in state 2019-12-10 14:10:01 -04:00
miruka
ad6f111793 Fix & improve keyboard and mousewheel flicking 2019-12-10 11:49:46 -04:00
miruka
e70a1d459b Correct SidePane behavior when no accounts present 2019-12-10 04:18:17 -04:00
miruka
b32d88cd95 Fix users that left a room not deleted from model 2019-12-09 15:34:29 -04:00
miruka
852b5818a2 Fix Chat loading spinner position 2019-12-09 15:34:13 -04:00
miruka
bd8bf6120e Fix taking focus for chat 2019-12-09 14:13:38 -04:00
miruka
2e780d7c6a HDrawer: provide real visible size prop→fix issues 2019-12-09 13:54:05 -04:00
miruka
6627c6341a Fix DebugConsole retained history size 2019-12-09 13:51:50 -04:00
miruka
9c70e08668 Restore focus to previous item on console exit 2019-12-09 13:34:56 -04:00
miruka
37d8d5c68d History persistence for DebugConsole 2019-12-09 13:21:12 -04:00
miruka
718aef8414 Make DebugConsole keyboard-scrollable 2019-12-09 13:00:42 -04:00
miruka
6e6fa0ad35 Improve console size, add variables info 2019-12-09 12:56:25 -04:00
miruka
f5b0cbb204 Make new console when needed & destroy old console 2019-12-09 12:32:46 -04:00
miruka
f125b6d60e Minor DebugConsole improvements
Startup animation, top position by default, add F1 shortcut
2019-12-09 12:27:40 -04:00
miruka
9b9cf274ac DebugConsole: take active focus on startup 2019-12-09 12:20:58 -04:00
miruka
e7abcced5f Fix a HDrawer weird size issue 2019-12-09 12:16:23 -04:00
miruka
7d50e8c6a8 HDrawer: enable behaviors based on orientation 2019-12-09 12:10:04 -04:00
miruka
66e3a07401 RoomSidePane header buttons background 2019-12-09 12:03:35 -04:00
miruka
13d3f19997 Replace all ==/!= by ===/!== 2019-12-09 11:35:50 -04:00
miruka
3b78d12f9c Rename HTabbedBoxes to HTabContainer 2019-12-09 09:29:57 -04:00
miruka
7ecdefa7f3 Set x/y only on DebugConsole, not HDrawer 2019-12-09 08:11:46 -04:00
miruka
a5e01fd3b9 Rename HDrawer "width" props, add horizontal prop 2019-12-09 08:10:03 -04:00
miruka
99034c7587 Make DebugConsole use HDrawer
Also add some help, commands to quicly set the position, and support
vertical orientations for HDrawer
2019-12-09 08:01:01 -04:00
miruka
5609ae2817 Refactor Chat/RoomSidePane 2019-12-09 05:25:31 -04:00
miruka
06a6a4c08d Rewrite SidePane using QQC Drawer
Cleaner approach, gets rid of the HPage swipe view hack, better
performances, a lot less complex
2019-12-08 14:43:41 -04:00
miruka
5326726c4f Improve default window size for small screens 2019-12-08 14:40:56 -04:00
miruka
9a074e6097 Improve bad event types messages 2019-12-08 12:46:25 -04:00
miruka
c2f5a5bcbc Use normal QtQuick.Shortcut 2019-12-08 12:43:39 -04:00
miruka
793db51a60 Improve add-account.svg 2019-12-08 10:32:25 -04:00
miruka
93a6d706b8 Rename "Recovery" page to "Reset" 2019-12-08 05:31:02 -04:00
miruka
77a1d854c2 Add signin remember checkbox info 2019-12-08 05:30:30 -04:00
miruka
c3570c9d82 Update recovery/register texts 2019-12-08 05:30:04 -04:00
miruka
c3f1ca95f9 Increase HBox spacing 2019-12-08 05:29:37 -04:00
miruka
f58e2cbf7a Change add account icon, prevent checkbox overflow 2019-12-08 05:08:59 -04:00
miruka
b267ef6562 SignIn screen tweaks
- Put the server field after user & pass, it makes more sense to have
  the default focused field at the start

- Hide the currently unimplemented login method selection

- Rename Recovery tab to Reset (shorter)
2019-12-08 03:49:17 -04:00
miruka
f5fde35482 Remove checkbox default padding 2019-12-08 03:49:07 -04:00
miruka
455801a641 Use new way to cancel current login for signin btn 2019-12-07 18:45:03 -04:00
miruka
6f589dbda5 Implement cancelling python coros from QML
This was needed to implement the cancel button featue on the login
screen
2019-12-07 18:33:33 -04:00
miruka
4a93a24f74 cancel_previous(): use @functools.wraps 2019-12-07 17:09:13 -04:00
miruka
7deb21c182 Rename "logout" things to "sign out" + update icon 2019-12-07 12:45:20 -04:00
miruka
0f1a6c7df1 Add temporary Recovery box 2019-12-07 12:39:56 -04:00
miruka
f75d44a0dd Add temporary "unimplemented" Register box 2019-12-07 12:39:35 -04:00
miruka
a2ffaf4a67 More consistant spacing for HBox & SignIn 2019-12-07 11:05:46 -04:00
miruka
956dc52174 Simplify box, tabs and popups size handling 2019-12-07 10:59:43 -04:00
miruka
7235611d54 Refactor SignIn, adjustments to HCheckBox & HBox 2019-12-07 09:38:36 -04:00
miruka
150744ab8a main.cpp: put setAttribute before creating app 2019-12-07 09:05:57 -04:00
miruka
28b3727e88 New HTabbedBoxes component, base AddChat on it 2019-12-07 08:56:32 -04:00
miruka
883d1c095b Smooth box size transition between AddChat tabs 2019-12-07 08:18:18 -04:00
miruka
099a98a5da Click anywhere on errored upload bar to close it 2019-12-06 18:47:34 -04:00
miruka
54395fff44 Fix upload icon height 2019-12-06 18:40:39 -04:00
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