Commit Graph

112 Commits

Author SHA1 Message Date
miruka
1e002eb4a5 Fix flake8/mypy/isort code errors from new setup 2021-03-03 17:14:55 -04:00
miruka
8ca8f490fa JSONify ModelItemDeleted.ids for QML if needed
If a model has tuple keys, these already get turned into JSON strings
for the ModelItemSet pyotherside event (for QML and JS reasons).
Do the same for ModelItemDeleted's ids field, else the QML event handler
will be unable to find the items by IDs.
2021-03-03 17:12:09 -04:00
miruka
b38fbc6d9b Fix filtered_members models updates 2021-03-03 17:12:09 -04:00
travankor
055b68126a Add Sorted Containers to replace blist 2021-03-03 17:12:09 -04:00
travankor
1dcd6daaba Improve Python 3.9 compatibility
Blist has been unmaintained for 5+ years and is now broken on Python 3.9.
2021-03-03 17:12:09 -04:00
koudja
52b0bb18cb Add room bookmarking: bookmarks are always on top
Introduce a bookmark system for rooms:
a room bookmarked will always appear on top of every other
(for a given account).

Bookmarking can be done through context menu on targeted room
(as well as un-bookmarking) or through settings.json
(key roomBookmarkIDs) for permanent bookmark.
roomBookmarkIds is a {account_user_id: [room_id]} dict.
2021-03-03 17:12:09 -04:00
miruka
1df7cb8014 Add copyright header to source code files
Copyright notice as per
https://reuse.software/spec/#format-of-copyright-notices

