Compare commits

...

31 Commits

Author SHA1 Message Date
l10n daemon script
eeddf99ca5 GIT_SILENT Sync po/docbooks with svn 2024-04-25 02:59:02 +00:00
Joshua Goins
09a35b1a7e Preserve mx-reply in the edited message if it exists
(cherry picked from commit fa57db8e83)
2024-04-24 15:30:17 -04:00
l10n daemon script
533182ec55 GIT_SILENT Sync po/docbooks with svn 2024-04-24 03:37:34 +00:00
Tobias Fella
70a8842f00 Use escaped title in devtools
(cherry picked from commit 307536c6b6)
2024-04-23 14:04:21 +02:00
Tobias Fella
ab33d1ca88 Work around QML opening dialog in wrong window
(cherry picked from commit 203be8bd35)
2024-04-23 14:04:06 +02:00
Tobias Fella
9e45f22e09 Replace Quotient::Connection with NeoChatConnection where possible
(cherry picked from commit 1e644587b3)
2024-04-23 14:03:51 +02:00
James Graham
6a627dfff0 Refactor the MessageComponentModel component update
(cherry picked from commit 66a60f09e3)
2024-04-23 14:03:37 +02:00
Tobias Fella
a9f05a7f63 Remove search bar; Use QuickSwitcher instead
(cherry picked from commit 69b6f16ec1)
2024-04-23 14:03:26 +02:00
James Graham
4dfd4b68eb Fix Roomlist Shortcuts
Fix the ctrl + pgup/pgdwn shortcuts for the room list so that they work with tree model

BUG: 485949
(cherry picked from commit 28c9d94457)
2024-04-23 14:03:19 +02:00
Tobias Fella
3786710d81 Force author display name in HiddenDelegate to PlainText
(cherry picked from commit d74fd1a560)
2024-04-23 14:03:13 +02:00
James Graham
3967b27352 Make the SpaceDrawer navigable with the keyboard.
(cherry picked from commit 624b1b06c5)
2024-04-23 14:03:05 +02:00
Carl Schwan
714ea8413c Apply 1 suggestion(s) to 1 file(s)
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
(cherry picked from commit 95376c2ccc)
2024-04-23 14:02:53 +02:00
James Graham
4097addae9 Use AvatarButton in UserInfo instead of a custom button. This has the advantage of showing keyboard focus properly
(cherry picked from commit 1eb622165b)
2024-04-23 14:02:42 +02:00
Nate Graham
e9ac9deb40 Use more appropriate icons and tooltips for the room info drawer handles
Right now they use the standard text but left and right arrow icons,
which is a bit odd, and I think fails to convey what will happen when
clicked especially whern the drawer is closed.

Instead, let's use descriptive tooltip text for both, and a descriptive
icon for the the "this will open the drawer" handle button. For the one
to close the drawer, the default icon seems better, so let's stop
overriding it.

(cherry picked from commit 9d6ba324fb)
2024-04-23 14:02:28 +02:00
James Graham
3b858ab7d5 Use new cornerRadius Kirigami unit across the app
(cherry picked from commit ab0c8b8170)
2024-04-23 14:02:19 +02:00
James Graham
08807797a5 Make sure that tab can be used to navigate away from the chatbar
(cherry picked from commit 91d295e0bb)
2024-04-23 14:02:09 +02:00
James Graham
923839d6c7 Add Carl's focus title hack as a devtool option
(cherry picked from commit 125974dd7a)
2024-04-23 14:02:01 +02:00
Tobias Fella
3d4a1d22b0 Improve CodeComponent background
(cherry picked from commit 92895a7d00)
2024-04-23 14:01:53 +02:00
Nate Graham
5aa7f499c0 Make the "add new" menu button a hamburger menu
I know hamburger menus sometimes aren't amazing, but the current icon is
misleading. It's a plus button which generally means "create new".
However the menu is full of actions not related to creating new things,
including:

- Explore Rooms
- Find your Friends
- Scan a QR Code

These actions may technically result in a new room appearing in the
sidebar, but that's not a user's definition of creating a new thing;
these are *joining* a thing, and the fact that a new entry appears in
the sidebar is an implementation detail.

As a result the existing icon is inaccurate, and also holds back the
menu from adding additional items in the future that are even less
related to creating new rooms. An example would be the quick room
switcher, which is not exposed visibly in the UI anywhere, and could not
logically live in the current menu without changing its icon and text.

(cherry picked from commit d9308440e6)
2024-04-23 14:01:45 +02:00
James Graham
40c3519737 Change actionChanged to notificationActionChanged
Change actionChanged to notificationActionChanged to avoid any clashes with ItemDelegate action property signals

(cherry picked from commit 5340142c06)
2024-04-23 14:01:36 +02:00
James Graham
6ec9cc2475 Elide the Hidden delegate text
(cherry picked from commit 012d30ee9f)
2024-04-23 14:01:26 +02:00
James Graham
eba34b19ad Only override the DelegateType when showing hidden messages
(cherry picked from commit 031d69d996)
2024-04-23 14:01:16 +02:00
James Graham
8517636485 Implement devtoool to show hidden timeline messages
(cherry picked from commit 8b63c18f65)
2024-04-23 14:01:07 +02:00
James Graham
4a96dae57d Fancy Effects 2021-2024 gone but never forgotten
Remove fancy effects as it's busted and causing CPU spikes.

(cherry picked from commit dc2f11eb2b)
2024-04-23 14:00:57 +02:00
James Graham
09f433be45 Use 0.8.x for libQuotient flatpak
(cherry picked from commit 13e64a9487)
2024-04-23 14:00:44 +02:00
l10n daemon script
b9901a9167 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-04-23 03:20:13 +00:00
l10n daemon script
8b27d99d82 GIT_SILENT made messages (after extraction) 2024-04-23 02:45:40 +00:00
l10n daemon script
6b53c4d7b1 GIT_SILENT Sync po/docbooks with svn 2024-04-22 03:49:36 +00:00
l10n daemon script
bd28a7f66d SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-04-22 03:40:01 +00:00
l10n daemon script
0d1c09696d GIT_SILENT made messages (after extraction) 2024-04-22 03:04:59 +00:00
Albert Astals Cid
aeb4013d26 GIT_SILENT Upgrade release service version to 24.04.80. 2024-04-21 11:39:05 +02:00
127 changed files with 9544 additions and 7686 deletions

View File

@@ -110,7 +110,7 @@
{ {
"type": "git", "type": "git",
"url": "https://github.com/quotient-im/libQuotient.git", "url": "https://github.com/quotient-im/libQuotient.git",
"branch": "dev", "branch": "0.8.x",
"disable-submodules": true "disable-submodules": true
} }
], ],

View File

