Commit graph

321 commits

Author SHA1 Message Date
Konstantinos Sideris
f11044b5eb Handle incoming invites
fixes #128
2017-12-19 22:36:12 +02:00
Konstantinos Sideris
65672d3dfb Allow only one application instance
fixes #141
2017-12-14 21:55:00 +02:00
Konstantinos Sideris
1d285993f7 Valgrind run
- Fix a memory leak where a layout was created without being used.
- Fix uninitialized value.
2017-12-12 09:31:00 +02:00
Konstantinos Sideris
544b623512 Add dialog to create rooms
fixes #25
2017-12-11 23:00:37 +02:00
Konstantinos Sideris
ef0b0f6879 Add menu to invite users 2017-12-10 23:59:50 +02:00
Konstantinos Sideris
19bae2a2e6 Add gui option for joining rooms (#25) 2017-12-10 15:22:01 +02:00
Konstantinos Sideris
d872b1060b Reset cache on breaking changes
fixes #154
2017-12-10 12:51:44 +02:00
Konstantinos Sideris
6415c4125f Add style colors for the ScrollBar 2017-12-05 14:13:26 +02:00
Konstantinos Sideris
a605e4486f Migrate to matrix-structs for event and response parsing 2017-12-04 18:41:19 +02:00
Konstantinos Sideris
914bdecc0b Initial integration with matrix-structs 2017-12-03 02:47:37 +02:00
Konstantinos Sideris
f4f78b1d8a Add basic support for m.video messages
fixes #115
2017-12-01 18:28:26 +02:00
Konstantinos Sideris
5573548fb1 Allow audio clip uploads 2017-12-01 17:33:49 +02:00
Konstantinos Sideris
432a2e1354 Add inline audio clip player (m.audio) (#143) 2017-12-01 15:39:50 +02:00
Konstantinos Sideris
eae069ad93 Group emoji and dialogs with namespaces 2017-11-30 20:02:46 +02:00
Konstantinos Sideris
32c8340577 Create directories for related files 2017-11-30 13:53:28 +02:00
Konstantinos Sideris
5663c58dd9 Use templates for the TimelineItem generation 2017-11-30 13:19:34 +02:00
Konstantinos Sideris
deb1a6e292 Simplify timeline item creation 2017-11-30 12:55:30 +02:00
Konstantinos Sideris
fdb76bb5c1 Implement file uploads
fixes #24
2017-11-29 23:39:35 +02:00
Konstantinos Sideris
b21942a3e3 Add read support for m.file messages (#24) 2017-11-28 02:01:37 +02:00
Konstantinos Sideris
0dad256743 Reload theme without restart (#137) 2017-11-25 22:47:06 +02:00
Konstantinos Sideris
54cf3418bc Paint RoomList's background (#137) 2017-11-25 22:20:34 +02:00
Konstantinos Sideris
f0ecf6eee6 Add dark theme 2017-11-25 18:19:58 +02:00
Konstantinos Sideris
f36e498503 Update system theme 2017-11-25 15:14:37 +02:00
Konstantinos Sideris
0f363b5f44 Send read receipts
Automatically dismiss unread notifications when the window regains
focus.

fixes #111
fixes #68
2017-11-24 00:10:58 +02:00
Konstantinos Sideris
fc34f373df Remove unnecessary comments 2017-11-22 21:13:22 +02:00
Konstantinos Sideris
56d8be5a27 Fix emoji picker's theme 2017-11-22 21:03:53 +02:00
Konstantinos Sideris
552941118b Fix minor stylistic issues on the nheko theme 2017-11-22 19:52:38 +02:00
Konstantinos Sideris
929b2df6fb Merge branch 'theme' 2017-11-22 19:09:19 +02:00
Konstantinos Sideris
937caddacd Keep track of newly joined rooms in the settings manager
fixes #134
2017-11-21 17:34:32 +02:00
Max Sandholm
19b526d453 Use system color scheme (using a Qt stylesheet) #104
The color scheme of nheko obeys the default color theme of Qt
(i.e. the system theme). It uses a Qt stylesheet to accomplish this,
which means replacing the color theme with a custom theme would only
be a matter of writing a new style sheet and loading it into the app.
2017-11-16 16:33:52 +02:00
Konstantinos Sideris
4166a863b4 Lint 2017-11-15 18:42:21 +02:00
Jani Mustonen
4e1c8dd663 Implement a per-room send queue. (#118)
[ci skip]
2017-11-15 18:38:50 +02:00
Konstantinos Sideris
e40dab9f98 Improve settings menu layout 2017-11-09 22:04:40 +02:00
Konstantinos Sideris
a6b84fac45 Remove unnecessary layouts 2017-11-08 23:09:15 +02:00
Konstantinos Sideris
24dd76ee0b Parse unsigned key 2017-11-06 22:14:16 +02:00
Benjamin Saunders
4ccb5ed81f Add input history, enable multi-line input, refactor commands (#119)
This also fixes the transmission of mis-typed commands as messages,
fixes inability to send messages that start with a command, and does
some initial work towards automatically resizing the input field to fit
the input message.
2017-11-05 23:01:21 +02:00
Jani Mustonen
13cb0521fa Improvements to the quick switcher (#109)
- Ghetto disambiguation for the quick switcher
- Fix the Ctrl+K shortcut
- Fix keyboard focus when the quick switcher is closed

fixes #114
2017-11-03 08:54:17 +02:00
Jani Mustonen
84741adc16 Implement a setting for the tray icon (#108) 2017-11-02 22:00:43 +02:00
Konstantinos Sideris
886edd03fb Add dummy settings menu 2017-11-02 00:41:13 +02:00
Thomas Herzog
287b5aa4c0 Implemented sending of typing notifications (#105) 2017-10-31 20:11:49 +02:00
Konstantinos Sideris
91b8427795 Add missing headers 2017-10-28 21:24:42 +03:00
Konstantinos Sideris
e224440f5d Display user avatar changes 2017-10-28 21:11:40 +03:00
Konstantinos Sideris
c18a49915b Save the changes between syncs in cache
- Fixes high cpu issues caused by the serialization of the whole
  in-memory state.
- Display name changes are now visible in the timeline.
2017-10-28 20:46:34 +03:00
Konstantinos Sideris
a17b6dffaf Clean up headers 2017-10-28 15:46:39 +03:00
Konstantinos Sideris
845228ac6a Add scroll-down button 2017-10-27 22:20:33 +03:00
Konstantinos Sideris
8e15a5080d Adjust scrollbar only after pagination (#94)
The scrollbar will stay in the same position if new messages
are added to the bottom of the timeline.
2017-10-27 13:36:26 +03:00
Konstantinos Sideris
c6e1068e0e Lint 2017-10-23 00:19:35 +03:00
Konstantinos Sideris
143ed5176a Use callbacks on MatrixClient 2017-10-22 22:51:50 +03:00
Konstantinos Sideris
c0e55378c3 Remove extra inline keywords 2017-10-22 19:03:55 +03:00
Konstantinos Sideris
3cae6c3983 Remove ui flickering when adding new timeline events 2017-10-21 18:53:15 +03:00
Konstantinos Sideris
13e526c27d Retry initial sync (#19) 2017-10-20 22:32:48 +03:00
Konstantinos Sideris
8a9a513ecd Move ctrl-k callback to the MainWindow 2017-10-20 21:39:05 +03:00
Konstantinos Sideris
9b60fdd620 Remove sync timer 2017-10-20 21:21:04 +03:00
Rokas Kupstys
3205e5fdd3 Make sidebar topic expand on click and fix html formatting of elided text. (#96)
Fixes #95
2017-10-20 20:58:23 +03:00
Konstantinos Sideris
8299a74775 Elide room topic 2017-10-19 19:04:51 +03:00
Konstantinos Sideris
8390ff253d Fix icons for retina displays 2017-10-15 22:08:51 +03:00
Konstantinos Sideris
ac8e42b926 Reduce timeline flickering 2017-10-09 01:32:25 +03:00
Konstantinos Sideris
76ddfb792b Add /join command support 2017-10-08 22:38:38 +03:00
Konstantinos Sideris
ac525970b0 Add snackbar 2017-10-08 22:01:18 +03:00
Konstantinos Sideris
ebe36b5713 Drop the loading screen if consensus can't be achieved 2017-10-08 21:35:37 +03:00
Konstantinos Sideris
6e1285bb0e Prevent FOUC 2017-10-07 20:51:35 +03:00
Konstantinos Sideris
bc4b47a5e3 Use shared pointer for the modals 2017-10-07 20:51:35 +03:00
Konstantinos Sideris
985530e99b Resume sync when connectivity is established 2017-10-05 18:13:11 +03:00
Konstantinos Sideris
28b3a3fde0 Put typing notifications above the text input 2017-10-04 22:00:26 +03:00
Konstantinos Sideris
d60c2b76e3 Receive typing notifications (#88) 2017-10-04 11:33:34 +03:00
Konstantinos Sideris
88349eae90 Recover from corrupted cache data
Make Cache constructor exception free

fixes #74
2017-10-03 21:16:31 +03:00
Max Sandholm
7ad45d8d64 React to externally left and joined rooms, and add "leave room" button in room menu (#75)
* Initial "join room" feature.
* React correctly to remotely joined rooms.
* Leaving rooms implemented both locally using the room menu
   in nheko, and reacting properly when leaving a room remotely 
   from another client.
2017-10-01 19:49:36 +03:00
Konstantinos Sideris
6e0ae807d5 Update badge counter only on change 2017-10-01 18:15:23 +03:00
Konstantinos Sideris
0c0ac68bc2 Remove extra clang-format options 2017-10-01 12:51:29 +03:00
Rokas Kupstys
da6e7c11dc Fixes #50.
On KDE desktop icon failed to appear because TrayIcon requested a zero-size rect. Implementing MsgCountComposedIcon::availableSizes() method fixes that.

After icon became visible it was not transparent, and places that should have been transparent contained artifacts likely due to uninitialized memory. Implementing MsgCountComposedIcon::pixmap() which returns a pixmap with alpha channel fixes that.
2017-10-01 12:15:38 +03:00
Konstantinos Sideris
775d2e88f5 Don't move scrollbar to the bottom when it's active
fixes #55
2017-09-30 22:26:33 +03:00
Konstantinos Sideris
748f480077 Add missing update calls 2017-09-30 20:44:18 +03:00
Konstantinos Sideris
41a85832b3 Remove unnecessary animations 2017-09-30 17:05:05 +03:00
Konstantinos Sideris
ff1bc797de Refactor the welcome page 2017-09-30 16:39:24 +03:00
Konstantinos Sideris
29e21e2970 Merge branch 'images' 2017-09-10 13:13:02 +03:00
Konstantinos Sideris
1bfe48de75 Style change again 2017-09-10 12:59:21 +03:00
Konstantinos Sideris
edff71bc24 Implement image uploads (#24) 2017-09-10 12:58:00 +03:00
Konstantinos Sideris
b5ae84c3c3 Add write support for m.emote events
closes #41
2017-09-03 11:43:45 +03:00
Konstantinos Sideris
a44a4f36af Add read support for m.emote events (#41) 2017-09-02 16:47:59 +03:00
Konstantinos Sideris
6797cbc943 Linkify URLs in room topics
closes #52
2017-08-26 15:36:10 +03:00
Konstantinos Sideris
177dd6a5b0 Remove cache data when the user logs out 2017-08-26 14:31:23 +03:00
Konstantinos Sideris
7fbfe3af15 Update the cache state at once to avoid being in an invalid state 2017-08-26 13:49:16 +03:00
Konstantinos Sideris
43b1bdfe63 Remove nick colors 2017-08-26 11:33:26 +03:00
Konstantinos Sideris
18625d9d27 Fix login UX
The mxid input will not prevent the user from entering any invalid
value.

closes #22
2017-08-21 20:55:35 +03:00
Konstantinos Sideris
c6ec20fa40 Place the completion popup under the search widget 2017-08-20 21:13:00 +03:00
Konstantinos Sideris
2644e4acca Small style change 2017-08-20 13:47:22 +03:00
Konstantinos Sideris
57ac64fb2b Add missing destructors 2017-08-15 23:28:25 +03:00
Konstantinos Sideris
8d81489e05 Ghetto room switcher 2017-08-15 21:06:27 +03:00
Konstantinos Sideris
69036967ff Focus on the text input when switching rooms 2017-08-14 18:25:43 +03:00
Konstantinos Sideris
9c28ba28a8 Update the last sender from the initial pagination 2017-08-14 00:26:57 +03:00
Konstantinos Sideris
146aaa8746 Display the most recent message instead of the topic
closes #11
2017-08-06 18:53:31 +03:00
Konstantinos Sideris
4fccc6270e Fix full screen image viewer on macOS sierra 2017-08-06 10:35:32 +03:00
Konstantinos Sideris
af0f22fc91 Keep fetching history until the scrollbar gets activated 2017-08-05 15:59:24 +03:00
Konstantinos Sideris
8d05073547 Initial support for state cache
- Adds detection for duplicate events
2017-07-30 14:30:55 +03:00
Konstantinos Sideris
e5ccb73a20 Add serialization on matrix events 2017-07-30 14:30:55 +03:00
Konstantinos Sideris
622fc3f9c3 Save and restore app's window size
closes #46
2017-07-30 13:59:28 +03:00
Konstantinos Sideris
3c1f9696df Fix small timestamp misalignment 2017-07-15 19:18:34 +03:00
Konstantinos Sideris
30fb46e25b Use pixels to specify the font sizes
Basically reverts the last font related commits since pointSize isn't
as reliable as pixelSize.

Also some layout values (margins, spacings) have been moved out to Config.h.
2017-07-15 17:11:46 +03:00
Konstantinos Sideris
847ae37df2 Linting 2017-07-09 22:27:20 +03:00
jansol
f5ba63946b Improve login flow (#35)
* Validate both inferred and explicitly entered server addresses by attempting to call the /versions endpoint
* If the domain from the mxid fails validation, try prefixing it with 'matrix'
* Only show server address field if address validation ultimately fails
2017-07-08 14:41:49 +03:00
Konstantinos Sideris
140cbd3c27 Slow down spinner 2017-07-02 16:44:05 +03:00
Konstantinos Sideris
97ca8d0ed1 Remove hardcoded font sizes on the top bars and text input 2017-07-01 15:52:46 +03:00
Konstantinos Sideris
0ed2350664 Set emoji size relative to the default font 2017-07-01 14:03:00 +03:00
Konstantinos Sideris
730a56f58e Remove hardcoded font sizes, margins etc
- Fixes small font issue on MacOs
2017-07-01 12:46:58 +03:00
Konstantinos Sideris
da190593c8 Repaint when the room avatar is received 2017-06-05 20:19:20 +03:00
Konstantinos Sideris
26dfbfd08c Lazy load initial timeline events 2017-06-05 19:54:45 +03:00
Konstantinos Sideris
36d25951dc Fix scrolling flickering on backwards pagination 2017-06-05 19:21:19 +03:00
Konstantinos Sideris
95c492bad8 Experimental support for user avatars in timeline 2017-06-05 02:14:05 +03:00
Konstantinos Sideris
b8c8fed655 Show confirmation dialog on logout
Minor stylistic refactoring

closes #29
2017-06-02 18:04:51 +03:00
Konstantinos Sideris
4a026b1511 Be explicit about the text color on the context menu
[ci skip]
2017-05-31 23:44:04 +03:00
Konstantinos Sideris
af80c251d7 Add context menu on RoomList items 2017-05-31 19:42:07 +03:00
Konstantinos Sideris
c184362044 Add menu to toggle notifications 2017-05-31 17:06:03 +03:00
Konstantinos Sideris
5197f8a886 Add drop shadow to emoji panel
- Minor refactoring
2017-05-31 02:35:28 +03:00
Konstantinos Sideris
0cd9e3b1e5 Resolve name and avatar on 1-on-1 rooms 2017-05-26 21:34:16 +03:00
Konstantinos Sideris
251f569a5c Add custom scrollbar on the timeline 2017-05-24 22:45:13 +03:00
Konstantinos Sideris
0237fec90c Don't show the landing page when there is an active user 2017-05-22 18:03:37 +03:00
Konstantinos Sideris
9772f52876 Increase tray icon's bubble size 2017-05-22 17:35:17 +03:00
Konstantinos Sideris
a45582585d Minimize to tray 2017-05-21 16:36:06 +03:00
Konstantinos Sideris
c480f8f4bc Snappy sidebar 2017-05-19 19:55:38 +03:00
Konstantinos Sideris
30fce32161 Remove RoomList UI form 2017-05-19 17:23:36 +03:00
Konstantinos Sideris
48618b438f Add hover color on RoomList items 2017-05-19 03:45:46 +03:00
Konstantinos Sideris
f4522f9bbf Simplify room list item 2017-05-19 03:28:15 +03:00
Konstantinos Sideris
6553aa61a1 Replace include guards with #pragma once 2017-05-16 21:46:45 +03:00
Konstantinos Sideris
c470e49aa9 Add geometry animation on emoji picker 2017-05-16 21:21:31 +03:00
Konstantinos Sideris
992af5611b Show user info even if the display name or avatar are missing 2017-05-16 15:43:29 +03:00
Konstantinos Sideris
a568d60cef Remove MainWindow ui form 2017-05-14 21:10:03 +03:00
Konstantinos Sideris
b3bb0531de Make InputValidator class members static 2017-05-14 16:36:30 +03:00
Konstantinos Sideris
7502f167ae Use QSharedPointer to manage TimelineViews and RoomInfoListItems 2017-05-14 16:31:59 +03:00
Konstantinos Sideris
c060a136a9 Update prev_batch only while paginating 2017-05-13 19:58:48 +03:00
Konstantinos Sideris
0368d854cf Initial support for backwards pagination 2017-05-12 15:43:35 +03:00
Konstantinos Sideris
ff611c1b39 Highlight URLs in TimelineView 2017-05-11 01:28:06 +03:00
Konstantinos Sideris
e78e43c86a Save the user defined domain instead of the one provided by login response 2017-05-09 16:57:41 +03:00
Konstantinos Sideris
1f10403ace Add settings panel for homeserver's domain 2017-05-09 13:25:43 +03:00
Konstantinos Sideris
0834b246ad Initial support for display names 2017-05-08 19:44:01 +03:00
Konstantinos Sideris
07405fd4ff Fix windows build 2017-05-08 01:02:22 +03:00
Konstantinos Sideris
e44cc374e1 Use strongly typed enums 2017-05-08 00:51:03 +03:00
Konstantinos Sideris
1f90c58076 Use timeline to retrieve state events
- Rooms without any history will be shown.
- Room's state will be kept in sync and any updates will be visible.
2017-05-07 17:15:38 +03:00
Konstantinos Sideris
8825e072f2 Add matrix::events namespace 2017-05-04 17:11:04 +03:00
Konstantinos Sideris
02ef7411e6 Add StateEvent 2017-05-04 17:11:04 +03:00
Konstantinos Sideris
63f181388e Add RoomEvent 2017-05-04 17:11:04 +03:00
Konstantinos Sideris
4ea76503fb Add base Event class 2017-05-04 17:11:04 +03:00
Konstantinos Sideris
b064df8b45 Add event contents 2017-05-04 17:11:04 +03:00
Matthew Hodgson
9cc9b623eb macOS fixes (#15)
- Improve build instructions.
- Fix fullscreen image sizing.
- Remove horizontal overscroll of RoomInfoListItem.
2017-05-04 13:11:04 +03:00
Konstantinos Sideris
4a7b005c64 Add lint rule 2017-04-30 15:10:59 +03:00
Konstantinos Sideris
e6fd80f87f Fix MainWindow being out of focus when the fullscreen overlay is closed
That was probably a Linux specific issue or my mouse is buggy.
2017-04-30 13:00:11 +03:00
Konstantinos Sideris
57332553c4 Add full screen overlay for image display 2017-04-30 01:55:10 +03:00
Konstantinos Sideris
c9d03b793b Add initial support for inline images 2017-04-28 14:56:45 +03:00
Konstantinos Sideris
4b4035eebc Rename History to Timeline
In order to be compatible with the Matrix terminology
2017-04-27 03:14:12 +03:00
Konstantinos Sideris
415ef7e9c7 Add spinner to hide uninitialized layout after login 2017-04-26 02:24:10 +03:00
Konstantinos Sideris
42bb9bb63a Add full emoji support 2017-04-23 21:31:08 +03:00
Konstantinos Sideris
fa83ae1cf8 Add logo icons 2017-04-21 17:16:29 +03:00
Konstantinos Sideris
f046dc8ac6 Add initial read-only emoji support 2017-04-19 19:38:39 +03:00
Konstantinos Sideris
e1d48367f8 Show the unread message count on the window title 2017-04-15 19:04:02 +03:00
Konstantinos Sideris
3b0ff1a4cd Add initial support for unread message count
- Add border width on Badge
2017-04-15 02:56:04 +03:00
Konstantinos Sideris
a5ebff5949 Use color generator for nick names 2017-04-14 17:10:18 +03:00
Konstantinos Sideris
bb03a402d7 Add proper struct initialization 2017-04-13 04:32:18 +03:00
Konstantinos Sideris
27f7142cd8 Initial implementation for local echo
Each HistoryView maintains a list of pending events. Each pending
message is validated from the homeserver with either the returned
EventId or the body of the message.

Currently there is no support to remove invalid messages.

Also some small refactoring:
    - ChatPage doesn't know about the message being sent. The message
      delivery is solely handled by HistoryViewManager.
    - Nick coloring function moved to HistoryViewManager.
2017-04-13 04:11:22 +03:00
Konstantinos Sideris
c431eee401 Use a single nick to color map 2017-04-11 22:48:02 +03:00
Konstantinos Sideris
193490bd9e Remove halo animation 2017-04-11 18:45:01 +03:00
Konstantinos Sideris
40722b7af7 Remove capitalization 2017-04-11 18:25:39 +03:00
Konstantinos Sideris
6468faa39e Use only a MatrixClient as a shared pointer 2017-04-11 17:45:47 +03:00
Konstantinos Sideris
0770f6e6b5 Make the timer single shot 2017-04-11 02:35:09 +03:00
Konstantinos Sideris
1c9e92b8bd Handle room avatars in top bar without an icon 2017-04-10 19:01:09 +03:00
Konstantinos Sideris
0f3cffcfd9 Use Matrix ID for login 2017-04-10 01:47:15 +03:00
Konstantinos Sideris
b301a2828e Remove exception specifications 2017-04-09 18:09:09 +03:00
Konstantinos Sideris
407afcd2f2 Clear text fields after login 2017-04-09 02:32:48 +03:00
Konstantinos Sideris
239780557f Add logout button
Logout from the current session and invalidate the current token
2017-04-09 02:17:04 +03:00
Konstantinos Sideris
f50fb34fb6 Implement initial registration stage 2017-04-08 02:53:23 +03:00
Konstantinos Sideris
c7c3ee19ee Use QLabel to display registration errors 2017-04-07 19:25:06 +03:00
Konstantinos Sideris
73e73f46ea Use const refs for the deserialized data 2017-04-06 19:56:33 +03:00
Konstantinos Sideris
4f45575c79 Initial commit 2017-04-06 02:06:42 +03:00