Fixes #134
2021-03-03 17:12:08 -04:00
miruka
2712896456 Show read marker counts on messages
Tells how many people have the message as their last seen one in the
room.
2020-09-14 11:58:37 -04:00
miruka
a9c316fcf5 Store read receipts in event model items 2020-09-11 14:50:27 -04:00
miruka
d51d266642 Add ModelItem.notify_change() for list/dicts 2020-09-11 14:50:27 -04:00
miruka
7580ecfd64 Fix missing typing.Tuple import in model.py 2020-09-11 14:50:27 -04:00
miruka
f5cb3ecaa0 Keep a {id: item} cache for ModelStore models
Accelerates the ModelStore ListView find() function,
which now just has to get an object key instead of looping through the
whole model.
2020-09-02 13:38:11 -04:00
miruka
a1b9f34958 Add setting to sort rooms lexically 2020-09-01 14:42:08 -04:00
miruka
f68dda9f14 Don't start with any member in autocompl. models
Fix the AutoCompletedMembers filter model to ensure that it doesn't
pick all the items from the corresponding room member model on startup,
wait until the user actually uses the completion feature to fill it.
2020-08-23 10:54:03 -04:00
miruka
5ba669444d Add basic user autocompletion UI 2020-08-21 01:21:10 -04:00
miruka
f648807730 Remove unused Device model item 2020-08-21 01:19:18 -04:00
miruka
4760ccac5e Filter servers also by their name 2020-08-19 06:37:26 -04:00
miruka
ab390704eb Use homeserver URL field also as a filter field 2020-08-19 04:39:50 -04:00
miruka
2fa8b2c5f9 Add a public server list to the initial login page 2020-08-19 01:13:34 -04:00
miruka
1c218c82ec Ignore reply header links for keyboard open binds
Don't open the multiple links contained in the "In reply to <user>"
text of fallback replies when using keyboard shortcuts to open
links/media.
2020-07-21 22:46:05 -04:00
miruka
99017adc1d Model item events: add a media_http_url field 2020-07-20 23:09:28 -04:00
miruka
55e22ea948 Add openMessagesLinksOrFilesExternally keybind
This required us to set the media downloaded local path on events
entirely from python instead of simply lazy-fetching them when needed
from QML, due to pyotherside's async nature and files that must be open
in a certain order.
2020-07-20 23:07:52 -04:00
miruka
1b5a09c052 Move Presence class to its own python file
It's not a ModelItem
2020-07-18 18:33:57 -04:00
miruka
692c78f398 Optimize presence-related model item field changes 2020-07-18 18:19:56 -04:00
miruka
15de44f47a
Merge pull request #104 from vSLG/presence
Save status_msg to accounts.json
2020-07-16 18:28:46 -04:00
miruka
5cc1c55d95 Immediatly show UI transfer for clipboard paste
Create an Upload model item before compressing the image and writing it
to disk
2020-07-16 16:14:07 -04:00
vslg
d57414c06c Save status_msg to accounts.json
Restore it if there is not any status_msg set on
the server
2020-07-16 17:09:14 -03:00
miruka
757679a6e0 Make power level control permission-aware 2020-07-13 18:57:42 -04:00
miruka
0459657575 Room default power level awareness 2020-07-13 18:54:30 -04:00
miruka
3c620f6fd1 Add auto-away feature for Linux X11 2020-07-11 14:38:08 -04:00
miruka
8d93433a8e Fix case for ZeroDate and PresenceOrder
Only top-level types should have CaseLikeThis, general top-level
variables should be LIKE_THAT.
2020-07-10 13:14:18 -04:00
miruka
f03ac77595 Improve Presence docstring 2020-07-10 13:14:18 -04:00
vslg
5abdc1f779 Fix changes requested (#101)
- Fix code formatting issues.
- Document `Presence`.
- Improve `Presence.__lt__()` performance by
  defining a dict outside the method.
- Make presence ball radius relative to uiScale
  and configurable from theme.
2020-07-10 13:14:18 -04:00
vslg
43df8fd60b Bug fix and minor improvements
Improvements:
- Add instant feedback upon setting a different
  presence for account (local echo)
- Sort room members by power level and then
  presence
- Periodically update members' `last_acitve_at`
  field on the room pane
- Move status message field up on account context
  menu, and put invisible before offline again

Bug fix:
- Do not try to override presence set from
  another client, accept it
2020-07-10 13:14:18 -04:00
vslg
a3c9ac20c6 Make offline presence to stop sync
Setting the presence of an account to offline
will make the client to end sync task and will
prevent messages from being sent.

Setting it to online again or any other presence
will start sync task again.

Left:
- Local echo to presence change
- UI Control to affect all members presence
- Block more requests to be sent (e.g. member
  actions)
2020-07-10 13:14:18 -04:00
vslg
91ed600997 Check server presence support and comment code 2020-07-10 13:14:18 -04:00
vslg
d5e0a3340d Use presence events to update Account presence 2020-07-10 13:14:18 -04:00
vslg
a1e5a1981d Fix presence not being updated after loaded once 2020-07-10 13:14:18 -04:00
vslg
0eda6eb278 Add account presences to account context menu 2020-07-10 13:14:18 -04:00
vslg
6e202c3e27 Fix outdated presence for lazy loaded members 2020-07-10 13:14:18 -04:00
miruka
50e17e950d Store member presence information 2020-07-10 13:14:18 -04:00
miruka
4752abf6e5 Add a batch set_fields method to Model 2020-07-10 13:14:17 -04:00
miruka
0a2d274824 Add verified devices indicator to room header 2020-07-10 13:14:17 -04:00
miruka
7f66ebb786 Re-add local highlights similar to 0.5.0 2020-06-26 05:59:16 -04:00
miruka
aa8dbce3a7 Re-add local unread "counter" similar to 0.5.0 2020-06-26 05:59:11 -04:00
miruka
3791a08eea Terminology: room mention count → highlight count 2020-05-31 19:13:19 -04:00
miruka
7b5aa8ffe1 Store room member read markers in model 2020-05-31 00:38:48 -04:00
miruka
b399de6776 Remove account collapse bug workaround
Unable to reproduce the bug where collapsing an account with lots of
rooms corrupts the ListView, did updating to Qt 5.14.2 do something?

With the workaround removed, the 0.2s delay when removing batch of
ListView items (e.g. when filtering) is gone.
2020-05-30 23:08:21 -04:00
miruka
de894ab4bb Protect proxy/filter models with write_lock 2020-05-30 23:08:21 -04:00
miruka
c0118c4e28 Rename Model._write_lock → Model.write_lock 2020-05-28 14:13:14 -04:00