@@ -9,7 +9,7 @@ cmake_minimum_required(VERSION 3.16)
# KDE Applications version, managed by release script. # KDE Applications version, managed by release script.
set(RELEASE_SERVICE_VERSION_MAJOR "24") set(RELEASE_SERVICE_VERSION_MAJOR "24")
set(RELEASE_SERVICE_VERSION_MINOR "04") set(RELEASE_SERVICE_VERSION_MINOR "04")
set(RELEASE_SERVICE_VERSION_MICRO "70") set(RELEASE_SERVICE_VERSION_MICRO "80")
set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(NeoChat VERSION ${RELEASE_SERVICE_VERSION}) project(NeoChat VERSION ${RELEASE_SERVICE_VERSION})

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: neochat\n" "Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:38+0000\n" "POT-Creation-Date: 2024-04-24 02:56+0000\n"
"PO-Revision-Date: 2023-12-12 01:02+0100\n" "PO-Revision-Date: 2023-12-12 01:02+0100\n"
"Last-Translator: Enol P. <enolp@softastur.org>\n" "Last-Translator: Enol P. <enolp@softastur.org>\n"
"Language-Team: Asturian <alministradores@softastur.org>\n" "Language-Team: Asturian <alministradores@softastur.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.08.4\n" "X-Generator: Lokalize 23.08.4\n"
#: src/controller.cpp:134 #: src/controller.cpp:133
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are " "The reason for using push notifications, as in: '[Push notifications are "
@@ -25,47 +25,47 @@ msgctxt ""
msgid "Receiving notifications for new messages" msgid "Receiving notifications for new messages"
msgstr "" msgstr ""
#: src/controller.cpp:213 #: src/controller.cpp:212
#, kde-format #, kde-format
msgid "Network Error: %1" msgid "Network Error: %1"
msgstr "" msgstr ""
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Access token wasn't found" msgid "Access token wasn't found"
msgstr "" msgstr ""
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Maybe it was deleted?" msgid "Maybe it was deleted?"
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Access to keychain was denied." msgid "Access to keychain was denied."
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Please allow NeoChat to read the access token" msgid "Please allow NeoChat to read the access token"
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "No keychain available." msgid "No keychain available."
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux" msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr "" msgstr ""
#: src/controller.cpp:245 #: src/controller.cpp:244
#, kde-format #, kde-format
msgid "Unable to read access token" msgid "Unable to read access token"
msgstr "" msgstr ""
#: src/controller.cpp:341 #: src/controller.cpp:340
#, kde-format #, kde-format
msgid "Receiving push notifications" msgid "Receiving push notifications"
msgstr "" msgstr ""
@@ -82,19 +82,31 @@ msgctxt "@title:window"
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:20 #: src/devtools/DebugOptions.qml:19
#, kde-format
msgctxt "@option:check"
msgid "Show hidden events in the timeline"
msgstr ""
#: src/devtools/DebugOptions.qml:26
#, kde-format #, kde-format
msgctxt "@option:check Enable the matrix 'threads' feature" msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification" msgid "Always allow device verification"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:21 #: src/devtools/DebugOptions.qml:27
#, kde-format #, kde-format
msgid "" msgid ""
"Allow the user to start a verification session with devices that were " "Allow the user to start a verification session with devices that were "
"already verified" "already verified"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:33
#, kde-format
msgctxt "@option:check"
msgid "Show focus in window header"
msgstr ""
#: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240 #: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240
#, kde-format #, kde-format
msgid "Developer Tools" msgid "Developer Tools"
@@ -141,28 +153,28 @@ msgstr ""
msgid "Room" msgid "Room"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:35 #: src/devtools/RoomData.qml:36
#, kde-format #, kde-format
msgid "Room Id: %1" msgid "Room Id: %1"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:39 #: src/devtools/RoomData.qml:40
#, kde-format #, kde-format
msgid "Room Account Data" msgid "Room Account Data"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:52 src/devtools/RoomData.qml:98 #: src/devtools/RoomData.qml:53 src/devtools/RoomData.qml:99
#: src/qml/MessageSourceSheet.qml:42 #: src/qml/MessageSourceSheet.qml:42
#, kde-format #, kde-format
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:60 #: src/devtools/RoomData.qml:61
#, kde-format #, kde-format
msgid "Room State" msgid "Room State"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:74 #: src/devtools/RoomData.qml:75
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type" msgid "%1 event of this type"
@@ -170,7 +182,7 @@ msgid_plural "%1 events of this type"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/devtools/RoomData.qml:83 #: src/devtools/RoomData.qml:84
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information" msgid "Event Information"
@@ -204,49 +216,44 @@ msgctxt ""
msgid "State Keys" msgid "State Keys"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:60 #: src/enums/neochatroomtype.h:59
#, kde-format #, kde-format
msgid "Invited" msgid "Invited"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:62 #: src/enums/neochatroomtype.h:61
#, kde-format #, kde-format
msgid "Favorite" msgid "Favorite"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:64 src/qml/UserSearchPage.qml:82 #: src/enums/neochatroomtype.h:63 src/qml/UserSearchPage.qml:82
#, kde-format #, kde-format
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:66 #: src/enums/neochatroomtype.h:65
#, kde-format #, kde-format
msgid "Normal" msgid "Normal"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:68 #: src/enums/neochatroomtype.h:67
#, kde-format #, kde-format
msgid "Low priority" msgid "Low priority"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:70 #: src/enums/neochatroomtype.h:69
#, kde-format #, kde-format
msgid "Spaces" msgid "Spaces"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:72 src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/eventhandler.cpp:303 src/eventhandler.cpp:507 #: src/eventhandler.cpp:303 src/eventhandler.cpp:507
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465 #: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format #, kde-format
msgid "<i>[This message was deleted]</i>" msgid "<i>[This message was deleted]</i>"
msgstr "" msgstr ""
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141 #: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466 #: src/models/messageeventmodel.cpp:437
#, kde-format #, kde-format
msgid "<i>[This message was deleted: %1]</i>" msgid "<i>[This message was deleted: %1]</i>"
msgstr "" msgstr ""
@@ -619,12 +626,12 @@ msgctxt "The location being downloaded to"
msgid "Destination" msgid "Destination"
msgstr "" msgstr ""
#: src/login.cpp:85 src/login.cpp:100 #: src/login.cpp:84 src/login.cpp:99
#, kde-format #, kde-format
msgid "Network Error" msgid "Network Error"
msgstr "" msgstr ""
#: src/login.cpp:93 #: src/login.cpp:92
#, kde-format #, kde-format
msgid "Login Failed: %1" msgid "Login Failed: %1"
msgstr "" msgstr ""
@@ -944,315 +951,315 @@ msgstr ""
msgid "Share a URL to Matrix" msgid "Share a URL to Matrix"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:40 #: src/matriximageprovider.cpp:38
#, kde-format #, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern" msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:98 #: src/matriximageprovider.cpp:96
#, kde-format #, kde-format
msgid "Image request has been cancelled" msgid "Image request has been cancelled"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:24 #: src/models/actionsmodel.cpp:25
#, kde-format #, kde-format
msgid "Leaving this room." msgid "Leaving this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228 #: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284 #: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a room id or alias." msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias." msgid "'%1' does not look like a room id or alias."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:39 #: src/models/actionsmodel.cpp:40
#, kde-format #, kde-format
msgctxt "Leaving room <roomname>." msgctxt "Leaving room <roomname>."
msgid "Leaving room %1." msgid "Leaving room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:42 #: src/models/actionsmodel.cpp:43
#, kde-format #, kde-format
msgctxt "Room <roomname> not found" msgctxt "Room <roomname> not found"
msgid "Room %1 not found." msgid "Room %1 not found."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:50 src/models/actionsmodel.cpp:320 #: src/models/actionsmodel.cpp:51 src/models/actionsmodel.cpp:321
#, kde-format #, kde-format
msgid "No new nickname provided, no changes will happen." msgid "No new nickname provided, no changes will happen."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75 #: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95 #: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135 #: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162 #: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182 #: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>" msgid "<message>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:66 #: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message" msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:76 #: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message" msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:86 #: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message" msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:96 #: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message" msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:116 #: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow" msgid "Sends the given message colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:136 #: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow" msgid "Sends the given emote colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:147 #: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text" msgid "Sends the given message as plain text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:163 #: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler" msgid "Sends the given message as a spoiler"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:173 #: src/models/actionsmodel.cpp:174
msgid "Sends the given emote" msgid "Sends the given emote"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:183 #: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice" msgid "Sends the given message as a notice"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354 #: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421 #: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494 #: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a matrix id." msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id." msgid "'%1' does not look like a matrix id."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:197 #: src/models/actionsmodel.cpp:198
#, kde-format #, kde-format
msgctxt "<user> is already invited to this room." msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room." msgid "%1 is already invited to this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:201 #: src/models/actionsmodel.cpp:202
#, kde-format #, kde-format
msgctxt "<user> is banned from this room." msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room." msgid "%1 is banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:205 #: src/models/actionsmodel.cpp:206
#, kde-format #, kde-format
msgid "You are already in this room." msgid "You are already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:209 #: src/models/actionsmodel.cpp:210
#, kde-format #, kde-format
msgctxt "<user> is already in this room." msgctxt "<user> is already in this room."
msgid "%1 is already in this room." msgid "%1 is already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:213 #: src/models/actionsmodel.cpp:214
#, kde-format #, kde-format
msgctxt "<username> was invited into this room" msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room" msgid "%1 was invited into this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367 #: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482 #: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>" msgid "<user id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:219 #: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room" msgid "Invites the user to this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291 #: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format #, kde-format
msgctxt "Joining room <roomname>." msgctxt "Joining room <roomname>."
msgid "Joining room %1." msgid "Joining room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:242 src/models/actionsmodel.cpp:297 #: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298
msgid "<room alias or id>" msgid "<room alias or id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298 #: src/models/actionsmodel.cpp:244 src/models/actionsmodel.cpp:299
msgid "Joins the given room" msgid "Joins the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:262 #: src/models/actionsmodel.cpp:263
#, kde-format #, kde-format
msgctxt "Knocking room <roomname>." msgctxt "Knocking room <roomname>."
msgid "Knocking room %1." msgid "Knocking room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:274 #: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]" msgid "<room alias or id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:275 #: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room" msgid "Requests to join the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:288 #: src/models/actionsmodel.cpp:289
#, kde-format #, kde-format
msgctxt "You are already in room <roomname>." msgctxt "You are already in room <roomname>."
msgid "You are already in room %1." msgid "You are already in room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:305 src/models/actionsmodel.cpp:313 #: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314
msgid "[<room alias or id>]" msgid "[<room alias or id>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314 #: src/models/actionsmodel.cpp:307 src/models/actionsmodel.cpp:315
msgid "Leaves the given room or this room, if there is none given" msgid "Leaves the given room or this room, if there is none given"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336 #: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:344 #: src/models/actionsmodel.cpp:345
msgid "<display name>" msgid "<display name>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:329 #: src/models/actionsmodel.cpp:330
msgid "Changes your global display name" msgid "Changes your global display name"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:337 src/models/actionsmodel.cpp:345 #: src/models/actionsmodel.cpp:338 src/models/actionsmodel.cpp:346
msgid "Changes your display name in this room" msgid "Changes your display name in this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:358 #: src/models/actionsmodel.cpp:359
#, kde-format #, kde-format
msgctxt "<username> is already ignored." msgctxt "<username> is already ignored."
msgid "%1 is already ignored." msgid "%1 is already ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:362 #: src/models/actionsmodel.cpp:363
#, kde-format #, kde-format
msgctxt "<username> is now ignored" msgctxt "<username> is now ignored"
msgid "%1 is now ignored." msgid "%1 is now ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:368 #: src/models/actionsmodel.cpp:369
msgid "Ignores the given user" msgid "Ignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:381 #: src/models/actionsmodel.cpp:382
#, kde-format #, kde-format
msgctxt "<username> is not ignored." msgctxt "<username> is not ignored."
msgid "%1 is not ignored." msgid "%1 is not ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:385 #: src/models/actionsmodel.cpp:386
#, kde-format #, kde-format
msgctxt "<username> is no longer ignored." msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored." msgid "%1 is no longer ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:391 #: src/models/actionsmodel.cpp:392
msgid "Unignores the given user" msgid "Unignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:410 #: src/models/actionsmodel.cpp:411
msgid "<reaction text>" msgid "<reaction text>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:411 #: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text" msgid "React to the message with the given text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:426 #: src/models/actionsmodel.cpp:427
#, kde-format #, kde-format
msgctxt "<user> is already banned from this room." msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room." msgid "%1 is already banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:434 #: src/models/actionsmodel.cpp:435
#, kde-format #, kde-format
msgid "You are not allowed to ban users from this room." msgid "You are not allowed to ban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:440 #: src/models/actionsmodel.cpp:441
#, kde-format #, kde-format
msgctxt "You are not allowed to ban <username> from this room." msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room." msgid "You are not allowed to ban %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:444 #: src/models/actionsmodel.cpp:445
#, kde-format #, kde-format
msgctxt "<username> was banned from this room." msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room." msgid "%1 was banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:449 src/models/actionsmodel.cpp:526 #: src/models/actionsmodel.cpp:450 src/models/actionsmodel.cpp:527
msgid "<user id> [<reason>]" msgid "<user id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:450 #: src/models/actionsmodel.cpp:451
msgid "Bans the given user" msgid "Bans the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:467 #: src/models/actionsmodel.cpp:468
#, kde-format #, kde-format
msgid "You are not allowed to unban users from this room." msgid "You are not allowed to unban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:472 #: src/models/actionsmodel.cpp:473
#, kde-format #, kde-format
msgctxt "<user> is not banned from this room." msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room." msgid "%1 is not banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:476 #: src/models/actionsmodel.cpp:477
#, kde-format #, kde-format
msgctxt "<username> was unbanned from this room." msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room." msgid "%1 was unbanned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:483 #: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user" msgid "Removes the ban of the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:498 #: src/models/actionsmodel.cpp:499
#, kde-format #, kde-format
msgid "You cannot kick yourself from the room." msgid "You cannot kick yourself from the room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:502 #: src/models/actionsmodel.cpp:503
#, kde-format #, kde-format
msgctxt "<username> is not in this room" msgctxt "<username> is not in this room"
msgid "%1 is not in this room." msgid "%1 is not in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:511 #: src/models/actionsmodel.cpp:512
#, kde-format #, kde-format
msgid "You are not allowed to kick users from this room." msgid "You are not allowed to kick users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:517 #: src/models/actionsmodel.cpp:518
#, kde-format #, kde-format
msgctxt "You are not allowed to kick <username> from this room" msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room." msgid "You are not allowed to kick %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:521 #: src/models/actionsmodel.cpp:522
#, kde-format #, kde-format
msgctxt "<username> was kicked from this room." msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room." msgid "%1 was kicked from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:527 #: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room" msgid "Removes the user from the room"
msgstr "" msgstr ""
@@ -1334,7 +1341,7 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis" msgid "Own Emojis"
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:142 #: src/models/messagefiltermodel.cpp:153
#, kde-format #, kde-format
msgctxt "%1: What's being done; %2: How often it is done." msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1" msgid " %1"
@@ -1342,7 +1349,7 @@ msgid_plural " %1 %2 times"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/models/messagefiltermodel.cpp:146 #: src/models/messagefiltermodel.cpp:157
#, kde-format #, kde-format
msgctxt "n users" msgctxt "n users"
msgid " %1 user " msgid " %1 user "
@@ -1350,25 +1357,25 @@ msgid_plural " %1 users "
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/models/messagefiltermodel.cpp:155 #: src/models/messagefiltermodel.cpp:166
#, kde-format #, kde-format
msgctxt "[action 1], [action 2 and/or action 3]" msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", " msgid ", "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] or [action 3]" msgctxt "[action 1, action 2] or [action 3]"
msgid " or " msgid " or "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] and [action 3]" msgctxt "[action 1, action 2] and [action 3]"
msgid " and " msgid " and "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:165 #: src/models/messagefiltermodel.cpp:176
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"userText (%1) is either a Matrix username if a single user sent all the " "userText (%1) is either a Matrix username if a single user sent all the "
@@ -1500,7 +1507,7 @@ msgstr ""
msgid "Encrypted Message" msgid "Encrypted Message"
msgstr "" msgstr ""
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:270 #: src/notificationsmanager.cpp:204 src/qml/Main.qml:274
#, kde-format #, kde-format
msgid "%1: %2" msgid "%1: %2"
msgstr "" msgstr ""
@@ -1559,13 +1566,12 @@ msgstr ""
msgid "Open NeoChat" msgid "Open NeoChat"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:65 #: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:46
#, kde-format #, kde-format
msgid "Edit this account" msgid "Edit this account"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59 #: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#: src/settings/AccountsPage.qml:34
#, kde-format #, kde-format
msgid "Account editor" msgid "Account editor"
msgstr "" msgstr ""
@@ -1576,7 +1582,7 @@ msgid "Notification settings"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49 #: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49
#: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:400 src/qml/UserInfo.qml:116 #: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:404 src/qml/UserInfo.qml:103
#, kde-format #, kde-format
msgid "Configure" msgid "Configure"
msgstr "" msgstr ""
@@ -1911,8 +1917,8 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64 #: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162 #: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281 #: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:283 #: src/qml/SpaceDrawer.qml:296
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Create a Space" msgid "Create a Space"
@@ -1983,7 +1989,7 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200 #: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58 #: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58
#: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:220 #: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:210
#: src/qml/SelectParentDialog.qml:142 #: src/qml/SelectParentDialog.qml:142
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
@@ -2151,21 +2157,21 @@ msgid "They don't match"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52 #: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Explore rooms" msgid "Explore rooms"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67 #: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61 #: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61
#: src/qml/RoomListPage.qml:182 src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:172 src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Find your friends" msgid "Find your friends"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73 #: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190 #: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:235 #: src/qml/RoomListPage.qml:225
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Find your friends" msgid "Find your friends"
@@ -2192,11 +2198,34 @@ msgctxt "@title"
msgid "Scan a QR Code" msgid "Scan a QR Code"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:103 src/qml/ExploreComponent.qml:167 #: src/qml/ExploreComponent.qml:93
#, kde-format
msgctxt "@title"
msgid "Rooms"
msgstr ""
#: src/qml/ExploreComponent.qml:105
#, kde-format
msgctxt "@action"
msgid "Search Room"
msgstr ""
#: src/qml/ExploreComponent.qml:118
#, kde-format
msgctxt "@action:button"
msgid "Show Menu"
msgstr ""
#: src/qml/ExploreComponent.qml:182
#, kde-format #, kde-format
msgid "Create rooms and chats" msgid "Create rooms and chats"
msgstr "" msgstr ""
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/qml/ExploreComponentMobile.qml:79 #: src/qml/ExploreComponentMobile.qml:79
#, kde-format #, kde-format
msgid "Create New" msgid "Create New"
@@ -2552,46 +2581,58 @@ msgstr ""
msgid "There are no locations shared in this room." msgid "There are no locations shared in this room."
msgstr "" msgstr ""
#: src/qml/Main.qml:304 #: src/qml/Main.qml:163
#, kde-format
msgctxt "@action:button"
msgid "Show Room Information"
msgstr ""
#: src/qml/Main.qml:166
#, kde-format
msgctxt "@action:button"
msgid "Close Room Information Drawer"
msgstr ""
#: src/qml/Main.qml:308
#, kde-format #, kde-format
msgctxt "@title:window" msgctxt "@title:window"
msgid "Session Verification" msgid "Session Verification"
msgstr "" msgstr ""
#: src/qml/Main.qml:321 #: src/qml/Main.qml:325
#, kde-format #, kde-format
msgid "User consent" msgid "User consent"
msgstr "" msgstr ""
#: src/qml/Main.qml:326 #: src/qml/Main.qml:330
#, kde-format #, kde-format
msgid "" msgid ""
"Your homeserver requires you to agree to its terms and conditions before " "Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them." "being able to use it. Please click the button below to read them."
msgstr "" msgstr ""
#: src/qml/Main.qml:331 #: src/qml/Main.qml:335
#, kde-format #, kde-format
msgid "Open" msgid "Open"
msgstr "" msgstr ""
#: src/qml/Main.qml:358 #: src/qml/Main.qml:362
#, kde-format #, kde-format
msgid "Start a chat" msgid "Start a chat"
msgstr "" msgstr ""
#: src/qml/Main.qml:360 #: src/qml/Main.qml:364
#, kde-format #, kde-format
msgid "Do you want to start a chat with %1?" msgid "Do you want to start a chat with %1?"
msgstr "" msgstr ""
#: src/qml/Main.qml:386 #: src/qml/Main.qml:390
#, kde-format #, kde-format
msgctxt "@info screenreader" msgctxt "@info screenreader"
msgid "The currently selected link" msgid "The currently selected link"
msgstr "" msgstr ""
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68 #: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Share" msgid "Share"
@@ -2674,7 +2715,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state" msgid "Edit state"
msgstr "" msgstr ""
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:66 #: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Notifications" msgid "Notifications"
@@ -2829,12 +2870,12 @@ msgstr ""
msgid "Reason for reporting this message" msgid "Reason for reporting this message"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:101 #: src/qml/RoomDelegate.qml:103
#, kde-format #, kde-format
msgid "Muted room" msgid "Muted room"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:134 #: src/qml/RoomDelegate.qml:136
#, kde-format #, kde-format
msgid "Configure room" msgid "Configure room"
msgstr "" msgstr ""
@@ -2936,33 +2977,33 @@ msgstr[1] ""
msgid "No member count" msgid "No member count"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No friends found" msgid "No friends found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No rooms found" msgid "No rooms found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "" msgid ""
"You haven't added any of your friends yet, click below to search for them." "You haven't added any of your friends yet, click below to search for them."
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "Join some rooms to get started" msgid "Join some rooms to get started"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Search in room directory" msgid "Search in room directory"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Search in friend directory" msgid "Search in friend directory"
msgstr "" msgstr ""
@@ -3138,24 +3179,24 @@ msgstr ""
msgid "View notifications" msgid "View notifications"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:84 #: src/qml/SpaceDrawer.qml:86
#, kde-format #, kde-format
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:130 #: src/qml/SpaceDrawer.qml:134
#, kde-format #, kde-format
msgctxt "@button View all one-on-one chats with your friends." msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:232 #: src/qml/SpaceDrawer.qml:242
#, kde-format #, kde-format
msgctxt "Join <name of a space>" msgctxt "Join <name of a space>"
msgid "Join %1" msgid "Join %1"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:274 #: src/qml/SpaceDrawer.qml:284
#, kde-format #, kde-format
msgid "Create a space" msgid "Create a space"
msgstr "" msgstr ""
@@ -3431,12 +3472,18 @@ msgstr ""
msgid "Copy link" msgid "Copy link"
msgstr "" msgstr ""
#: src/qml/UserInfo.qml:104 #: src/qml/UserInfo.qml:54
#, kde-format
msgctxt "@title:window"
msgid "Account editor"
msgstr ""
#: src/qml/UserInfo.qml:91
#, kde-format #, kde-format
msgid "Switch User" msgid "Switch User"
msgstr "" msgstr ""
#: src/qml/UserInfo.qml:111 #: src/qml/UserInfo.qml:98
#, kde-format #, kde-format
msgid "Open Settings" msgid "Open Settings"
msgstr "" msgstr ""
@@ -3848,47 +3895,42 @@ msgstr ""
msgid "Use compact room list" msgid "Use compact room list"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:232 #: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Show fancy effects in chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:249
#, kde-format #, kde-format
msgid "Use transparent chat page" msgid "Use transparent chat page"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:270 #: src/settings/AppearanceSettingsPage.qml:254
#, kde-format #, kde-format
msgid "Transparency" msgid "Transparency"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:289 #: src/settings/AppearanceSettingsPage.qml:273
#, kde-format #, kde-format
msgid "Only enabled if the transparent chat page is enabled." msgid "Only enabled if the transparent chat page is enabled."
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:306 #: src/settings/AppearanceSettingsPage.qml:290
#, kde-format #, kde-format
msgid "Show your messages on the right" msgid "Show your messages on the right"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:322 #: src/settings/AppearanceSettingsPage.qml:306
#, kde-format #, kde-format
msgid "Show links preview in the chat messages" msgid "Show links preview in the chat messages"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:332 #: src/settings/AppearanceSettingsPage.qml:316
#, kde-format #, kde-format
msgid "Show Avatar" msgid "Show Avatar"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:336 #: src/settings/AppearanceSettingsPage.qml:320
#, kde-format #, kde-format
msgid "In chat" msgid "In chat"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:346 #: src/settings/AppearanceSettingsPage.qml:330
#, kde-format #, kde-format
msgid "In sidebar" msgid "In sidebar"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: neochat\n" "Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:38+0000\n" "POT-Creation-Date: 2024-04-24 02:56+0000\n"
"PO-Revision-Date: 2024-04-17 14:29+0200\n" "PO-Revision-Date: 2024-04-24 09:37+0200\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n" "Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n" "Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca@valencia\n" "Language: ca@valencia\n"
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 22.12.3\n" "X-Generator: Lokalize 22.12.3\n"
#: src/controller.cpp:134 #: src/controller.cpp:133
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are " "The reason for using push notifications, as in: '[Push notifications are "
@@ -28,48 +28,48 @@ msgctxt ""
msgid "Receiving notifications for new messages" msgid "Receiving notifications for new messages"
msgstr "Rebre les notificacions dels missatges nous" msgstr "Rebre les notificacions dels missatges nous"
#: src/controller.cpp:213 #: src/controller.cpp:212
#, kde-format #, kde-format
msgid "Network Error: %1" msgid "Network Error: %1"
msgstr "S'ha produït un error de la xarxa: %1" msgstr "S'ha produït un error de la xarxa: %1"
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Access token wasn't found" msgid "Access token wasn't found"
msgstr "No s'ha trobat el testimoni d'accés" msgstr "No s'ha trobat el testimoni d'accés"
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Maybe it was deleted?" msgid "Maybe it was deleted?"
msgstr "Potser s'ha suprimit?" msgstr "Potser s'ha suprimit?"
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Access to keychain was denied." msgid "Access to keychain was denied."
msgstr "S'ha denegat l'accés al clauer." msgstr "S'ha denegat l'accés al clauer."
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Please allow NeoChat to read the access token" msgid "Please allow NeoChat to read the access token"
msgstr "Permeteu que NeoChat llija el testimoni d'accés" msgstr "Permeteu que NeoChat llija el testimoni d'accés"
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "No keychain available." msgid "No keychain available."
msgstr "No hi ha cap clauer disponible." msgstr "No hi ha cap clauer disponible."
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux" msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr "" msgstr ""
"Instal·leu un clauer, p. ex., KWallet o l'anell de claus de GNOME a Linux" "Instal·leu un clauer, p. ex., KWallet o l'anell de claus de GNOME a Linux"
#: src/controller.cpp:245 #: src/controller.cpp:244
#, kde-format #, kde-format
msgid "Unable to read access token" msgid "Unable to read access token"
msgstr "No s'ha pogut llegir el testimoni d'accés" msgstr "No s'ha pogut llegir el testimoni d'accés"
#: src/controller.cpp:341 #: src/controller.cpp:340
#, kde-format #, kde-format
msgid "Receiving push notifications" msgid "Receiving push notifications"
msgstr "Rebre les notificacions «push»" msgstr "Rebre les notificacions «push»"
@@ -86,13 +86,19 @@ msgctxt "@title:window"
msgid "Event Source" msgid "Event Source"
msgstr "Font d'esdeveniments" msgstr "Font d'esdeveniments"
#: src/devtools/DebugOptions.qml:20 #: src/devtools/DebugOptions.qml:19
#, kde-format
msgctxt "@option:check"
msgid "Show hidden events in the timeline"
msgstr "Mostra els esdeveniments ocults en la línia de temps"
#: src/devtools/DebugOptions.qml:26
#, kde-format #, kde-format
msgctxt "@option:check Enable the matrix 'threads' feature" msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification" msgid "Always allow device verification"
msgstr "Permet sempre la verificació del dispositiu" msgstr "Permet sempre la verificació del dispositiu"
#: src/devtools/DebugOptions.qml:21 #: src/devtools/DebugOptions.qml:27
#, kde-format #, kde-format
msgid "" msgid ""
"Allow the user to start a verification session with devices that were " "Allow the user to start a verification session with devices that were "
@@ -101,6 +107,12 @@ msgstr ""
"Permet a l'usuari iniciar una sessió de verificació amb dispositius que ja " "Permet a l'usuari iniciar una sessió de verificació amb dispositius que ja "
"estaven verificats" "estaven verificats"
#: src/devtools/DebugOptions.qml:33
#, kde-format
msgctxt "@option:check"
msgid "Show focus in window header"
msgstr "Mostra el focus a la capçalera de la finestra"
#: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240 #: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240
#, kde-format #, kde-format
msgid "Developer Tools" msgid "Developer Tools"
@@ -147,28 +159,28 @@ msgstr "Seleccioneu una sala"
msgid "Room" msgid "Room"
msgstr "Sala" msgstr "Sala"
#: src/devtools/RoomData.qml:35 #: src/devtools/RoomData.qml:36
#, kde-format #, kde-format
msgid "Room Id: %1" msgid "Room Id: %1"
msgstr "ID de la sala: %1" msgstr "ID de la sala: %1"
#: src/devtools/RoomData.qml:39 #: src/devtools/RoomData.qml:40
#, kde-format #, kde-format
msgid "Room Account Data" msgid "Room Account Data"
msgstr "Dades de comptatge de la sala" msgstr "Dades de comptatge de la sala"
#: src/devtools/RoomData.qml:52 src/devtools/RoomData.qml:98 #: src/devtools/RoomData.qml:53 src/devtools/RoomData.qml:99
#: src/qml/MessageSourceSheet.qml:42 #: src/qml/MessageSourceSheet.qml:42
#, kde-format #, kde-format
msgid "Event Source" msgid "Event Source"
msgstr "Codi font de l'esdeveniment" msgstr "Codi font de l'esdeveniment"
#: src/devtools/RoomData.qml:60 #: src/devtools/RoomData.qml:61
#, kde-format #, kde-format
msgid "Room State" msgid "Room State"
msgstr "Estat de la sala" msgstr "Estat de la sala"
#: src/devtools/RoomData.qml:74 #: src/devtools/RoomData.qml:75
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type" msgid "%1 event of this type"
@@ -176,7 +188,7 @@ msgid_plural "%1 events of this type"
msgstr[0] "%1 esdeveniment d'este tipus" msgstr[0] "%1 esdeveniment d'este tipus"
msgstr[1] "%1 esdeveniments d'este tipus" msgstr[1] "%1 esdeveniments d'este tipus"
#: src/devtools/RoomData.qml:83 #: src/devtools/RoomData.qml:84
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information" msgid "Event Information"
@@ -210,49 +222,44 @@ msgctxt ""
msgid "State Keys" msgid "State Keys"
msgstr "State Keys" msgstr "State Keys"
#: src/enums/neochatroomtype.h:60 #: src/enums/neochatroomtype.h:59
#, kde-format #, kde-format
msgid "Invited" msgid "Invited"
msgstr "Convidat" msgstr "Convidat"
#: src/enums/neochatroomtype.h:62 #: src/enums/neochatroomtype.h:61
#, kde-format #, kde-format
msgid "Favorite" msgid "Favorite"
msgstr "Preferit" msgstr "Preferit"
#: src/enums/neochatroomtype.h:64 src/qml/UserSearchPage.qml:82 #: src/enums/neochatroomtype.h:63 src/qml/UserSearchPage.qml:82
#, kde-format #, kde-format
msgid "Friends" msgid "Friends"
msgstr "Amics" msgstr "Amics"
#: src/enums/neochatroomtype.h:66 #: src/enums/neochatroomtype.h:65
#, kde-format #, kde-format
msgid "Normal" msgid "Normal"
msgstr "Normal" msgstr "Normal"
#: src/enums/neochatroomtype.h:68 #: src/enums/neochatroomtype.h:67
#, kde-format #, kde-format
msgid "Low priority" msgid "Low priority"
msgstr "Prioritat baixa" msgstr "Prioritat baixa"
#: src/enums/neochatroomtype.h:70 #: src/enums/neochatroomtype.h:69
#, kde-format #, kde-format
msgid "Spaces" msgid "Spaces"
msgstr "Espais" msgstr "Espais"
#: src/enums/neochatroomtype.h:72 src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr "Busca"
#: src/eventhandler.cpp:303 src/eventhandler.cpp:507 #: src/eventhandler.cpp:303 src/eventhandler.cpp:507
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465 #: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format #, kde-format
msgid "<i>[This message was deleted]</i>" msgid "<i>[This message was deleted]</i>"
msgstr "<i>[Este missatge s'ha suprimit]</i>" msgstr "<i>[Este missatge s'ha suprimit]</i>"
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141 #: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466 #: src/models/messageeventmodel.cpp:437
#, kde-format #, kde-format
msgid "<i>[This message was deleted: %1]</i>" msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Este missatge s'ha suprimit: %1]</i>" msgstr "<i>[Este missatge s'ha suprimit: %1]</i>"
@@ -625,12 +632,12 @@ msgctxt "The location being downloaded to"
msgid "Destination" msgid "Destination"
msgstr "Destinació" msgstr "Destinació"
#: src/login.cpp:85 src/login.cpp:100 #: src/login.cpp:84 src/login.cpp:99
#, kde-format #, kde-format
msgid "Network Error" msgid "Network Error"
msgstr "S'ha produït un error de la xarxa" msgstr "S'ha produït un error de la xarxa"
#: src/login.cpp:93 #: src/login.cpp:92
#, kde-format #, kde-format
msgid "Login Failed: %1" msgid "Login Failed: %1"
msgstr "No s'ha pogut fer l'inici de la sessió: %1" msgstr "No s'ha pogut fer l'inici de la sessió: %1"
@@ -954,316 +961,316 @@ msgstr "Només ús intern."
msgid "Share a URL to Matrix" msgid "Share a URL to Matrix"
msgstr "Compartix un URL a Matrix" msgstr "Compartix un URL a Matrix"
#: src/matriximageprovider.cpp:40 #: src/matriximageprovider.cpp:38
#, kde-format #, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern" msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr "L'element multimèdia amb ID «%1» no seguix el patró servidor/mediaId" msgstr "L'element multimèdia amb ID «%1» no seguix el patró servidor/mediaId"
#: src/matriximageprovider.cpp:98 #: src/matriximageprovider.cpp:96
#, kde-format #, kde-format
msgid "Image request has been cancelled" msgid "Image request has been cancelled"
msgstr "S'ha cancel·lat la sol·licitud d'imatge" msgstr "S'ha cancel·lat la sol·licitud d'imatge"
#: src/models/actionsmodel.cpp:24 #: src/models/actionsmodel.cpp:25
#, kde-format #, kde-format
msgid "Leaving this room." msgid "Leaving this room."
msgstr "Eixida d'esta sala." msgstr "Eixida d'esta sala."
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228 #: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284 #: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a room id or alias." msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias." msgid "'%1' does not look like a room id or alias."
msgstr "«%1» no pareix pas un ID de sala o un àlies." msgstr "«%1» no pareix pas un ID de sala o un àlies."
#: src/models/actionsmodel.cpp:39 #: src/models/actionsmodel.cpp:40
#, kde-format #, kde-format
msgctxt "Leaving room <roomname>." msgctxt "Leaving room <roomname>."
msgid "Leaving room %1." msgid "Leaving room %1."
msgstr "Eixida de la sala %1." msgstr "Eixida de la sala %1."
#: src/models/actionsmodel.cpp:42 #: src/models/actionsmodel.cpp:43
#, kde-format #, kde-format
msgctxt "Room <roomname> not found" msgctxt "Room <roomname> not found"
msgid "Room %1 not found." msgid "Room %1 not found."
msgstr "No s'ha trobat la sala %1." msgstr "No s'ha trobat la sala %1."
#: src/models/actionsmodel.cpp:50 src/models/actionsmodel.cpp:320 #: src/models/actionsmodel.cpp:51 src/models/actionsmodel.cpp:321
#, kde-format #, kde-format
msgid "No new nickname provided, no changes will happen." msgid "No new nickname provided, no changes will happen."
msgstr "No s'ha proporcionat un sobrenom nou, no s'efectuarà cap canvi." msgstr "No s'ha proporcionat un sobrenom nou, no s'efectuarà cap canvi."
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75 #: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95 #: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135 #: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162 #: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182 #: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>" msgid "<message>"
msgstr "<missatge>" msgstr "<missatge>"
#: src/models/actionsmodel.cpp:66 #: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message" msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr "Prefixa ¯\\_(ツ)_/¯ a un missatge de text net" msgstr "Prefixa ¯\\_(ツ)_/¯ a un missatge de text net"
#: src/models/actionsmodel.cpp:76 #: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message" msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr "Prefixa ( ͡° ͜ʖ ͡°) a un missatge de text net" msgstr "Prefixa ( ͡° ͜ʖ ͡°) a un missatge de text net"
# skip-rule: t-par_obe_tan # skip-rule: t-par_obe_tan
#: src/models/actionsmodel.cpp:86 #: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message" msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr "Prefixa (╯°□°)╯︵ ┻━┻ a un missatge de text net" msgstr "Prefixa (╯°□°)╯︵ ┻━┻ a un missatge de text net"
#: src/models/actionsmodel.cpp:96 #: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message" msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr "Prefixa ┬──┬ ( ゜-゜ノ) a un missatge de text net" msgstr "Prefixa ┬──┬ ( ゜-゜ノ) a un missatge de text net"
#: src/models/actionsmodel.cpp:116 #: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow" msgid "Sends the given message colored as a rainbow"
msgstr "Envia el missatge indicat acolorit com un arc de Sant Martí" msgstr "Envia el missatge indicat acolorit com un arc de Sant Martí"
#: src/models/actionsmodel.cpp:136 #: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow" msgid "Sends the given emote colored as a rainbow"
msgstr "Envia l'emote indicada acolorida com un arc de Sant Martí" msgstr "Envia l'emote indicada acolorida com un arc de Sant Martí"
#: src/models/actionsmodel.cpp:147 #: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text" msgid "Sends the given message as plain text"
msgstr "Envia el missatge indicat com a text net" msgstr "Envia el missatge indicat com a text net"
#: src/models/actionsmodel.cpp:163 #: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler" msgid "Sends the given message as a spoiler"
msgstr "Envia el missatge indicat com un espòiler" msgstr "Envia el missatge indicat com un espòiler"
#: src/models/actionsmodel.cpp:173 #: src/models/actionsmodel.cpp:174
msgid "Sends the given emote" msgid "Sends the given emote"
msgstr "Envia l'emote indicada" msgstr "Envia l'emote indicada"
#: src/models/actionsmodel.cpp:183 #: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice" msgid "Sends the given message as a notice"
msgstr "Envia el missatge indicat com una nota" msgstr "Envia el missatge indicat com una nota"
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354 #: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421 #: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494 #: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a matrix id." msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id." msgid "'%1' does not look like a matrix id."
msgstr "«%1» no pareix pas un ID de Matrix." msgstr "«%1» no pareix pas un ID de Matrix."
#: src/models/actionsmodel.cpp:197 #: src/models/actionsmodel.cpp:198
#, kde-format #, kde-format
msgctxt "<user> is already invited to this room." msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room." msgid "%1 is already invited to this room."
msgstr "%1 ja està convidat en esta sala." msgstr "%1 ja està convidat en esta sala."
#: src/models/actionsmodel.cpp:201 #: src/models/actionsmodel.cpp:202
#, kde-format #, kde-format
msgctxt "<user> is banned from this room." msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room." msgid "%1 is banned from this room."
msgstr "%1 està bandejat d'esta sala." msgstr "%1 està bandejat d'esta sala."
#: src/models/actionsmodel.cpp:205 #: src/models/actionsmodel.cpp:206
#, kde-format #, kde-format
msgid "You are already in this room." msgid "You are already in this room."
msgstr "Ja vos trobeu en esta sala." msgstr "Ja vos trobeu en esta sala."
#: src/models/actionsmodel.cpp:209 #: src/models/actionsmodel.cpp:210
#, kde-format #, kde-format
msgctxt "<user> is already in this room." msgctxt "<user> is already in this room."
msgid "%1 is already in this room." msgid "%1 is already in this room."
msgstr "%1 ja es troba en esta sala." msgstr "%1 ja es troba en esta sala."
#: src/models/actionsmodel.cpp:213 #: src/models/actionsmodel.cpp:214
#, kde-format #, kde-format
msgctxt "<username> was invited into this room" msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room" msgid "%1 was invited into this room"
msgstr "%1 se l'ha convidat a esta sala" msgstr "%1 se l'ha convidat a esta sala"
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367 #: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482 #: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>" msgid "<user id>"
msgstr "<ID d'usuari>" msgstr "<ID d'usuari>"
#: src/models/actionsmodel.cpp:219 #: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room" msgid "Invites the user to this room"
msgstr "Convida l'usuari en esta sala" msgstr "Convida l'usuari en esta sala"
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291 #: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format #, kde-format
msgctxt "Joining room <roomname>." msgctxt "Joining room <roomname>."
msgid "Joining room %1." msgid "Joining room %1."
msgstr "S'unix a la sala %1." msgstr "S'unix a la sala %1."
#: src/models/actionsmodel.cpp:242 src/models/actionsmodel.cpp:297 #: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298
msgid "<room alias or id>" msgid "<room alias or id>"
msgstr "<àlies o ID de sala>" msgstr "<àlies o ID de sala>"
#: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298 #: src/models/actionsmodel.cpp:244 src/models/actionsmodel.cpp:299
msgid "Joins the given room" msgid "Joins the given room"
msgstr "S'unix a la sala indicada" msgstr "S'unix a la sala indicada"
#: src/models/actionsmodel.cpp:262 #: src/models/actionsmodel.cpp:263
#, kde-format #, kde-format
msgctxt "Knocking room <roomname>." msgctxt "Knocking room <roomname>."
msgid "Knocking room %1." msgid "Knocking room %1."
msgstr "Sol·licita permís a la sala %1." msgstr "Sol·licita permís a la sala %1."
#: src/models/actionsmodel.cpp:274 #: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]" msgid "<room alias or id> [<reason>]"
msgstr "<àlies o ID de sala> [<motiu>]" msgstr "<àlies o ID de sala> [<motiu>]"
#: src/models/actionsmodel.cpp:275 #: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room" msgid "Requests to join the given room"
msgstr "Sol·licita unir-se a la sala indicada" msgstr "Sol·licita unir-se a la sala indicada"
#: src/models/actionsmodel.cpp:288 #: src/models/actionsmodel.cpp:289
#, kde-format #, kde-format
msgctxt "You are already in room <roomname>." msgctxt "You are already in room <roomname>."
msgid "You are already in room %1." msgid "You are already in room %1."
msgstr "Ja vos trobeu en la sala %1." msgstr "Ja vos trobeu en la sala %1."
#: src/models/actionsmodel.cpp:305 src/models/actionsmodel.cpp:313 #: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314
msgid "[<room alias or id>]" msgid "[<room alias or id>]"
msgstr "[<àlies o ID de sala>]" msgstr "[<àlies o ID de sala>]"
#: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314 #: src/models/actionsmodel.cpp:307 src/models/actionsmodel.cpp:315
msgid "Leaves the given room or this room, if there is none given" msgid "Leaves the given room or this room, if there is none given"
msgstr "Ix de la sala indicada o d'esta sala, si no se n'ha indicat cap" msgstr "Ix de la sala indicada o d'esta sala, si no se n'ha indicat cap"
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336 #: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:344 #: src/models/actionsmodel.cpp:345
msgid "<display name>" msgid "<display name>"
msgstr "<nom que es mostrarà>" msgstr "<nom que es mostrarà>"
#: src/models/actionsmodel.cpp:329 #: src/models/actionsmodel.cpp:330
msgid "Changes your global display name" msgid "Changes your global display name"
msgstr "Canvia el vostre nom que s'ha de mostrar global" msgstr "Canvia el vostre nom que s'ha de mostrar global"
#: src/models/actionsmodel.cpp:337 src/models/actionsmodel.cpp:345 #: src/models/actionsmodel.cpp:338 src/models/actionsmodel.cpp:346
msgid "Changes your display name in this room" msgid "Changes your display name in this room"
msgstr "Canvia el vostre nom que s'ha de mostrar en esta sala" msgstr "Canvia el vostre nom que s'ha de mostrar en esta sala"
#: src/models/actionsmodel.cpp:358 #: src/models/actionsmodel.cpp:359
#, kde-format #, kde-format
msgctxt "<username> is already ignored." msgctxt "<username> is already ignored."
msgid "%1 is already ignored." msgid "%1 is already ignored."
msgstr "%1 ja és ignorat." msgstr "%1 ja és ignorat."
#: src/models/actionsmodel.cpp:362 #: src/models/actionsmodel.cpp:363
#, kde-format #, kde-format
msgctxt "<username> is now ignored" msgctxt "<username> is now ignored"
msgid "%1 is now ignored." msgid "%1 is now ignored."
msgstr "%1 ara és ignorat." msgstr "%1 ara és ignorat."
#: src/models/actionsmodel.cpp:368 #: src/models/actionsmodel.cpp:369
msgid "Ignores the given user" msgid "Ignores the given user"
msgstr "Ignora l'usuari indicat" msgstr "Ignora l'usuari indicat"
#: src/models/actionsmodel.cpp:381 #: src/models/actionsmodel.cpp:382
#, kde-format #, kde-format
msgctxt "<username> is not ignored." msgctxt "<username> is not ignored."
msgid "%1 is not ignored." msgid "%1 is not ignored."
msgstr "%1 no està ignorat." msgstr "%1 no està ignorat."
#: src/models/actionsmodel.cpp:385 #: src/models/actionsmodel.cpp:386
#, kde-format #, kde-format
msgctxt "<username> is no longer ignored." msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored." msgid "%1 is no longer ignored."
msgstr "%1 ja no es troba ignorat." msgstr "%1 ja no es troba ignorat."
#: src/models/actionsmodel.cpp:391 #: src/models/actionsmodel.cpp:392
msgid "Unignores the given user" msgid "Unignores the given user"
msgstr "Deixa d'ignorar l'usuari indicat" msgstr "Deixa d'ignorar l'usuari indicat"
#: src/models/actionsmodel.cpp:410 #: src/models/actionsmodel.cpp:411
msgid "<reaction text>" msgid "<reaction text>"
msgstr "<text de reacció>" msgstr "<text de reacció>"
#: src/models/actionsmodel.cpp:411 #: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text" msgid "React to the message with the given text"
msgstr "Reacciona al missatge amb el text indicat" msgstr "Reacciona al missatge amb el text indicat"
#: src/models/actionsmodel.cpp:426 #: src/models/actionsmodel.cpp:427
#, kde-format #, kde-format
msgctxt "<user> is already banned from this room." msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room." msgid "%1 is already banned from this room."
msgstr "%1 ja està bandejat d'esta sala." msgstr "%1 ja està bandejat d'esta sala."
#: src/models/actionsmodel.cpp:434 #: src/models/actionsmodel.cpp:435
#, kde-format #, kde-format
msgid "You are not allowed to ban users from this room." msgid "You are not allowed to ban users from this room."
msgstr "No teniu permís per a bandejar usuaris d'esta sala." msgstr "No teniu permís per a bandejar usuaris d'esta sala."
#: src/models/actionsmodel.cpp:440 #: src/models/actionsmodel.cpp:441
#, kde-format #, kde-format
msgctxt "You are not allowed to ban <username> from this room." msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room." msgid "You are not allowed to ban %1 from this room."
msgstr "No teniu permís per a bandejar l'usuari %1 d'esta sala." msgstr "No teniu permís per a bandejar l'usuari %1 d'esta sala."
#: src/models/actionsmodel.cpp:444 #: src/models/actionsmodel.cpp:445
#, kde-format #, kde-format
msgctxt "<username> was banned from this room." msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room." msgid "%1 was banned from this room."
msgstr "%1 fou bandejat d'esta sala." msgstr "%1 fou bandejat d'esta sala."
#: src/models/actionsmodel.cpp:449 src/models/actionsmodel.cpp:526 #: src/models/actionsmodel.cpp:450 src/models/actionsmodel.cpp:527
msgid "<user id> [<reason>]" msgid "<user id> [<reason>]"
msgstr "<ID d'usuari> [<motiu>]" msgstr "<ID d'usuari> [<motiu>]"
#: src/models/actionsmodel.cpp:450 #: src/models/actionsmodel.cpp:451
msgid "Bans the given user" msgid "Bans the given user"
msgstr "Bandeja l'usuari indicat" msgstr "Bandeja l'usuari indicat"
#: src/models/actionsmodel.cpp:467 #: src/models/actionsmodel.cpp:468
#, kde-format #, kde-format
msgid "You are not allowed to unban users from this room." msgid "You are not allowed to unban users from this room."
msgstr "No teniu permís per a desbandejar usuaris d'esta sala." msgstr "No teniu permís per a desbandejar usuaris d'esta sala."
#: src/models/actionsmodel.cpp:472 #: src/models/actionsmodel.cpp:473
#, kde-format #, kde-format
msgctxt "<user> is not banned from this room." msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room." msgid "%1 is not banned from this room."
msgstr "%1 no està bandejat d'esta sala." msgstr "%1 no està bandejat d'esta sala."
#: src/models/actionsmodel.cpp:476 #: src/models/actionsmodel.cpp:477
#, kde-format #, kde-format
msgctxt "<username> was unbanned from this room." msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room." msgid "%1 was unbanned from this room."
msgstr "%1 fou desbandejat d'esta sala." msgstr "%1 fou desbandejat d'esta sala."
#: src/models/actionsmodel.cpp:483 #: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user" msgid "Removes the ban of the given user"
msgstr "Elimina el bandeig a l'usuari indicat" msgstr "Elimina el bandeig a l'usuari indicat"
#: src/models/actionsmodel.cpp:498 #: src/models/actionsmodel.cpp:499
#, kde-format #, kde-format
msgid "You cannot kick yourself from the room." msgid "You cannot kick yourself from the room."
msgstr "No podeu expulsar-vos vós mateix de la sala." msgstr "No podeu expulsar-vos vós mateix de la sala."
#: src/models/actionsmodel.cpp:502 #: src/models/actionsmodel.cpp:503
#, kde-format #, kde-format
msgctxt "<username> is not in this room" msgctxt "<username> is not in this room"
msgid "%1 is not in this room." msgid "%1 is not in this room."
msgstr "%1 no es troba en esta sala." msgstr "%1 no es troba en esta sala."
#: src/models/actionsmodel.cpp:511 #: src/models/actionsmodel.cpp:512
#, kde-format #, kde-format
msgid "You are not allowed to kick users from this room." msgid "You are not allowed to kick users from this room."
msgstr "No teniu permís per a expulsar usuaris d'esta sala." msgstr "No teniu permís per a expulsar usuaris d'esta sala."
#: src/models/actionsmodel.cpp:517 #: src/models/actionsmodel.cpp:518
#, kde-format #, kde-format
msgctxt "You are not allowed to kick <username> from this room" msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room." msgid "You are not allowed to kick %1 from this room."
msgstr "No teniu permís per a expulsar l'usuari %1 d'esta sala." msgstr "No teniu permís per a expulsar l'usuari %1 d'esta sala."
#: src/models/actionsmodel.cpp:521 #: src/models/actionsmodel.cpp:522
#, kde-format #, kde-format
msgctxt "<username> was kicked from this room." msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room." msgid "%1 was kicked from this room."
msgstr "%1 fou expulsat d'esta sala." msgstr "%1 fou expulsat d'esta sala."
#: src/models/actionsmodel.cpp:527 #: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room" msgid "Removes the user from the room"
msgstr "Elimina l'usuari d'esta sala" msgstr "Elimina l'usuari d'esta sala"
@@ -1345,7 +1352,7 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis" msgid "Own Emojis"
msgstr "Emoji propis" msgstr "Emoji propis"
#: src/models/messagefiltermodel.cpp:142 #: src/models/messagefiltermodel.cpp:153
#, kde-format #, kde-format
msgctxt "%1: What's being done; %2: How often it is done." msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1" msgid " %1"
@@ -1353,7 +1360,7 @@ msgid_plural " %1 %2 times"
msgstr[0] " %1" msgstr[0] " %1"
msgstr[1] " %1 %2 vegades" msgstr[1] " %1 %2 vegades"
#: src/models/messagefiltermodel.cpp:146 #: src/models/messagefiltermodel.cpp:157
#, kde-format #, kde-format
msgctxt "n users" msgctxt "n users"
msgid " %1 user " msgid " %1 user "
@@ -1361,25 +1368,25 @@ msgid_plural " %1 users "
msgstr[0] " %1 usuari " msgstr[0] " %1 usuari "
msgstr[1] " %1 usuaris " msgstr[1] " %1 usuaris "
#: src/models/messagefiltermodel.cpp:155 #: src/models/messagefiltermodel.cpp:166
#, kde-format #, kde-format
msgctxt "[action 1], [action 2 and/or action 3]" msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", " msgid ", "
msgstr ", " msgstr ", "
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] or [action 3]" msgctxt "[action 1, action 2] or [action 3]"
msgid " or " msgid " or "
msgstr " o " msgstr " o "
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] and [action 3]" msgctxt "[action 1, action 2] and [action 3]"
msgid " and " msgid " and "
msgstr " i " msgstr " i "
#: src/models/messagefiltermodel.cpp:165 #: src/models/messagefiltermodel.cpp:176
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"userText (%1) is either a Matrix username if a single user sent all the " "userText (%1) is either a Matrix username if a single user sent all the "
@@ -1511,7 +1518,7 @@ msgstr "Lat.: %1, lon.: %2"
msgid "Encrypted Message" msgid "Encrypted Message"
msgstr "Missatge encriptat" msgstr "Missatge encriptat"
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:270 #: src/notificationsmanager.cpp:204 src/qml/Main.qml:274
#, kde-format #, kde-format
msgid "%1: %2" msgid "%1: %2"
msgstr "%1: %2" msgstr "%1: %2"
@@ -1570,13 +1577,12 @@ msgstr "%1 (%2)"
msgid "Open NeoChat" msgid "Open NeoChat"
msgstr "Obri NeoChat" msgstr "Obri NeoChat"
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:65 #: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:46
#, kde-format #, kde-format
msgid "Edit this account" msgid "Edit this account"
msgstr "Edita este compte" msgstr "Edita este compte"
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59 #: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#: src/settings/AccountsPage.qml:34
#, kde-format #, kde-format
msgid "Account editor" msgid "Account editor"
msgstr "Editor de comptes" msgstr "Editor de comptes"
@@ -1587,7 +1593,7 @@ msgid "Notification settings"
msgstr "Configureu les notificacions" msgstr "Configureu les notificacions"
#: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49 #: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49
#: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:400 src/qml/UserInfo.qml:116 #: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:404 src/qml/UserInfo.qml:103
#, kde-format #, kde-format
msgid "Configure" msgid "Configure"
msgstr "Configura" msgstr "Configura"
@@ -1926,8 +1932,8 @@ msgstr "Afig a les preferides"
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64 #: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162 #: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281 #: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:283 #: src/qml/SpaceDrawer.qml:296
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Create a Space" msgid "Create a Space"
@@ -1998,7 +2004,7 @@ msgstr "Tria la sala"
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200 #: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58 #: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58
#: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:220 #: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:210
#: src/qml/SelectParentDialog.qml:142 #: src/qml/SelectParentDialog.qml:142
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
@@ -2171,21 +2177,21 @@ msgid "They don't match"
msgstr "No coincidixen" msgstr "No coincidixen"
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52 #: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Explore rooms" msgid "Explore rooms"
msgstr "Explora les sales" msgstr "Explora les sales"
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67 #: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61 #: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61
#: src/qml/RoomListPage.qml:182 src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:172 src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Find your friends" msgid "Find your friends"
msgstr "Busqueu els vostres amics" msgstr "Busqueu els vostres amics"
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73 #: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190 #: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:235 #: src/qml/RoomListPage.qml:225
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Find your friends" msgid "Find your friends"
@@ -2212,11 +2218,34 @@ msgctxt "@title"
msgid "Scan a QR Code" msgid "Scan a QR Code"
msgstr "Escaneja un codi QR" msgstr "Escaneja un codi QR"
#: src/qml/ExploreComponent.qml:103 src/qml/ExploreComponent.qml:167 #: src/qml/ExploreComponent.qml:93
#, kde-format
msgctxt "@title"
msgid "Rooms"
msgstr "Sales"
#: src/qml/ExploreComponent.qml:105
#, kde-format
msgctxt "@action"
msgid "Search Room"
msgstr "Busca una sala"
#: src/qml/ExploreComponent.qml:118
#, kde-format
msgctxt "@action:button"
msgid "Show Menu"
msgstr "Mostra el menú"
#: src/qml/ExploreComponent.qml:182
#, kde-format #, kde-format
msgid "Create rooms and chats" msgid "Create rooms and chats"
msgstr "Crea sales i xats" msgstr "Crea sales i xats"
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr "Busca"
#: src/qml/ExploreComponentMobile.qml:79 #: src/qml/ExploreComponentMobile.qml:79
#, kde-format #, kde-format
msgid "Create New" msgid "Create New"
@@ -2574,18 +2603,30 @@ msgstr "Ubicacions"
msgid "There are no locations shared in this room." msgid "There are no locations shared in this room."
msgstr "No hi ha ubicacions compartides en esta sala." msgstr "No hi ha ubicacions compartides en esta sala."
#: src/qml/Main.qml:304 #: src/qml/Main.qml:163
#, kde-format
msgctxt "@action:button"
msgid "Show Room Information"
msgstr "Mostra informació de la sala"
#: src/qml/Main.qml:166
#, kde-format
msgctxt "@action:button"
msgid "Close Room Information Drawer"
msgstr "Tanca el calaix d'informació de la sala"
#: src/qml/Main.qml:308
#, kde-format #, kde-format
msgctxt "@title:window" msgctxt "@title:window"
msgid "Session Verification" msgid "Session Verification"
msgstr "Verificació de la sessió" msgstr "Verificació de la sessió"
#: src/qml/Main.qml:321 #: src/qml/Main.qml:325
#, kde-format #, kde-format
msgid "User consent" msgid "User consent"
msgstr "Consentiment de l'usuari" msgstr "Consentiment de l'usuari"
#: src/qml/Main.qml:326 #: src/qml/Main.qml:330
#, kde-format #, kde-format
msgid "" msgid ""
"Your homeserver requires you to agree to its terms and conditions before " "Your homeserver requires you to agree to its terms and conditions before "
@@ -2594,28 +2635,28 @@ msgstr ""
"El servidor domèstic requerix que accepteu els seus termes i condicions " "El servidor domèstic requerix que accepteu els seus termes i condicions "
"abans de poder-lo utilitzar. Feu clic en el botó de davall per a llegir-los." "abans de poder-lo utilitzar. Feu clic en el botó de davall per a llegir-los."
#: src/qml/Main.qml:331 #: src/qml/Main.qml:335
#, kde-format #, kde-format
msgid "Open" msgid "Open"
msgstr "Obri" msgstr "Obri"
#: src/qml/Main.qml:358 #: src/qml/Main.qml:362
#, kde-format #, kde-format
msgid "Start a chat" msgid "Start a chat"
msgstr "Inicia un xat" msgstr "Inicia un xat"
#: src/qml/Main.qml:360 #: src/qml/Main.qml:364
#, kde-format #, kde-format
msgid "Do you want to start a chat with %1?" msgid "Do you want to start a chat with %1?"
msgstr "Voleu iniciar un xat amb %1?" msgstr "Voleu iniciar un xat amb %1?"
#: src/qml/Main.qml:386 #: src/qml/Main.qml:390
#, kde-format #, kde-format
msgctxt "@info screenreader" msgctxt "@info screenreader"
msgid "The currently selected link" msgid "The currently selected link"
msgstr "L'enllaç seleccionat actualment" msgstr "L'enllaç seleccionat actualment"
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68 #: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Share" msgid "Share"
@@ -2699,7 +2740,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state" msgid "Edit state"
msgstr "Edita l'estat" msgstr "Edita l'estat"
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:66 #: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Notifications" msgid "Notifications"
@@ -2854,12 +2895,12 @@ msgstr "Informa del missatge"
msgid "Reason for reporting this message" msgid "Reason for reporting this message"
msgstr "Motiu per a informar d'este missatge" msgstr "Motiu per a informar d'este missatge"
#: src/qml/RoomDelegate.qml:101 #: src/qml/RoomDelegate.qml:103
#, kde-format #, kde-format
msgid "Muted room" msgid "Muted room"
msgstr "Sala silenciada" msgstr "Sala silenciada"
#: src/qml/RoomDelegate.qml:134 #: src/qml/RoomDelegate.qml:136
#, kde-format #, kde-format
msgid "Configure room" msgid "Configure room"
msgstr "Configura la sala" msgstr "Configura la sala"
@@ -2961,17 +3002,17 @@ msgstr[1] "%1 membres"
msgid "No member count" msgid "No member count"
msgstr "No hi ha comptador de membres" msgstr "No hi ha comptador de membres"
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No friends found" msgid "No friends found"
msgstr "No s'ha trobat cap amic" msgstr "No s'ha trobat cap amic"
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No rooms found" msgid "No rooms found"
msgstr "No s'ha trobat cap sala" msgstr "No s'ha trobat cap sala"
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "" msgid ""
"You haven't added any of your friends yet, click below to search for them." "You haven't added any of your friends yet, click below to search for them."
@@ -2979,17 +3020,17 @@ msgstr ""
"Encara no heu afegit cap dels vostres amics, feu clic en davall per a buscar-" "Encara no heu afegit cap dels vostres amics, feu clic en davall per a buscar-"
"los." "los."
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "Join some rooms to get started" msgid "Join some rooms to get started"
msgstr "Uniu-vos a diverses sales per a començar" msgstr "Uniu-vos a diverses sales per a començar"
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Search in room directory" msgid "Search in room directory"
msgstr "Busca en el directori de sales" msgstr "Busca en el directori de sales"
#: src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Search in friend directory" msgid "Search in friend directory"
msgstr "Busca en el directori d'amics" msgstr "Busca en el directori d'amics"
@@ -3169,24 +3210,24 @@ msgstr "L'URL compartit per a la imatge és <a href='%1'>%1</a>"
msgid "View notifications" msgid "View notifications"
msgstr "Visualitza les notificacions" msgstr "Visualitza les notificacions"
#: src/qml/SpaceDrawer.qml:84 #: src/qml/SpaceDrawer.qml:86
#, kde-format #, kde-format
msgid "Home" msgid "Home"
msgstr "Inici" msgstr "Inici"
#: src/qml/SpaceDrawer.qml:130 #: src/qml/SpaceDrawer.qml:134
#, kde-format #, kde-format
msgctxt "@button View all one-on-one chats with your friends." msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends" msgid "Friends"
msgstr "Amics" msgstr "Amics"
#: src/qml/SpaceDrawer.qml:232 #: src/qml/SpaceDrawer.qml:242
#, kde-format #, kde-format
msgctxt "Join <name of a space>" msgctxt "Join <name of a space>"
msgid "Join %1" msgid "Join %1"
msgstr "Unix-te a %1" msgstr "Unix-te a %1"
#: src/qml/SpaceDrawer.qml:274 #: src/qml/SpaceDrawer.qml:284
#, kde-format #, kde-format
msgid "Create a space" msgid "Create a space"
msgstr "Creeu un espai" msgstr "Creeu un espai"
@@ -3469,12 +3510,18 @@ msgstr "Convida a un xat privat"
msgid "Copy link" msgid "Copy link"
msgstr "Copia l'enllaç" msgstr "Copia l'enllaç"
#: src/qml/UserInfo.qml:104 #: src/qml/UserInfo.qml:54
#, kde-format
msgctxt "@title:window"
msgid "Account editor"
msgstr "Editor de comptes"
#: src/qml/UserInfo.qml:91
#, kde-format #, kde-format
msgid "Switch User" msgid "Switch User"
msgstr "Canvia d'usuari" msgstr "Canvia d'usuari"
#: src/qml/UserInfo.qml:111 #: src/qml/UserInfo.qml:98
#, kde-format #, kde-format
msgid "Open Settings" msgid "Open Settings"
msgstr "Obri la configuració" msgstr "Obri la configuració"
@@ -3919,47 +3966,42 @@ msgstr "Compacte"
msgid "Use compact room list" msgid "Use compact room list"
msgstr "Utilitza una llista compacta de sales" msgstr "Utilitza una llista compacta de sales"
#: src/settings/AppearanceSettingsPage.qml:232 #: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Show fancy effects in chat"
msgstr "Mostra efectes sofisticats en el xat"
#: src/settings/AppearanceSettingsPage.qml:249
#, kde-format #, kde-format
msgid "Use transparent chat page" msgid "Use transparent chat page"
msgstr "Utilitza una pàgina transparent de xat" msgstr "Utilitza una pàgina transparent de xat"
#: src/settings/AppearanceSettingsPage.qml:270 #: src/settings/AppearanceSettingsPage.qml:254
#, kde-format #, kde-format
msgid "Transparency" msgid "Transparency"
msgstr "Transparència" msgstr "Transparència"
#: src/settings/AppearanceSettingsPage.qml:289 #: src/settings/AppearanceSettingsPage.qml:273
#, kde-format #, kde-format
msgid "Only enabled if the transparent chat page is enabled." msgid "Only enabled if the transparent chat page is enabled."
msgstr "Només estarà activat si s'ha habilitat la pàgina transparent de xat." msgstr "Només estarà activat si s'ha habilitat la pàgina transparent de xat."
#: src/settings/AppearanceSettingsPage.qml:306 #: src/settings/AppearanceSettingsPage.qml:290
#, kde-format #, kde-format
msgid "Show your messages on the right" msgid "Show your messages on the right"
msgstr "Mostra els vostres missatges a la dreta" msgstr "Mostra els vostres missatges a la dreta"
#: src/settings/AppearanceSettingsPage.qml:322 #: src/settings/AppearanceSettingsPage.qml:306
#, kde-format #, kde-format
msgid "Show links preview in the chat messages" msgid "Show links preview in the chat messages"
msgstr "Mostra la vista prèvia dels enllaços en els missatges de xat" msgstr "Mostra la vista prèvia dels enllaços en els missatges de xat"
#: src/settings/AppearanceSettingsPage.qml:332 #: src/settings/AppearanceSettingsPage.qml:316
#, kde-format #, kde-format
msgid "Show Avatar" msgid "Show Avatar"
msgstr "Mostra l'avatar" msgstr "Mostra l'avatar"
#: src/settings/AppearanceSettingsPage.qml:336 #: src/settings/AppearanceSettingsPage.qml:320
#, kde-format #, kde-format
msgid "In chat" msgid "In chat"
msgstr "En el xat" msgstr "En el xat"
#: src/settings/AppearanceSettingsPage.qml:346 #: src/settings/AppearanceSettingsPage.qml:330
#, kde-format #, kde-format
msgid "In sidebar" msgid "In sidebar"
msgstr "En la barra lateral" msgstr "En la barra lateral"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: neochat\n" "Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:38+0000\n" "POT-Creation-Date: 2024-04-24 02:56+0000\n"
"PO-Revision-Date: 2023-11-23 10:08+0100\n" "PO-Revision-Date: 2023-11-23 10:08+0100\n"
"Last-Translator: Vit Pelcak <vit@pelcak.org>\n" "Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n" "Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Lokalize 23.08.3\n" "X-Generator: Lokalize 23.08.3\n"
#: src/controller.cpp:134 #: src/controller.cpp:133
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are " "The reason for using push notifications, as in: '[Push notifications are "
@@ -25,47 +25,47 @@ msgctxt ""
msgid "Receiving notifications for new messages" msgid "Receiving notifications for new messages"
msgstr "" msgstr ""
#: src/controller.cpp:213 #: src/controller.cpp:212
#, kde-format #, kde-format
msgid "Network Error: %1" msgid "Network Error: %1"
msgstr "Chyba sítě: %1" msgstr "Chyba sítě: %1"
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Access token wasn't found" msgid "Access token wasn't found"
msgstr "" msgstr ""
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Maybe it was deleted?" msgid "Maybe it was deleted?"
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Access to keychain was denied." msgid "Access to keychain was denied."
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Please allow NeoChat to read the access token" msgid "Please allow NeoChat to read the access token"
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "No keychain available." msgid "No keychain available."
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux" msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr "" msgstr ""
#: src/controller.cpp:245 #: src/controller.cpp:244
#, kde-format #, kde-format
msgid "Unable to read access token" msgid "Unable to read access token"
msgstr "" msgstr ""
#: src/controller.cpp:341 #: src/controller.cpp:340
#, kde-format #, kde-format
msgid "Receiving push notifications" msgid "Receiving push notifications"
msgstr "" msgstr ""
@@ -82,19 +82,31 @@ msgctxt "@title:window"
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:20 #: src/devtools/DebugOptions.qml:19
#, kde-format
msgctxt "@option:check"
msgid "Show hidden events in the timeline"
msgstr ""
#: src/devtools/DebugOptions.qml:26
#, kde-format #, kde-format
msgctxt "@option:check Enable the matrix 'threads' feature" msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification" msgid "Always allow device verification"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:21 #: src/devtools/DebugOptions.qml:27
#, kde-format #, kde-format
msgid "" msgid ""
"Allow the user to start a verification session with devices that were " "Allow the user to start a verification session with devices that were "
"already verified" "already verified"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:33
#, kde-format
msgctxt "@option:check"
msgid "Show focus in window header"
msgstr ""
#: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240 #: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240
#, kde-format #, kde-format
msgid "Developer Tools" msgid "Developer Tools"
@@ -142,28 +154,28 @@ msgstr "Vyberte místnost"
msgid "Room" msgid "Room"
msgstr "Pokoj" msgstr "Pokoj"
#: src/devtools/RoomData.qml:35 #: src/devtools/RoomData.qml:36
#, kde-format #, kde-format
msgid "Room Id: %1" msgid "Room Id: %1"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:39 #: src/devtools/RoomData.qml:40
#, kde-format #, kde-format
msgid "Room Account Data" msgid "Room Account Data"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:52 src/devtools/RoomData.qml:98 #: src/devtools/RoomData.qml:53 src/devtools/RoomData.qml:99
#: src/qml/MessageSourceSheet.qml:42 #: src/qml/MessageSourceSheet.qml:42
#, kde-format #, kde-format
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:60 #: src/devtools/RoomData.qml:61
#, kde-format #, kde-format
msgid "Room State" msgid "Room State"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:74 #: src/devtools/RoomData.qml:75
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type" msgid "%1 event of this type"
@@ -172,7 +184,7 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
msgstr[2] "" msgstr[2] ""
#: src/devtools/RoomData.qml:83 #: src/devtools/RoomData.qml:84
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information" msgid "Event Information"
@@ -206,49 +218,44 @@ msgctxt ""
msgid "State Keys" msgid "State Keys"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:60 #: src/enums/neochatroomtype.h:59
#, kde-format #, kde-format
msgid "Invited" msgid "Invited"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:62 #: src/enums/neochatroomtype.h:61
#, kde-format #, kde-format
msgid "Favorite" msgid "Favorite"
msgstr "Oblíbené" msgstr "Oblíbené"
#: src/enums/neochatroomtype.h:64 src/qml/UserSearchPage.qml:82 #: src/enums/neochatroomtype.h:63 src/qml/UserSearchPage.qml:82
#, kde-format #, kde-format
msgid "Friends" msgid "Friends"
msgstr "Přátelé" msgstr "Přátelé"
#: src/enums/neochatroomtype.h:66 #: src/enums/neochatroomtype.h:65
#, kde-format #, kde-format
msgid "Normal" msgid "Normal"
msgstr "Normální" msgstr "Normální"
#: src/enums/neochatroomtype.h:68 #: src/enums/neochatroomtype.h:67
#, kde-format #, kde-format
msgid "Low priority" msgid "Low priority"
msgstr "Nízká priorita" msgstr "Nízká priorita"
#: src/enums/neochatroomtype.h:70 #: src/enums/neochatroomtype.h:69
#, kde-format #, kde-format
msgid "Spaces" msgid "Spaces"
msgstr "Mezery" msgstr "Mezery"
#: src/enums/neochatroomtype.h:72 src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr "Hledat"
#: src/eventhandler.cpp:303 src/eventhandler.cpp:507 #: src/eventhandler.cpp:303 src/eventhandler.cpp:507
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465 #: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format #, kde-format
msgid "<i>[This message was deleted]</i>" msgid "<i>[This message was deleted]</i>"
msgstr "" msgstr ""
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141 #: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466 #: src/models/messageeventmodel.cpp:437
#, kde-format #, kde-format
msgid "<i>[This message was deleted: %1]</i>" msgid "<i>[This message was deleted: %1]</i>"
msgstr "" msgstr ""
@@ -622,12 +629,12 @@ msgctxt "The location being downloaded to"
msgid "Destination" msgid "Destination"
msgstr "Cíl" msgstr "Cíl"
#: src/login.cpp:85 src/login.cpp:100 #: src/login.cpp:84 src/login.cpp:99
#, kde-format #, kde-format
msgid "Network Error" msgid "Network Error"
msgstr "Chyba sítě" msgstr "Chyba sítě"
#: src/login.cpp:93 #: src/login.cpp:92
#, kde-format #, kde-format
msgid "Login Failed: %1" msgid "Login Failed: %1"
msgstr "Přihlášení selhalo: %1" msgstr "Přihlášení selhalo: %1"
@@ -947,315 +954,315 @@ msgstr ""
msgid "Share a URL to Matrix" msgid "Share a URL to Matrix"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:40 #: src/matriximageprovider.cpp:38
#, kde-format #, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern" msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:98 #: src/matriximageprovider.cpp:96
#, kde-format #, kde-format
msgid "Image request has been cancelled" msgid "Image request has been cancelled"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:24 #: src/models/actionsmodel.cpp:25
#, kde-format #, kde-format
msgid "Leaving this room." msgid "Leaving this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228 #: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284 #: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a room id or alias." msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias." msgid "'%1' does not look like a room id or alias."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:39 #: src/models/actionsmodel.cpp:40
#, kde-format #, kde-format
msgctxt "Leaving room <roomname>." msgctxt "Leaving room <roomname>."
msgid "Leaving room %1." msgid "Leaving room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:42 #: src/models/actionsmodel.cpp:43
#, kde-format #, kde-format
msgctxt "Room <roomname> not found" msgctxt "Room <roomname> not found"
msgid "Room %1 not found." msgid "Room %1 not found."
msgstr "Místnost %1 nenalezena." msgstr "Místnost %1 nenalezena."
#: src/models/actionsmodel.cpp:50 src/models/actionsmodel.cpp:320 #: src/models/actionsmodel.cpp:51 src/models/actionsmodel.cpp:321
#, kde-format #, kde-format
msgid "No new nickname provided, no changes will happen." msgid "No new nickname provided, no changes will happen."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75 #: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95 #: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135 #: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162 #: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182 #: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>" msgid "<message>"
msgstr "< zpráva>" msgstr "< zpráva>"
#: src/models/actionsmodel.cpp:66 #: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message" msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:76 #: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message" msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:86 #: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message" msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:96 #: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message" msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:116 #: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow" msgid "Sends the given message colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:136 #: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow" msgid "Sends the given emote colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:147 #: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text" msgid "Sends the given message as plain text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:163 #: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler" msgid "Sends the given message as a spoiler"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:173 #: src/models/actionsmodel.cpp:174
msgid "Sends the given emote" msgid "Sends the given emote"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:183 #: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice" msgid "Sends the given message as a notice"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354 #: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421 #: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494 #: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a matrix id." msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id." msgid "'%1' does not look like a matrix id."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:197 #: src/models/actionsmodel.cpp:198
#, kde-format #, kde-format
msgctxt "<user> is already invited to this room." msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room." msgid "%1 is already invited to this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:201 #: src/models/actionsmodel.cpp:202
#, kde-format #, kde-format
msgctxt "<user> is banned from this room." msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room." msgid "%1 is banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:205 #: src/models/actionsmodel.cpp:206
#, kde-format #, kde-format
msgid "You are already in this room." msgid "You are already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:209 #: src/models/actionsmodel.cpp:210
#, kde-format #, kde-format
msgctxt "<user> is already in this room." msgctxt "<user> is already in this room."
msgid "%1 is already in this room." msgid "%1 is already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:213 #: src/models/actionsmodel.cpp:214
#, kde-format #, kde-format
msgctxt "<username> was invited into this room" msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room" msgid "%1 was invited into this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367 #: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482 #: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>" msgid "<user id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:219 #: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room" msgid "Invites the user to this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291 #: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format #, kde-format
msgctxt "Joining room <roomname>." msgctxt "Joining room <roomname>."
msgid "Joining room %1." msgid "Joining room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:242 src/models/actionsmodel.cpp:297 #: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298
msgid "<room alias or id>" msgid "<room alias or id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298 #: src/models/actionsmodel.cpp:244 src/models/actionsmodel.cpp:299
msgid "Joins the given room" msgid "Joins the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:262 #: src/models/actionsmodel.cpp:263
#, kde-format #, kde-format
msgctxt "Knocking room <roomname>." msgctxt "Knocking room <roomname>."
msgid "Knocking room %1." msgid "Knocking room %1."
msgstr "Klepete na místnost %1." msgstr "Klepete na místnost %1."
#: src/models/actionsmodel.cpp:274 #: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]" msgid "<room alias or id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:275 #: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room" msgid "Requests to join the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:288 #: src/models/actionsmodel.cpp:289
#, kde-format #, kde-format
msgctxt "You are already in room <roomname>." msgctxt "You are already in room <roomname>."
msgid "You are already in room %1." msgid "You are already in room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:305 src/models/actionsmodel.cpp:313 #: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314
msgid "[<room alias or id>]" msgid "[<room alias or id>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314 #: src/models/actionsmodel.cpp:307 src/models/actionsmodel.cpp:315
msgid "Leaves the given room or this room, if there is none given" msgid "Leaves the given room or this room, if there is none given"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336 #: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:344 #: src/models/actionsmodel.cpp:345
msgid "<display name>" msgid "<display name>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:329 #: src/models/actionsmodel.cpp:330
msgid "Changes your global display name" msgid "Changes your global display name"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:337 src/models/actionsmodel.cpp:345 #: src/models/actionsmodel.cpp:338 src/models/actionsmodel.cpp:346
msgid "Changes your display name in this room" msgid "Changes your display name in this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:358 #: src/models/actionsmodel.cpp:359
#, kde-format #, kde-format
msgctxt "<username> is already ignored." msgctxt "<username> is already ignored."
msgid "%1 is already ignored." msgid "%1 is already ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:362 #: src/models/actionsmodel.cpp:363
#, kde-format #, kde-format
msgctxt "<username> is now ignored" msgctxt "<username> is now ignored"
msgid "%1 is now ignored." msgid "%1 is now ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:368 #: src/models/actionsmodel.cpp:369
msgid "Ignores the given user" msgid "Ignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:381 #: src/models/actionsmodel.cpp:382
#, kde-format #, kde-format
msgctxt "<username> is not ignored." msgctxt "<username> is not ignored."
msgid "%1 is not ignored." msgid "%1 is not ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:385 #: src/models/actionsmodel.cpp:386
#, kde-format #, kde-format
msgctxt "<username> is no longer ignored." msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored." msgid "%1 is no longer ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:391 #: src/models/actionsmodel.cpp:392
msgid "Unignores the given user" msgid "Unignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:410 #: src/models/actionsmodel.cpp:411
msgid "<reaction text>" msgid "<reaction text>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:411 #: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text" msgid "React to the message with the given text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:426 #: src/models/actionsmodel.cpp:427
#, kde-format #, kde-format
msgctxt "<user> is already banned from this room." msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room." msgid "%1 is already banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:434 #: src/models/actionsmodel.cpp:435
#, kde-format #, kde-format
msgid "You are not allowed to ban users from this room." msgid "You are not allowed to ban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:440 #: src/models/actionsmodel.cpp:441
#, kde-format #, kde-format
msgctxt "You are not allowed to ban <username> from this room." msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room." msgid "You are not allowed to ban %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:444 #: src/models/actionsmodel.cpp:445
#, kde-format #, kde-format
msgctxt "<username> was banned from this room." msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room." msgid "%1 was banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:449 src/models/actionsmodel.cpp:526 #: src/models/actionsmodel.cpp:450 src/models/actionsmodel.cpp:527
msgid "<user id> [<reason>]" msgid "<user id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:450 #: src/models/actionsmodel.cpp:451
msgid "Bans the given user" msgid "Bans the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:467 #: src/models/actionsmodel.cpp:468
#, kde-format #, kde-format
msgid "You are not allowed to unban users from this room." msgid "You are not allowed to unban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:472 #: src/models/actionsmodel.cpp:473
#, kde-format #, kde-format
msgctxt "<user> is not banned from this room." msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room." msgid "%1 is not banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:476 #: src/models/actionsmodel.cpp:477
#, kde-format #, kde-format
msgctxt "<username> was unbanned from this room." msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room." msgid "%1 was unbanned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:483 #: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user" msgid "Removes the ban of the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:498 #: src/models/actionsmodel.cpp:499
#, kde-format #, kde-format
msgid "You cannot kick yourself from the room." msgid "You cannot kick yourself from the room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:502 #: src/models/actionsmodel.cpp:503
#, kde-format #, kde-format
msgctxt "<username> is not in this room" msgctxt "<username> is not in this room"
msgid "%1 is not in this room." msgid "%1 is not in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:511 #: src/models/actionsmodel.cpp:512
#, kde-format #, kde-format
msgid "You are not allowed to kick users from this room." msgid "You are not allowed to kick users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:517 #: src/models/actionsmodel.cpp:518
#, kde-format #, kde-format
msgctxt "You are not allowed to kick <username> from this room" msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room." msgid "You are not allowed to kick %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:521 #: src/models/actionsmodel.cpp:522
#, kde-format #, kde-format
msgctxt "<username> was kicked from this room." msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room." msgid "%1 was kicked from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:527 #: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room" msgid "Removes the user from the room"
msgstr "" msgstr ""
@@ -1337,7 +1344,7 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis" msgid "Own Emojis"
msgstr "Vlastní emotikony" msgstr "Vlastní emotikony"
#: src/models/messagefiltermodel.cpp:142 #: src/models/messagefiltermodel.cpp:153
#, kde-format #, kde-format
msgctxt "%1: What's being done; %2: How often it is done." msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1" msgid " %1"
@@ -1346,7 +1353,7 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
msgstr[2] "" msgstr[2] ""
#: src/models/messagefiltermodel.cpp:146 #: src/models/messagefiltermodel.cpp:157
#, kde-format #, kde-format
msgctxt "n users" msgctxt "n users"
msgid " %1 user " msgid " %1 user "
@@ -1355,25 +1362,25 @@ msgstr[0] "%1 uživatel "
msgstr[1] "%1 uživatelé " msgstr[1] "%1 uživatelé "
msgstr[2] "%1 uživatelů " msgstr[2] "%1 uživatelů "
#: src/models/messagefiltermodel.cpp:155 #: src/models/messagefiltermodel.cpp:166
#, kde-format #, kde-format
msgctxt "[action 1], [action 2 and/or action 3]" msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", " msgid ", "
msgstr ", " msgstr ", "
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] or [action 3]" msgctxt "[action 1, action 2] or [action 3]"
msgid " or " msgid " or "
msgstr " nebo " msgstr " nebo "
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] and [action 3]" msgctxt "[action 1, action 2] and [action 3]"
msgid " and " msgid " and "
msgstr " a " msgstr " a "
#: src/models/messagefiltermodel.cpp:165 #: src/models/messagefiltermodel.cpp:176
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"userText (%1) is either a Matrix username if a single user sent all the " "userText (%1) is either a Matrix username if a single user sent all the "
@@ -1507,7 +1514,7 @@ msgstr "Šíř.: %1, Dél.: %2"
msgid "Encrypted Message" msgid "Encrypted Message"
msgstr "Zašifrovaná zpráva" msgstr "Zašifrovaná zpráva"
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:270 #: src/notificationsmanager.cpp:204 src/qml/Main.qml:274
#, kde-format #, kde-format
msgid "%1: %2" msgid "%1: %2"
msgstr "%1: %2" msgstr "%1: %2"
@@ -1566,13 +1573,12 @@ msgstr "%1 (%2)"
msgid "Open NeoChat" msgid "Open NeoChat"
msgstr "Otevřít NeoChat" msgstr "Otevřít NeoChat"
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:65 #: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:46
#, kde-format #, kde-format
msgid "Edit this account" msgid "Edit this account"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59 #: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#: src/settings/AccountsPage.qml:34
#, kde-format #, kde-format
msgid "Account editor" msgid "Account editor"
msgstr "Editor účtů" msgstr "Editor účtů"
@@ -1583,7 +1589,7 @@ msgid "Notification settings"
msgstr "Nastavení oznamování" msgstr "Nastavení oznamování"
#: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49 #: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49
#: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:400 src/qml/UserInfo.qml:116 #: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:404 src/qml/UserInfo.qml:103
#, kde-format #, kde-format
msgid "Configure" msgid "Configure"
msgstr "Nastavit" msgstr "Nastavit"
@@ -1918,8 +1924,8 @@ msgstr "Přidat k oblíbeným"
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64 #: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162 #: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281 #: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:283 #: src/qml/SpaceDrawer.qml:296
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Create a Space" msgid "Create a Space"
@@ -1990,7 +1996,7 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200 #: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58 #: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58
#: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:220 #: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:210
#: src/qml/SelectParentDialog.qml:142 #: src/qml/SelectParentDialog.qml:142
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
@@ -2161,21 +2167,21 @@ msgid "They don't match"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52 #: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Explore rooms" msgid "Explore rooms"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67 #: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61 #: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61
#: src/qml/RoomListPage.qml:182 src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:172 src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Find your friends" msgid "Find your friends"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73 #: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190 #: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:235 #: src/qml/RoomListPage.qml:225
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Find your friends" msgid "Find your friends"
@@ -2202,11 +2208,37 @@ msgctxt "@title"
msgid "Scan a QR Code" msgid "Scan a QR Code"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:103 src/qml/ExploreComponent.qml:167 #: src/qml/ExploreComponent.qml:93
#, fuzzy, kde-format
#| msgid "Room"
msgctxt "@title"
msgid "Rooms"
msgstr "Pokoj"
#: src/qml/ExploreComponent.qml:105
#, fuzzy, kde-format
#| msgid "Search"
msgctxt "@action"
msgid "Search Room"
msgstr "Hledat"
#: src/qml/ExploreComponent.qml:118
#, fuzzy, kde-format
#| msgid "Show"
msgctxt "@action:button"
msgid "Show Menu"
msgstr "Zobrazit"
#: src/qml/ExploreComponent.qml:182
#, kde-format #, kde-format
msgid "Create rooms and chats" msgid "Create rooms and chats"
msgstr "Vytvářejte místnosti a rozhovory" msgstr "Vytvářejte místnosti a rozhovory"
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr "Hledat"
#: src/qml/ExploreComponentMobile.qml:79 #: src/qml/ExploreComponentMobile.qml:79
#, kde-format #, kde-format
msgid "Create New" msgid "Create New"
@@ -2562,46 +2594,62 @@ msgstr "Umístění"
msgid "There are no locations shared in this room." msgid "There are no locations shared in this room."
msgstr "" msgstr ""
#: src/qml/Main.qml:304 #: src/qml/Main.qml:163
#, fuzzy, kde-format
#| msgctxt "@action:title"
#| msgid "Room information"
msgctxt "@action:button"
msgid "Show Room Information"
msgstr "informace o místnosti"
#: src/qml/Main.qml:166
#, fuzzy, kde-format
#| msgctxt "@action:title"
#| msgid "Room information"
msgctxt "@action:button"
msgid "Close Room Information Drawer"
msgstr "informace o místnosti"
#: src/qml/Main.qml:308
#, kde-format #, kde-format
msgctxt "@title:window" msgctxt "@title:window"
msgid "Session Verification" msgid "Session Verification"
msgstr "" msgstr ""
#: src/qml/Main.qml:321 #: src/qml/Main.qml:325
#, kde-format #, kde-format
msgid "User consent" msgid "User consent"
msgstr "" msgstr ""
#: src/qml/Main.qml:326 #: src/qml/Main.qml:330
#, kde-format #, kde-format
msgid "" msgid ""
"Your homeserver requires you to agree to its terms and conditions before " "Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them." "being able to use it. Please click the button below to read them."
msgstr "" msgstr ""
#: src/qml/Main.qml:331 #: src/qml/Main.qml:335
#, kde-format #, kde-format
msgid "Open" msgid "Open"
msgstr "Otevřít" msgstr "Otevřít"
#: src/qml/Main.qml:358 #: src/qml/Main.qml:362
#, kde-format #, kde-format
msgid "Start a chat" msgid "Start a chat"
msgstr "Zahájit rozhovor" msgstr "Zahájit rozhovor"
#: src/qml/Main.qml:360 #: src/qml/Main.qml:364
#, kde-format #, kde-format
msgid "Do you want to start a chat with %1?" msgid "Do you want to start a chat with %1?"
msgstr "Přejete si začít rozhovor s %1?" msgstr "Přejete si začít rozhovor s %1?"
#: src/qml/Main.qml:386 #: src/qml/Main.qml:390
#, kde-format #, kde-format
msgctxt "@info screenreader" msgctxt "@info screenreader"
msgid "The currently selected link" msgid "The currently selected link"
msgstr "" msgstr ""
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68 #: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Share" msgid "Share"
@@ -2686,7 +2734,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state" msgid "Edit state"
msgstr "Upravit nálepku" msgstr "Upravit nálepku"
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:66 #: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Notifications" msgid "Notifications"
@@ -2841,12 +2889,12 @@ msgstr "Nahlásit zprávu"
msgid "Reason for reporting this message" msgid "Reason for reporting this message"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:101 #: src/qml/RoomDelegate.qml:103
#, kde-format #, kde-format
msgid "Muted room" msgid "Muted room"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:134 #: src/qml/RoomDelegate.qml:136
#, kde-format #, kde-format
msgid "Configure room" msgid "Configure room"
msgstr "" msgstr ""
@@ -2949,33 +2997,33 @@ msgstr[2] "%1 členů"
msgid "No member count" msgid "No member count"
msgstr "Žádný počet členů" msgstr "Žádný počet členů"
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No friends found" msgid "No friends found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No rooms found" msgid "No rooms found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "" msgid ""
"You haven't added any of your friends yet, click below to search for them." "You haven't added any of your friends yet, click below to search for them."
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "Join some rooms to get started" msgid "Join some rooms to get started"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Search in room directory" msgid "Search in room directory"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Search in friend directory" msgid "Search in friend directory"
msgstr "" msgstr ""
@@ -3151,24 +3199,24 @@ msgstr "Sdílená adresa obrázku je <a href='%1'>%1</a>"
msgid "View notifications" msgid "View notifications"
msgstr "Zobrazit upozornění" msgstr "Zobrazit upozornění"
#: src/qml/SpaceDrawer.qml:84 #: src/qml/SpaceDrawer.qml:86
#, kde-format #, kde-format
msgid "Home" msgid "Home"
msgstr "Domů" msgstr "Domů"
#: src/qml/SpaceDrawer.qml:130 #: src/qml/SpaceDrawer.qml:134
#, kde-format #, kde-format
msgctxt "@button View all one-on-one chats with your friends." msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:232 #: src/qml/SpaceDrawer.qml:242
#, kde-format #, kde-format
msgctxt "Join <name of a space>" msgctxt "Join <name of a space>"
msgid "Join %1" msgid "Join %1"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:274 #: src/qml/SpaceDrawer.qml:284
#, kde-format #, kde-format
msgid "Create a space" msgid "Create a space"
msgstr "" msgstr ""
@@ -3447,12 +3495,19 @@ msgstr ""
msgid "Copy link" msgid "Copy link"
msgstr "Kopírovat odkaz" msgstr "Kopírovat odkaz"
#: src/qml/UserInfo.qml:104 #: src/qml/UserInfo.qml:54
#, fuzzy, kde-format
#| msgid "Account editor"
msgctxt "@title:window"
msgid "Account editor"
msgstr "Editor účtů"
#: src/qml/UserInfo.qml:91
#, kde-format #, kde-format
msgid "Switch User" msgid "Switch User"
msgstr "Přepnout uživatele" msgstr "Přepnout uživatele"
#: src/qml/UserInfo.qml:111 #: src/qml/UserInfo.qml:98
#, kde-format #, kde-format
msgid "Open Settings" msgid "Open Settings"
msgstr "Otevřít nastavení" msgstr "Otevřít nastavení"
@@ -3865,12 +3920,7 @@ msgstr "Kompaktní"
msgid "Use compact room list" msgid "Use compact room list"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:232 #: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Show fancy effects in chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:249
#, kde-format #, kde-format
msgid "Use transparent chat page" msgid "Use transparent chat page"
msgstr "Použít průhlednou stránku pro rozhovor" msgstr "Použít průhlednou stránku pro rozhovor"
@@ -3878,37 +3928,37 @@ msgstr "Použít průhlednou stránku pro rozhovor"
# Přechod sklouznutí má posunovače, kde vlevo (žádný výběr) znamená průhlednost a vpravo (výběr 100 %) znamená neprůhlednost. # Přechod sklouznutí má posunovače, kde vlevo (žádný výběr) znamená průhlednost a vpravo (výběr 100 %) znamená neprůhlednost.
# #
# Opačně to nedává smysl. # Opačně to nedává smysl.
#: src/settings/AppearanceSettingsPage.qml:270 #: src/settings/AppearanceSettingsPage.qml:254
#, kde-format #, kde-format
msgid "Transparency" msgid "Transparency"
msgstr "Průhlednost" msgstr "Průhlednost"
#: src/settings/AppearanceSettingsPage.qml:289 #: src/settings/AppearanceSettingsPage.qml:273
#, kde-format #, kde-format
msgid "Only enabled if the transparent chat page is enabled." msgid "Only enabled if the transparent chat page is enabled."
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:306 #: src/settings/AppearanceSettingsPage.qml:290
#, kde-format #, kde-format
msgid "Show your messages on the right" msgid "Show your messages on the right"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:322 #: src/settings/AppearanceSettingsPage.qml:306
#, kde-format #, kde-format
msgid "Show links preview in the chat messages" msgid "Show links preview in the chat messages"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:332 #: src/settings/AppearanceSettingsPage.qml:316
#, kde-format #, kde-format
msgid "Show Avatar" msgid "Show Avatar"
msgstr "Zobrazit avatara" msgstr "Zobrazit avatara"
#: src/settings/AppearanceSettingsPage.qml:336 #: src/settings/AppearanceSettingsPage.qml:320
#, kde-format #, kde-format
msgid "In chat" msgid "In chat"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:346 #: src/settings/AppearanceSettingsPage.qml:330
#, kde-format #, kde-format
msgid "In sidebar" msgid "In sidebar"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: neochat\n" "Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:38+0000\n" "POT-Creation-Date: 2024-04-24 02:56+0000\n"
"PO-Revision-Date: 2020-11-05 23:50-0800\n" "PO-Revision-Date: 2020-11-05 23:50-0800\n"
"Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n" "Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n"
"Language-Team: Japanese <kde-jp@kde.org>\n" "Language-Team: Japanese <kde-jp@kde.org>\n"
@@ -14,7 +14,7 @@ msgstr ""
"X-Accelerator-Marker: &\n" "X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n" "X-Text-Markup: kde4\n"
#: src/controller.cpp:134 #: src/controller.cpp:133
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are " "The reason for using push notifications, as in: '[Push notifications are "
@@ -22,47 +22,47 @@ msgctxt ""
msgid "Receiving notifications for new messages" msgid "Receiving notifications for new messages"
msgstr "" msgstr ""
#: src/controller.cpp:213 #: src/controller.cpp:212
#, kde-format #, kde-format
msgid "Network Error: %1" msgid "Network Error: %1"
msgstr "" msgstr ""
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Access token wasn't found" msgid "Access token wasn't found"
msgstr "" msgstr ""
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Maybe it was deleted?" msgid "Maybe it was deleted?"
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Access to keychain was denied." msgid "Access to keychain was denied."
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Please allow NeoChat to read the access token" msgid "Please allow NeoChat to read the access token"
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "No keychain available." msgid "No keychain available."
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux" msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr "" msgstr ""
#: src/controller.cpp:245 #: src/controller.cpp:244
#, kde-format #, kde-format
msgid "Unable to read access token" msgid "Unable to read access token"
msgstr "" msgstr ""
#: src/controller.cpp:341 #: src/controller.cpp:340
#, kde-format #, kde-format
msgid "Receiving push notifications" msgid "Receiving push notifications"
msgstr "" msgstr ""
@@ -79,19 +79,31 @@ msgctxt "@title:window"
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:20 #: src/devtools/DebugOptions.qml:19
#, kde-format
msgctxt "@option:check"
msgid "Show hidden events in the timeline"
msgstr ""
#: src/devtools/DebugOptions.qml:26
#, kde-format #, kde-format
msgctxt "@option:check Enable the matrix 'threads' feature" msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification" msgid "Always allow device verification"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:21 #: src/devtools/DebugOptions.qml:27
#, kde-format #, kde-format
msgid "" msgid ""
"Allow the user to start a verification session with devices that were " "Allow the user to start a verification session with devices that were "
"already verified" "already verified"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:33
#, kde-format
msgctxt "@option:check"
msgid "Show focus in window header"
msgstr ""
#: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240 #: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240
#, kde-format #, kde-format
msgid "Developer Tools" msgid "Developer Tools"
@@ -138,35 +150,35 @@ msgstr ""
msgid "Room" msgid "Room"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:35 #: src/devtools/RoomData.qml:36
#, kde-format #, kde-format
msgid "Room Id: %1" msgid "Room Id: %1"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:39 #: src/devtools/RoomData.qml:40
#, kde-format #, kde-format
msgid "Room Account Data" msgid "Room Account Data"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:52 src/devtools/RoomData.qml:98 #: src/devtools/RoomData.qml:53 src/devtools/RoomData.qml:99
#: src/qml/MessageSourceSheet.qml:42 #: src/qml/MessageSourceSheet.qml:42
#, kde-format #, kde-format
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:60 #: src/devtools/RoomData.qml:61
#, kde-format #, kde-format
msgid "Room State" msgid "Room State"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:74 #: src/devtools/RoomData.qml:75
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type" msgid "%1 event of this type"
msgid_plural "%1 events of this type" msgid_plural "%1 events of this type"
msgstr[0] "" msgstr[0] ""
#: src/devtools/RoomData.qml:83 #: src/devtools/RoomData.qml:84
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information" msgid "Event Information"
@@ -200,49 +212,44 @@ msgctxt ""
msgid "State Keys" msgid "State Keys"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:60 #: src/enums/neochatroomtype.h:59
#, kde-format #, kde-format
msgid "Invited" msgid "Invited"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:62 #: src/enums/neochatroomtype.h:61
#, kde-format #, kde-format
msgid "Favorite" msgid "Favorite"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:64 src/qml/UserSearchPage.qml:82 #: src/enums/neochatroomtype.h:63 src/qml/UserSearchPage.qml:82
#, kde-format #, kde-format
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:66 #: src/enums/neochatroomtype.h:65
#, kde-format #, kde-format
msgid "Normal" msgid "Normal"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:68 #: src/enums/neochatroomtype.h:67
#, kde-format #, kde-format
msgid "Low priority" msgid "Low priority"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:70 #: src/enums/neochatroomtype.h:69
#, kde-format #, kde-format
msgid "Spaces" msgid "Spaces"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:72 src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/eventhandler.cpp:303 src/eventhandler.cpp:507 #: src/eventhandler.cpp:303 src/eventhandler.cpp:507
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465 #: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format #, kde-format
msgid "<i>[This message was deleted]</i>" msgid "<i>[This message was deleted]</i>"
msgstr "" msgstr ""
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141 #: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466 #: src/models/messageeventmodel.cpp:437
#, kde-format #, kde-format
msgid "<i>[This message was deleted: %1]</i>" msgid "<i>[This message was deleted: %1]</i>"
msgstr "" msgstr ""
@@ -614,12 +621,12 @@ msgctxt "The location being downloaded to"
msgid "Destination" msgid "Destination"
msgstr "" msgstr ""
#: src/login.cpp:85 src/login.cpp:100 #: src/login.cpp:84 src/login.cpp:99
#, kde-format #, kde-format
msgid "Network Error" msgid "Network Error"
msgstr "" msgstr ""
#: src/login.cpp:93 #: src/login.cpp:92
#, kde-format #, kde-format
msgid "Login Failed: %1" msgid "Login Failed: %1"
msgstr "" msgstr ""
@@ -939,315 +946,315 @@ msgstr ""
msgid "Share a URL to Matrix" msgid "Share a URL to Matrix"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:40 #: src/matriximageprovider.cpp:38
#, kde-format #, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern" msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:98 #: src/matriximageprovider.cpp:96
#, kde-format #, kde-format
msgid "Image request has been cancelled" msgid "Image request has been cancelled"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:24 #: src/models/actionsmodel.cpp:25
#, kde-format #, kde-format
msgid "Leaving this room." msgid "Leaving this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228 #: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284 #: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a room id or alias." msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias." msgid "'%1' does not look like a room id or alias."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:39 #: src/models/actionsmodel.cpp:40
#, kde-format #, kde-format
msgctxt "Leaving room <roomname>." msgctxt "Leaving room <roomname>."
msgid "Leaving room %1." msgid "Leaving room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:42 #: src/models/actionsmodel.cpp:43
#, kde-format #, kde-format
msgctxt "Room <roomname> not found" msgctxt "Room <roomname> not found"
msgid "Room %1 not found." msgid "Room %1 not found."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:50 src/models/actionsmodel.cpp:320 #: src/models/actionsmodel.cpp:51 src/models/actionsmodel.cpp:321
#, kde-format #, kde-format
msgid "No new nickname provided, no changes will happen." msgid "No new nickname provided, no changes will happen."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75 #: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95 #: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135 #: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162 #: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182 #: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>" msgid "<message>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:66 #: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message" msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:76 #: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message" msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:86 #: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message" msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:96 #: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message" msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:116 #: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow" msgid "Sends the given message colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:136 #: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow" msgid "Sends the given emote colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:147 #: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text" msgid "Sends the given message as plain text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:163 #: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler" msgid "Sends the given message as a spoiler"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:173 #: src/models/actionsmodel.cpp:174
msgid "Sends the given emote" msgid "Sends the given emote"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:183 #: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice" msgid "Sends the given message as a notice"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354 #: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421 #: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494 #: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a matrix id." msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id." msgid "'%1' does not look like a matrix id."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:197 #: src/models/actionsmodel.cpp:198
#, kde-format #, kde-format
msgctxt "<user> is already invited to this room." msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room." msgid "%1 is already invited to this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:201 #: src/models/actionsmodel.cpp:202
#, kde-format #, kde-format
msgctxt "<user> is banned from this room." msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room." msgid "%1 is banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:205 #: src/models/actionsmodel.cpp:206
#, kde-format #, kde-format
msgid "You are already in this room." msgid "You are already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:209 #: src/models/actionsmodel.cpp:210
#, kde-format #, kde-format
msgctxt "<user> is already in this room." msgctxt "<user> is already in this room."
msgid "%1 is already in this room." msgid "%1 is already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:213 #: src/models/actionsmodel.cpp:214
#, kde-format #, kde-format
msgctxt "<username> was invited into this room" msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room" msgid "%1 was invited into this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367 #: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482 #: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>" msgid "<user id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:219 #: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room" msgid "Invites the user to this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291 #: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format #, kde-format
msgctxt "Joining room <roomname>." msgctxt "Joining room <roomname>."
msgid "Joining room %1." msgid "Joining room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:242 src/models/actionsmodel.cpp:297 #: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298
msgid "<room alias or id>" msgid "<room alias or id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298 #: src/models/actionsmodel.cpp:244 src/models/actionsmodel.cpp:299
msgid "Joins the given room" msgid "Joins the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:262 #: src/models/actionsmodel.cpp:263
#, kde-format #, kde-format
msgctxt "Knocking room <roomname>." msgctxt "Knocking room <roomname>."
msgid "Knocking room %1." msgid "Knocking room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:274 #: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]" msgid "<room alias or id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:275 #: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room" msgid "Requests to join the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:288 #: src/models/actionsmodel.cpp:289
#, kde-format #, kde-format
msgctxt "You are already in room <roomname>." msgctxt "You are already in room <roomname>."
msgid "You are already in room %1." msgid "You are already in room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:305 src/models/actionsmodel.cpp:313 #: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314
msgid "[<room alias or id>]" msgid "[<room alias or id>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314 #: src/models/actionsmodel.cpp:307 src/models/actionsmodel.cpp:315
msgid "Leaves the given room or this room, if there is none given" msgid "Leaves the given room or this room, if there is none given"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336 #: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:344 #: src/models/actionsmodel.cpp:345
msgid "<display name>" msgid "<display name>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:329 #: src/models/actionsmodel.cpp:330
msgid "Changes your global display name" msgid "Changes your global display name"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:337 src/models/actionsmodel.cpp:345 #: src/models/actionsmodel.cpp:338 src/models/actionsmodel.cpp:346
msgid "Changes your display name in this room" msgid "Changes your display name in this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:358 #: src/models/actionsmodel.cpp:359
#, kde-format #, kde-format
msgctxt "<username> is already ignored." msgctxt "<username> is already ignored."
msgid "%1 is already ignored." msgid "%1 is already ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:362 #: src/models/actionsmodel.cpp:363
#, kde-format #, kde-format
msgctxt "<username> is now ignored" msgctxt "<username> is now ignored"
msgid "%1 is now ignored." msgid "%1 is now ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:368 #: src/models/actionsmodel.cpp:369
msgid "Ignores the given user" msgid "Ignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:381 #: src/models/actionsmodel.cpp:382
#, kde-format #, kde-format
msgctxt "<username> is not ignored." msgctxt "<username> is not ignored."
msgid "%1 is not ignored." msgid "%1 is not ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:385 #: src/models/actionsmodel.cpp:386
#, kde-format #, kde-format
msgctxt "<username> is no longer ignored." msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored." msgid "%1 is no longer ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:391 #: src/models/actionsmodel.cpp:392
msgid "Unignores the given user" msgid "Unignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:410 #: src/models/actionsmodel.cpp:411
msgid "<reaction text>" msgid "<reaction text>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:411 #: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text" msgid "React to the message with the given text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:426 #: src/models/actionsmodel.cpp:427
#, kde-format #, kde-format
msgctxt "<user> is already banned from this room." msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room." msgid "%1 is already banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:434 #: src/models/actionsmodel.cpp:435
#, kde-format #, kde-format
msgid "You are not allowed to ban users from this room." msgid "You are not allowed to ban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:440 #: src/models/actionsmodel.cpp:441
#, kde-format #, kde-format
msgctxt "You are not allowed to ban <username> from this room." msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room." msgid "You are not allowed to ban %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:444 #: src/models/actionsmodel.cpp:445
#, kde-format #, kde-format
msgctxt "<username> was banned from this room." msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room." msgid "%1 was banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:449 src/models/actionsmodel.cpp:526 #: src/models/actionsmodel.cpp:450 src/models/actionsmodel.cpp:527
msgid "<user id> [<reason>]" msgid "<user id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:450 #: src/models/actionsmodel.cpp:451
msgid "Bans the given user" msgid "Bans the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:467 #: src/models/actionsmodel.cpp:468
#, kde-format #, kde-format
msgid "You are not allowed to unban users from this room." msgid "You are not allowed to unban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:472 #: src/models/actionsmodel.cpp:473
#, kde-format #, kde-format
msgctxt "<user> is not banned from this room." msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room." msgid "%1 is not banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:476 #: src/models/actionsmodel.cpp:477
#, kde-format #, kde-format
msgctxt "<username> was unbanned from this room." msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room." msgid "%1 was unbanned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:483 #: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user" msgid "Removes the ban of the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:498 #: src/models/actionsmodel.cpp:499
#, kde-format #, kde-format
msgid "You cannot kick yourself from the room." msgid "You cannot kick yourself from the room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:502 #: src/models/actionsmodel.cpp:503
#, kde-format #, kde-format
msgctxt "<username> is not in this room" msgctxt "<username> is not in this room"
msgid "%1 is not in this room." msgid "%1 is not in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:511 #: src/models/actionsmodel.cpp:512
#, kde-format #, kde-format
msgid "You are not allowed to kick users from this room." msgid "You are not allowed to kick users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:517 #: src/models/actionsmodel.cpp:518
#, kde-format #, kde-format
msgctxt "You are not allowed to kick <username> from this room" msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room." msgid "You are not allowed to kick %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:521 #: src/models/actionsmodel.cpp:522
#, kde-format #, kde-format
msgctxt "<username> was kicked from this room." msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room." msgid "%1 was kicked from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:527 #: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room" msgid "Removes the user from the room"
msgstr "" msgstr ""
@@ -1329,39 +1336,39 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis" msgid "Own Emojis"
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:142 #: src/models/messagefiltermodel.cpp:153
#, kde-format #, kde-format
msgctxt "%1: What's being done; %2: How often it is done." msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1" msgid " %1"
msgid_plural " %1 %2 times" msgid_plural " %1 %2 times"
msgstr[0] "" msgstr[0] ""
#: src/models/messagefiltermodel.cpp:146 #: src/models/messagefiltermodel.cpp:157
#, kde-format #, kde-format
msgctxt "n users" msgctxt "n users"
msgid " %1 user " msgid " %1 user "
msgid_plural " %1 users " msgid_plural " %1 users "
msgstr[0] "" msgstr[0] ""
#: src/models/messagefiltermodel.cpp:155 #: src/models/messagefiltermodel.cpp:166
#, kde-format #, kde-format
msgctxt "[action 1], [action 2 and/or action 3]" msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", " msgid ", "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] or [action 3]" msgctxt "[action 1, action 2] or [action 3]"
msgid " or " msgid " or "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] and [action 3]" msgctxt "[action 1, action 2] and [action 3]"
msgid " and " msgid " and "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:165 #: src/models/messagefiltermodel.cpp:176
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"userText (%1) is either a Matrix username if a single user sent all the " "userText (%1) is either a Matrix username if a single user sent all the "
@@ -1491,7 +1498,7 @@ msgstr ""
msgid "Encrypted Message" msgid "Encrypted Message"
msgstr "" msgstr ""
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:270 #: src/notificationsmanager.cpp:204 src/qml/Main.qml:274
#, kde-format #, kde-format
msgid "%1: %2" msgid "%1: %2"
msgstr "" msgstr ""
@@ -1550,13 +1557,12 @@ msgstr ""
msgid "Open NeoChat" msgid "Open NeoChat"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:65 #: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:46
#, kde-format #, kde-format
msgid "Edit this account" msgid "Edit this account"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59 #: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#: src/settings/AccountsPage.qml:34
#, kde-format #, kde-format
msgid "Account editor" msgid "Account editor"
msgstr "" msgstr ""
@@ -1567,7 +1573,7 @@ msgid "Notification settings"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49 #: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49
#: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:400 src/qml/UserInfo.qml:116 #: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:404 src/qml/UserInfo.qml:103
#, kde-format #, kde-format
msgid "Configure" msgid "Configure"
msgstr "" msgstr ""
@@ -1902,8 +1908,8 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64 #: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162 #: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281 #: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:283 #: src/qml/SpaceDrawer.qml:296
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Create a Space" msgid "Create a Space"
@@ -1974,7 +1980,7 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200 #: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58 #: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58
#: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:220 #: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:210
#: src/qml/SelectParentDialog.qml:142 #: src/qml/SelectParentDialog.qml:142
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
@@ -2142,21 +2148,21 @@ msgid "They don't match"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52 #: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Explore rooms" msgid "Explore rooms"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67 #: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61 #: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61
#: src/qml/RoomListPage.qml:182 src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:172 src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Find your friends" msgid "Find your friends"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73 #: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190 #: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:235 #: src/qml/RoomListPage.qml:225
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Find your friends" msgid "Find your friends"
@@ -2183,11 +2189,34 @@ msgctxt "@title"
msgid "Scan a QR Code" msgid "Scan a QR Code"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:103 src/qml/ExploreComponent.qml:167 #: src/qml/ExploreComponent.qml:93
#, kde-format
msgctxt "@title"
msgid "Rooms"
msgstr ""
#: src/qml/ExploreComponent.qml:105
#, kde-format
msgctxt "@action"
msgid "Search Room"
msgstr ""
#: src/qml/ExploreComponent.qml:118
#, kde-format
msgctxt "@action:button"
msgid "Show Menu"
msgstr ""
#: src/qml/ExploreComponent.qml:182
#, kde-format #, kde-format
msgid "Create rooms and chats" msgid "Create rooms and chats"
msgstr "" msgstr ""
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/qml/ExploreComponentMobile.qml:79 #: src/qml/ExploreComponentMobile.qml:79
#, kde-format #, kde-format
msgid "Create New" msgid "Create New"
@@ -2543,46 +2572,58 @@ msgstr ""
msgid "There are no locations shared in this room." msgid "There are no locations shared in this room."
msgstr "" msgstr ""
#: src/qml/Main.qml:304 #: src/qml/Main.qml:163
#, kde-format
msgctxt "@action:button"
msgid "Show Room Information"
msgstr ""
#: src/qml/Main.qml:166
#, kde-format
msgctxt "@action:button"
msgid "Close Room Information Drawer"
msgstr ""
#: src/qml/Main.qml:308
#, kde-format #, kde-format
msgctxt "@title:window" msgctxt "@title:window"
msgid "Session Verification" msgid "Session Verification"
msgstr "" msgstr ""
#: src/qml/Main.qml:321 #: src/qml/Main.qml:325
#, kde-format #, kde-format
msgid "User consent" msgid "User consent"
msgstr "" msgstr ""
#: src/qml/Main.qml:326 #: src/qml/Main.qml:330
#, kde-format #, kde-format
msgid "" msgid ""
"Your homeserver requires you to agree to its terms and conditions before " "Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them." "being able to use it. Please click the button below to read them."
msgstr "" msgstr ""
#: src/qml/Main.qml:331 #: src/qml/Main.qml:335
#, kde-format #, kde-format
msgid "Open" msgid "Open"
msgstr "" msgstr ""
#: src/qml/Main.qml:358 #: src/qml/Main.qml:362
#, kde-format #, kde-format
msgid "Start a chat" msgid "Start a chat"
msgstr "" msgstr ""
#: src/qml/Main.qml:360 #: src/qml/Main.qml:364
#, kde-format #, kde-format
msgid "Do you want to start a chat with %1?" msgid "Do you want to start a chat with %1?"
msgstr "" msgstr ""
#: src/qml/Main.qml:386 #: src/qml/Main.qml:390
#, kde-format #, kde-format
msgctxt "@info screenreader" msgctxt "@info screenreader"
msgid "The currently selected link" msgid "The currently selected link"
msgstr "" msgstr ""
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68 #: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Share" msgid "Share"
@@ -2665,7 +2706,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state" msgid "Edit state"
msgstr "" msgstr ""
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:66 #: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Notifications" msgid "Notifications"
@@ -2820,12 +2861,12 @@ msgstr ""
msgid "Reason for reporting this message" msgid "Reason for reporting this message"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:101 #: src/qml/RoomDelegate.qml:103
#, kde-format #, kde-format
msgid "Muted room" msgid "Muted room"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:134 #: src/qml/RoomDelegate.qml:136
#, kde-format #, kde-format
msgid "Configure room" msgid "Configure room"
msgstr "" msgstr ""
@@ -2926,33 +2967,33 @@ msgstr[0] ""
msgid "No member count" msgid "No member count"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No friends found" msgid "No friends found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No rooms found" msgid "No rooms found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "" msgid ""
"You haven't added any of your friends yet, click below to search for them." "You haven't added any of your friends yet, click below to search for them."
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "Join some rooms to get started" msgid "Join some rooms to get started"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Search in room directory" msgid "Search in room directory"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Search in friend directory" msgid "Search in friend directory"
msgstr "" msgstr ""
@@ -3128,24 +3169,24 @@ msgstr ""
msgid "View notifications" msgid "View notifications"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:84 #: src/qml/SpaceDrawer.qml:86
#, kde-format #, kde-format
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:130 #: src/qml/SpaceDrawer.qml:134
#, kde-format #, kde-format
msgctxt "@button View all one-on-one chats with your friends." msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:232 #: src/qml/SpaceDrawer.qml:242
#, kde-format #, kde-format
msgctxt "Join <name of a space>" msgctxt "Join <name of a space>"
msgid "Join %1" msgid "Join %1"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:274 #: src/qml/SpaceDrawer.qml:284
#, kde-format #, kde-format
msgid "Create a space" msgid "Create a space"
msgstr "" msgstr ""
@@ -3418,12 +3459,18 @@ msgstr ""
msgid "Copy link" msgid "Copy link"
msgstr "" msgstr ""
#: src/qml/UserInfo.qml:104 #: src/qml/UserInfo.qml:54
#, kde-format
msgctxt "@title:window"
msgid "Account editor"
msgstr ""
#: src/qml/UserInfo.qml:91
#, kde-format #, kde-format
msgid "Switch User" msgid "Switch User"
msgstr "" msgstr ""
#: src/qml/UserInfo.qml:111 #: src/qml/UserInfo.qml:98
#, kde-format #, kde-format
msgid "Open Settings" msgid "Open Settings"
msgstr "" msgstr ""
@@ -3835,47 +3882,42 @@ msgstr ""
msgid "Use compact room list" msgid "Use compact room list"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:232 #: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Show fancy effects in chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:249
#, kde-format #, kde-format
msgid "Use transparent chat page" msgid "Use transparent chat page"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:270 #: src/settings/AppearanceSettingsPage.qml:254
#, kde-format #, kde-format
msgid "Transparency" msgid "Transparency"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:289 #: src/settings/AppearanceSettingsPage.qml:273
#, kde-format #, kde-format
msgid "Only enabled if the transparent chat page is enabled." msgid "Only enabled if the transparent chat page is enabled."
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:306 #: src/settings/AppearanceSettingsPage.qml:290
#, kde-format #, kde-format
msgid "Show your messages on the right" msgid "Show your messages on the right"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:322 #: src/settings/AppearanceSettingsPage.qml:306
#, kde-format #, kde-format
msgid "Show links preview in the chat messages" msgid "Show links preview in the chat messages"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:332 #: src/settings/AppearanceSettingsPage.qml:316
#, kde-format #, kde-format
msgid "Show Avatar" msgid "Show Avatar"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:336 #: src/settings/AppearanceSettingsPage.qml:320
#, kde-format #, kde-format
msgid "In chat" msgid "In chat"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:346 #: src/settings/AppearanceSettingsPage.qml:330
#, kde-format #, kde-format
msgid "In sidebar" msgid "In sidebar"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: neochat\n" "Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:38+0000\n" "POT-Creation-Date: 2024-04-24 02:56+0000\n"
"PO-Revision-Date: 2023-02-25 01:00+0000\n" "PO-Revision-Date: 2023-02-25 01:00+0000\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: none\n" "Language-Team: none\n"
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
#: src/controller.cpp:134 #: src/controller.cpp:133
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are " "The reason for using push notifications, as in: '[Push notifications are "
@@ -26,47 +26,47 @@ msgctxt ""
msgid "Receiving notifications for new messages" msgid "Receiving notifications for new messages"
msgstr "" msgstr ""
#: src/controller.cpp:213 #: src/controller.cpp:212
#, kde-format #, kde-format
msgid "Network Error: %1" msgid "Network Error: %1"
msgstr "" msgstr ""
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Access token wasn't found" msgid "Access token wasn't found"
msgstr "" msgstr ""
#: src/controller.cpp:235 #: src/controller.cpp:234
#, kde-format #, kde-format
msgid "Maybe it was deleted?" msgid "Maybe it was deleted?"
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Access to keychain was denied." msgid "Access to keychain was denied."
msgstr "" msgstr ""
#: src/controller.cpp:239 #: src/controller.cpp:238
#, kde-format #, kde-format
msgid "Please allow NeoChat to read the access token" msgid "Please allow NeoChat to read the access token"
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "No keychain available." msgid "No keychain available."
msgstr "" msgstr ""
#: src/controller.cpp:242 #: src/controller.cpp:241
#, kde-format #, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux" msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr "" msgstr ""
#: src/controller.cpp:245 #: src/controller.cpp:244
#, kde-format #, kde-format
msgid "Unable to read access token" msgid "Unable to read access token"
msgstr "" msgstr ""
#: src/controller.cpp:341 #: src/controller.cpp:340
#, kde-format #, kde-format
msgid "Receiving push notifications" msgid "Receiving push notifications"
msgstr "" msgstr ""
@@ -83,19 +83,31 @@ msgctxt "@title:window"
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:20 #: src/devtools/DebugOptions.qml:19
#, kde-format
msgctxt "@option:check"
msgid "Show hidden events in the timeline"
msgstr ""
#: src/devtools/DebugOptions.qml:26
#, kde-format #, kde-format
msgctxt "@option:check Enable the matrix 'threads' feature" msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification" msgid "Always allow device verification"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:21 #: src/devtools/DebugOptions.qml:27
#, kde-format #, kde-format
msgid "" msgid ""
"Allow the user to start a verification session with devices that were " "Allow the user to start a verification session with devices that were "
"already verified" "already verified"
msgstr "" msgstr ""
#: src/devtools/DebugOptions.qml:33
#, kde-format
msgctxt "@option:check"
msgid "Show focus in window header"
msgstr ""
#: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240 #: src/devtools/DevtoolsPage.qml:18 src/settings/NeoChatGeneralPage.qml:240
#, kde-format #, kde-format
msgid "Developer Tools" msgid "Developer Tools"
@@ -142,28 +154,28 @@ msgstr ""
msgid "Room" msgid "Room"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:35 #: src/devtools/RoomData.qml:36
#, kde-format #, kde-format
msgid "Room Id: %1" msgid "Room Id: %1"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:39 #: src/devtools/RoomData.qml:40
#, kde-format #, kde-format
msgid "Room Account Data" msgid "Room Account Data"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:52 src/devtools/RoomData.qml:98 #: src/devtools/RoomData.qml:53 src/devtools/RoomData.qml:99
#: src/qml/MessageSourceSheet.qml:42 #: src/qml/MessageSourceSheet.qml:42
#, kde-format #, kde-format
msgid "Event Source" msgid "Event Source"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:60 #: src/devtools/RoomData.qml:61
#, kde-format #, kde-format
msgid "Room State" msgid "Room State"
msgstr "" msgstr ""
#: src/devtools/RoomData.qml:74 #: src/devtools/RoomData.qml:75
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type" msgid "%1 event of this type"
@@ -173,7 +185,7 @@ msgstr[1] ""
msgstr[2] "" msgstr[2] ""
msgstr[3] "" msgstr[3] ""
#: src/devtools/RoomData.qml:83 #: src/devtools/RoomData.qml:84
#, kde-format #, kde-format
msgctxt "'Event' being some JSON data, not something physically happening." msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information" msgid "Event Information"
@@ -207,49 +219,44 @@ msgctxt ""
msgid "State Keys" msgid "State Keys"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:60 #: src/enums/neochatroomtype.h:59
#, kde-format #, kde-format
msgid "Invited" msgid "Invited"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:62 #: src/enums/neochatroomtype.h:61
#, kde-format #, kde-format
msgid "Favorite" msgid "Favorite"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:64 src/qml/UserSearchPage.qml:82 #: src/enums/neochatroomtype.h:63 src/qml/UserSearchPage.qml:82
#, kde-format #, kde-format
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:66 #: src/enums/neochatroomtype.h:65
#, kde-format #, kde-format
msgid "Normal" msgid "Normal"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:68 #: src/enums/neochatroomtype.h:67
#, kde-format #, kde-format
msgid "Low priority" msgid "Low priority"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:70 #: src/enums/neochatroomtype.h:69
#, kde-format #, kde-format
msgid "Spaces" msgid "Spaces"
msgstr "" msgstr ""
#: src/enums/neochatroomtype.h:72 src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/eventhandler.cpp:303 src/eventhandler.cpp:507 #: src/eventhandler.cpp:303 src/eventhandler.cpp:507
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465 #: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format #, kde-format
msgid "<i>[This message was deleted]</i>" msgid "<i>[This message was deleted]</i>"
msgstr "" msgstr ""
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141 #: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466 #: src/models/messageeventmodel.cpp:437
#, kde-format #, kde-format
msgid "<i>[This message was deleted: %1]</i>" msgid "<i>[This message was deleted: %1]</i>"
msgstr "" msgstr ""
@@ -624,12 +631,12 @@ msgctxt "The location being downloaded to"
msgid "Destination" msgid "Destination"
msgstr "" msgstr ""
#: src/login.cpp:85 src/login.cpp:100 #: src/login.cpp:84 src/login.cpp:99
#, kde-format #, kde-format
msgid "Network Error" msgid "Network Error"
msgstr "" msgstr ""
#: src/login.cpp:93 #: src/login.cpp:92
#, kde-format #, kde-format
msgid "Login Failed: %1" msgid "Login Failed: %1"
msgstr "" msgstr ""
@@ -949,315 +956,315 @@ msgstr ""
msgid "Share a URL to Matrix" msgid "Share a URL to Matrix"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:40 #: src/matriximageprovider.cpp:38
#, kde-format #, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern" msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr "" msgstr ""
#: src/matriximageprovider.cpp:98 #: src/matriximageprovider.cpp:96
#, kde-format #, kde-format
msgid "Image request has been cancelled" msgid "Image request has been cancelled"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:24 #: src/models/actionsmodel.cpp:25
#, kde-format #, kde-format
msgid "Leaving this room." msgid "Leaving this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228 #: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284 #: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a room id or alias." msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias." msgid "'%1' does not look like a room id or alias."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:39 #: src/models/actionsmodel.cpp:40
#, kde-format #, kde-format
msgctxt "Leaving room <roomname>." msgctxt "Leaving room <roomname>."
msgid "Leaving room %1." msgid "Leaving room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:42 #: src/models/actionsmodel.cpp:43
#, kde-format #, kde-format
msgctxt "Room <roomname> not found" msgctxt "Room <roomname> not found"
msgid "Room %1 not found." msgid "Room %1 not found."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:50 src/models/actionsmodel.cpp:320 #: src/models/actionsmodel.cpp:51 src/models/actionsmodel.cpp:321
#, kde-format #, kde-format
msgid "No new nickname provided, no changes will happen." msgid "No new nickname provided, no changes will happen."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75 #: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95 #: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135 #: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162 #: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182 #: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>" msgid "<message>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:66 #: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message" msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:76 #: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message" msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:86 #: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message" msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:96 #: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message" msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:116 #: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow" msgid "Sends the given message colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:136 #: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow" msgid "Sends the given emote colored as a rainbow"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:147 #: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text" msgid "Sends the given message as plain text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:163 #: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler" msgid "Sends the given message as a spoiler"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:173 #: src/models/actionsmodel.cpp:174
msgid "Sends the given emote" msgid "Sends the given emote"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:183 #: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice" msgid "Sends the given message as a notice"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354 #: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421 #: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494 #: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format #, kde-format
msgctxt "'<text>' does not look like a matrix id." msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id." msgid "'%1' does not look like a matrix id."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:197 #: src/models/actionsmodel.cpp:198
#, kde-format #, kde-format
msgctxt "<user> is already invited to this room." msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room." msgid "%1 is already invited to this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:201 #: src/models/actionsmodel.cpp:202
#, kde-format #, kde-format
msgctxt "<user> is banned from this room." msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room." msgid "%1 is banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:205 #: src/models/actionsmodel.cpp:206
#, kde-format #, kde-format
msgid "You are already in this room." msgid "You are already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:209 #: src/models/actionsmodel.cpp:210
#, kde-format #, kde-format
msgctxt "<user> is already in this room." msgctxt "<user> is already in this room."
msgid "%1 is already in this room." msgid "%1 is already in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:213 #: src/models/actionsmodel.cpp:214
#, kde-format #, kde-format
msgctxt "<username> was invited into this room" msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room" msgid "%1 was invited into this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367 #: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482 #: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>" msgid "<user id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:219 #: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room" msgid "Invites the user to this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291 #: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format #, kde-format
msgctxt "Joining room <roomname>." msgctxt "Joining room <roomname>."
msgid "Joining room %1." msgid "Joining room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:242 src/models/actionsmodel.cpp:297 #: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298
msgid "<room alias or id>" msgid "<room alias or id>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:243 src/models/actionsmodel.cpp:298 #: src/models/actionsmodel.cpp:244 src/models/actionsmodel.cpp:299
msgid "Joins the given room" msgid "Joins the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:262 #: src/models/actionsmodel.cpp:263
#, kde-format #, kde-format
msgctxt "Knocking room <roomname>." msgctxt "Knocking room <roomname>."
msgid "Knocking room %1." msgid "Knocking room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:274 #: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]" msgid "<room alias or id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:275 #: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room" msgid "Requests to join the given room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:288 #: src/models/actionsmodel.cpp:289
#, kde-format #, kde-format
msgctxt "You are already in room <roomname>." msgctxt "You are already in room <roomname>."
msgid "You are already in room %1." msgid "You are already in room %1."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:305 src/models/actionsmodel.cpp:313 #: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314
msgid "[<room alias or id>]" msgid "[<room alias or id>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:306 src/models/actionsmodel.cpp:314 #: src/models/actionsmodel.cpp:307 src/models/actionsmodel.cpp:315
msgid "Leaves the given room or this room, if there is none given" msgid "Leaves the given room or this room, if there is none given"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336 #: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:344 #: src/models/actionsmodel.cpp:345
msgid "<display name>" msgid "<display name>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:329 #: src/models/actionsmodel.cpp:330
msgid "Changes your global display name" msgid "Changes your global display name"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:337 src/models/actionsmodel.cpp:345 #: src/models/actionsmodel.cpp:338 src/models/actionsmodel.cpp:346
msgid "Changes your display name in this room" msgid "Changes your display name in this room"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:358 #: src/models/actionsmodel.cpp:359
#, kde-format #, kde-format
msgctxt "<username> is already ignored." msgctxt "<username> is already ignored."
msgid "%1 is already ignored." msgid "%1 is already ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:362 #: src/models/actionsmodel.cpp:363
#, kde-format #, kde-format
msgctxt "<username> is now ignored" msgctxt "<username> is now ignored"
msgid "%1 is now ignored." msgid "%1 is now ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:368 #: src/models/actionsmodel.cpp:369
msgid "Ignores the given user" msgid "Ignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:381 #: src/models/actionsmodel.cpp:382
#, kde-format #, kde-format
msgctxt "<username> is not ignored." msgctxt "<username> is not ignored."
msgid "%1 is not ignored." msgid "%1 is not ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:385 #: src/models/actionsmodel.cpp:386
#, kde-format #, kde-format
msgctxt "<username> is no longer ignored." msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored." msgid "%1 is no longer ignored."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:391 #: src/models/actionsmodel.cpp:392
msgid "Unignores the given user" msgid "Unignores the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:410 #: src/models/actionsmodel.cpp:411
msgid "<reaction text>" msgid "<reaction text>"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:411 #: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text" msgid "React to the message with the given text"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:426 #: src/models/actionsmodel.cpp:427
#, kde-format #, kde-format
msgctxt "<user> is already banned from this room." msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room." msgid "%1 is already banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:434 #: src/models/actionsmodel.cpp:435
#, kde-format #, kde-format
msgid "You are not allowed to ban users from this room." msgid "You are not allowed to ban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:440 #: src/models/actionsmodel.cpp:441
#, kde-format #, kde-format
msgctxt "You are not allowed to ban <username> from this room." msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room." msgid "You are not allowed to ban %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:444 #: src/models/actionsmodel.cpp:445
#, kde-format #, kde-format
msgctxt "<username> was banned from this room." msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room." msgid "%1 was banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:449 src/models/actionsmodel.cpp:526 #: src/models/actionsmodel.cpp:450 src/models/actionsmodel.cpp:527
msgid "<user id> [<reason>]" msgid "<user id> [<reason>]"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:450 #: src/models/actionsmodel.cpp:451
msgid "Bans the given user" msgid "Bans the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:467 #: src/models/actionsmodel.cpp:468
#, kde-format #, kde-format
msgid "You are not allowed to unban users from this room." msgid "You are not allowed to unban users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:472 #: src/models/actionsmodel.cpp:473
#, kde-format #, kde-format
msgctxt "<user> is not banned from this room." msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room." msgid "%1 is not banned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:476 #: src/models/actionsmodel.cpp:477
#, kde-format #, kde-format
msgctxt "<username> was unbanned from this room." msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room." msgid "%1 was unbanned from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:483 #: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user" msgid "Removes the ban of the given user"
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:498 #: src/models/actionsmodel.cpp:499
#, kde-format #, kde-format
msgid "You cannot kick yourself from the room." msgid "You cannot kick yourself from the room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:502 #: src/models/actionsmodel.cpp:503
#, kde-format #, kde-format
msgctxt "<username> is not in this room" msgctxt "<username> is not in this room"
msgid "%1 is not in this room." msgid "%1 is not in this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:511 #: src/models/actionsmodel.cpp:512
#, kde-format #, kde-format
msgid "You are not allowed to kick users from this room." msgid "You are not allowed to kick users from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:517 #: src/models/actionsmodel.cpp:518
#, kde-format #, kde-format
msgctxt "You are not allowed to kick <username> from this room" msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room." msgid "You are not allowed to kick %1 from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:521 #: src/models/actionsmodel.cpp:522
#, kde-format #, kde-format
msgctxt "<username> was kicked from this room." msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room." msgid "%1 was kicked from this room."
msgstr "" msgstr ""
#: src/models/actionsmodel.cpp:527 #: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room" msgid "Removes the user from the room"
msgstr "" msgstr ""
@@ -1339,7 +1346,7 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis" msgid "Own Emojis"
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:142 #: src/models/messagefiltermodel.cpp:153
#, kde-format #, kde-format
msgctxt "%1: What's being done; %2: How often it is done." msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1" msgid " %1"
@@ -1349,7 +1356,7 @@ msgstr[1] ""
msgstr[2] "" msgstr[2] ""
msgstr[3] "" msgstr[3] ""
#: src/models/messagefiltermodel.cpp:146 #: src/models/messagefiltermodel.cpp:157
#, kde-format #, kde-format
msgctxt "n users" msgctxt "n users"
msgid " %1 user " msgid " %1 user "
@@ -1358,25 +1365,25 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
msgstr[2] "" msgstr[2] ""
#: src/models/messagefiltermodel.cpp:155 #: src/models/messagefiltermodel.cpp:166
#, kde-format #, kde-format
msgctxt "[action 1], [action 2 and/or action 3]" msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", " msgid ", "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] or [action 3]" msgctxt "[action 1, action 2] or [action 3]"
msgid " or " msgid " or "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:159 #: src/models/messagefiltermodel.cpp:170
#, kde-format #, kde-format
msgctxt "[action 1, action 2] and [action 3]" msgctxt "[action 1, action 2] and [action 3]"
msgid " and " msgid " and "
msgstr "" msgstr ""
#: src/models/messagefiltermodel.cpp:165 #: src/models/messagefiltermodel.cpp:176
#, kde-format #, kde-format
msgctxt "" msgctxt ""
"userText (%1) is either a Matrix username if a single user sent all the " "userText (%1) is either a Matrix username if a single user sent all the "
@@ -1510,7 +1517,7 @@ msgstr ""
msgid "Encrypted Message" msgid "Encrypted Message"
msgstr "" msgstr ""
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:270 #: src/notificationsmanager.cpp:204 src/qml/Main.qml:274
#, kde-format #, kde-format
msgid "%1: %2" msgid "%1: %2"
msgstr "" msgstr ""
@@ -1569,13 +1576,12 @@ msgstr ""
msgid "Open NeoChat" msgid "Open NeoChat"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:65 #: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:46
#, kde-format #, kde-format
msgid "Edit this account" msgid "Edit this account"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59 #: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#: src/settings/AccountsPage.qml:34
#, kde-format #, kde-format
msgid "Account editor" msgid "Account editor"
msgstr "" msgstr ""
@@ -1586,7 +1592,7 @@ msgid "Notification settings"
msgstr "" msgstr ""
#: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49 #: src/qml/AccountMenu.qml:37 src/qml/AccountMenu.qml:49
#: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:400 src/qml/UserInfo.qml:116 #: src/qml/GlobalMenu.qml:35 src/qml/Main.qml:404 src/qml/UserInfo.qml:103
#, kde-format #, kde-format
msgid "Configure" msgid "Configure"
msgstr "" msgstr ""
@@ -1921,8 +1927,8 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64 #: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162 #: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281 #: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:283 #: src/qml/SpaceDrawer.qml:296
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Create a Space" msgid "Create a Space"
@@ -1993,7 +1999,7 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200 #: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58 #: src/qml/ExploreComponent.qml:29 src/qml/ExploreComponentMobile.qml:58
#: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:220 #: src/qml/GlobalMenu.qml:74 src/qml/RoomListPage.qml:210
#: src/qml/SelectParentDialog.qml:142 #: src/qml/SelectParentDialog.qml:142
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
@@ -2161,21 +2167,21 @@ msgid "They don't match"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52 #: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Explore rooms" msgid "Explore rooms"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67 #: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61 #: src/qml/GlobalMenu.qml:52 src/qml/GlobalMenu.qml:61
#: src/qml/RoomListPage.qml:182 src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:172 src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Find your friends" msgid "Find your friends"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73 #: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190 #: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:235 #: src/qml/RoomListPage.qml:225
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Find your friends" msgid "Find your friends"
@@ -2202,11 +2208,34 @@ msgctxt "@title"
msgid "Scan a QR Code" msgid "Scan a QR Code"
msgstr "" msgstr ""
#: src/qml/ExploreComponent.qml:103 src/qml/ExploreComponent.qml:167 #: src/qml/ExploreComponent.qml:93
#, kde-format
msgctxt "@title"
msgid "Rooms"
msgstr ""
#: src/qml/ExploreComponent.qml:105
#, kde-format
msgctxt "@action"
msgid "Search Room"
msgstr ""
#: src/qml/ExploreComponent.qml:118
#, kde-format
msgctxt "@action:button"
msgid "Show Menu"
msgstr ""
#: src/qml/ExploreComponent.qml:182
#, kde-format #, kde-format
msgid "Create rooms and chats" msgid "Create rooms and chats"
msgstr "" msgstr ""
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/qml/ExploreComponentMobile.qml:79 #: src/qml/ExploreComponentMobile.qml:79
#, kde-format #, kde-format
msgid "Create New" msgid "Create New"
@@ -2562,46 +2591,58 @@ msgstr ""
msgid "There are no locations shared in this room." msgid "There are no locations shared in this room."
msgstr "" msgstr ""
#: src/qml/Main.qml:304 #: src/qml/Main.qml:163
#, kde-format
msgctxt "@action:button"
msgid "Show Room Information"
msgstr ""
#: src/qml/Main.qml:166
#, kde-format
msgctxt "@action:button"
msgid "Close Room Information Drawer"
msgstr ""
#: src/qml/Main.qml:308
#, kde-format #, kde-format
msgctxt "@title:window" msgctxt "@title:window"
msgid "Session Verification" msgid "Session Verification"
msgstr "" msgstr ""
#: src/qml/Main.qml:321 #: src/qml/Main.qml:325
#, kde-format #, kde-format
msgid "User consent" msgid "User consent"
msgstr "" msgstr ""
#: src/qml/Main.qml:326 #: src/qml/Main.qml:330
#, kde-format #, kde-format
msgid "" msgid ""
"Your homeserver requires you to agree to its terms and conditions before " "Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them." "being able to use it. Please click the button below to read them."
msgstr "" msgstr ""
#: src/qml/Main.qml:331 #: src/qml/Main.qml:335
#, kde-format #, kde-format
msgid "Open" msgid "Open"
msgstr "" msgstr ""
#: src/qml/Main.qml:358 #: src/qml/Main.qml:362
#, kde-format #, kde-format
msgid "Start a chat" msgid "Start a chat"
msgstr "" msgstr ""
#: src/qml/Main.qml:360 #: src/qml/Main.qml:364
#, kde-format #, kde-format
msgid "Do you want to start a chat with %1?" msgid "Do you want to start a chat with %1?"
msgstr "" msgstr ""
#: src/qml/Main.qml:386 #: src/qml/Main.qml:390
#, kde-format #, kde-format
msgctxt "@info screenreader" msgctxt "@info screenreader"
msgid "The currently selected link" msgid "The currently selected link"
msgstr "" msgstr ""
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68 #: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Share" msgid "Share"
@@ -2684,7 +2725,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state" msgid "Edit state"
msgstr "" msgstr ""
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:66 #: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:68
#, kde-format #, kde-format
msgctxt "@title" msgctxt "@title"
msgid "Notifications" msgid "Notifications"
@@ -2839,12 +2880,12 @@ msgstr ""
msgid "Reason for reporting this message" msgid "Reason for reporting this message"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:101 #: src/qml/RoomDelegate.qml:103
#, kde-format #, kde-format
msgid "Muted room" msgid "Muted room"
msgstr "" msgstr ""
#: src/qml/RoomDelegate.qml:134 #: src/qml/RoomDelegate.qml:136
#, kde-format #, kde-format
msgid "Configure room" msgid "Configure room"
msgstr "" msgstr ""
@@ -2948,33 +2989,33 @@ msgstr[3] ""
msgid "No member count" msgid "No member count"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No friends found" msgid "No friends found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:205 #: src/qml/RoomListPage.qml:195
#, kde-format #, kde-format
msgid "No rooms found" msgid "No rooms found"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "" msgid ""
"You haven't added any of your friends yet, click below to search for them." "You haven't added any of your friends yet, click below to search for them."
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:207 #: src/qml/RoomListPage.qml:197
#, kde-format #, kde-format
msgid "Join some rooms to get started" msgid "Join some rooms to get started"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:214 #: src/qml/RoomListPage.qml:204
#, kde-format #, kde-format
msgid "Search in room directory" msgid "Search in room directory"
msgstr "" msgstr ""
#: src/qml/RoomListPage.qml:231 #: src/qml/RoomListPage.qml:221
#, kde-format #, kde-format
msgid "Search in friend directory" msgid "Search in friend directory"
msgstr "" msgstr ""
@@ -3150,24 +3191,24 @@ msgstr ""
msgid "View notifications" msgid "View notifications"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:84 #: src/qml/SpaceDrawer.qml:86
#, kde-format #, kde-format
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:130 #: src/qml/SpaceDrawer.qml:134
#, kde-format #, kde-format
msgctxt "@button View all one-on-one chats with your friends." msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:232 #: src/qml/SpaceDrawer.qml:242
#, kde-format #, kde-format
msgctxt "Join <name of a space>" msgctxt "Join <name of a space>"
msgid "Join %1" msgid "Join %1"
msgstr "" msgstr ""
#: src/qml/SpaceDrawer.qml:274 #: src/qml/SpaceDrawer.qml:284
#, kde-format #, kde-format
msgid "Create a space" msgid "Create a space"
msgstr "" msgstr ""
@@ -3448,12 +3489,18 @@ msgstr ""
msgid "Copy link" msgid "Copy link"
msgstr "" msgstr ""
#: src/qml/UserInfo.qml:104 #: src/qml/UserInfo.qml:54
#, kde-format
msgctxt "@title:window"
msgid "Account editor"
msgstr ""
#: src/qml/UserInfo.qml:91
#, kde-format #, kde-format
msgid "Switch User" msgid "Switch User"
msgstr "" msgstr ""
#: src/qml/UserInfo.qml:111 #: src/qml/UserInfo.qml:98
#, kde-format #, kde-format
msgid "Open Settings" msgid "Open Settings"
msgstr "" msgstr ""
@@ -3865,47 +3912,42 @@ msgstr ""
msgid "Use compact room list" msgid "Use compact room list"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:232 #: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Show fancy effects in chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:249
#, kde-format #, kde-format
msgid "Use transparent chat page" msgid "Use transparent chat page"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:270 #: src/settings/AppearanceSettingsPage.qml:254
#, kde-format #, kde-format
msgid "Transparency" msgid "Transparency"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:289 #: src/settings/AppearanceSettingsPage.qml:273
#, kde-format #, kde-format
msgid "Only enabled if the transparent chat page is enabled." msgid "Only enabled if the transparent chat page is enabled."
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:306 #: src/settings/AppearanceSettingsPage.qml:290
#, kde-format #, kde-format
msgid "Show your messages on the right" msgid "Show your messages on the right"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:322 #: src/settings/AppearanceSettingsPage.qml:306
#, kde-format #, kde-format
msgid "Show links preview in the chat messages" msgid "Show links preview in the chat messages"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:332 #: src/settings/AppearanceSettingsPage.qml:316
#, kde-format #, kde-format
msgid "Show Avatar" msgid "Show Avatar"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:336 #: src/settings/AppearanceSettingsPage.qml:320
#, kde-format #, kde-format
msgid "In chat" msgid "In chat"
msgstr "" msgstr ""
#: src/settings/AppearanceSettingsPage.qml:346 #: src/settings/AppearanceSettingsPage.qml:330
#, kde-format #, kde-format
msgid "In sidebar" msgid "In sidebar"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -204,7 +204,6 @@ qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN
qml/InviteUserPage.qml qml/InviteUserPage.qml
qml/ImageEditorPage.qml qml/ImageEditorPage.qml
qml/NeochatMaximizeComponent.qml qml/NeochatMaximizeComponent.qml
qml/FancyEffectsContainer.qml
qml/TypingPane.qml qml/TypingPane.qml
qml/QuickSwitcher.qml qml/QuickSwitcher.qml
qml/HoverActions.qml qml/HoverActions.qml
@@ -281,9 +280,6 @@ qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN
qml/ConfirmLeaveDialog.qml qml/ConfirmLeaveDialog.qml
qml/CodeMaximizeComponent.qml qml/CodeMaximizeComponent.qml
qml/EditStateDialog.qml qml/EditStateDialog.qml
RESOURCES
qml/confetti.png
qml/glowdot.png
) )
add_subdirectory(settings) add_subdirectory(settings)

