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
ab2a73dbfc
Set html style for code
2019-07-21 18:17:51 -04:00
miruka
2bd8514e9b
Label link colors
2019-07-21 17:50:01 -04:00
miruka
6e65376612
markdown: don't parse "> ..." as blockquote
2019-07-21 16:08:40 -04:00
miruka
f7d286cdc2
Save/load which accounts are collapsed
2019-07-21 09:26:47 -04:00
miruka
71f78feec6
Define UIState config file
2019-07-21 06:05:01 -04:00
miruka
41eea44fff
Add keyboard shortcuts to flick the events list
2019-07-20 18:08:58 -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
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
a10a395e0b
Only send a formatted_body if it's truly needed
2019-07-19 18:13:04 -04:00
miruka
db3a9efe8a
Hide status field for now, adjust big font size
2019-07-19 00:12:23 -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
9decd58992
Use aiofiles for image provider file writes
2019-07-18 20:44:17 -04:00
miruka
d597e1dda8
Refactor Backend and config file operations
2019-07-18 20:30:41 -04:00
miruka
a842981406
Improve README
2019-07-18 18:35:47 -04:00
miruka
67efde9116
Show own events on right only under certain width
2019-07-18 06:33:09 -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
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
fa61e8f0e3
Standard way of knowing if window "is wide"
2019-07-18 01:18:06 -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
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
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
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
6916039546
Add "Edit Account" interface skeleton
2019-07-13 05:34:58 -04:00
miruka
cb0d7e8a77
Highlight account and room delegates
2019-07-12 17:07:45 -04:00
miruka
a2ae569511
Split HButton into HBaseButton and HButton
2019-07-10 15:00:57 -04:00
miruka
62ec4a9ae8
Caught up to the old backend
...
Lines before (PyQt):
Language files blank comment code
Python 21 787 114 2076
QML 49 393 14 1689
JavaScript 2 59 3 177
SUM: 72 1239 131 3942
Lines now (pyotherside, asyncio):
Language files blank comment code
QML 59 516 159 1962
Python 11 306 53 739
JavaScript 5 64 24 211
C++ 1 6 2 18
SUM: 76 892 238 2930
2019-07-08 13:32:53 -04:00
miruka
7f7a7621cf
Cleanup TODO.md
2019-07-08 12:52:07 -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
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
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
be152c3acf
Fix getUser binding loops & coro race conditions
2019-07-07 01:37:13 -04:00
miruka
03d9079d63
Show LeftBanner with a generic left text
2019-07-06 23:43:51 -04:00
miruka
2ac1d6da17
Remove "readonly"s from Theme for readability
2019-07-06 21:06:18 -04:00
miruka
34d68af51f
Rename SendBox root id
2019-07-06 17:56:04 -04:00
miruka
388967c737
Improve TypingMembersBar
2019-07-06 17:29:45 -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
ecba7c47ec
Past events loading (with two bugs)
2019-07-05 03:12:27 -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
a1b4d8900f
New backend work
...
Models, account connection, fetching user profiles,
show connected accounts in sidebar
2019-06-28 18:12:45 -04:00
miruka
3344debbbf
Start rewriting backend with pyotherside+asyncio
2019-06-27 02:31:03 -04:00
miruka
0b85252dd6
Remove "querying user" debug print
2019-05-17 17:18:01 -04:00
miruka
de9140cdb2
Reduce useless setTypingState calls on lost focus
2019-05-17 16:02:26 -04:00
miruka
5ab588f40c
Prevent RoomEventDelegate startup position glitch
2019-05-17 14:24:03 -04:00
miruka
19c69b406a
Fix room banners height
2019-05-16 15:57:09 -04:00
miruka
532e5a4375
Make RoomCategoryDelegate expand icons smaller
2019-05-16 15:53:17 -04:00
miruka
7f3ced682f
Fix RoomHeader title width calculation
2019-05-16 15:50:14 -04:00
miruka
1a4ac0f432
Make Room.members a properly updating ListModel
2019-05-14 20:20:54 -04:00
miruka
a3e080c9a0
Fix local echoed messages having a wrong time
2019-05-14 15:03:12 -04:00
miruka
f9a5902545
Improve SidePane auto-sizing and appearance
2019-05-12 15:57:18 -04:00
miruka
97c1dda4ba
Add a basic member list pane to rooms
2019-05-12 13:17:42 -04:00
miruka
8f965a3e72
Remove blur effect, causes too much trouble
2019-05-11 17:51:49 -04:00
miruka
d82cb50e30
Implement room filtering
2019-05-11 17:13:53 -04:00
miruka
bb86c39fe7
Simplify SortFilterProxy init
2019-05-11 16:40:53 -04:00
miruka
bbc4c15ad3
Rework Backend, models and items organization
2019-05-11 15:52:56 -04:00
miruka
dcdf165c4f
Update TODO.md
2019-05-09 19:48:49 -04:00
miruka
1a90bb4331
Add Backend.devices ListModelMap
...
The Device ListModels will be populated after login.
2019-05-09 14:07:57 -04:00
miruka
d08f43e6be
Add new queuing features to @futurize
...
- max_instances renamed to max_running
- consider_args parameter:
if True, $max_running of this function with the same arguments can be
running, else:
$max_running of this function, no matter the arguments, can be running
- discard_if_max_running:
if True and there are already the maximum possible number of running
functions running, cancel this task (previous default behavior), else:
Wait for a spot to be free before running
2019-05-08 10:32:45 -04:00
miruka
e9592a7289
Query other users's device keys
2019-05-06 23:27:31 -04:00
miruka
5ff82471fc
Upload E2E keys to server if needed
2019-05-06 23:08:36 -04:00
miruka
15da828c70
Pass a store dir path to nio HttpClient
2019-05-06 22:42:48 -04:00
miruka
a3d0f32dc5
ClientManager._get_standard_path → Backend.getPath
2019-05-06 21:28:54 -04:00
miruka
eab5ae0afe
Fix sendbox enter not working
2019-05-06 21:07:59 -04:00
miruka
25bb082f5a
Fix invisible room categories still taking space
2019-05-06 14:20:43 -04:00
miruka
cdf6190cba
Fix room sorting for good
...
Do it the right way with a QSortFilterProxyModel.
2019-05-06 13:07:00 -04:00
miruka
047225fded
Rework models hierarchy, room categories models
2019-05-02 14:20:21 -04:00
miruka
012e89f6cb
Improved ListModel and ListItem
...
- New ListItem implemented using a metaclass, which makes defining new
ListItem subclasses much cleaner and shorter
- ListModel functions taking an index now accept either an int
(list index) or str (value of a main key)
- getWhere() gone, simply use get(a_main_key_value) now
- updateOrAppendWhere replaced by update()/upsert()
2019-04-29 23:51:37 -04:00
miruka
216ae312c5
Remove html-sanitizer custom attrs workaround
...
Fix merged upstream (1.7.2).
2019-04-28 20:39:45 -04:00
miruka
67c3ef5906
Disable QML cache, responsible of multiple bugs
2019-04-28 20:37:11 -04:00
miruka
c4fb0c1150
Fix SidePane indent at minimum size
2019-04-28 15:52:26 -04:00
miruka
4433e48611
Fix QtQuick.Layout version, MessageContent wrap
2019-04-28 15:45:42 -04:00
miruka
f714c85d75
HSpacer component for layouts
2019-04-28 15:22:53 -04:00
miruka
d0089df051
Use Base components without namespace prefix
2019-04-28 15:18:36 -04:00
miruka
b8901dfc5b
Use H*Layout totalSpacing wherever possible
2019-04-28 14:54:01 -04:00
miruka
455490b5af
Use Loaders for RoomEventDelegate
2019-04-28 14:48:59 -04:00
miruka
99ab6a817a
Update/refactor Chat components and banner
2019-04-28 14:20:30 -04:00
miruka
2e8e042808
Replace HToolButton usages with HButton
...
Also change sidePane toolbar: option button and filter rooms field
2019-04-28 12:10:34 -04:00
miruka
5650234e3b
Restyle the chat UI
2019-04-28 11:03:08 -04:00
miruka
f65ea9dd0d
Just import nio
...
Instead of nio.events, nio.responses, etc.
All the classes are already available at nio.
2019-04-28 01:17:12 -04:00
miruka
d3749af4bc
Boxes blur, more styling
2019-04-28 00:46:40 -04:00
miruka
e09efaecda
Refactor LoginPage into separate components
2019-04-27 18:00:28 -04:00
miruka
dc2f779d4b
Make login button work for login page
2019-04-26 18:47:25 -04:00
miruka
5988eccdbb
Add login page and forget room system
2019-04-26 16:02:20 -04:00
miruka
34d2bd233d
Set parents for all QObjects
2019-04-22 14:24:45 -04:00
miruka
4607f53b7a
Show special text when room has no events yet
...
e.g. if invited to a room but there's no history provided by
another account.
Also add a signal for the ListModel.count property.
2019-04-22 11:31:06 -04:00
miruka
f6ae315fb2
Improve Makefile test, add additional checkers
2019-04-22 09:37:49 -04:00
miruka
237d750d47
Overhaul room list sorting
2019-04-21 20:55:24 -04:00
miruka
677117983a
Set hourglass icon when clicking accept/decline
...
PyQtFuture's gotResult signal can now be used from QML/JS.
2019-04-21 16:31:48 -04:00
miruka
ea8f75c729
Organize banners, add LeftBanner
...
Previously there was InviteOffer, now there's a base Banner component,
InviteBanner and LeftBanner.
2019-04-21 15:20:20 -04:00
miruka
bbf29e29b1
Add InviteOffer component
2019-04-21 10:44:04 -04:00
miruka
2c5dc7bd4f
Handle room invites
...
Add them to the roomList, and have separate sections:
Invites and Rooms.
2019-04-21 06:56:59 -04:00
miruka
872758d310
Organize TODO.md
2019-04-20 18:02:55 -04:00
miruka
8f35e60801
Capitalization, list model and room header work
...
- Standardized capitalization for variables and file names everywhere in
QML and JS, get rid of mixed camelCase/snakeCase,
use camelCase like everywhere in Qt
- ListModel items are now stored and returned as real QObjects with
PyQt properties and signals.
This makes dynamic property binding a lot easier and eliminates the need
for many hacks.
- New update(), updateOrAppendWhere() methods and roles property
for ListModel
- RoomHeader now properly updates when the room title or topic changes
- Add Backend.pdb(), to make it easier to start the debugger from QML
2019-04-20 17:43:57 -04:00
miruka
0d7728665f
Handle network errors
...
- Move HTTP connect/disconnect logic to networkManager
- If a talk fails due to socket error, HTTP transport error or
nio bad response that might change, retry every 2s until success
- Clean up some leftover debug prints
2019-04-19 16:15:21 -04:00
miruka
1f04fa07cb
Remove workaround for sanitizer autolink
...
Fix merged upstream
2019-04-19 13:42:00 -04:00
miruka
1d0cce402e
Proper display name retrieval implementation
...
For any name not found in rooms data, rely on new
nio.HttpClient.get_displayname() function to get and cache it,
e.g. for our own name if no room is joined and past events from users
who left the room.
@futurize now returns PyQtFuture objects, wrapper for the
concurrent.futures.Future objects that can be used from QML,
to ensure name retrieval does not block the GUI.
2019-04-19 02:26:29 -04:00
miruka
11d900965a
Add local echoing of messages
...
As per
https://matrix.org/docs/spec/client_server/latest.html#local-echo
2019-04-18 13:46:39 -04:00
miruka
98b494fcc2
Convert markdown to HTML for sendbox
...
Also pass to clientManager the Backend, and to Client the clientManager,
and set Qt parents for them.
2019-04-17 23:28:25 -04:00
miruka
6ab4acdc84
Improve room past events loading
...
- Trigger when room is shown if there's not enough messages to fill the
list height
- Trigger whenever user is scrolling before a certain point, instead of
when dragging is released/scrolling stopped and the top edge is hit
- Prevent multiple load requests at same time
- Keep a set of fully loaded rooms, don't request anymore history
if a room is fully loaded
2019-04-17 22:34:22 -04:00
miruka
a0f9acddaa
Load past events when scrolling up
...
Also keep two nio clients internally: one for loop-syncing, one for the
rest; since they can't handle more than one talk at a time.
2019-04-17 21:08:32 -04:00
miruka
7e62da8733
Fix image position and filter() return
2019-04-17 14:27:22 -04:00
miruka
c4f46f42b6
Add image previews in HTML messages
2019-04-17 13:44:04 -04:00
miruka
a59c0d1572
Improve HTML autolinking
...
Allow example.com and 127.0.0.1, handle tel: and magnet:
2019-04-17 12:06:09 -04:00
miruka
a7bf1fca44
Sanitize HTML displayed as message content
2019-04-17 10:49:54 -04:00
miruka
8a3189df15
Add users currently typing in room bar
2019-04-14 16:12:07 -04:00
miruka
d36cbbc7df
Bring back room subtitles
...
Show last appropriate room message/event as subtitle
2019-04-14 14:09:54 -04:00
miruka
9c66166c4f
Display room messages and other events
2019-04-14 12:56:30 -04:00
miruka
0434c13cf9
Initial commit
2019-03-21 23:28:14 -04:00