View File

@@ -14,6 +14,7 @@
#include "models/actionsmodel.h" #include "models/actionsmodel.h"
#include "neochatconfig.h" #include "neochatconfig.h"
#include "texthandler.h" #include "texthandler.h"
#include "utils.h"
using namespace Quotient; using namespace Quotient;
@@ -145,6 +146,26 @@ void ActionsHandler::handleMessage(const QString &text, QString handledText, Cha
return; return;
} }
// We want to add back the <mx-reply> if it's in the original message but not in the edit, to preserve the reply.
for (auto it = m_room->messageEvents().crbegin(); it != m_room->messageEvents().crend(); it++) {
if (const auto event = eventCast<const RoomMessageEvent>(&**it)) {
if (event->senderId() == m_room->localUser()->id() && event->hasTextContent()) {
QString originalString;
if (event->content()) {
originalString = static_cast<const Quotient::EventContent::TextContent *>(event->content())->body;
} else {
originalString = event->plainBody();
}
const QRegularExpression exp(TextRegex::removeRichReply);
const auto match = exp.match(originalString);
if (match.hasCaptured(0) && !handledText.contains(TextRegex::removeRichReply)) {
handledText.prepend(match.captured(0));
}
}
}
}
m_room->postMessage(text, handledText, messageType, chatBarCache->replyId(), chatBarCache->editId(), chatBarCache->threadId()); m_room->postMessage(text, handledText, messageType, chatBarCache->replyId(), chatBarCache->editId(), chatBarCache->threadId());
} }

View File

@@ -19,7 +19,6 @@
#include <signal.h> #include <signal.h>
#include <Quotient/accountregistry.h> #include <Quotient/accountregistry.h>
#include <Quotient/connection.h>
#include <Quotient/csapi/logout.h> #include <Quotient/csapi/logout.h>
#include <Quotient/csapi/notifications.h> #include <Quotient/csapi/notifications.h>
#include <Quotient/eventstats.h> #include <Quotient/eventstats.h>

View File

@@ -117,7 +117,7 @@ private:
Quotient::AccountRegistry m_accountRegistry; Quotient::AccountRegistry m_accountRegistry;
QStringList m_accountsLoading; QStringList m_accountsLoading;
QMap<QString, QPointer<Quotient::Connection>> m_connectionsLoading; QMap<QString, QPointer<NeoChatConnection>> m_connectionsLoading;
QString m_endpoint; QString m_endpoint;
private Q_SLOTS: private Q_SLOTS:

View File

@@ -15,6 +15,12 @@ FormCard.FormCardPage {
FormCard.FormCard { FormCard.FormCard {
Layout.topMargin: Kirigami.Units.largeSpacing Layout.topMargin: Kirigami.Units.largeSpacing
FormCard.FormCheckDelegate {
text: i18nc("@option:check", "Show hidden events in the timeline")
checked: Config.showAllEvents
onToggled: Config.showAllEvents = checked
}
FormCard.FormCheckDelegate { FormCard.FormCheckDelegate {
id: roomAccountDataVisibleCheck id: roomAccountDataVisibleCheck
text: i18nc("@option:check Enable the matrix 'threads' feature", "Always allow device verification") text: i18nc("@option:check Enable the matrix 'threads' feature", "Always allow device verification")
@@ -23,5 +29,14 @@ FormCard.FormCardPage {
onToggled: Config.alwaysVerifyDevice = checked onToggled: Config.alwaysVerifyDevice = checked
} }
FormCard.FormCheckDelegate {
text: i18nc("@option:check", "Show focus in window header")
checked: Config.windowTitleFocus
onToggled: {
Config.windowTitleFocus = checked;
Config.save();
}
}
} }
} }

View File

@@ -25,9 +25,10 @@ ColumnLayout {
text: i18n("Room") text: i18n("Room")
textRole: "escapedDisplayName" textRole: "escapedDisplayName"
valueRole: "roomId" valueRole: "roomId"
displayText: RoomManager.roomListModel.data(RoomManager.roomListModel.index(currentIndex, 0), RoomListModel.DisplayNameRole) displayText: RoomManager.roomListModel.data(RoomManager.roomListModel.index(currentIndex, 0), RoomListModel.EscapedDisplayNameRole)
model: RoomManager.roomListModel model: RoomManager.roomListModel
currentIndex: 0 currentIndex: 0
displayMode: FormCard.FormComboBoxDelegate.Page
Component.onCompleted: currentIndex = RoomManager.roomListModel.rowForRoom(root.room) Component.onCompleted: currentIndex = RoomManager.roomListModel.rowForRoom(root.room)
onCurrentValueChanged: root.room = RoomManager.roomListModel.roomByAliasOrId(roomComboBox.currentValue) onCurrentValueChanged: root.room = RoomManager.roomListModel.roomByAliasOrId(roomComboBox.currentValue)
} }

View File

@@ -21,7 +21,6 @@ public:
* @brief Defines the room list categories a room can be assigned. * @brief Defines the room list categories a room can be assigned.
*/ */
enum Types { enum Types {
Search = 0, /**< So we can show a search delegate if needed, e.g. collapsed mode. */
Invited, /**< The user has been invited to the room. */ Invited, /**< The user has been invited to the room. */
Favorite, /**< The room is set as a favourite. */ Favorite, /**< The room is set as a favourite. */
Direct, /**< The room is a direct chat. */ Direct, /**< The room is a direct chat. */
@@ -68,8 +67,6 @@ public:
return i18n("Low priority"); return i18n("Low priority");
case NeoChatRoomType::Space: case NeoChatRoomType::Space:
return i18n("Spaces"); return i18n("Spaces");
case NeoChatRoomType::Search:
return i18n("Search");
default: default:
return {}; return {};
} }
@@ -89,8 +86,6 @@ public:
return QStringLiteral("object-order-lower"); return QStringLiteral("object-order-lower");
case NeoChatRoomType::Space: case NeoChatRoomType::Space:
return QStringLiteral("group"); return QStringLiteral("group");
case NeoChatRoomType::Search:
return QStringLiteral("search");
default: default:
return QStringLiteral("tools-report-bug"); return QStringLiteral("tools-report-bug");
} }

View File

@@ -4,7 +4,6 @@
#include "login.h" #include "login.h"
#include <Quotient/accountregistry.h> #include <Quotient/accountregistry.h>
#include <Quotient/connection.h>
#include <Quotient/qt_connection_util.h> #include <Quotient/qt_connection_util.h>
#include "controller.h" #include "controller.h"
@@ -54,7 +53,7 @@ void LoginHelper::init()
m_connection = new NeoChatConnection(); m_connection = new NeoChatConnection();
} }
m_connection->resolveServer(m_matrixId); m_connection->resolveServer(m_matrixId);
connectSingleShot(m_connection, &Connection::loginFlowsChanged, this, [this]() { connectSingleShot(m_connection.get(), &Connection::loginFlowsChanged, this, [this]() {
setHomeserverReachable(true); setHomeserverReachable(true);
m_testing = false; m_testing = false;
Q_EMIT testingChanged(); Q_EMIT testingChanged();
@@ -100,7 +99,7 @@ void LoginHelper::init()
Q_EMIT Controller::instance().errorOccured(i18n("Network Error"), std::move(error)); Q_EMIT Controller::instance().errorOccured(i18n("Network Error"), std::move(error));
}); });
connectSingleShot(m_connection, &Connection::syncDone, this, [this]() { connectSingleShot(m_connection.get(), &Connection::syncDone, this, [this]() {
Q_EMIT loaded(); Q_EMIT loaded();
}); });
} }
@@ -182,7 +181,7 @@ QUrl LoginHelper::ssoUrl() const
void LoginHelper::loginWithSso() void LoginHelper::loginWithSso()
{ {
m_connection->resolveServer(m_matrixId); m_connection->resolveServer(m_matrixId);
connectSingleShot(m_connection, &Connection::loginFlowsChanged, this, [this]() { connectSingleShot(m_connection.get(), &Connection::loginFlowsChanged, this, [this]() {
SsoSession *session = m_connection->prepareForSso(m_deviceName); SsoSession *session = m_connection->prepareForSso(m_deviceName);
m_ssoUrl = session->ssoUrl(); m_ssoUrl = session->ssoUrl();
Q_EMIT ssoUrlChanged(); Q_EMIT ssoUrlChanged();

View File

@@ -146,7 +146,7 @@ private:
QString m_deviceName; QString m_deviceName;
bool m_supportsSso = false; bool m_supportsSso = false;
bool m_supportsPassword = false; bool m_supportsPassword = false;
NeoChatConnection *m_connection = nullptr; QPointer<NeoChatConnection> m_connection;
QUrl m_ssoUrl; QUrl m_ssoUrl;
bool m_testing = false; bool m_testing = false;
bool m_isLoggingIn = false; bool m_isLoggingIn = false;

View File

@@ -14,8 +14,6 @@
#include "neochatconnection.h" #include "neochatconnection.h"
#include <Quotient/connection.h>
using namespace Quotient; using namespace Quotient;
ThumbnailResponse::ThumbnailResponse(QString id, QSize size, NeoChatConnection *connection) ThumbnailResponse::ThumbnailResponse(QString id, QSize size, NeoChatConnection *connection)

View File

@@ -35,7 +35,7 @@ private:
QSize requestedSize; QSize requestedSize;
const QString localFile; const QString localFile;
Quotient::MediaThumbnailJob *job = nullptr; Quotient::MediaThumbnailJob *job = nullptr;
NeoChatConnection *m_connection; QPointer<NeoChatConnection> m_connection;
QImage image; QImage image;
QString errorStr; QString errorStr;
@@ -75,6 +75,6 @@ public:
QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) override; QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) override;
private: private:
NeoChatConnection *m_connection = nullptr; QPointer<NeoChatConnection> m_connection;
MatrixImageProvider() = default; MatrixImageProvider() = default;
}; };

View File

@@ -10,6 +10,8 @@
#include <Quotient/events/eventcontent.h> #include <Quotient/events/eventcontent.h>
#include <qcoro/qcorosignal.h> #include <qcoro/qcorosignal.h>
#include "neochatconnection.h"
using namespace Quotient; using namespace Quotient;
AccountEmoticonModel::AccountEmoticonModel(QObject *parent) AccountEmoticonModel::AccountEmoticonModel(QObject *parent)
@@ -77,12 +79,12 @@ QHash<int, QByteArray> AccountEmoticonModel::roleNames() const
}; };
} }
Connection *AccountEmoticonModel::connection() const NeoChatConnection *AccountEmoticonModel::connection() const
{ {
return m_connection; return m_connection;
} }
void AccountEmoticonModel::setConnection(Connection *connection) void AccountEmoticonModel::setConnection(NeoChatConnection *connection)
{ {
if (m_connection) { if (m_connection) {
disconnect(m_connection, nullptr, this, nullptr); disconnect(m_connection, nullptr, this, nullptr);

View File

@@ -12,7 +12,7 @@
#include <QPointer> #include <QPointer>
#include <QQmlEngine> #include <QQmlEngine>
#include <Quotient/connection.h> class NeoChatConnection;
/** /**
* @class AccountEmoticonModel * @class AccountEmoticonModel
@@ -29,7 +29,7 @@ class AccountEmoticonModel : public QAbstractListModel
/** /**
* @brief The connection to get emoticons from. * @brief The connection to get emoticons from.
*/ */
Q_PROPERTY(Quotient::Connection *connection READ connection WRITE setConnection NOTIFY connectionChanged) Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged)
public: public:
enum Roles { enum Roles {
@@ -63,8 +63,8 @@ public:
*/ */
[[nodiscard]] QHash<int, QByteArray> roleNames() const override; [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
[[nodiscard]] Quotient::Connection *connection() const; [[nodiscard]] NeoChatConnection *connection() const;
void setConnection(Quotient::Connection *connection); void setConnection(NeoChatConnection *connection);
/** /**
* @brief Deletes the emoticon at the given index. * @brief Deletes the emoticon at the given index.
@@ -96,7 +96,7 @@ Q_SIGNALS:
private: private:
std::optional<Quotient::ImagePackEventContent> m_images; std::optional<Quotient::ImagePackEventContent> m_images;
QPointer<Quotient::Connection> m_connection; QPointer<NeoChatConnection> m_connection;
QCoro::Task<void> doSetEmoticonImage(int index, QUrl source); QCoro::Task<void> doSetEmoticonImage(int index, QUrl source);
QCoro::Task<void> doAddEmoticon(QUrl source, QString shortcode, QString description, QString type); QCoro::Task<void> doAddEmoticon(QUrl source, QString shortcode, QString description, QString type);

View File

@@ -4,6 +4,7 @@
#include "actionsmodel.h" #include "actionsmodel.h"
#include "chatbarcache.h" #include "chatbarcache.h"
#include "neochatconnection.h"
#include "neochatroom.h" #include "neochatroom.h"
#include "roommanager.h" #include "roommanager.h"
#include <Quotient/events/roommemberevent.h> #include <Quotient/events/roommemberevent.h>
@@ -260,7 +261,7 @@ QList<ActionsModel::Action> actions{
return QString(); return QString();
} }
Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("Knocking room <roomname>.", "Knocking room %1.", text)); Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("Knocking room <roomname>.", "Knocking room %1.", text));
auto connection = room->connection(); auto connection = dynamic_cast<NeoChatConnection *>(room->connection());
const auto knownServer = roomName.mid(roomName.indexOf(":"_ls) + 1); const auto knownServer = roomName.mid(roomName.indexOf(":"_ls) + 1);
if (parts.length() >= 2) { if (parts.length() >= 2) {
RoomManager::instance().knockRoom(connection, roomName, parts[1], QStringList{knownServer}); RoomManager::instance().knockRoom(connection, roomName, parts[1], QStringList{knownServer});

View File

@@ -110,7 +110,7 @@ Q_SIGNALS:
private: private:
explicit CustomEmojiModel(QObject *parent = nullptr); explicit CustomEmojiModel(QObject *parent = nullptr);
QList<CustomEmoji> m_emojis; QList<CustomEmoji> m_emojis;
NeoChatConnection *m_connection = nullptr; QPointer<NeoChatConnection> m_connection;
void fetchEmojis(); void fetchEmojis();
}; };

View File

@@ -5,7 +5,8 @@
#include "customemojimodel.h" #include "customemojimodel.h"
#include <QRegularExpression> #include <QRegularExpression>
#include <connection.h>
class NeoChatConnection;
struct CustomEmoji { struct CustomEmoji {
QString name; // with :semicolons: QString name; // with :semicolons:
@@ -14,6 +15,6 @@ struct CustomEmoji {
}; };
struct CustomEmojiModel::Private { struct CustomEmojiModel::Private {
Quotient::Connection *conn = nullptr; QPointer<NeoChatConnection> connection;
QList<CustomEmoji> emojies; QList<CustomEmoji> emojies;
}; };

View File

@@ -11,9 +11,10 @@
#include <KLocalizedString> #include <KLocalizedString>
#include <Quotient/csapi/device_management.h> #include <Quotient/csapi/device_management.h>
#include <Quotient/connection.h>
#include <Quotient/user.h> #include <Quotient/user.h>
#include "neochatconnection.h"
using namespace Quotient; using namespace Quotient;
DevicesModel::DevicesModel(QObject *parent) DevicesModel::DevicesModel(QObject *parent)
@@ -152,12 +153,12 @@ void DevicesModel::setName(const QString &deviceId, const QString &name)
}); });
} }
Connection *DevicesModel::connection() const NeoChatConnection *DevicesModel::connection() const
{ {
return m_connection; return m_connection;
} }
void DevicesModel::setConnection(Connection *connection) void DevicesModel::setConnection(NeoChatConnection *connection)
{ {
if (m_connection) { if (m_connection) {
disconnect(m_connection, nullptr, this, nullptr); disconnect(m_connection, nullptr, this, nullptr);

View File

@@ -9,10 +9,7 @@
#include <Quotient/csapi/definitions/client_device.h> #include <Quotient/csapi/definitions/client_device.h>
namespace Quotient class NeoChatConnection;
{
class Connection;
}
/** /**
* @class DevicesModel * @class DevicesModel
@@ -31,7 +28,7 @@ class DevicesModel : public QAbstractListModel
/** /**
* @brief The current connection that the model is getting its devices from. * @brief The current connection that the model is getting its devices from.
*/ */
Q_PROPERTY(Quotient::Connection *connection READ connection WRITE setConnection NOTIFY connectionChanged REQUIRED) Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged REQUIRED)
public: public:
/** /**
@@ -88,9 +85,8 @@ public:
explicit DevicesModel(QObject *parent = nullptr); explicit DevicesModel(QObject *parent = nullptr);
[[nodiscard]] NeoChatConnection *connection() const;
[[nodiscard]] Quotient::Connection *connection() const; void setConnection(NeoChatConnection *connection);
void setConnection(Quotient::Connection *connection);
Q_SIGNALS: Q_SIGNALS:
void connectionChanged(); void connectionChanged();
@@ -99,5 +95,5 @@ Q_SIGNALS:
private: private:
void fetchDevices(); void fetchDevices();
QList<Quotient::Device> m_devices; QList<Quotient::Device> m_devices;
QPointer<Quotient::Connection> m_connection; QPointer<NeoChatConnection> m_connection;
}; };

View File

@@ -246,70 +246,86 @@ void MessageContentModel::updateComponents(bool isEditing)
if (eventCast<const Quotient::RoomMessageEvent>(m_event) if (eventCast<const Quotient::RoomMessageEvent>(m_event)
&& eventCast<const Quotient::RoomMessageEvent>(m_event)->rawMsgtype() == QStringLiteral("m.key.verification.request")) { && eventCast<const Quotient::RoomMessageEvent>(m_event)->rawMsgtype() == QStringLiteral("m.key.verification.request")) {
m_components += MessageComponent{MessageComponentType::Verification, QString(), {}}; m_components += MessageComponent{MessageComponentType::Verification, QString(), {}};
} else { endResetModel();
EventHandler eventHandler(m_room, m_event); return;
if (eventHandler.hasReply()) { }
if (m_room->findInTimeline(eventHandler.getReplyId()) == m_room->historyEdge()) {
m_components += MessageComponent{MessageComponentType::ReplyLoad, QString(), {}};
m_room->loadReply(m_event->id(), eventHandler.getReplyId());
} else {
m_components += MessageComponent{MessageComponentType::Reply, QString(), {}};
}
}
if (isEditing) { if (m_event->isRedacted()) {
m_components += MessageComponent{MessageComponentType::Edit, QString(), {}}; m_components += MessageComponent{MessageComponentType::Text, QString(), {}};
} else if (m_event->isRedacted()) { endResetModel();
m_components += MessageComponent{MessageComponentType::Text, QString(), {}}; return;
}
EventHandler eventHandler(m_room, m_event);
if (eventHandler.hasReply()) {
if (m_room->findInTimeline(eventHandler.getReplyId()) == m_room->historyEdge()) {
m_components += MessageComponent{MessageComponentType::ReplyLoad, QString(), {}};
m_room->loadReply(m_event->id(), eventHandler.getReplyId());
} else { } else {
if (eventHandler.messageComponentType() == MessageComponentType::Text) { m_components += MessageComponent{MessageComponentType::Reply, QString(), {}};
const auto event = eventCast<const Quotient::RoomMessageEvent>(m_event);
auto body = EventHandler::rawMessageBody(*event);
m_components.append(TextHandler().textComponents(body, EventHandler::messageBodyInputFormat(*event), m_room, event, event->isReplaced()));
} else if (eventHandler.messageComponentType() == MessageComponentType::File) {
m_components += MessageComponent{MessageComponentType::File, QString(), {}};
if (m_emptyItinerary) {
auto fileTransferInfo = fileInfo();
#ifndef Q_OS_ANDROID
KSyntaxHighlighting::Repository repository;
const auto definitionForFile = repository.definitionForFileName(fileTransferInfo.localPath.toString());
if (definitionForFile.isValid() || QFileInfo(fileTransferInfo.localPath.path()).suffix() == QStringLiteral("txt")) {
QFile file(fileTransferInfo.localPath.path());
file.open(QIODevice::ReadOnly);
m_components += MessageComponent{MessageComponentType::Code,
QString::fromStdString(file.readAll().toStdString()),
{{QStringLiteral("class"), definitionForFile.name()}}};
}
#endif
if (FileType::instance().fileHasImage(fileTransferInfo.localPath)) {
QImageReader reader(fileTransferInfo.localPath.path());
m_components += MessageComponent{MessageComponentType::Pdf, QString(), {{QStringLiteral("size"), reader.size()}}};
}
} else {
updateItineraryModel();
if (m_itineraryModel != nullptr) {
m_components += MessageComponent{MessageComponentType::Itinerary, QString(), {}};
}
}
} else {
m_components += MessageComponent{eventHandler.messageComponentType(), QString(), {}};
}
} }
}
if (m_linkPreviewer != nullptr) { if (isEditing) {
if (m_linkPreviewer->loaded()) { m_components += MessageComponent{MessageComponentType::Edit, QString(), {}};
m_components += MessageComponent{MessageComponentType::LinkPreview, QString(), {}}; } else {
} else { m_components.append(componentsForType(eventHandler.messageComponentType()));
m_components += MessageComponent{MessageComponentType::LinkPreviewLoad, QString(), {}}; }
}
if (m_linkPreviewer != nullptr) {
if (m_linkPreviewer->loaded()) {
m_components += MessageComponent{MessageComponentType::LinkPreview, QString(), {}};
} else {
m_components += MessageComponent{MessageComponentType::LinkPreviewLoad, QString(), {}};
} }
} }
endResetModel(); endResetModel();
} }
QList<MessageComponent> MessageContentModel::componentsForType(MessageComponentType::Type type)
{
switch (type) {
case MessageComponentType::Text: {
const auto event = eventCast<const Quotient::RoomMessageEvent>(m_event);
auto body = EventHandler::rawMessageBody(*event);
return TextHandler().textComponents(body, EventHandler::messageBodyInputFormat(*event), m_room, event, event->isReplaced());
}
case MessageComponentType::File: {
QList<MessageComponent> components;
components += MessageComponent{MessageComponentType::File, QString(), {}};
if (m_emptyItinerary) {
auto fileTransferInfo = fileInfo();
#ifndef Q_OS_ANDROID
KSyntaxHighlighting::Repository repository;
const auto definitionForFile = repository.definitionForFileName(fileTransferInfo.localPath.toString());
if (definitionForFile.isValid() || QFileInfo(fileTransferInfo.localPath.path()).suffix() == QStringLiteral("txt")) {
QFile file(fileTransferInfo.localPath.path());
file.open(QIODevice::ReadOnly);
components += MessageComponent{MessageComponentType::Code,
QString::fromStdString(file.readAll().toStdString()),
{{QStringLiteral("class"), definitionForFile.name()}}};
}
#endif
if (FileType::instance().fileHasImage(fileTransferInfo.localPath)) {
QImageReader reader(fileTransferInfo.localPath.path());
components += MessageComponent{MessageComponentType::Pdf, QString(), {{QStringLiteral("size"), reader.size()}}};
}
} else {
updateItineraryModel();
if (m_itineraryModel != nullptr) {
components += MessageComponent{MessageComponentType::Itinerary, QString(), {}};
}
}
return components;
}
default:
return {MessageComponent{type, QString(), {}}};
}
}
void MessageContentModel::updateLinkPreviewer() void MessageContentModel::updateLinkPreviewer()
{ {
if (m_room == nullptr || m_event == nullptr) { if (m_room == nullptr || m_event == nullptr) {

View File

@@ -98,6 +98,8 @@ private:
QPointer<LinkPreviewer> m_linkPreviewer; QPointer<LinkPreviewer> m_linkPreviewer;
ItineraryModel *m_itineraryModel = nullptr; ItineraryModel *m_itineraryModel = nullptr;
QList<MessageComponent> componentsForType(MessageComponentType::Type type);
void updateLinkPreviewer(); void updateLinkPreviewer();
void updateItineraryModel(); void updateItineraryModel();
bool m_emptyItinerary = false; bool m_emptyItinerary = false;

View File

@@ -7,7 +7,6 @@
#include "neochatconfig.h" #include "neochatconfig.h"
#include <Quotient/connection.h>
#include <Quotient/csapi/rooms.h> #include <Quotient/csapi/rooms.h>
#include <Quotient/events/redactionevent.h> #include <Quotient/events/redactionevent.h>
#include <Quotient/events/roommessageevent.h> #include <Quotient/events/roommessageevent.h>
@@ -117,34 +116,6 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
if (message != nullptr) { if (message != nullptr) {
createEventObjects(message); createEventObjects(message);
if (NeoChatConfig::self()->showFancyEffects()) {
QString planBody = message->plainBody();
// snowflake
const QString snowlakeEmoji = QString::fromUtf8("\xE2\x9D\x84");
if (planBody.contains(snowlakeEmoji)) {
Q_EMIT fancyEffectsReasonFound(QStringLiteral("snowflake"));
}
// fireworks
const QString fireworksEmoji = QString::fromUtf8("\xF0\x9F\x8E\x86");
if (planBody.contains(fireworksEmoji)) {
Q_EMIT fancyEffectsReasonFound(QStringLiteral("fireworks"));
}
// sparkler
const QString sparklerEmoji = QString::fromUtf8("\xF0\x9F\x8E\x87");
if (planBody.contains(sparklerEmoji)) {
Q_EMIT fancyEffectsReasonFound(QStringLiteral("fireworks"));
}
// party pooper
const QString partyEmoji = QString::fromUtf8("\xF0\x9F\x8E\x89");
if (planBody.contains(partyEmoji)) {
Q_EMIT fancyEffectsReasonFound(QStringLiteral("confetti"));
}
// confetti ball
const QString confettiEmoji = QString::fromUtf8("\xF0\x9F\x8E\x8A");
if (planBody.contains(confettiEmoji)) {
Q_EMIT fancyEffectsReasonFound(QStringLiteral("confetti"));
}
}
} }
if (event->is<PollStartEvent>()) { if (event->is<PollStartEvent>()) {
m_currentRoom->createPollHandler(eventCast<const PollStartEvent>(event.get())); m_currentRoom->createPollHandler(eventCast<const PollStartEvent>(event.get()));

View File

@@ -140,5 +140,4 @@ private:
Q_SIGNALS: Q_SIGNALS:
void roomChanged(); void roomChanged();
void fancyEffectsReasonFound(const QString &fancyEffect);
}; };

View File

@@ -36,6 +36,14 @@ MessageFilterModel::MessageFilterModel(QObject *parent, TimelineModel *sourceMod
} }
bool MessageFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const bool MessageFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
if (NeoChatConfig::self()->showAllEvents()) {
return true;
}
return eventIsVisible(sourceRow, sourceParent);
}
bool MessageFilterModel::eventIsVisible(int sourceRow, const QModelIndex &sourceParent) const
{ {
const QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); const QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
@@ -59,9 +67,8 @@ bool MessageFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sour
// Don't show state events that are not the first in a consecutive group on the // Don't show state events that are not the first in a consecutive group on the
// same day as they will be grouped as a single delegate. // same day as they will be grouped as a single delegate.
const bool notLastRow = sourceRow < sourceModel()->rowCount() - 1; const bool notLastRow = sourceRow < sourceModel()->rowCount() - 1;
const bool previousEventIsState = notLastRow const bool previousEventIsState =
? sourceModel()->data(sourceModel()->index(sourceRow + 1, 0), MessageEventModel::DelegateTypeRole) == DelegateType::State notLastRow ? sourceModel()->data(sourceModel()->index(sourceRow + 1, 0), MessageEventModel::DelegateTypeRole) == DelegateType::State : false;
: false;
const bool newDay = sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageEventModel::ShowSectionRole).toBool(); const bool newDay = sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageEventModel::ShowSectionRole).toBool();
if (eventType == DelegateType::State && notLastRow && previousEventIsState && !newDay) { if (eventType == DelegateType::State && notLastRow && previousEventIsState && !newDay) {
return false; return false;
@@ -72,7 +79,11 @@ bool MessageFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sour
QVariant MessageFilterModel::data(const QModelIndex &index, int role) const QVariant MessageFilterModel::data(const QModelIndex &index, int role) const
{ {
if (role == AggregateDisplayRole) { if (role == MessageEventModel::DelegateTypeRole && NeoChatConfig::self()->showAllEvents()) {
if (!eventIsVisible(index.row(), index.parent())) {
return DelegateType::Other;
}
} else if (role == AggregateDisplayRole) {
return aggregateEventToString(mapToSource(index).row()); return aggregateEventToString(mapToSource(index).row());
} else if (role == StateEventsRole) { } else if (role == StateEventsRole) {
return stateEventsList(mapToSource(index).row()); return stateEventsList(mapToSource(index).row());

View File

@@ -60,6 +60,8 @@ public:
[[nodiscard]] QHash<int, QByteArray> roleNames() const override; [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
private: private:
bool eventIsVisible(int sourceRow, const QModelIndex &sourceParent) const;
/** /**
* @brief Aggregation of the text of consecutive state events starting at row. * @brief Aggregation of the text of consecutive state events starting at row.
* *

View File

@@ -3,7 +3,6 @@
#include "notificationsmodel.h" #include "notificationsmodel.h"
#include <Quotient/connection.h>
#include <Quotient/events/event.h> #include <Quotient/events/event.h>
#include <Quotient/uri.h> #include <Quotient/uri.h>

View File

@@ -3,8 +3,7 @@
#include "publicroomlistmodel.h" #include "publicroomlistmodel.h"
#include <Quotient/connection.h> #include "neochatconnection.h"
#include "publicroomlist_logging.h" #include "publicroomlist_logging.h"
using namespace Quotient; using namespace Quotient;
@@ -14,14 +13,14 @@ PublicRoomListModel::PublicRoomListModel(QObject *parent)
{ {
} }
Quotient::Connection *PublicRoomListModel::connection() const NeoChatConnection *PublicRoomListModel::connection() const
{ {
return m_connection; return m_connection;
} }
void PublicRoomListModel::setConnection(Connection *conn) void PublicRoomListModel::setConnection(NeoChatConnection *connection)
{ {
if (m_connection == conn) { if (m_connection == connection) {
return; return;
} }
@@ -38,7 +37,7 @@ void PublicRoomListModel::setConnection(Connection *conn)
endResetModel(); endResetModel();
m_connection = conn; m_connection = connection;
if (job) { if (job) {
job->abandon(); job->abandon();

View File

@@ -9,10 +9,7 @@
#include <Quotient/csapi/list_public_rooms.h> #include <Quotient/csapi/list_public_rooms.h>
namespace Quotient class NeoChatConnection;
{
class Connection;
}
/** /**
* @class PublicRoomListModel * @class PublicRoomListModel
@@ -33,7 +30,7 @@ class PublicRoomListModel : public QAbstractListModel
/** /**
* @brief The current connection that the model is getting its rooms from. * @brief The current connection that the model is getting its rooms from.
*/ */
Q_PROPERTY(Quotient::Connection *connection READ connection WRITE setConnection NOTIFY connectionChanged) Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged)
/** /**
* @brief The server to get the public room list from. * @brief The server to get the public room list from.
@@ -95,8 +92,8 @@ public:
*/ */
[[nodiscard]] QHash<int, QByteArray> roleNames() const override; [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
[[nodiscard]] Quotient::Connection *connection() const; [[nodiscard]] NeoChatConnection *connection() const;
void setConnection(Quotient::Connection *conn); void setConnection(NeoChatConnection *connection);
[[nodiscard]] QString server() const; [[nodiscard]] QString server() const;
void setServer(const QString &value); void setServer(const QString &value);
@@ -117,7 +114,7 @@ public:
Q_INVOKABLE void search(int limit = 50); Q_INVOKABLE void search(int limit = 50);
private: private:
QPointer<Quotient::Connection> m_connection = nullptr; QPointer<NeoChatConnection> m_connection = nullptr;
QString m_server; QString m_server;
QString m_searchText; QString m_searchText;
bool m_showOnlySpaces = false; bool m_showOnlySpaces = false;

View File

@@ -5,13 +5,13 @@
#include <QDebug> #include <QDebug>
#include <Quotient/connection.h>
#include <Quotient/converters.h> #include <Quotient/converters.h>
#include <Quotient/csapi/definitions/push_ruleset.h> #include <Quotient/csapi/definitions/push_ruleset.h>
#include <Quotient/csapi/pushrules.h> #include <Quotient/csapi/pushrules.h>
#include <Quotient/jobs/basejob.h> #include <Quotient/jobs/basejob.h>
#include "neochatconfig.h" #include "neochatconfig.h"
#include "neochatconnection.h"
#include <KLazyLocalizedString> #include <KLazyLocalizedString>
@@ -454,7 +454,7 @@ void PushRuleModel::setConnection(NeoChatConnection *connection)
Q_EMIT connectionChanged(); Q_EMIT connectionChanged();
if (m_connection) { if (m_connection) {
connect(m_connection, &Quotient::Connection::accountDataChanged, this, &PushRuleModel::updateNotificationRules); connect(m_connection, &NeoChatConnection::accountDataChanged, this, &PushRuleModel::updateNotificationRules);
updateNotificationRules(QStringLiteral("m.push_rules")); updateNotificationRules(QStringLiteral("m.push_rules"));
} }
} }

View File

@@ -126,7 +126,7 @@ private Q_SLOTS:
private: private:
PushRuleAction::Action m_defaultKeywordAction; PushRuleAction::Action m_defaultKeywordAction;
QList<Rule> m_rules; QList<Rule> m_rules;
NeoChatConnection *m_connection; QPointer<NeoChatConnection> m_connection;
void setRules(QList<Quotient::PushRule> rules, PushRuleKind::Kind kind); void setRules(QList<Quotient::PushRule> rules, PushRuleKind::Kind kind);

View File

@@ -25,12 +25,12 @@ RoomListModel::RoomListModel(QObject *parent)
RoomListModel::~RoomListModel() = default; RoomListModel::~RoomListModel() = default;
Quotient::Connection *RoomListModel::connection() const NeoChatConnection *RoomListModel::connection() const
{ {
return m_connection; return m_connection;
} }
void RoomListModel::setConnection(Connection *connection) void RoomListModel::setConnection(NeoChatConnection *connection)
{ {
if (connection == m_connection) { if (connection == m_connection) {
return; return;

View File

@@ -12,10 +12,11 @@ class NeoChatRoom;
namespace Quotient namespace Quotient
{ {
class Connection;
class Room; class Room;
} }
class NeoChatConnection;
/** /**
* @class RoomListModel * @class RoomListModel
* *
@@ -29,7 +30,7 @@ class RoomListModel : public QAbstractListModel
/** /**
* @brief The current connection that the model is getting its rooms from. * @brief The current connection that the model is getting its rooms from.
*/ */
Q_PROPERTY(Quotient::Connection *connection READ connection WRITE setConnection NOTIFY connectionChanged) Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged)
public: public:
/** /**
@@ -60,8 +61,8 @@ public:
explicit RoomListModel(QObject *parent = nullptr); explicit RoomListModel(QObject *parent = nullptr);
~RoomListModel() override; ~RoomListModel() override;
[[nodiscard]] Quotient::Connection *connection() const; [[nodiscard]] NeoChatConnection *connection() const;
void setConnection(Quotient::Connection *connection); void setConnection(NeoChatConnection *connection);
/** /**
* @brief Get the given role value at the given index. * @brief Get the given role value at the given index.
@@ -109,7 +110,7 @@ private Q_SLOTS:
void refresh(NeoChatRoom *room, const QList<int> &roles = {}); void refresh(NeoChatRoom *room, const QList<int> &roles = {});
private: private:
Quotient::Connection *m_connection = nullptr; QPointer<NeoChatConnection> m_connection;
QList<NeoChatRoom *> m_rooms; QList<NeoChatRoom *> m_rooms;
QString m_activeSpaceId; QString m_activeSpaceId;

View File

@@ -3,7 +3,6 @@
#include "roomtreemodel.h" #include "roomtreemodel.h"
#include <Quotient/connection.h>
#include <Quotient/room.h> #include <Quotient/room.h>
#include "eventhandler.h" #include "eventhandler.h"
@@ -300,9 +299,6 @@ QVariant RoomTreeModel::data(const QModelIndex &index, int role) const
return NeoChatRoomType::typeName(index.row()); return NeoChatRoomType::typeName(index.row());
} }
if (role == DelegateTypeRole) { if (role == DelegateTypeRole) {
if (index.row() == NeoChatRoomType::Search) {
return QStringLiteral("search");
}
if (index.row() == NeoChatRoomType::AddDirect) { if (index.row() == NeoChatRoomType::AddDirect) {
return QStringLiteral("addDirect"); return QStringLiteral("addDirect");
} }

View File

@@ -10,7 +10,6 @@
#include <QGuiApplication> #include <QGuiApplication>
#include <Quotient/connection.h>
#include <Quotient/events/stickerevent.h> #include <Quotient/events/stickerevent.h>
#include <KLocalizedString> #include <KLocalizedString>

View File

@@ -3,8 +3,6 @@
#include "serverlistmodel.h" #include "serverlistmodel.h"
#include <Quotient/connection.h>
#include <QDebug> #include <QDebug>
#include <KConfig> #include <KConfig>

View File

@@ -110,7 +110,7 @@ Q_SIGNALS:
private: private:
QList<Server> m_servers; QList<Server> m_servers;
QPointer<Quotient::QueryPublicRoomsJob> m_checkServerJob = nullptr; QPointer<Quotient::QueryPublicRoomsJob> m_checkServerJob = nullptr;
NeoChatConnection *m_connection = nullptr; QPointer<NeoChatConnection> m_connection;
void initialize(); void initialize();
}; };

View File

@@ -5,6 +5,8 @@
#include "roomlistmodel.h" #include "roomlistmodel.h"
#include "neochatconnection.h"
SortFilterRoomListModel::SortFilterRoomListModel(RoomListModel *sourceModel, QObject *parent) SortFilterRoomListModel::SortFilterRoomListModel(RoomListModel *sourceModel, QObject *parent)
: QSortFilterProxyModel(parent) : QSortFilterProxyModel(parent)
{ {

View File

@@ -129,10 +129,6 @@ QString SortFilterRoomTreeModel::filterText() const
bool SortFilterRoomTreeModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const bool SortFilterRoomTreeModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{ {
if (!source_parent.isValid()) { if (!source_parent.isValid()) {
if (sourceModel()->data(sourceModel()->index(source_row, 0), RoomTreeModel::CategoryRole).toInt() == NeoChatRoomType::Search
&& NeoChatConfig::collapsed()) {
return true;
}
if (sourceModel()->data(sourceModel()->index(source_row, 0), RoomTreeModel::CategoryRole).toInt() == NeoChatRoomType::AddDirect if (sourceModel()->data(sourceModel()->index(source_row, 0), RoomTreeModel::CategoryRole).toInt() == NeoChatRoomType::AddDirect
&& m_mode == DirectChats) { && m_mode == DirectChats) {
return true; return true;
@@ -205,4 +201,14 @@ void SortFilterRoomTreeModel::setMode(SortFilterRoomTreeModel::Mode mode)
invalidate(); invalidate();
} }
QModelIndex SortFilterRoomTreeModel::currentRoomIndex() const
{
const auto roomModel = dynamic_cast<RoomTreeModel *>(sourceModel());
if (roomModel == nullptr) {
return {};
}
return mapFromSource(roomModel->indexForRoom(RoomManager::instance().currentRoom()));
}
#include "moc_sortfilterroomtreemodel.cpp" #include "moc_sortfilterroomtreemodel.cpp"

View File

@@ -76,6 +76,8 @@ public:
Mode mode() const; Mode mode() const;
void setMode(Mode mode); void setMode(Mode mode);
Q_INVOKABLE QModelIndex currentRoomIndex() const;
protected: protected:
/** /**
* @brief Returns true if the value of source_left is less than source_right. * @brief Returns true if the value of source_left is less than source_right.

View File

@@ -3,7 +3,6 @@
#include "spacechildrenmodel.h" #include "spacechildrenmodel.h"
#include <Quotient/connection.h>
#include <Quotient/jobs/basejob.h> #include <Quotient/jobs/basejob.h>
#include <Quotient/room.h> #include <Quotient/room.h>
@@ -47,7 +46,7 @@ void SpaceChildrenModel::setSpace(NeoChatRoom *space)
} }
auto connection = m_space->connection(); auto connection = m_space->connection();
connect(connection, &Quotient::Connection::loadedRoomState, this, [this](Quotient::Room *room) { connect(connection, &NeoChatConnection::loadedRoomState, this, [this](Quotient::Room *room) {
if (m_pendingChildren.contains(room->name())) { if (m_pendingChildren.contains(room->name())) {
m_pendingChildren.removeAll(room->name()); m_pendingChildren.removeAll(room->name());
refreshModel(); refreshModel();

View File

@@ -1,6 +1,8 @@
// SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com> // SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#include <QPointer>
#include <Quotient/csapi/space_hierarchy.h> #include <Quotient/csapi/space_hierarchy.h>
#include <Quotient/events/stateevent.h> #include <Quotient/events/stateevent.h>
@@ -149,7 +151,7 @@ public:
bool isSuggested() const; bool isSuggested() const;
private: private:
NeoChatConnection *m_connection; QPointer<NeoChatConnection> m_connection;
std::vector<std::unique_ptr<SpaceTreeItem>> m_children; std::vector<std::unique_ptr<SpaceTreeItem>> m_children;
SpaceTreeItem *m_parentItem; SpaceTreeItem *m_parentItem;

View File

@@ -3,9 +3,10 @@
#include "userdirectorylistmodel.h" #include "userdirectorylistmodel.h"
#include <Quotient/connection.h>
#include <Quotient/room.h> #include <Quotient/room.h>
#include "neochatconnection.h"
using namespace Quotient; using namespace Quotient;
UserDirectoryListModel::UserDirectoryListModel(QObject *parent) UserDirectoryListModel::UserDirectoryListModel(QObject *parent)
@@ -13,14 +14,14 @@ UserDirectoryListModel::UserDirectoryListModel(QObject *parent)
{ {
} }
Quotient::Connection *UserDirectoryListModel::connection() const NeoChatConnection *UserDirectoryListModel::connection() const
{ {
return m_connection; return m_connection;
} }
void UserDirectoryListModel::setConnection(Connection *conn) void UserDirectoryListModel::setConnection(NeoChatConnection *connection)
{ {
if (m_connection == conn) { if (m_connection == connection) {
return; return;
} }
@@ -35,7 +36,7 @@ void UserDirectoryListModel::setConnection(Connection *conn)
endResetModel(); endResetModel();
m_connection = conn; m_connection = connection;
Q_EMIT connectionChanged(); Q_EMIT connectionChanged();
if (m_job) { if (m_job) {

View File

@@ -9,10 +9,7 @@
#include <Quotient/csapi/users.h> #include <Quotient/csapi/users.h>
namespace Quotient class NeoChatConnection;
{
class Connection;
}
/** /**
* @class UserDirectoryListModel * @class UserDirectoryListModel
@@ -32,7 +29,7 @@ class UserDirectoryListModel : public QAbstractListModel
/** /**
* @brief The current connection that the model is getting users from. * @brief The current connection that the model is getting users from.
*/ */
Q_PROPERTY(Quotient::Connection *connection READ connection WRITE setConnection NOTIFY connectionChanged) Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged)
/** /**
* @brief The text to search the public room list for. * @brief The text to search the public room list for.
@@ -57,8 +54,8 @@ public:
explicit UserDirectoryListModel(QObject *parent = nullptr); explicit UserDirectoryListModel(QObject *parent = nullptr);
[[nodiscard]] Quotient::Connection *connection() const; [[nodiscard]] NeoChatConnection *connection() const;
void setConnection(Quotient::Connection *conn); void setConnection(NeoChatConnection *connection);
[[nodiscard]] QString searchText() const; [[nodiscard]] QString searchText() const;
void setSearchText(const QString &searchText); void setSearchText(const QString &searchText);
@@ -99,7 +96,7 @@ Q_SIGNALS:
void searchingChanged(); void searchingChanged();
private: private:
Quotient::Connection *m_connection = nullptr; QPointer<NeoChatConnection> m_connection;
QString m_searchText; QString m_searchText;
bool attempted = false; bool attempted = false;

View File

@@ -5,7 +5,6 @@
#include <QGuiApplication> #include <QGuiApplication>
#include <Quotient/connection.h>
#include <Quotient/events/roompowerlevelsevent.h> #include <Quotient/events/roompowerlevelsevent.h>
#include "neochatroom.h" #include "neochatroom.h"

View File

@@ -100,10 +100,6 @@
<label>Minimize to system tray on startup</label> <label>Minimize to system tray on startup</label>
<default>false</default> <default>false</default>
</entry> </entry>
<entry name="ShowFancyEffects" type="bool">
<label>Show Fancy Effects</label>
<default>true</default>
</entry>
<entry name="MediaMaxWidth" type="int"> <entry name="MediaMaxWidth" type="int">
<label>The maximum width any media item in the timeline can be.</label> <label>The maximum width any media item in the timeline can be.</label>
<default>540</default> <default>540</default>
@@ -161,10 +157,18 @@
</entry> </entry>
</group> </group>
<group name="Debug"> <group name="Debug">
<entry name="ShowAllEvents" type="bool">
<label>Don't hide any events in the timeline</label>
<default>false</default>
</entry>
<entry name="AlwaysVerifyDevice" type="bool"> <entry name="AlwaysVerifyDevice" type="bool">
<label>Always allow device verification</label> <label>Always allow device verification</label>
<default>false</default> <default>false</default>
</entry> </entry>
<entry name="WindowTitleFocus" type="bool">
<label>Show the current focus item in the window title</label>
<default>false</default>
</entry>
</group> </group>
<group name="FeatureFlags"> <group name="FeatureFlags">
<entry name="Threads" type="bool"> <entry name="Threads" type="bool">

View File

@@ -18,6 +18,7 @@
"Name[nl]": "Tobias Fella", "Name[nl]": "Tobias Fella",
"Name[pl]": "Tobias Fella", "Name[pl]": "Tobias Fella",
"Name[sl]": "Tobias Fella", "Name[sl]": "Tobias Fella",
"Name[ta]": "டோபியாஸ் ஃபெல்லா",
"Name[tr]": "Tobias Fella", "Name[tr]": "Tobias Fella",
"Name[uk]": "Tobias Fella", "Name[uk]": "Tobias Fella",
"Name[x-test]": "xxTobias Fellaxx", "Name[x-test]": "xxTobias Fellaxx",
@@ -40,6 +41,7 @@
"Description[nl]": "Delen via NeoChat", "Description[nl]": "Delen via NeoChat",
"Description[pl]": "Udostępnij przez NeoChat", "Description[pl]": "Udostępnij przez NeoChat",
"Description[sl]": "Deli prek NeoChat", "Description[sl]": "Deli prek NeoChat",
"Description[ta]": "நியோச்சாட் மூலம் பகிர்",
"Description[tr]": "NeoChat ile Paylaş", "Description[tr]": "NeoChat ile Paylaş",
"Description[uk]": "Оприлюднити за допомогою NeoChat", "Description[uk]": "Оприлюднити за допомогою NeoChat",
"Description[x-test]": "xxShare via NeoChatxx", "Description[x-test]": "xxShare via NeoChatxx",
@@ -63,6 +65,7 @@
"Name[nl]": "NeoChat", "Name[nl]": "NeoChat",
"Name[pl]": "NeoChat", "Name[pl]": "NeoChat",
"Name[sl]": "NeoChat", "Name[sl]": "NeoChat",
"Name[ta]": "நியோச்சாட்",
"Name[tr]": "NeoChat", "Name[tr]": "NeoChat",
"Name[uk]": "NeoChat", "Name[uk]": "NeoChat",
"Name[x-test]": "xxNeoChatxx", "Name[x-test]": "xxNeoChatxx",

View File

@@ -278,6 +278,8 @@ QQC2.Control {
Keys.onTabPressed: { Keys.onTabPressed: {
if (completionMenu.visible) { if (completionMenu.visible) {
completionMenu.complete(); completionMenu.complete();
} else {
contextDrawer.handle.children[0].forceActiveFocus()
} }
} }
Keys.onPressed: event => { Keys.onPressed: event => {

View File

@@ -48,10 +48,10 @@ QQC2.ItemDelegate {
background: Rectangle { background: Rectangle {
color: root.checked ? Kirigami.Theme.highlightColor : Kirigami.Theme.backgroundColor color: root.checked ? Kirigami.Theme.highlightColor : Kirigami.Theme.backgroundColor
radius: Kirigami.Units.smallSpacing radius: Kirigami.Units.cornerRadius
Rectangle { Rectangle {
radius: Kirigami.Units.smallSpacing radius: Kirigami.Units.cornerRadius
anchors.fill: parent anchors.fill: parent
color: Kirigami.Theme.highlightColor color: Kirigami.Theme.highlightColor
opacity: root.hovered && !root.pressed ? 0.2 : 0 opacity: root.hovered && !root.pressed ? 0.2 : 0

View File

@@ -40,7 +40,7 @@ QQC2.Popup {
background: Kirigami.ShadowedRectangle { background: Kirigami.ShadowedRectangle {
Kirigami.Theme.colorSet: Kirigami.Theme.View Kirigami.Theme.colorSet: Kirigami.Theme.View
color: Kirigami.Theme.backgroundColor color: Kirigami.Theme.backgroundColor
radius: Kirigami.Units.mediumSpacing radius: Kirigami.Units.cornerRadius
shadow { shadow {
size: Kirigami.Units.largeSpacing size: Kirigami.Units.largeSpacing
color: Qt.rgba(0.0, 0.0, 0.0, 0.3) color: Qt.rgba(0.0, 0.0, 0.0, 0.3)

View File

@@ -30,7 +30,7 @@ QQC2.Popup {
onOpened: x = Math.min(parent.mapFromGlobal(QQC2.Overlay.overlay.width - root.width, 0).x, -(width - parent.width) / 2) onOpened: x = Math.min(parent.mapFromGlobal(QQC2.Overlay.overlay.width - root.width, 0).x, -(width - parent.width) / 2)
background: Kirigami.ShadowedRectangle { background: Kirigami.ShadowedRectangle {
color: Kirigami.Theme.backgroundColor color: Kirigami.Theme.backgroundColor
radius: Kirigami.Units.mediumSpacing radius: Kirigami.Units.cornerRadius
shadow { shadow {
size: Kirigami.Units.largeSpacing size: Kirigami.Units.largeSpacing
color: Qt.rgba(0.0, 0.0, 0.0, 0.3) color: Qt.rgba(0.0, 0.0, 0.0, 0.3)

View File

@@ -17,7 +17,7 @@ RowLayout {
property bool collapsed: false property bool collapsed: false
required property NeoChatConnection connection required property NeoChatConnection connection
property alias roomSearchFieldFocussed: roomSearchField.activeFocus signal search
property Kirigami.Action exploreAction: Kirigami.Action { property Kirigami.Action exploreAction: Kirigami.Action {
text: i18n("Explore rooms") text: i18n("Explore rooms")
@@ -83,15 +83,30 @@ RowLayout {
*/ */
signal textChanged(string newText) signal textChanged(string newText)
Kirigami.SearchField { Item {
id: roomSearchField Layout.preferredWidth: Kirigami.Units.largeSpacing
Layout.topMargin: Kirigami.Units.smallSpacing }
Layout.bottomMargin: Kirigami.Units.smallSpacing
Kirigami.Heading {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredWidth: root.desiredWidth ? root.desiredWidth - menuButton.width - root.spacing : -1
visible: !root.collapsed visible: !root.collapsed
onTextChanged: root.textChanged(text) text: i18nc("@title", "Rooms")
KeyNavigation.tab: treeView }
Item {
Layout.fillWidth: true
visible: root.collapsed
}
QQC2.ToolButton {
id: searchButton
display: QQC2.AbstractButton.IconOnly
onClicked: root.search();
icon.name: "search"
text: i18nc("@action", "Search Room")
Shortcut {
sequence: "Ctrl+F"
onActivated: searchButton.clicked()
}
} }
QQC2.ToolButton { QQC2.ToolButton {
@@ -100,8 +115,8 @@ RowLayout {
display: QQC2.AbstractButton.IconOnly display: QQC2.AbstractButton.IconOnly
checkable: true checkable: true
action: Kirigami.Action { action: Kirigami.Action {
text: i18n("Create rooms and chats") text: i18nc("@action:button", "Show Menu")
icon.name: "irc-join-channel" icon.name: "application-menu-symbolic"
onTriggered: { onTriggered: {
if (Kirigami.isMobile) { if (Kirigami.isMobile) {
const menu = mobileMenu.createObject(); const menu = mobileMenu.createObject();

View File

@@ -1,304 +0,0 @@
// SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
import QtQuick
import QtQuick.Layouts
import QtQuick.Particles
import org.kde.kirigami as Kirigami
Item {
id: root
property bool enabled: false
property int effectInterval: Kirigami.Units.veryLongDuration * 10
property color darkSnowColor: "grey"
property bool isThemeDark: Kirigami.Theme.backgroundColor.hslLightness <= darkSnowColor.hslLightness
function showConfettiEffect() {
confettiTimer.start();
}
function showSnowEffect() {
snowTimer.start();
}
function showFireworksEffect() {
fireworksTimer.start();
}
// Confetti
Timer {
id: confettiTimer
interval: root.effectInterval
running: false
repeat: false
triggeredOnStart: true
onTriggered: {
if (root.enabled) {
confettiSystem.running = !confettiSystem.running;
}
}
}
ParticleSystem {
id: confettiSystem
anchors.fill: parent
running: false
onRunningChanged: {
if (running) {
opacity = 1;
} else {
opacity = 0;
}
}
Behavior on opacity {
SequentialAnimation {
NumberAnimation {
duration: Kirigami.Units.longDuration
}
}
}
ImageParticle {
source: "qrc:/qt/qml/org/kde/neochat/qml/confetti.png"
entryEffect: ImageParticle.Scale
rotationVariation: 360
rotationVelocity: 90
color: Qt.hsla(Math.random(), 0.5, 0.6, 1)
colorVariation: 1
}
Emitter {
anchors {
left: parent.left
right: parent.right
top: parent.top
}
sizeVariation: Kirigami.Units.iconSizes.small / 2
lifeSpan: Kirigami.Units.veryLongDuration * 10
size: Kirigami.Units.iconSizes.small
velocity: AngleDirection {
angle: 90
angleVariation: 42
magnitude: 500
}
}
}
// Snow
Timer {
id: snowTimer
interval: root.effectInterval
running: false
repeat: false
triggeredOnStart: true
onTriggered: {
if (root.enabled) {
snowSystem.running = !snowSystem.running;
}
}
}
ParticleSystem {
id: snowSystem
anchors.fill: parent
running: false
onRunningChanged: {
if (running) {
opacity = 1;
} else {
opacity = 0;
}
}
Behavior on opacity {
SequentialAnimation {
NumberAnimation {
duration: Kirigami.Units.longDuration
}
}
}
ItemParticle {
delegate: Rectangle {
width: 10
height: width
radius: width
color: root.isThemeDark ? "white" : darkSnowColor
scale: Math.random()
opacity: Math.random()
}
}
Emitter {
anchors {
left: parent.left
right: parent.right
top: parent.top
}
sizeVariation: Kirigami.Units.iconSizes.medium
lifeSpan: Kirigami.Units.veryLongDuration * 10
size: Kirigami.Units.iconSizes.large
emitRate: 42
velocity: AngleDirection {
angle: 90
angleVariation: 10
magnitude: 300
}
}
}
// Fireworks
Timer {
id: fireworksTimer
interval: root.effectInterval
running: false
repeat: false
triggeredOnStart: true
onTriggered: {
if (root.enabled) {
fireworksInternalTimer.running = !fireworksInternalTimer.running;
}
}
}
Timer {
id: fireworksInternalTimer
interval: 300
triggeredOnStart: true
running: false
repeat: true
onTriggered: {
var x = Math.random() * parent.width;
var y = Math.random() * parent.height;
customEmit(x, y);
customEmit(x, y);
customEmit(x, y);
}
}
ParticleSystem {
id: fireworksSystem
anchors.fill: parent
running: fireworksInternalTimer.running
onRunningChanged: {
if (running) {
opacity = 1;
} else {
opacity = 0;
}
}
Behavior on opacity {
SequentialAnimation {
NumberAnimation {
duration: Kirigami.Units.longDuration
}
}
}
}
ImageParticle {
id: fireworksParticleA
system: fireworksSystem
source: "qrc:/qt/qml/org/kde/neochat/qml/glowdot.png"
alphaVariation: root.isThemeDark ? 0.1 : 0.1
alpha: root.isThemeDark ? 0.5 : 1
groups: ["a"]
opacity: fireworksSystem.opacity
entryEffect: ImageParticle.Scale
rotationVariation: 360
}
ImageParticle {
system: fireworksSystem
source: "qrc:/qt/qml/org/kde/neochat/qml/glowdot.png"
color: root.isThemeDark ? "white" : "gold"
alphaVariation: root.isThemeDark ? 0.1 : 0.1
alpha: root.isThemeDark ? 0.5 : 1
groups: ["light"]
opacity: fireworksSystem.opacity
entryEffect: ImageParticle.Scale
rotationVariation: 360
}
ImageParticle {
id: fireworksParticleB
system: fireworksSystem
source: "qrc:/qt/qml/org/kde/neochat/qml/glowdot.png"
alphaVariation: root.isThemeDark ? 0.1 : 0.1
alpha: root.isThemeDark ? 0.5 : 1
groups: ["b"]
opacity: fireworksSystem.opacity
entryEffect: ImageParticle.Scale
rotationVariation: 360
}
Component {
id: emitterComp
Emitter {
id: container
property int life: 23
property real targetX: 0
property real targetY: 0
width: 1
height: 1
system: fireworksSystem
size: 16
endSize: 8
sizeVariation: 5
Timer {
interval: life
running: true
onTriggered: {
container.destroy();
var randomHue = Math.random();
var lightness = root.isThemeDark ? 0.8 : 0.7;
fireworksParticleA.color = Qt.hsla(randomHue, 0.8, lightness, 1);
fireworksParticleB.color = Qt.hsla(1 - randomHue, 0.8, lightness, 1);
}
}
velocity: AngleDirection {
angleVariation: 360
magnitude: 200
}
}
}
function customEmit(x, y) {
var currentSize = Math.round(Math.random() * 200) + 40;
var currentLifeSpan = Math.round(Math.random() * 1000) + 100;
for (var i = 0; i < 8; i++) {
var obj = emitterComp.createObject(parent);
obj.x = x;
obj.y = y;
obj.targetX = Math.random() * currentSize - currentSize / 2 + obj.x;
obj.targetY = Math.random() * currentSize - currentSize / 2 + obj.y;
obj.life = Math.round(Math.random() * 23) + 150;
obj.emitRate = Math.round(Math.random() * 32) + 5;
obj.lifeSpan = currentLifeSpan;
const group = Math.round(Math.random() * 3);
switch (group) {
case 0:
obj.group = "light";
break;
case 1:
obj.group = "a";
break;
case 2:
obj.group = "b";
break;
}
}
}
}

View File

@@ -16,6 +16,8 @@ Kirigami.ApplicationWindow {
property NeoChatConnection connection: Controller.activeConnection property NeoChatConnection connection: Controller.activeConnection
title: Config.windowTitleFocus ? activeFocusItem + " " + (activeFocusItem ? activeFocusItem.Accessible.name : "") : "NeoChat"
minimumWidth: Kirigami.Units.gridUnit * 20 minimumWidth: Kirigami.Units.gridUnit * 20
minimumHeight: Kirigami.Units.gridUnit * 15 minimumHeight: Kirigami.Units.gridUnit * 15
@@ -96,12 +98,9 @@ Kirigami.ApplicationWindow {
} }
} }
Loader { QuickSwitcher {
id: quickView id: quickSwitcher
active: !Kirigami.Settings.isMobile connection: root.connection
sourceComponent: QuickSwitcher {
connection: root.connection
}
} }
Connections { Connections {
@@ -160,8 +159,11 @@ Kirigami.ApplicationWindow {
connection: root.connection connection: root.connection
handleOpenIcon.source: "arrow-right" handleClosedIcon.source: "documentinfo-symbolic"
handleClosedIcon.source: "arrow-left" handleClosedToolTip: i18nc("@action:button", "Show Room Information")
// Default icon is fine, only need to override the tooltip text
handleOpenToolTip: i18nc("@action:button", "Close Room Information Drawer")
// Connect to the onClicked function of the RoomDrawer handle button // Connect to the onClicked function of the RoomDrawer handle button
Connections { Connections {
@@ -221,6 +223,8 @@ Kirigami.ApplicationWindow {
RoomListPage { RoomListPage {
id: roomList id: roomList
onSearch: quickSwitcher.open()
connection: root.connection connection: root.connection
Shortcut { Shortcut {

View File

@@ -6,6 +6,7 @@ import QtQuick.Controls as QQC2
import QtQuick.Layouts import QtQuick.Layouts
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.components
import org.kde.kitemmodels import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat
@@ -19,10 +20,10 @@ QQC2.Dialog {
width: Math.min(700, parent.width) width: Math.min(700, parent.width)
height: 400 height: 400
leftPadding: 0 leftPadding: Kirigami.Units.smallSpacing
rightPadding: 0 rightPadding: Kirigami.Units.smallSpacing
bottomPadding: 1 bottomPadding: Kirigami.Units.smallSpacing
topPadding: 0 topPadding: Kirigami.Units.smallSpacing
anchors.centerIn: applicationWindow().overlay anchors.centerIn: applicationWindow().overlay
@@ -40,53 +41,60 @@ QQC2.Dialog {
roomList.currentIndex = 0; roomList.currentIndex = 0;
} }
header: Kirigami.SearchField { background: DialogRoundedBackground {}
id: searchField
Keys.onDownPressed: { contentItem: ColumnLayout {
roomList.forceActiveFocus(); Kirigami.SearchField {
if (roomList.currentIndex < roomList.count - 1) { id: searchField
roomList.currentIndex++; Layout.fillWidth: true
} else { Keys.onDownPressed: {
roomList.currentIndex = 0; roomList.forceActiveFocus();
if (roomList.currentIndex < roomList.count - 1) {
roomList.currentIndex++;
} else {
roomList.currentIndex = 0;
}
} }
} Keys.onUpPressed: {
Keys.onUpPressed: { if (roomList.currentIndex === 0) {
if (roomList.currentIndex === 0) { roomList.currentIndex = roomList.count - 1;
roomList.currentIndex = roomList.count - 1; } else {
} else { roomList.currentIndex--;
roomList.currentIndex--; }
} }
Keys.onEnterPressed: {
RoomManager.resolveResource(roomList.currentItem.currentRoom.id);
root.close();
}
Keys.onReturnPressed: {
RoomManager.resolveResource(roomList.currentItem.currentRoom.id);
root.close();
}
focusSequence: ""
onTextChanged: RoomManager.sortFilterRoomListModel.filterText = text
} }
Keys.onEnterPressed: {
RoomManager.resolveResource(roomList.currentItem.currentRoom.id);
root.close();
}
Keys.onReturnPressed: {
RoomManager.resolveResource(roomList.currentItem.currentRoom.id);
root.close();
}
focusSequence: ""
onTextChanged: RoomManager.sortFilterRoomListModel.filterText = text
}
QQC2.ScrollView { QQC2.ScrollView {
anchors.fill: parent clip: true
clip: true
Keys.forwardTo: searchField Layout.fillWidth: true
Layout.fillHeight: true
ListView {
id: roomList
currentIndex: 0
highlightMoveDuration: 200
Keys.forwardTo: searchField Keys.forwardTo: searchField
keyNavigationEnabled: true
model: RoomManager.sortFilterRoomListModel
delegate: RoomDelegate { ListView {
connection: root.connection id: roomList
onClicked: root.close()
currentIndex: 0
highlightMoveDuration: 200
Keys.forwardTo: searchField
keyNavigationEnabled: true
model: RoomManager.sortFilterRoomListModel
delegate: RoomDelegate {
connection: root.connection
onClicked: root.close()
showConfigure: false
}
} }
} }
} }

View File

@@ -25,6 +25,8 @@ Delegates.RoundedItemDelegate {
required property string subtitleText required property string subtitleText
required property string displayName required property string displayName
property bool showConfigure: true
property bool collapsed: false property bool collapsed: false
readonly property bool hasNotifications: contextNotificationCount > 0 readonly property bool hasNotifications: contextNotificationCount > 0
@@ -130,7 +132,7 @@ Delegates.RoundedItemDelegate {
QQC2.Button { QQC2.Button {
id: configButton id: configButton
visible: root.hovered && !Kirigami.Settings.isMobile && !Config.compactRoomList && !root.collapsed visible: root.hovered && !Kirigami.Settings.isMobile && !Config.compactRoomList && !root.collapsed && root.showConfigure
text: i18n("Configure room") text: i18n("Configure room")
display: QQC2.Button.IconOnly display: QQC2.Button.IconOnly

View File

@@ -29,6 +29,8 @@ Kirigami.Page {
readonly property bool collapsed: Config.collapsed readonly property bool collapsed: Config.collapsed
signal search
onCurrentWidthChanged: pageStack.defaultColumnWidth = root.currentWidth onCurrentWidthChanged: pageStack.defaultColumnWidth = root.currentWidth
Component.onCompleted: pageStack.defaultColumnWidth = root.currentWidth Component.onCompleted: pageStack.defaultColumnWidth = root.currentWidth
@@ -40,41 +42,41 @@ Kirigami.Page {
} }
function goToNextRoomFiltered(condition) { function goToNextRoomFiltered(condition) {
let index = treeView.currentIndex; let index = treeView.rowAtIndex(RoomManager.sortFilterRoomTreeModel.currentRoomIndex());
while (index++ !== treeView.count - 1) { while (index++ < treeView.rows) {
if (condition(treeView.itemAtIndex(index))) { let item = treeView.itemAtIndex(treeView.index(index, 0))
treeView.currentIndex = index; if (condition(item)) {
treeView.currentItem.clicked(); RoomManager.resolveResource(item.currentRoom.id)
return; return;
} }
} }
} }
function goToPreviousRoomFiltered(condition) { function goToPreviousRoomFiltered(condition) {
let index = treeView.currentIndex; let index = treeView.rowAtIndex(RoomManager.sortFilterRoomTreeModel.currentRoomIndex());
while (index-- !== 0) { while (index-- > 0) {
if (condition(treeView.itemAtIndex(index))) { let item = treeView.itemAtIndex(treeView.index(index, 0))
treeView.currentIndex = index; if (condition(item)) {
treeView.currentItem.clicked(); RoomManager.resolveResource(item.currentRoom.id)
return; return;
} }
} }
} }
function goToNextRoom() { function goToNextRoom() {
goToNextRoomFiltered(item => item.visible); goToNextRoomFiltered(item => (item && item instanceof RoomDelegate));
} }
function goToPreviousRoom() { function goToPreviousRoom() {
goToPreviousRoomFiltered(item => item.visible); goToPreviousRoomFiltered(item => (item && item instanceof RoomDelegate));
} }
function goToNextUnreadRoom() { function goToNextUnreadRoom() {
goToNextRoomFiltered(item => (item.visible && item.hasUnread)); goToNextRoomFiltered(item => (item && item instanceof RoomDelegate && item.hasUnread));
} }
function goToPreviousUnreadRoom() { function goToPreviousUnreadRoom() {
goToPreviousRoomFiltered(item => (item.visible && item.hasUnread)); goToPreviousRoomFiltered(item => (item && item instanceof RoomDelegate && item.hasUnread));
} }
titleDelegate: Loader { titleDelegate: Loader {
@@ -89,6 +91,10 @@ Kirigami.Page {
function onCurrentSpaceChanged() { function onCurrentSpaceChanged() {
treeView.expandRecursively(); treeView.expandRecursively();
} }
function onCurrentRoomChanged() {
treeView.positionViewAtIndex(RoomManager.sortFilterRoomTreeModel.currentRoomIndex(), TableView.AlignVCenter)
}
} }
RowLayout { RowLayout {
@@ -160,22 +166,6 @@ Kirigami.Page {
} }
} }
DelegateChoice {
roleValue: "search"
delegate: Delegates.RoundedItemDelegate {
required property TreeView treeView
implicitWidth: treeView.width
onClicked: quickView.item.open()
contentItem: Kirigami.Icon {
width: Kirigami.Units.iconSizes.smallMedium
height: Kirigami.Units.iconSizes.smallMedium
source: "search"
}
}
}
DelegateChoice { DelegateChoice {
roleValue: "addDirect" roleValue: "addDirect"
delegate: Delegates.RoundedItemDelegate { delegate: Delegates.RoundedItemDelegate {
@@ -308,6 +298,8 @@ Kirigami.Page {
collapsed: root.collapsed collapsed: root.collapsed
connection: root.connection connection: root.connection
onSearch: root.search()
onTextChanged: newText => { onTextChanged: newText => {
RoomManager.sortFilterRoomTreeModel.filterText = newText; RoomManager.sortFilterRoomTreeModel.filterText = newText;
treeView.expandRecursively(); treeView.expandRecursively();

View File

@@ -21,269 +21,281 @@ QQC2.Control {
topPadding: 0 topPadding: 0
bottomPadding: 0 bottomPadding: 0
contentItem: Loader { onActiveFocusChanged: if (activeFocus) {
id: sidebarColumn notificationsButton.forceActiveFocus();
z: 0 }
sourceComponent: ColumnLayout { contentItem: ColumnLayout {
spacing: 0 spacing: 0
QQC2.ScrollView { QQC2.ScrollView {
id: scrollView id: scrollView
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
QQC2.ScrollBar.vertical.policy: QQC2.ScrollBar.AlwaysOff QQC2.ScrollBar.vertical.policy: QQC2.ScrollBar.AlwaysOff
QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff
contentWidth: -1 // disable horizontal scroll contentWidth: -1 // disable horizontal scroll
background: Rectangle { background: Rectangle {
color: Kirigami.Theme.backgroundColor color: Kirigami.Theme.backgroundColor
Kirigami.Theme.colorSet: Kirigami.Theme.View Kirigami.Theme.colorSet: Kirigami.Theme.View
}
ColumnLayout {
id: column
width: scrollView.width
spacing: 0
AvatarTabButton {
id: notificationsButton
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
Layout.topMargin: Kirigami.Units.smallSpacing / 2
Layout.bottomMargin: Kirigami.Units.smallSpacing / 2
text: i18n("View notifications")
contentItem: Kirigami.Icon {
source: "notifications"
}
activeFocusOnTab: true
onClicked: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'NotificationsView'), {
connection: root.connection
}, {
title: i18nc("@title", "Notifications")
})
} }
ColumnLayout { Kirigami.Separator {
id: column Layout.fillWidth: true
width: scrollView.width Layout.leftMargin: Kirigami.Units.smallSpacing
spacing: 0 Layout.rightMargin: Kirigami.Units.smallSpacing
}
AvatarTabButton { AvatarTabButton {
id: notificationsButton id: allRoomButton
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
Layout.topMargin: Kirigami.Units.smallSpacing / 2
text: i18n("Home")
contentItem: Kirigami.Icon {
source: "user-home-symbolic"
}
activeFocusOnTab: true
checked: RoomManager.currentSpace.length === 0
onClicked: {
RoomManager.currentSpace = "";
root.selectionChanged();
}
QQC2.Label {
id: homeNotificationCountLabel
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
z: 1
width: Math.max(homeNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
height: Kirigami.Units.iconSizes.smallMedium
text: root.connection.homeNotifications > 0 ? root.connection.homeNotifications : ""
visible: root.connection.homeNotifications > 0 && (RoomManager.currentSpace.length > 0 || root.showDirectChats === true)
color: Kirigami.Theme.textColor
horizontalAlignment: Text.AlignHCenter
background: Rectangle {
visible: true
Kirigami.Theme.colorSet: Kirigami.Theme.Button
Kirigami.Theme.inherit: false
color: root.connection.homeHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
radius: height / 2
}
TextMetrics {
id: homeNotificationCountTextMetrics
text: homeNotificationCountLabel.text
}
}
}
AvatarTabButton {
id: directChatButton
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
Layout.topMargin: Kirigami.Units.smallSpacing / 2
text: i18nc("@button View all one-on-one chats with your friends.", "Friends")
contentItem: Kirigami.Icon {
source: "system-users"
}
activeFocusOnTab: true
checked: RoomManager.currentSpace === "DM"
onClicked: {
RoomManager.currentSpace = "DM";
root.selectionChanged();
}
QQC2.Label {
id: directChatNotificationCountLabel
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
z: 1
width: Math.max(directChatNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
height: Kirigami.Units.iconSizes.smallMedium
text: root.connection.directChatNotifications > 0 ? root.connection.directChatNotifications : ""
visible: (root.connection.directChatNotifications > 0 || root.connection.directChatInvites) && RoomManager.currentSpace !== "DM"
color: Kirigami.Theme.textColor
horizontalAlignment: Text.AlignHCenter
background: Rectangle {
visible: true
Kirigami.Theme.colorSet: Kirigami.Theme.Button
Kirigami.Theme.inherit: false
color: root.connection.directChatsHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
radius: height / 2
}
TextMetrics {
id: directChatNotificationCountTextMetrics
text: directChatNotificationCountLabel.text
}
}
}
Repeater {
model: RoomManager.sortFilterSpaceListModel
delegate: AvatarTabButton {
id: spaceDelegate
required property string displayName
required property string avatar
required property string roomId
required property var currentRoom
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing Layout.maximumHeight: width - Kirigami.Units.smallSpacing
Layout.topMargin: Kirigami.Units.smallSpacing / 2
Layout.bottomMargin: Kirigami.Units.smallSpacing / 2
text: i18n("View notifications")
contentItem: Kirigami.Icon {
source: "notifications"
}
onClicked: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'NotificationsView'), { text: displayName
source: avatar ? ("image://mxc/" + avatar) : ""
activeFocusOnTab: true
onSelected: {
RoomManager.resolveResource(spaceDelegate.roomId);
RoomManager.currentSpace = spaceDelegate.roomId;
}
checked: RoomManager.currentSpace === roomId
onContextMenuRequested: root.createContextMenu(currentRoom)
QQC2.Label {
id: notificationCountLabel
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
z: 1
width: Math.max(notificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
height: Kirigami.Units.iconSizes.smallMedium
text: spaceDelegate.currentRoom.childrenNotificationCount > 0 ? spaceDelegate.currentRoom.childrenNotificationCount : ""
visible: spaceDelegate.currentRoom.childrenNotificationCount > 0 && RoomManager.currentSpace != spaceDelegate.roomId
color: Kirigami.Theme.textColor
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
background: Rectangle {
visible: true
Kirigami.Theme.colorSet: Kirigami.Theme.Button
Kirigami.Theme.inherit: false
color: spaceDelegate.currentRoom.childrenHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
radius: height / 2
}
TextMetrics {
id: notificationCountTextMetrics
text: notificationCountLabel.text
}
}
}
}
AvatarTabButton {
id: recommendedSpaceButton
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
activeFocusOnTab: true
visible: SpaceHierarchyCache.recommendedSpaceId.length > 0 && !root.connection.room(SpaceHierarchyCache.recommendedSpaceId) && !SpaceHierarchyCache.recommendedSpaceHidden
text: i18nc("Join <name of a space>", "Join %1", SpaceHierarchyCache.recommendedSpaceDisplayName)
source: SpaceHierarchyCache.recommendedSpaceAvatar.length > 0 ? root.connection.makeMediaUrl(SpaceHierarchyCache.recommendedSpaceAvatar) : ""
onClicked: {
recommendedSpaceDialogComponent.createObject(QQC2.ApplicationWindow.overlay, {
connection: root.connection connection: root.connection
}, { }).open();
title: i18nc("@title", "Notifications")
})
} }
Component {
Kirigami.Separator { id: recommendedSpaceDialogComponent
Layout.fillWidth: true RecommendedSpaceDialog {}
Layout.leftMargin: Kirigami.Units.smallSpacing
Layout.rightMargin: Kirigami.Units.smallSpacing
} }
Rectangle {
AvatarTabButton { color: Kirigami.Theme.backgroundColor
id: allRoomButton width: Kirigami.Units.gridUnit * 1.5
height: width
Layout.fillWidth: true anchors.bottom: parent.bottom
Layout.preferredHeight: width - Kirigami.Units.smallSpacing anchors.bottomMargin: Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing anchors.rightMargin: Kirigami.Units.smallSpacing * 2
Layout.topMargin: Kirigami.Units.smallSpacing / 2 anchors.right: parent.right
radius: width / 2
text: i18n("Home") z: parent.z + 1
contentItem: Kirigami.Icon { Kirigami.Icon {
source: "user-home-symbolic" anchors.fill: parent
} z: parent + 1
checked: RoomManager.currentSpace.length === 0
onClicked: {
RoomManager.currentSpace = "";
root.selectionChanged();
}
QQC2.Label {
id: homeNotificationCountLabel
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
z: 1
width: Math.max(homeNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
height: Kirigami.Units.iconSizes.smallMedium
text: root.connection.homeNotifications > 0 ? root.connection.homeNotifications : ""
visible: root.connection.homeNotifications > 0 && (RoomManager.currentSpace.length > 0 || root.showDirectChats === true)
color: Kirigami.Theme.textColor
horizontalAlignment: Text.AlignHCenter
background: Rectangle {
visible: true
Kirigami.Theme.colorSet: Kirigami.Theme.Button
Kirigami.Theme.inherit: false
color: root.connection.homeHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
radius: height / 2
}
TextMetrics {
id: homeNotificationCountTextMetrics
text: homeNotificationCountLabel.text
}
}
}
AvatarTabButton {
id: directChatButton
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
Layout.topMargin: Kirigami.Units.smallSpacing / 2
text: i18nc("@button View all one-on-one chats with your friends.", "Friends")
contentItem: Kirigami.Icon {
source: "system-users"
}
checked: RoomManager.currentSpace === "DM"
onClicked: {
RoomManager.currentSpace = "DM";
root.selectionChanged();
}
QQC2.Label {
id: directChatNotificationCountLabel
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
z: 1
width: Math.max(directChatNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
height: Kirigami.Units.iconSizes.smallMedium
text: root.connection.directChatNotifications > 0 ? root.connection.directChatNotifications : ""
visible: (root.connection.directChatNotifications > 0 || root.connection.directChatInvites) && RoomManager.currentSpace !== "DM"
color: Kirigami.Theme.textColor
horizontalAlignment: Text.AlignHCenter
background: Rectangle {
visible: true
Kirigami.Theme.colorSet: Kirigami.Theme.Button
Kirigami.Theme.inherit: false
color: root.connection.directChatsHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
radius: height / 2
}
TextMetrics {
id: directChatNotificationCountTextMetrics
text: directChatNotificationCountLabel.text
}
}
}
Repeater {
model: RoomManager.sortFilterSpaceListModel
delegate: AvatarTabButton {
id: spaceDelegate
required property string displayName
required property string avatar
required property string roomId
required property var currentRoom
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
text: displayName
source: avatar ? ("image://mxc/" + avatar) : ""
onSelected: {
RoomManager.resolveResource(spaceDelegate.roomId);
RoomManager.currentSpace = spaceDelegate.roomId;
}
checked: RoomManager.currentSpace === roomId
onContextMenuRequested: root.createContextMenu(currentRoom)
QQC2.Label {
id: notificationCountLabel
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
z: 1
width: Math.max(notificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
height: Kirigami.Units.iconSizes.smallMedium
text: spaceDelegate.currentRoom.childrenNotificationCount > 0 ? spaceDelegate.currentRoom.childrenNotificationCount : ""
visible: spaceDelegate.currentRoom.childrenNotificationCount > 0 && RoomManager.currentSpace != spaceDelegate.roomId
color: Kirigami.Theme.textColor
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
background: Rectangle {
visible: true
Kirigami.Theme.colorSet: Kirigami.Theme.Button
Kirigami.Theme.inherit: false
color: spaceDelegate.currentRoom.childrenHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
radius: height / 2
}
TextMetrics {
id: notificationCountTextMetrics
text: notificationCountLabel.text
}
}
}
}
AvatarTabButton {
id: recommendedSpaceButton
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
visible: SpaceHierarchyCache.recommendedSpaceId.length > 0 && !root.connection.room(SpaceHierarchyCache.recommendedSpaceId) && !SpaceHierarchyCache.recommendedSpaceHidden
text: i18nc("Join <name of a space>", "Join %1", SpaceHierarchyCache.recommendedSpaceDisplayName)
source: SpaceHierarchyCache.recommendedSpaceAvatar.length > 0 ? root.connection.makeMediaUrl(SpaceHierarchyCache.recommendedSpaceAvatar) : ""
onClicked: {
recommendedSpaceDialogComponent.createObject(QQC2.ApplicationWindow.overlay, {
connection: root.connection
}).open();
}
Component {
id: recommendedSpaceDialogComponent
RecommendedSpaceDialog {}
}
Rectangle {
color: Kirigami.Theme.backgroundColor
width: Kirigami.Units.gridUnit * 1.5
height: width
anchors.bottom: parent.bottom
anchors.bottomMargin: Kirigami.Units.smallSpacing
anchors.rightMargin: Kirigami.Units.smallSpacing * 2
anchors.right: parent.right
radius: width / 2
z: parent.z + 1
Kirigami.Icon {
anchors.fill: parent
z: parent + 1
source: "list-add"
}
}
}
Kirigami.Separator {
Layout.fillWidth: true
Layout.topMargin: Kirigami.Units.smallSpacing / 2
Layout.bottomMargin: Kirigami.Units.smallSpacing / 2
Layout.leftMargin: Kirigami.Units.smallSpacing
Layout.rightMargin: Kirigami.Units.smallSpacing
}
AvatarTabButton {
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
text: i18n("Create a space")
contentItem: Kirigami.Icon {
source: "list-add" source: "list-add"
} }
onClicked: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'CreateRoomDialog'), {
connection: root.connection,
isSpace: true,
title: i18nc("@title", "Create a Space")
}, {
title: i18nc("@title", "Create a Space")
})
} }
} }
Kirigami.Separator {
Layout.fillWidth: true
Layout.topMargin: Kirigami.Units.smallSpacing / 2
Layout.bottomMargin: Kirigami.Units.smallSpacing / 2
Layout.leftMargin: Kirigami.Units.smallSpacing
Layout.rightMargin: Kirigami.Units.smallSpacing
}
AvatarTabButton {
Layout.fillWidth: true
Layout.preferredHeight: width - Kirigami.Units.smallSpacing
Layout.maximumHeight: width - Kirigami.Units.smallSpacing
text: i18n("Create a space")
contentItem: Kirigami.Icon {
source: "list-add"
}
activeFocusOnTab: true
onClicked: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'CreateRoomDialog'), {
connection: root.connection,
isSpace: true,
title: i18nc("@title", "Create a Space")
}, {
title: i18nc("@title", "Create a Space")
})
}
} }
} }
} }

View File

@@ -312,46 +312,6 @@ QQC2.ScrollView {
} }
} }
Rectangle {
FancyEffectsContainer {
id: fancyEffectsContainer
anchors.fill: parent
z: 100
enabled: Config.showFancyEffects
function processFancyEffectsReason(fancyEffect) {
if (fancyEffect === "snowflake") {
fancyEffectsContainer.showSnowEffect();
}
if (fancyEffect === "fireworks") {
fancyEffectsContainer.showFireworksEffect();
}
if (fancyEffect === "confetti") {
fancyEffectsContainer.showConfettiEffect();
}
}
Connections {
//enabled: Config.showFancyEffects
target: root.timelineModel.messageEventModel
function onFancyEffectsReasonFound(fancyEffect) {
fancyEffectsContainer.processFancyEffectsReason(fancyEffect);
}
}
Connections {
enabled: Config.showFancyEffects
target: actionsHandler
function onShowEffect(fancyEffect) {
fancyEffectsContainer.processFancyEffectsReason(fancyEffect);
}
}
}
}
function goToLastMessage() { function goToLastMessage() {
root.currentRoom.markAllMessagesAsRead(); root.currentRoom.markAllMessagesAsRead();
// scroll to the very end, i.e to messageListView.YEnd // scroll to the very end, i.e to messageListView.YEnd

Some files were not shown because too many files have changed in this diff Show More