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",
"url": "https://github.com/quotient-im/libQuotient.git",
"branch": "dev",
"branch": "0.8.x",
"disable-submodules": true
}
],

View File

@@ -9,7 +9,7 @@ cmake_minimum_required(VERSION 3.16)
# KDE Applications version, managed by release script.
set(RELEASE_SERVICE_VERSION_MAJOR "24")
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}")
project(NeoChat VERSION ${RELEASE_SERVICE_VERSION})

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\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"
"Last-Translator: Vit Pelcak <vit@pelcak.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"
"X-Generator: Lokalize 23.08.3\n"
#: src/controller.cpp:134
#: src/controller.cpp:133
#, kde-format
msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are "
@@ -25,47 +25,47 @@ msgctxt ""
msgid "Receiving notifications for new messages"
msgstr ""
#: src/controller.cpp:213
#: src/controller.cpp:212
#, kde-format
msgid "Network Error: %1"
msgstr "Chyba sítě: %1"
#: src/controller.cpp:235
#: src/controller.cpp:234
#, kde-format
msgid "Access token wasn't found"
msgstr ""
#: src/controller.cpp:235
#: src/controller.cpp:234
#, kde-format
msgid "Maybe it was deleted?"
msgstr ""
#: src/controller.cpp:239
#: src/controller.cpp:238
#, kde-format
msgid "Access to keychain was denied."
msgstr ""
#: src/controller.cpp:239
#: src/controller.cpp:238
#, kde-format
msgid "Please allow NeoChat to read the access token"
msgstr ""
#: src/controller.cpp:242
#: src/controller.cpp:241
#, kde-format
msgid "No keychain available."
msgstr ""
#: src/controller.cpp:242
#: src/controller.cpp:241
#, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr ""
#: src/controller.cpp:245
#: src/controller.cpp:244
#, kde-format
msgid "Unable to read access token"
msgstr ""
#: src/controller.cpp:341
#: src/controller.cpp:340
#, kde-format
msgid "Receiving push notifications"
msgstr ""
@@ -82,19 +82,31 @@ msgctxt "@title:window"
msgid "Event Source"
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
msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification"
msgstr ""
#: src/devtools/DebugOptions.qml:21
#: src/devtools/DebugOptions.qml:27
#, kde-format
msgid ""
"Allow the user to start a verification session with devices that were "
"already verified"
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
#, kde-format
msgid "Developer Tools"
@@ -142,28 +154,28 @@ msgstr "Vyberte místnost"
msgid "Room"
msgstr "Pokoj"
#: src/devtools/RoomData.qml:35
#: src/devtools/RoomData.qml:36
#, kde-format
msgid "Room Id: %1"
msgstr ""
#: src/devtools/RoomData.qml:39
#: src/devtools/RoomData.qml:40
#, kde-format
msgid "Room Account Data"
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
#, kde-format
msgid "Event Source"
msgstr ""
#: src/devtools/RoomData.qml:60
#: src/devtools/RoomData.qml:61
#, kde-format
msgid "Room State"
msgstr ""
#: src/devtools/RoomData.qml:74
#: src/devtools/RoomData.qml:75
#, kde-format
msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type"
@@ -172,7 +184,7 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/devtools/RoomData.qml:83
#: src/devtools/RoomData.qml:84
#, kde-format
msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information"
@@ -206,49 +218,44 @@ msgctxt ""
msgid "State Keys"
msgstr ""
#: src/enums/neochatroomtype.h:60
#: src/enums/neochatroomtype.h:59
#, kde-format
msgid "Invited"
msgstr ""
#: src/enums/neochatroomtype.h:62
#: src/enums/neochatroomtype.h:61
#, kde-format
msgid "Favorite"
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
msgid "Friends"
msgstr "Přátelé"
#: src/enums/neochatroomtype.h:66
#: src/enums/neochatroomtype.h:65
#, kde-format
msgid "Normal"
msgstr "Normální"
#: src/enums/neochatroomtype.h:68
#: src/enums/neochatroomtype.h:67
#, kde-format
msgid "Low priority"
msgstr "Nízká priorita"
#: src/enums/neochatroomtype.h:70
#: src/enums/neochatroomtype.h:69
#, kde-format
msgid "Spaces"
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/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format
msgid "<i>[This message was deleted]</i>"
msgstr ""
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466
#: src/models/messageeventmodel.cpp:437
#, kde-format
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
@@ -622,12 +629,12 @@ msgctxt "The location being downloaded to"
msgid "Destination"
msgstr "Cíl"
#: src/login.cpp:85 src/login.cpp:100
#: src/login.cpp:84 src/login.cpp:99
#, kde-format
msgid "Network Error"
msgstr "Chyba sítě"
#: src/login.cpp:93
#: src/login.cpp:92
#, kde-format
msgid "Login Failed: %1"
msgstr "Přihlášení selhalo: %1"
@@ -947,315 +954,315 @@ msgstr ""
msgid "Share a URL to Matrix"
msgstr ""
#: src/matriximageprovider.cpp:40
#: src/matriximageprovider.cpp:38
#, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr ""
#: src/matriximageprovider.cpp:98
#: src/matriximageprovider.cpp:96
#, kde-format
msgid "Image request has been cancelled"
msgstr ""
#: src/models/actionsmodel.cpp:24
#: src/models/actionsmodel.cpp:25
#, kde-format
msgid "Leaving this room."
msgstr ""
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284
#: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format
msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias."
msgstr ""
#: src/models/actionsmodel.cpp:39
#: src/models/actionsmodel.cpp:40
#, kde-format
msgctxt "Leaving room <roomname>."
msgid "Leaving room %1."
msgstr ""
#: src/models/actionsmodel.cpp:42
#: src/models/actionsmodel.cpp:43
#, kde-format
msgctxt "Room <roomname> not found"
msgid "Room %1 not found."
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
msgid "No new nickname provided, no changes will happen."
msgstr ""
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182
#: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>"
msgstr "< zpráva>"
#: src/models/actionsmodel.cpp:66
#: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:86
#: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:116
#: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow"
msgstr ""
#: src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow"
msgstr ""
#: src/models/actionsmodel.cpp:147
#: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text"
msgstr ""
#: src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler"
msgstr ""
#: src/models/actionsmodel.cpp:173
#: src/models/actionsmodel.cpp:174
msgid "Sends the given emote"
msgstr ""
#: src/models/actionsmodel.cpp:183
#: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice"
msgstr ""
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494
#: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format
msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id."
msgstr ""
#: src/models/actionsmodel.cpp:197
#: src/models/actionsmodel.cpp:198
#, kde-format
msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room."
msgstr ""
#: src/models/actionsmodel.cpp:201
#: src/models/actionsmodel.cpp:202
#, kde-format
msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:205
#: src/models/actionsmodel.cpp:206
#, kde-format
msgid "You are already in this room."
msgstr ""
#: src/models/actionsmodel.cpp:209
#: src/models/actionsmodel.cpp:210
#, kde-format
msgctxt "<user> is already in this room."
msgid "%1 is already in this room."
msgstr ""
#: src/models/actionsmodel.cpp:213
#: src/models/actionsmodel.cpp:214
#, kde-format
msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room"
msgstr ""
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482
#: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>"
msgstr ""
#: src/models/actionsmodel.cpp:219
#: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room"
msgstr ""
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291
#: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format
msgctxt "Joining room <roomname>."
msgid "Joining room %1."
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>"
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"
msgstr ""
#: src/models/actionsmodel.cpp:262
#: src/models/actionsmodel.cpp:263
#, kde-format
msgctxt "Knocking room <roomname>."
msgid "Knocking room %1."
msgstr "Klepete na místnost %1."
#: src/models/actionsmodel.cpp:274
#: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]"
msgstr ""
#: src/models/actionsmodel.cpp:275
#: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room"
msgstr ""
#: src/models/actionsmodel.cpp:288
#: src/models/actionsmodel.cpp:289
#, kde-format
msgctxt "You are already in room <roomname>."
msgid "You are already in room %1."
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>]"
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"
msgstr ""
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336
#: src/models/actionsmodel.cpp:344
#: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:345
msgid "<display name>"
msgstr ""
#: src/models/actionsmodel.cpp:329
#: src/models/actionsmodel.cpp:330
msgid "Changes your global display name"
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"
msgstr ""
#: src/models/actionsmodel.cpp:358
#: src/models/actionsmodel.cpp:359
#, kde-format
msgctxt "<username> is already ignored."
msgid "%1 is already ignored."
msgstr ""
#: src/models/actionsmodel.cpp:362
#: src/models/actionsmodel.cpp:363
#, kde-format
msgctxt "<username> is now ignored"
msgid "%1 is now ignored."
msgstr ""
#: src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:369
msgid "Ignores the given user"
msgstr ""
#: src/models/actionsmodel.cpp:381
#: src/models/actionsmodel.cpp:382
#, kde-format
msgctxt "<username> is not ignored."
msgid "%1 is not ignored."
msgstr ""
#: src/models/actionsmodel.cpp:385
#: src/models/actionsmodel.cpp:386
#, kde-format
msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored."
msgstr ""
#: src/models/actionsmodel.cpp:391
#: src/models/actionsmodel.cpp:392
msgid "Unignores the given user"
msgstr ""
#: src/models/actionsmodel.cpp:410
#: src/models/actionsmodel.cpp:411
msgid "<reaction text>"
msgstr ""
#: src/models/actionsmodel.cpp:411
#: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text"
msgstr ""
#: src/models/actionsmodel.cpp:426
#: src/models/actionsmodel.cpp:427
#, kde-format
msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:434
#: src/models/actionsmodel.cpp:435
#, kde-format
msgid "You are not allowed to ban users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:440
#: src/models/actionsmodel.cpp:441
#, kde-format
msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room."
msgstr ""
#: src/models/actionsmodel.cpp:444
#: src/models/actionsmodel.cpp:445
#, kde-format
msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room."
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>]"
msgstr ""
#: src/models/actionsmodel.cpp:450
#: src/models/actionsmodel.cpp:451
msgid "Bans the given user"
msgstr ""
#: src/models/actionsmodel.cpp:467
#: src/models/actionsmodel.cpp:468
#, kde-format
msgid "You are not allowed to unban users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:472
#: src/models/actionsmodel.cpp:473
#, kde-format
msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:476
#: src/models/actionsmodel.cpp:477
#, kde-format
msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:483
#: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user"
msgstr ""
#: src/models/actionsmodel.cpp:498
#: src/models/actionsmodel.cpp:499
#, kde-format
msgid "You cannot kick yourself from the room."
msgstr ""
#: src/models/actionsmodel.cpp:502
#: src/models/actionsmodel.cpp:503
#, kde-format
msgctxt "<username> is not in this room"
msgid "%1 is not in this room."
msgstr ""
#: src/models/actionsmodel.cpp:511
#: src/models/actionsmodel.cpp:512
#, kde-format
msgid "You are not allowed to kick users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:517
#: src/models/actionsmodel.cpp:518
#, kde-format
msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room."
msgstr ""
#: src/models/actionsmodel.cpp:521
#: src/models/actionsmodel.cpp:522
#, kde-format
msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room."
msgstr ""
#: src/models/actionsmodel.cpp:527
#: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room"
msgstr ""
@@ -1337,7 +1344,7 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr "Vlastní emotikony"
#: src/models/messagefiltermodel.cpp:142
#: src/models/messagefiltermodel.cpp:153
#, kde-format
msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1"
@@ -1346,7 +1353,7 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/models/messagefiltermodel.cpp:146
#: src/models/messagefiltermodel.cpp:157
#, kde-format
msgctxt "n users"
msgid " %1 user "
@@ -1355,25 +1362,25 @@ msgstr[0] "%1 uživatel "
msgstr[1] "%1 uživatelé "
msgstr[2] "%1 uživatelů "
#: src/models/messagefiltermodel.cpp:155
#: src/models/messagefiltermodel.cpp:166
#, kde-format
msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", "
msgstr ", "
#: src/models/messagefiltermodel.cpp:159
#: src/models/messagefiltermodel.cpp:170
#, kde-format
msgctxt "[action 1, action 2] or [action 3]"
msgid " or "
msgstr " nebo "
#: src/models/messagefiltermodel.cpp:159
#: src/models/messagefiltermodel.cpp:170
#, kde-format
msgctxt "[action 1, action 2] and [action 3]"
msgid " and "
msgstr " a "
#: src/models/messagefiltermodel.cpp:165
#: src/models/messagefiltermodel.cpp:176
#, kde-format
msgctxt ""
"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"
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
msgid "%1: %2"
msgstr "%1: %2"
@@ -1566,13 +1573,12 @@ msgstr "%1 (%2)"
msgid "Open 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
msgid "Edit this account"
msgstr ""
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59
#: src/settings/AccountsPage.qml:34
#: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#, kde-format
msgid "Account editor"
msgstr "Editor účtů"
@@ -1583,7 +1589,7 @@ msgid "Notification settings"
msgstr "Nastavení oznamování"
#: 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
msgid "Configure"
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/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281
#: src/qml/SpaceDrawer.qml:283
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:296
#, kde-format
msgctxt "@title"
msgid "Create a Space"
@@ -1990,7 +1996,7 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: 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
#, kde-format
msgctxt "@title"
@@ -2161,21 +2167,21 @@ msgid "They don't match"
msgstr ""
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214
#: src/qml/RoomListPage.qml:204
#, kde-format
msgid "Explore rooms"
msgstr ""
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: 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
msgid "Find your friends"
msgstr ""
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190
#: src/qml/RoomListPage.qml:235
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:225
#, kde-format
msgctxt "@title"
msgid "Find your friends"
@@ -2202,11 +2208,37 @@ msgctxt "@title"
msgid "Scan a QR Code"
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
msgid "Create rooms and chats"
msgstr "Vytvářejte místnosti a rozhovory"
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr "Hledat"
#: src/qml/ExploreComponentMobile.qml:79
#, kde-format
msgid "Create New"
@@ -2562,46 +2594,62 @@ msgstr "Umístění"
msgid "There are no locations shared in this room."
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
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/Main.qml:321
#: src/qml/Main.qml:325
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/Main.qml:326
#: src/qml/Main.qml:330
#, kde-format
msgid ""
"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."
msgstr ""
#: src/qml/Main.qml:331
#: src/qml/Main.qml:335
#, kde-format
msgid "Open"
msgstr "Otevřít"
#: src/qml/Main.qml:358
#: src/qml/Main.qml:362
#, kde-format
msgid "Start a chat"
msgstr "Zahájit rozhovor"
#: src/qml/Main.qml:360
#: src/qml/Main.qml:364
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Přejete si začít rozhovor s %1?"
#: src/qml/Main.qml:386
#: src/qml/Main.qml:390
#, kde-format
msgctxt "@info screenreader"
msgid "The currently selected link"
msgstr ""
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68
#: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format
msgctxt "@title"
msgid "Share"
@@ -2686,7 +2734,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state"
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
msgctxt "@title"
msgid "Notifications"
@@ -2841,12 +2889,12 @@ msgstr "Nahlásit zprávu"
msgid "Reason for reporting this message"
msgstr ""
#: src/qml/RoomDelegate.qml:101
#: src/qml/RoomDelegate.qml:103
#, kde-format
msgid "Muted room"
msgstr ""
#: src/qml/RoomDelegate.qml:134
#: src/qml/RoomDelegate.qml:136
#, kde-format
msgid "Configure room"
msgstr ""
@@ -2949,33 +2997,33 @@ msgstr[2] "%1 členů"
msgid "No member count"
msgstr "Žádný počet členů"
#: src/qml/RoomListPage.qml:205
#: src/qml/RoomListPage.qml:195
#, kde-format
msgid "No friends found"
msgstr ""
#: src/qml/RoomListPage.qml:205
#: src/qml/RoomListPage.qml:195
#, kde-format
msgid "No rooms found"
msgstr ""
#: src/qml/RoomListPage.qml:207
#: src/qml/RoomListPage.qml:197
#, kde-format
msgid ""
"You haven't added any of your friends yet, click below to search for them."
msgstr ""
#: src/qml/RoomListPage.qml:207
#: src/qml/RoomListPage.qml:197
#, kde-format
msgid "Join some rooms to get started"
msgstr ""
#: src/qml/RoomListPage.qml:214
#: src/qml/RoomListPage.qml:204
#, kde-format
msgid "Search in room directory"
msgstr ""
#: src/qml/RoomListPage.qml:231
#: src/qml/RoomListPage.qml:221
#, kde-format
msgid "Search in friend directory"
msgstr ""
@@ -3151,24 +3199,24 @@ msgstr "Sdílená adresa obrázku je <a href='%1'>%1</a>"
msgid "View notifications"
msgstr "Zobrazit upozornění"
#: src/qml/SpaceDrawer.qml:84
#: src/qml/SpaceDrawer.qml:86
#, kde-format
msgid "Home"
msgstr "Domů"
#: src/qml/SpaceDrawer.qml:130
#: src/qml/SpaceDrawer.qml:134
#, kde-format
msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends"
msgstr ""
#: src/qml/SpaceDrawer.qml:232
#: src/qml/SpaceDrawer.qml:242
#, kde-format
msgctxt "Join <name of a space>"
msgid "Join %1"
msgstr ""
#: src/qml/SpaceDrawer.qml:274
#: src/qml/SpaceDrawer.qml:284
#, kde-format
msgid "Create a space"
msgstr ""
@@ -3447,12 +3495,19 @@ msgstr ""
msgid "Copy link"
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
msgid "Switch User"
msgstr "Přepnout uživatele"
#: src/qml/UserInfo.qml:111
#: src/qml/UserInfo.qml:98
#, kde-format
msgid "Open Settings"
msgstr "Otevřít nastavení"
@@ -3865,12 +3920,7 @@ msgstr "Kompaktní"
msgid "Use compact room list"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:232
#, kde-format
msgid "Show fancy effects in chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:249
#: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Use transparent chat page"
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.
#
# Opačně to nedává smysl.
#: src/settings/AppearanceSettingsPage.qml:270
#: src/settings/AppearanceSettingsPage.qml:254
#, kde-format
msgid "Transparency"
msgstr "Průhlednost"
#: src/settings/AppearanceSettingsPage.qml:289
#: src/settings/AppearanceSettingsPage.qml:273
#, kde-format
msgid "Only enabled if the transparent chat page is enabled."
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:306
#: src/settings/AppearanceSettingsPage.qml:290
#, kde-format
msgid "Show your messages on the right"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:322
#: src/settings/AppearanceSettingsPage.qml:306
#, kde-format
msgid "Show links preview in the chat messages"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:332
#: src/settings/AppearanceSettingsPage.qml:316
#, kde-format
msgid "Show Avatar"
msgstr "Zobrazit avatara"
#: src/settings/AppearanceSettingsPage.qml:336
#: src/settings/AppearanceSettingsPage.qml:320
#, kde-format
msgid "In chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:346
#: src/settings/AppearanceSettingsPage.qml:330
#, kde-format
msgid "In sidebar"
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 ""
"Project-Id-Version: neochat\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"
"Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n"
"Language-Team: Japanese <kde-jp@kde.org>\n"
@@ -14,7 +14,7 @@ msgstr ""
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
#: src/controller.cpp:134
#: src/controller.cpp:133
#, kde-format
msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are "
@@ -22,47 +22,47 @@ msgctxt ""
msgid "Receiving notifications for new messages"
msgstr ""
#: src/controller.cpp:213
#: src/controller.cpp:212
#, kde-format
msgid "Network Error: %1"
msgstr ""
#: src/controller.cpp:235
#: src/controller.cpp:234
#, kde-format
msgid "Access token wasn't found"
msgstr ""
#: src/controller.cpp:235
#: src/controller.cpp:234
#, kde-format
msgid "Maybe it was deleted?"
msgstr ""
#: src/controller.cpp:239
#: src/controller.cpp:238
#, kde-format
msgid "Access to keychain was denied."
msgstr ""
#: src/controller.cpp:239
#: src/controller.cpp:238
#, kde-format
msgid "Please allow NeoChat to read the access token"
msgstr ""
#: src/controller.cpp:242
#: src/controller.cpp:241
#, kde-format
msgid "No keychain available."
msgstr ""
#: src/controller.cpp:242
#: src/controller.cpp:241
#, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr ""
#: src/controller.cpp:245
#: src/controller.cpp:244
#, kde-format
msgid "Unable to read access token"
msgstr ""
#: src/controller.cpp:341
#: src/controller.cpp:340
#, kde-format
msgid "Receiving push notifications"
msgstr ""
@@ -79,19 +79,31 @@ msgctxt "@title:window"
msgid "Event Source"
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
msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification"
msgstr ""
#: src/devtools/DebugOptions.qml:21
#: src/devtools/DebugOptions.qml:27
#, kde-format
msgid ""
"Allow the user to start a verification session with devices that were "
"already verified"
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
#, kde-format
msgid "Developer Tools"
@@ -138,35 +150,35 @@ msgstr ""
msgid "Room"
msgstr ""
#: src/devtools/RoomData.qml:35
#: src/devtools/RoomData.qml:36
#, kde-format
msgid "Room Id: %1"
msgstr ""
#: src/devtools/RoomData.qml:39
#: src/devtools/RoomData.qml:40
#, kde-format
msgid "Room Account Data"
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
#, kde-format
msgid "Event Source"
msgstr ""
#: src/devtools/RoomData.qml:60
#: src/devtools/RoomData.qml:61
#, kde-format
msgid "Room State"
msgstr ""
#: src/devtools/RoomData.qml:74
#: src/devtools/RoomData.qml:75
#, kde-format
msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type"
msgid_plural "%1 events of this type"
msgstr[0] ""
#: src/devtools/RoomData.qml:83
#: src/devtools/RoomData.qml:84
#, kde-format
msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information"
@@ -200,49 +212,44 @@ msgctxt ""
msgid "State Keys"
msgstr ""
#: src/enums/neochatroomtype.h:60
#: src/enums/neochatroomtype.h:59
#, kde-format
msgid "Invited"
msgstr ""
#: src/enums/neochatroomtype.h:62
#: src/enums/neochatroomtype.h:61
#, kde-format
msgid "Favorite"
msgstr ""
#: src/enums/neochatroomtype.h:64 src/qml/UserSearchPage.qml:82
#: src/enums/neochatroomtype.h:63 src/qml/UserSearchPage.qml:82
#, kde-format
msgid "Friends"
msgstr ""
#: src/enums/neochatroomtype.h:66
#: src/enums/neochatroomtype.h:65
#, kde-format
msgid "Normal"
msgstr ""
#: src/enums/neochatroomtype.h:68
#: src/enums/neochatroomtype.h:67
#, kde-format
msgid "Low priority"
msgstr ""
#: src/enums/neochatroomtype.h:70
#: src/enums/neochatroomtype.h:69
#, kde-format
msgid "Spaces"
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/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format
msgid "<i>[This message was deleted]</i>"
msgstr ""
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466
#: src/models/messageeventmodel.cpp:437
#, kde-format
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
@@ -614,12 +621,12 @@ msgctxt "The location being downloaded to"
msgid "Destination"
msgstr ""
#: src/login.cpp:85 src/login.cpp:100
#: src/login.cpp:84 src/login.cpp:99
#, kde-format
msgid "Network Error"
msgstr ""
#: src/login.cpp:93
#: src/login.cpp:92
#, kde-format
msgid "Login Failed: %1"
msgstr ""
@@ -939,315 +946,315 @@ msgstr ""
msgid "Share a URL to Matrix"
msgstr ""
#: src/matriximageprovider.cpp:40
#: src/matriximageprovider.cpp:38
#, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr ""
#: src/matriximageprovider.cpp:98
#: src/matriximageprovider.cpp:96
#, kde-format
msgid "Image request has been cancelled"
msgstr ""
#: src/models/actionsmodel.cpp:24
#: src/models/actionsmodel.cpp:25
#, kde-format
msgid "Leaving this room."
msgstr ""
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284
#: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format
msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias."
msgstr ""
#: src/models/actionsmodel.cpp:39
#: src/models/actionsmodel.cpp:40
#, kde-format
msgctxt "Leaving room <roomname>."
msgid "Leaving room %1."
msgstr ""
#: src/models/actionsmodel.cpp:42
#: src/models/actionsmodel.cpp:43
#, kde-format
msgctxt "Room <roomname> not found"
msgid "Room %1 not found."
msgstr ""
#: src/models/actionsmodel.cpp:50 src/models/actionsmodel.cpp:320
#: src/models/actionsmodel.cpp:51 src/models/actionsmodel.cpp:321
#, kde-format
msgid "No new nickname provided, no changes will happen."
msgstr ""
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182
#: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>"
msgstr ""
#: src/models/actionsmodel.cpp:66
#: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:86
#: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:116
#: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow"
msgstr ""
#: src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow"
msgstr ""
#: src/models/actionsmodel.cpp:147
#: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text"
msgstr ""
#: src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler"
msgstr ""
#: src/models/actionsmodel.cpp:173
#: src/models/actionsmodel.cpp:174
msgid "Sends the given emote"
msgstr ""
#: src/models/actionsmodel.cpp:183
#: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice"
msgstr ""
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494
#: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format
msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id."
msgstr ""
#: src/models/actionsmodel.cpp:197
#: src/models/actionsmodel.cpp:198
#, kde-format
msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room."
msgstr ""
#: src/models/actionsmodel.cpp:201
#: src/models/actionsmodel.cpp:202
#, kde-format
msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:205
#: src/models/actionsmodel.cpp:206
#, kde-format
msgid "You are already in this room."
msgstr ""
#: src/models/actionsmodel.cpp:209
#: src/models/actionsmodel.cpp:210
#, kde-format
msgctxt "<user> is already in this room."
msgid "%1 is already in this room."
msgstr ""
#: src/models/actionsmodel.cpp:213
#: src/models/actionsmodel.cpp:214
#, kde-format
msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room"
msgstr ""
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482
#: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>"
msgstr ""
#: src/models/actionsmodel.cpp:219
#: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room"
msgstr ""
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291
#: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format
msgctxt "Joining room <roomname>."
msgid "Joining room %1."
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>"
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"
msgstr ""
#: src/models/actionsmodel.cpp:262
#: src/models/actionsmodel.cpp:263
#, kde-format
msgctxt "Knocking room <roomname>."
msgid "Knocking room %1."
msgstr ""
#: src/models/actionsmodel.cpp:274
#: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]"
msgstr ""
#: src/models/actionsmodel.cpp:275
#: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room"
msgstr ""
#: src/models/actionsmodel.cpp:288
#: src/models/actionsmodel.cpp:289
#, kde-format
msgctxt "You are already in room <roomname>."
msgid "You are already in room %1."
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>]"
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"
msgstr ""
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336
#: src/models/actionsmodel.cpp:344
#: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:345
msgid "<display name>"
msgstr ""
#: src/models/actionsmodel.cpp:329
#: src/models/actionsmodel.cpp:330
msgid "Changes your global display name"
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"
msgstr ""
#: src/models/actionsmodel.cpp:358
#: src/models/actionsmodel.cpp:359
#, kde-format
msgctxt "<username> is already ignored."
msgid "%1 is already ignored."
msgstr ""
#: src/models/actionsmodel.cpp:362
#: src/models/actionsmodel.cpp:363
#, kde-format
msgctxt "<username> is now ignored"
msgid "%1 is now ignored."
msgstr ""
#: src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:369
msgid "Ignores the given user"
msgstr ""
#: src/models/actionsmodel.cpp:381
#: src/models/actionsmodel.cpp:382
#, kde-format
msgctxt "<username> is not ignored."
msgid "%1 is not ignored."
msgstr ""
#: src/models/actionsmodel.cpp:385
#: src/models/actionsmodel.cpp:386
#, kde-format
msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored."
msgstr ""
#: src/models/actionsmodel.cpp:391
#: src/models/actionsmodel.cpp:392
msgid "Unignores the given user"
msgstr ""
#: src/models/actionsmodel.cpp:410
#: src/models/actionsmodel.cpp:411
msgid "<reaction text>"
msgstr ""
#: src/models/actionsmodel.cpp:411
#: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text"
msgstr ""
#: src/models/actionsmodel.cpp:426
#: src/models/actionsmodel.cpp:427
#, kde-format
msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:434
#: src/models/actionsmodel.cpp:435
#, kde-format
msgid "You are not allowed to ban users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:440
#: src/models/actionsmodel.cpp:441
#, kde-format
msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room."
msgstr ""
#: src/models/actionsmodel.cpp:444
#: src/models/actionsmodel.cpp:445
#, kde-format
msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room."
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>]"
msgstr ""
#: src/models/actionsmodel.cpp:450
#: src/models/actionsmodel.cpp:451
msgid "Bans the given user"
msgstr ""
#: src/models/actionsmodel.cpp:467
#: src/models/actionsmodel.cpp:468
#, kde-format
msgid "You are not allowed to unban users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:472
#: src/models/actionsmodel.cpp:473
#, kde-format
msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:476
#: src/models/actionsmodel.cpp:477
#, kde-format
msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:483
#: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user"
msgstr ""
#: src/models/actionsmodel.cpp:498
#: src/models/actionsmodel.cpp:499
#, kde-format
msgid "You cannot kick yourself from the room."
msgstr ""
#: src/models/actionsmodel.cpp:502
#: src/models/actionsmodel.cpp:503
#, kde-format
msgctxt "<username> is not in this room"
msgid "%1 is not in this room."
msgstr ""
#: src/models/actionsmodel.cpp:511
#: src/models/actionsmodel.cpp:512
#, kde-format
msgid "You are not allowed to kick users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:517
#: src/models/actionsmodel.cpp:518
#, kde-format
msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room."
msgstr ""
#: src/models/actionsmodel.cpp:521
#: src/models/actionsmodel.cpp:522
#, kde-format
msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room."
msgstr ""
#: src/models/actionsmodel.cpp:527
#: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room"
msgstr ""
@@ -1329,39 +1336,39 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr ""
#: src/models/messagefiltermodel.cpp:142
#: src/models/messagefiltermodel.cpp:153
#, kde-format
msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1"
msgid_plural " %1 %2 times"
msgstr[0] ""
#: src/models/messagefiltermodel.cpp:146
#: src/models/messagefiltermodel.cpp:157
#, kde-format
msgctxt "n users"
msgid " %1 user "
msgid_plural " %1 users "
msgstr[0] ""
#: src/models/messagefiltermodel.cpp:155
#: src/models/messagefiltermodel.cpp:166
#, kde-format
msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", "
msgstr ""
#: src/models/messagefiltermodel.cpp:159
#: src/models/messagefiltermodel.cpp:170
#, kde-format
msgctxt "[action 1, action 2] or [action 3]"
msgid " or "
msgstr ""
#: src/models/messagefiltermodel.cpp:159
#: src/models/messagefiltermodel.cpp:170
#, kde-format
msgctxt "[action 1, action 2] and [action 3]"
msgid " and "
msgstr ""
#: src/models/messagefiltermodel.cpp:165
#: src/models/messagefiltermodel.cpp:176
#, kde-format
msgctxt ""
"userText (%1) is either a Matrix username if a single user sent all the "
@@ -1491,7 +1498,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr ""
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:270
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:274
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1550,13 +1557,12 @@ msgstr ""
msgid "Open NeoChat"
msgstr ""
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:65
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:46
#, kde-format
msgid "Edit this account"
msgstr ""
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59
#: src/settings/AccountsPage.qml:34
#: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#, kde-format
msgid "Account editor"
msgstr ""
@@ -1567,7 +1573,7 @@ msgid "Notification settings"
msgstr ""
#: 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
msgid "Configure"
msgstr ""
@@ -1902,8 +1908,8 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281
#: src/qml/SpaceDrawer.qml:283
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:296
#, kde-format
msgctxt "@title"
msgid "Create a Space"
@@ -1974,7 +1980,7 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: 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
#, kde-format
msgctxt "@title"
@@ -2142,21 +2148,21 @@ msgid "They don't match"
msgstr ""
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214
#: src/qml/RoomListPage.qml:204
#, kde-format
msgid "Explore rooms"
msgstr ""
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: 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
msgid "Find your friends"
msgstr ""
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190
#: src/qml/RoomListPage.qml:235
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:225
#, kde-format
msgctxt "@title"
msgid "Find your friends"
@@ -2183,11 +2189,34 @@ msgctxt "@title"
msgid "Scan a QR Code"
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
msgid "Create rooms and chats"
msgstr ""
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/qml/ExploreComponentMobile.qml:79
#, kde-format
msgid "Create New"
@@ -2543,46 +2572,58 @@ msgstr ""
msgid "There are no locations shared in this room."
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
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/Main.qml:321
#: src/qml/Main.qml:325
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/Main.qml:326
#: src/qml/Main.qml:330
#, kde-format
msgid ""
"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."
msgstr ""
#: src/qml/Main.qml:331
#: src/qml/Main.qml:335
#, kde-format
msgid "Open"
msgstr ""
#: src/qml/Main.qml:358
#: src/qml/Main.qml:362
#, kde-format
msgid "Start a chat"
msgstr ""
#: src/qml/Main.qml:360
#: src/qml/Main.qml:364
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
#: src/qml/Main.qml:386
#: src/qml/Main.qml:390
#, kde-format
msgctxt "@info screenreader"
msgid "The currently selected link"
msgstr ""
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68
#: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format
msgctxt "@title"
msgid "Share"
@@ -2665,7 +2706,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state"
msgstr ""
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:66
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:68
#, kde-format
msgctxt "@title"
msgid "Notifications"
@@ -2820,12 +2861,12 @@ msgstr ""
msgid "Reason for reporting this message"
msgstr ""
#: src/qml/RoomDelegate.qml:101
#: src/qml/RoomDelegate.qml:103
#, kde-format
msgid "Muted room"
msgstr ""
#: src/qml/RoomDelegate.qml:134
#: src/qml/RoomDelegate.qml:136
#, kde-format
msgid "Configure room"
msgstr ""
@@ -2926,33 +2967,33 @@ msgstr[0] ""
msgid "No member count"
msgstr ""
#: src/qml/RoomListPage.qml:205
#: src/qml/RoomListPage.qml:195
#, kde-format
msgid "No friends found"
msgstr ""
#: src/qml/RoomListPage.qml:205
#: src/qml/RoomListPage.qml:195
#, kde-format
msgid "No rooms found"
msgstr ""
#: src/qml/RoomListPage.qml:207
#: src/qml/RoomListPage.qml:197
#, kde-format
msgid ""
"You haven't added any of your friends yet, click below to search for them."
msgstr ""
#: src/qml/RoomListPage.qml:207
#: src/qml/RoomListPage.qml:197
#, kde-format
msgid "Join some rooms to get started"
msgstr ""
#: src/qml/RoomListPage.qml:214
#: src/qml/RoomListPage.qml:204
#, kde-format
msgid "Search in room directory"
msgstr ""
#: src/qml/RoomListPage.qml:231
#: src/qml/RoomListPage.qml:221
#, kde-format
msgid "Search in friend directory"
msgstr ""
@@ -3128,24 +3169,24 @@ msgstr ""
msgid "View notifications"
msgstr ""
#: src/qml/SpaceDrawer.qml:84
#: src/qml/SpaceDrawer.qml:86
#, kde-format
msgid "Home"
msgstr ""
#: src/qml/SpaceDrawer.qml:130
#: src/qml/SpaceDrawer.qml:134
#, kde-format
msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends"
msgstr ""
#: src/qml/SpaceDrawer.qml:232
#: src/qml/SpaceDrawer.qml:242
#, kde-format
msgctxt "Join <name of a space>"
msgid "Join %1"
msgstr ""
#: src/qml/SpaceDrawer.qml:274
#: src/qml/SpaceDrawer.qml:284
#, kde-format
msgid "Create a space"
msgstr ""
@@ -3418,12 +3459,18 @@ msgstr ""
msgid "Copy link"
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
msgid "Switch User"
msgstr ""
#: src/qml/UserInfo.qml:111
#: src/qml/UserInfo.qml:98
#, kde-format
msgid "Open Settings"
msgstr ""
@@ -3835,47 +3882,42 @@ msgstr ""
msgid "Use compact room list"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:232
#, kde-format
msgid "Show fancy effects in chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:249
#: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Use transparent chat page"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:270
#: src/settings/AppearanceSettingsPage.qml:254
#, kde-format
msgid "Transparency"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:289
#: src/settings/AppearanceSettingsPage.qml:273
#, kde-format
msgid "Only enabled if the transparent chat page is enabled."
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:306
#: src/settings/AppearanceSettingsPage.qml:290
#, kde-format
msgid "Show your messages on the right"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:322
#: src/settings/AppearanceSettingsPage.qml:306
#, kde-format
msgid "Show links preview in the chat messages"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:332
#: src/settings/AppearanceSettingsPage.qml:316
#, kde-format
msgid "Show Avatar"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:336
#: src/settings/AppearanceSettingsPage.qml:320
#, kde-format
msgid "In chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:346
#: src/settings/AppearanceSettingsPage.qml:330
#, kde-format
msgid "In sidebar"
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 ""
"Project-Id-Version: neochat\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"
"Last-Translator: Automatically generated\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"
"%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
msgctxt ""
"The reason for using push notifications, as in: '[Push notifications are "
@@ -26,47 +26,47 @@ msgctxt ""
msgid "Receiving notifications for new messages"
msgstr ""
#: src/controller.cpp:213
#: src/controller.cpp:212
#, kde-format
msgid "Network Error: %1"
msgstr ""
#: src/controller.cpp:235
#: src/controller.cpp:234
#, kde-format
msgid "Access token wasn't found"
msgstr ""
#: src/controller.cpp:235
#: src/controller.cpp:234
#, kde-format
msgid "Maybe it was deleted?"
msgstr ""
#: src/controller.cpp:239
#: src/controller.cpp:238
#, kde-format
msgid "Access to keychain was denied."
msgstr ""
#: src/controller.cpp:239
#: src/controller.cpp:238
#, kde-format
msgid "Please allow NeoChat to read the access token"
msgstr ""
#: src/controller.cpp:242
#: src/controller.cpp:241
#, kde-format
msgid "No keychain available."
msgstr ""
#: src/controller.cpp:242
#: src/controller.cpp:241
#, kde-format
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
msgstr ""
#: src/controller.cpp:245
#: src/controller.cpp:244
#, kde-format
msgid "Unable to read access token"
msgstr ""
#: src/controller.cpp:341
#: src/controller.cpp:340
#, kde-format
msgid "Receiving push notifications"
msgstr ""
@@ -83,19 +83,31 @@ msgctxt "@title:window"
msgid "Event Source"
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
msgctxt "@option:check Enable the matrix 'threads' feature"
msgid "Always allow device verification"
msgstr ""
#: src/devtools/DebugOptions.qml:21
#: src/devtools/DebugOptions.qml:27
#, kde-format
msgid ""
"Allow the user to start a verification session with devices that were "
"already verified"
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
#, kde-format
msgid "Developer Tools"
@@ -142,28 +154,28 @@ msgstr ""
msgid "Room"
msgstr ""
#: src/devtools/RoomData.qml:35
#: src/devtools/RoomData.qml:36
#, kde-format
msgid "Room Id: %1"
msgstr ""
#: src/devtools/RoomData.qml:39
#: src/devtools/RoomData.qml:40
#, kde-format
msgid "Room Account Data"
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
#, kde-format
msgid "Event Source"
msgstr ""
#: src/devtools/RoomData.qml:60
#: src/devtools/RoomData.qml:61
#, kde-format
msgid "Room State"
msgstr ""
#: src/devtools/RoomData.qml:74
#: src/devtools/RoomData.qml:75
#, kde-format
msgctxt "'Event' being some JSON data, not something physically happening."
msgid "%1 event of this type"
@@ -173,7 +185,7 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/devtools/RoomData.qml:83
#: src/devtools/RoomData.qml:84
#, kde-format
msgctxt "'Event' being some JSON data, not something physically happening."
msgid "Event Information"
@@ -207,49 +219,44 @@ msgctxt ""
msgid "State Keys"
msgstr ""
#: src/enums/neochatroomtype.h:60
#: src/enums/neochatroomtype.h:59
#, kde-format
msgid "Invited"
msgstr ""
#: src/enums/neochatroomtype.h:62
#: src/enums/neochatroomtype.h:61
#, kde-format
msgid "Favorite"
msgstr ""
#: src/enums/neochatroomtype.h:64 src/qml/UserSearchPage.qml:82
#: src/enums/neochatroomtype.h:63 src/qml/UserSearchPage.qml:82
#, kde-format
msgid "Friends"
msgstr ""
#: src/enums/neochatroomtype.h:66
#: src/enums/neochatroomtype.h:65
#, kde-format
msgid "Normal"
msgstr ""
#: src/enums/neochatroomtype.h:68
#: src/enums/neochatroomtype.h:67
#, kde-format
msgid "Low priority"
msgstr ""
#: src/enums/neochatroomtype.h:70
#: src/enums/neochatroomtype.h:69
#, kde-format
msgid "Spaces"
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/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:465
#: src/models/messagecontentmodel.cpp:140 src/models/messageeventmodel.cpp:436
#, kde-format
msgid "<i>[This message was deleted]</i>"
msgstr ""
#: src/eventhandler.cpp:303 src/models/messagecontentmodel.cpp:141
#: src/models/messageeventmodel.cpp:466
#: src/models/messageeventmodel.cpp:437
#, kde-format
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
@@ -624,12 +631,12 @@ msgctxt "The location being downloaded to"
msgid "Destination"
msgstr ""
#: src/login.cpp:85 src/login.cpp:100
#: src/login.cpp:84 src/login.cpp:99
#, kde-format
msgid "Network Error"
msgstr ""
#: src/login.cpp:93
#: src/login.cpp:92
#, kde-format
msgid "Login Failed: %1"
msgstr ""
@@ -949,315 +956,315 @@ msgstr ""
msgid "Share a URL to Matrix"
msgstr ""
#: src/matriximageprovider.cpp:40
#: src/matriximageprovider.cpp:38
#, kde-format
msgid "Media id '%1' doesn't follow server/mediaId pattern"
msgstr ""
#: src/matriximageprovider.cpp:98
#: src/matriximageprovider.cpp:96
#, kde-format
msgid "Image request has been cancelled"
msgstr ""
#: src/models/actionsmodel.cpp:24
#: src/models/actionsmodel.cpp:25
#, kde-format
msgid "Leaving this room."
msgstr ""
#: src/models/actionsmodel.cpp:31 src/models/actionsmodel.cpp:228
#: src/models/actionsmodel.cpp:254 src/models/actionsmodel.cpp:284
#: src/models/actionsmodel.cpp:32 src/models/actionsmodel.cpp:229
#: src/models/actionsmodel.cpp:255 src/models/actionsmodel.cpp:285
#, kde-format
msgctxt "'<text>' does not look like a room id or alias."
msgid "'%1' does not look like a room id or alias."
msgstr ""
#: src/models/actionsmodel.cpp:39
#: src/models/actionsmodel.cpp:40
#, kde-format
msgctxt "Leaving room <roomname>."
msgid "Leaving room %1."
msgstr ""
#: src/models/actionsmodel.cpp:42
#: src/models/actionsmodel.cpp:43
#, kde-format
msgctxt "Room <roomname> not found"
msgid "Room %1 not found."
msgstr ""
#: src/models/actionsmodel.cpp:50 src/models/actionsmodel.cpp:320
#: src/models/actionsmodel.cpp:51 src/models/actionsmodel.cpp:321
#, kde-format
msgid "No new nickname provided, no changes will happen."
msgstr ""
#: src/models/actionsmodel.cpp:65 src/models/actionsmodel.cpp:75
#: src/models/actionsmodel.cpp:85 src/models/actionsmodel.cpp:95
#: src/models/actionsmodel.cpp:115 src/models/actionsmodel.cpp:135
#: src/models/actionsmodel.cpp:146 src/models/actionsmodel.cpp:162
#: src/models/actionsmodel.cpp:172 src/models/actionsmodel.cpp:182
#: src/models/actionsmodel.cpp:66 src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:86 src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:116 src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:147 src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:173 src/models/actionsmodel.cpp:183
msgid "<message>"
msgstr ""
#: src/models/actionsmodel.cpp:66
#: src/models/actionsmodel.cpp:67
msgid "Prepends ¯\\_(ツ)_/¯ to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:76
#: src/models/actionsmodel.cpp:77
msgid "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:86
#: src/models/actionsmodel.cpp:87
msgid "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:96
#: src/models/actionsmodel.cpp:97
msgid "Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message"
msgstr ""
#: src/models/actionsmodel.cpp:116
#: src/models/actionsmodel.cpp:117
msgid "Sends the given message colored as a rainbow"
msgstr ""
#: src/models/actionsmodel.cpp:136
#: src/models/actionsmodel.cpp:137
msgid "Sends the given emote colored as a rainbow"
msgstr ""
#: src/models/actionsmodel.cpp:147
#: src/models/actionsmodel.cpp:148
msgid "Sends the given message as plain text"
msgstr ""
#: src/models/actionsmodel.cpp:163
#: src/models/actionsmodel.cpp:164
msgid "Sends the given message as a spoiler"
msgstr ""
#: src/models/actionsmodel.cpp:173
#: src/models/actionsmodel.cpp:174
msgid "Sends the given emote"
msgstr ""
#: src/models/actionsmodel.cpp:183
#: src/models/actionsmodel.cpp:184
msgid "Sends the given message as a notice"
msgstr ""
#: src/models/actionsmodel.cpp:192 src/models/actionsmodel.cpp:354
#: src/models/actionsmodel.cpp:377 src/models/actionsmodel.cpp:421
#: src/models/actionsmodel.cpp:459 src/models/actionsmodel.cpp:494
#: src/models/actionsmodel.cpp:193 src/models/actionsmodel.cpp:355
#: src/models/actionsmodel.cpp:378 src/models/actionsmodel.cpp:422
#: src/models/actionsmodel.cpp:460 src/models/actionsmodel.cpp:495
#, kde-format
msgctxt "'<text>' does not look like a matrix id."
msgid "'%1' does not look like a matrix id."
msgstr ""
#: src/models/actionsmodel.cpp:197
#: src/models/actionsmodel.cpp:198
#, kde-format
msgctxt "<user> is already invited to this room."
msgid "%1 is already invited to this room."
msgstr ""
#: src/models/actionsmodel.cpp:201
#: src/models/actionsmodel.cpp:202
#, kde-format
msgctxt "<user> is banned from this room."
msgid "%1 is banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:205
#: src/models/actionsmodel.cpp:206
#, kde-format
msgid "You are already in this room."
msgstr ""
#: src/models/actionsmodel.cpp:209
#: src/models/actionsmodel.cpp:210
#, kde-format
msgctxt "<user> is already in this room."
msgid "%1 is already in this room."
msgstr ""
#: src/models/actionsmodel.cpp:213
#: src/models/actionsmodel.cpp:214
#, kde-format
msgctxt "<username> was invited into this room"
msgid "%1 was invited into this room"
msgstr ""
#: src/models/actionsmodel.cpp:218 src/models/actionsmodel.cpp:367
#: src/models/actionsmodel.cpp:390 src/models/actionsmodel.cpp:482
#: src/models/actionsmodel.cpp:219 src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:391 src/models/actionsmodel.cpp:483
msgid "<user id>"
msgstr ""
#: src/models/actionsmodel.cpp:219
#: src/models/actionsmodel.cpp:220
msgid "Invites the user to this room"
msgstr ""
#: src/models/actionsmodel.cpp:236 src/models/actionsmodel.cpp:291
#: src/models/actionsmodel.cpp:237 src/models/actionsmodel.cpp:292
#, kde-format
msgctxt "Joining room <roomname>."
msgid "Joining room %1."
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>"
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"
msgstr ""
#: src/models/actionsmodel.cpp:262
#: src/models/actionsmodel.cpp:263
#, kde-format
msgctxt "Knocking room <roomname>."
msgid "Knocking room %1."
msgstr ""
#: src/models/actionsmodel.cpp:274
#: src/models/actionsmodel.cpp:275
msgid "<room alias or id> [<reason>]"
msgstr ""
#: src/models/actionsmodel.cpp:275
#: src/models/actionsmodel.cpp:276
msgid "Requests to join the given room"
msgstr ""
#: src/models/actionsmodel.cpp:288
#: src/models/actionsmodel.cpp:289
#, kde-format
msgctxt "You are already in room <roomname>."
msgid "You are already in room %1."
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>]"
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"
msgstr ""
#: src/models/actionsmodel.cpp:328 src/models/actionsmodel.cpp:336
#: src/models/actionsmodel.cpp:344
#: src/models/actionsmodel.cpp:329 src/models/actionsmodel.cpp:337
#: src/models/actionsmodel.cpp:345
msgid "<display name>"
msgstr ""
#: src/models/actionsmodel.cpp:329
#: src/models/actionsmodel.cpp:330
msgid "Changes your global display name"
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"
msgstr ""
#: src/models/actionsmodel.cpp:358
#: src/models/actionsmodel.cpp:359
#, kde-format
msgctxt "<username> is already ignored."
msgid "%1 is already ignored."
msgstr ""
#: src/models/actionsmodel.cpp:362
#: src/models/actionsmodel.cpp:363
#, kde-format
msgctxt "<username> is now ignored"
msgid "%1 is now ignored."
msgstr ""
#: src/models/actionsmodel.cpp:368
#: src/models/actionsmodel.cpp:369
msgid "Ignores the given user"
msgstr ""
#: src/models/actionsmodel.cpp:381
#: src/models/actionsmodel.cpp:382
#, kde-format
msgctxt "<username> is not ignored."
msgid "%1 is not ignored."
msgstr ""
#: src/models/actionsmodel.cpp:385
#: src/models/actionsmodel.cpp:386
#, kde-format
msgctxt "<username> is no longer ignored."
msgid "%1 is no longer ignored."
msgstr ""
#: src/models/actionsmodel.cpp:391
#: src/models/actionsmodel.cpp:392
msgid "Unignores the given user"
msgstr ""
#: src/models/actionsmodel.cpp:410
#: src/models/actionsmodel.cpp:411
msgid "<reaction text>"
msgstr ""
#: src/models/actionsmodel.cpp:411
#: src/models/actionsmodel.cpp:412
msgid "React to the message with the given text"
msgstr ""
#: src/models/actionsmodel.cpp:426
#: src/models/actionsmodel.cpp:427
#, kde-format
msgctxt "<user> is already banned from this room."
msgid "%1 is already banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:434
#: src/models/actionsmodel.cpp:435
#, kde-format
msgid "You are not allowed to ban users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:440
#: src/models/actionsmodel.cpp:441
#, kde-format
msgctxt "You are not allowed to ban <username> from this room."
msgid "You are not allowed to ban %1 from this room."
msgstr ""
#: src/models/actionsmodel.cpp:444
#: src/models/actionsmodel.cpp:445
#, kde-format
msgctxt "<username> was banned from this room."
msgid "%1 was banned from this room."
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>]"
msgstr ""
#: src/models/actionsmodel.cpp:450
#: src/models/actionsmodel.cpp:451
msgid "Bans the given user"
msgstr ""
#: src/models/actionsmodel.cpp:467
#: src/models/actionsmodel.cpp:468
#, kde-format
msgid "You are not allowed to unban users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:472
#: src/models/actionsmodel.cpp:473
#, kde-format
msgctxt "<user> is not banned from this room."
msgid "%1 is not banned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:476
#: src/models/actionsmodel.cpp:477
#, kde-format
msgctxt "<username> was unbanned from this room."
msgid "%1 was unbanned from this room."
msgstr ""
#: src/models/actionsmodel.cpp:483
#: src/models/actionsmodel.cpp:484
msgid "Removes the ban of the given user"
msgstr ""
#: src/models/actionsmodel.cpp:498
#: src/models/actionsmodel.cpp:499
#, kde-format
msgid "You cannot kick yourself from the room."
msgstr ""
#: src/models/actionsmodel.cpp:502
#: src/models/actionsmodel.cpp:503
#, kde-format
msgctxt "<username> is not in this room"
msgid "%1 is not in this room."
msgstr ""
#: src/models/actionsmodel.cpp:511
#: src/models/actionsmodel.cpp:512
#, kde-format
msgid "You are not allowed to kick users from this room."
msgstr ""
#: src/models/actionsmodel.cpp:517
#: src/models/actionsmodel.cpp:518
#, kde-format
msgctxt "You are not allowed to kick <username> from this room"
msgid "You are not allowed to kick %1 from this room."
msgstr ""
#: src/models/actionsmodel.cpp:521
#: src/models/actionsmodel.cpp:522
#, kde-format
msgctxt "<username> was kicked from this room."
msgid "%1 was kicked from this room."
msgstr ""
#: src/models/actionsmodel.cpp:527
#: src/models/actionsmodel.cpp:528
msgid "Removes the user from the room"
msgstr ""
@@ -1339,7 +1346,7 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr ""
#: src/models/messagefiltermodel.cpp:142
#: src/models/messagefiltermodel.cpp:153
#, kde-format
msgctxt "%1: What's being done; %2: How often it is done."
msgid " %1"
@@ -1349,7 +1356,7 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/models/messagefiltermodel.cpp:146
#: src/models/messagefiltermodel.cpp:157
#, kde-format
msgctxt "n users"
msgid " %1 user "
@@ -1358,25 +1365,25 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/models/messagefiltermodel.cpp:155
#: src/models/messagefiltermodel.cpp:166
#, kde-format
msgctxt "[action 1], [action 2 and/or action 3]"
msgid ", "
msgstr ""
#: src/models/messagefiltermodel.cpp:159
#: src/models/messagefiltermodel.cpp:170
#, kde-format
msgctxt "[action 1, action 2] or [action 3]"
msgid " or "
msgstr ""
#: src/models/messagefiltermodel.cpp:159
#: src/models/messagefiltermodel.cpp:170
#, kde-format
msgctxt "[action 1, action 2] and [action 3]"
msgid " and "
msgstr ""
#: src/models/messagefiltermodel.cpp:165
#: src/models/messagefiltermodel.cpp:176
#, kde-format
msgctxt ""
"userText (%1) is either a Matrix username if a single user sent all the "
@@ -1510,7 +1517,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr ""
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:270
#: src/notificationsmanager.cpp:204 src/qml/Main.qml:274
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1569,13 +1576,12 @@ msgstr ""
msgid "Open NeoChat"
msgstr ""
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:65
#: src/qml/AccountMenu.qml:22 src/qml/UserInfo.qml:46
#, kde-format
msgid "Edit this account"
msgstr ""
#: src/qml/AccountMenu.qml:27 src/qml/UserInfo.qml:59
#: src/settings/AccountsPage.qml:34
#: src/qml/AccountMenu.qml:27 src/settings/AccountsPage.qml:34
#, kde-format
msgid "Account editor"
msgstr ""
@@ -1586,7 +1592,7 @@ msgid "Notification settings"
msgstr ""
#: 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
msgid "Configure"
msgstr ""
@@ -1921,8 +1927,8 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:281
#: src/qml/SpaceDrawer.qml:283
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
#: src/qml/SpaceDrawer.qml:296
#, kde-format
msgctxt "@title"
msgid "Create a Space"
@@ -1993,7 +1999,7 @@ msgstr ""
#: src/qml/CreateRoomDialog.qml:117 src/qml/CreateRoomDialog.qml:200
#: 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
#, kde-format
msgctxt "@title"
@@ -2161,21 +2167,21 @@ msgid "They don't match"
msgstr ""
#: src/qml/ExploreComponent.qml:23 src/qml/ExploreComponentMobile.qml:52
#: src/qml/RoomListPage.qml:214
#: src/qml/RoomListPage.qml:204
#, kde-format
msgid "Explore rooms"
msgstr ""
#: src/qml/ExploreComponent.qml:37 src/qml/ExploreComponentMobile.qml:67
#: 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
msgid "Find your friends"
msgstr ""
#: src/qml/ExploreComponent.qml:42 src/qml/ExploreComponentMobile.qml:73
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:190
#: src/qml/RoomListPage.qml:235
#: src/qml/GlobalMenu.qml:56 src/qml/RoomListPage.qml:180
#: src/qml/RoomListPage.qml:225
#, kde-format
msgctxt "@title"
msgid "Find your friends"
@@ -2202,11 +2208,34 @@ msgctxt "@title"
msgid "Scan a QR Code"
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
msgid "Create rooms and chats"
msgstr ""
#: src/qml/ExploreComponentMobile.qml:36
#, kde-format
msgid "Search"
msgstr ""
#: src/qml/ExploreComponentMobile.qml:79
#, kde-format
msgid "Create New"
@@ -2562,46 +2591,58 @@ msgstr ""
msgid "There are no locations shared in this room."
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
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/Main.qml:321
#: src/qml/Main.qml:325
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/Main.qml:326
#: src/qml/Main.qml:330
#, kde-format
msgid ""
"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."
msgstr ""
#: src/qml/Main.qml:331
#: src/qml/Main.qml:335
#, kde-format
msgid "Open"
msgstr ""
#: src/qml/Main.qml:358
#: src/qml/Main.qml:362
#, kde-format
msgid "Start a chat"
msgstr ""
#: src/qml/Main.qml:360
#: src/qml/Main.qml:364
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
#: src/qml/Main.qml:386
#: src/qml/Main.qml:390
#, kde-format
msgctxt "@info screenreader"
msgid "The currently selected link"
msgstr ""
#: src/qml/Main.qml:418 src/qml/ShareAction.qml:68
#: src/qml/Main.qml:422 src/qml/ShareAction.qml:68
#, kde-format
msgctxt "@title"
msgid "Share"
@@ -2684,7 +2725,7 @@ msgctxt "@action As in 'edit the state of this room'"
msgid "Edit state"
msgstr ""
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:66
#: src/qml/NotificationsView.qml:19 src/qml/SpaceDrawer.qml:68
#, kde-format
msgctxt "@title"
msgid "Notifications"
@@ -2839,12 +2880,12 @@ msgstr ""
msgid "Reason for reporting this message"
msgstr ""
#: src/qml/RoomDelegate.qml:101
#: src/qml/RoomDelegate.qml:103
#, kde-format
msgid "Muted room"
msgstr ""
#: src/qml/RoomDelegate.qml:134
#: src/qml/RoomDelegate.qml:136
#, kde-format
msgid "Configure room"
msgstr ""
@@ -2948,33 +2989,33 @@ msgstr[3] ""
msgid "No member count"
msgstr ""
#: src/qml/RoomListPage.qml:205
#: src/qml/RoomListPage.qml:195
#, kde-format
msgid "No friends found"
msgstr ""
#: src/qml/RoomListPage.qml:205
#: src/qml/RoomListPage.qml:195
#, kde-format
msgid "No rooms found"
msgstr ""
#: src/qml/RoomListPage.qml:207
#: src/qml/RoomListPage.qml:197
#, kde-format
msgid ""
"You haven't added any of your friends yet, click below to search for them."
msgstr ""
#: src/qml/RoomListPage.qml:207
#: src/qml/RoomListPage.qml:197
#, kde-format
msgid "Join some rooms to get started"
msgstr ""
#: src/qml/RoomListPage.qml:214
#: src/qml/RoomListPage.qml:204
#, kde-format
msgid "Search in room directory"
msgstr ""
#: src/qml/RoomListPage.qml:231
#: src/qml/RoomListPage.qml:221
#, kde-format
msgid "Search in friend directory"
msgstr ""
@@ -3150,24 +3191,24 @@ msgstr ""
msgid "View notifications"
msgstr ""
#: src/qml/SpaceDrawer.qml:84
#: src/qml/SpaceDrawer.qml:86
#, kde-format
msgid "Home"
msgstr ""
#: src/qml/SpaceDrawer.qml:130
#: src/qml/SpaceDrawer.qml:134
#, kde-format
msgctxt "@button View all one-on-one chats with your friends."
msgid "Friends"
msgstr ""
#: src/qml/SpaceDrawer.qml:232
#: src/qml/SpaceDrawer.qml:242
#, kde-format
msgctxt "Join <name of a space>"
msgid "Join %1"
msgstr ""
#: src/qml/SpaceDrawer.qml:274
#: src/qml/SpaceDrawer.qml:284
#, kde-format
msgid "Create a space"
msgstr ""
@@ -3448,12 +3489,18 @@ msgstr ""
msgid "Copy link"
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
msgid "Switch User"
msgstr ""
#: src/qml/UserInfo.qml:111
#: src/qml/UserInfo.qml:98
#, kde-format
msgid "Open Settings"
msgstr ""
@@ -3865,47 +3912,42 @@ msgstr ""
msgid "Use compact room list"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:232
#, kde-format
msgid "Show fancy effects in chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:249
#: src/settings/AppearanceSettingsPage.qml:233
#, kde-format
msgid "Use transparent chat page"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:270
#: src/settings/AppearanceSettingsPage.qml:254
#, kde-format
msgid "Transparency"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:289
#: src/settings/AppearanceSettingsPage.qml:273
#, kde-format
msgid "Only enabled if the transparent chat page is enabled."
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:306
#: src/settings/AppearanceSettingsPage.qml:290
#, kde-format
msgid "Show your messages on the right"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:322
#: src/settings/AppearanceSettingsPage.qml:306
#, kde-format
msgid "Show links preview in the chat messages"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:332
#: src/settings/AppearanceSettingsPage.qml:316
#, kde-format
msgid "Show Avatar"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:336
#: src/settings/AppearanceSettingsPage.qml:320
#, kde-format
msgid "In chat"
msgstr ""
#: src/settings/AppearanceSettingsPage.qml:346
#: src/settings/AppearanceSettingsPage.qml:330
#, kde-format
msgid "In sidebar"
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/ImageEditorPage.qml
qml/NeochatMaximizeComponent.qml
qml/FancyEffectsContainer.qml
qml/TypingPane.qml
qml/QuickSwitcher.qml
qml/HoverActions.qml
@@ -281,9 +280,6 @@ qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN
qml/ConfirmLeaveDialog.qml
qml/CodeMaximizeComponent.qml
qml/EditStateDialog.qml
RESOURCES
qml/confetti.png
qml/glowdot.png
)
add_subdirectory(settings)

View File

@@ -14,6 +14,7 @@
#include "models/actionsmodel.h"
#include "neochatconfig.h"
#include "texthandler.h"
#include "utils.h"
using namespace Quotient;
@@ -145,6 +146,26 @@ void ActionsHandler::handleMessage(const QString &text, QString handledText, Cha
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());
}

View File

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

View File

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

View File

@@ -15,6 +15,12 @@ FormCard.FormCardPage {
FormCard.FormCard {
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 {
id: roomAccountDataVisibleCheck
text: i18nc("@option:check Enable the matrix 'threads' feature", "Always allow device verification")
@@ -23,5 +29,14 @@ FormCard.FormCardPage {
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")
textRole: "escapedDisplayName"
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
currentIndex: 0
displayMode: FormCard.FormComboBoxDelegate.Page
Component.onCompleted: currentIndex = RoomManager.roomListModel.rowForRoom(root.room)
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.
*/
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. */
Favorite, /**< The room is set as a favourite. */
Direct, /**< The room is a direct chat. */
@@ -68,8 +67,6 @@ public:
return i18n("Low priority");
case NeoChatRoomType::Space:
return i18n("Spaces");
case NeoChatRoomType::Search:
return i18n("Search");
default:
return {};
}
@@ -89,8 +86,6 @@ public:
return QStringLiteral("object-order-lower");
case NeoChatRoomType::Space:
return QStringLiteral("group");
case NeoChatRoomType::Search:
return QStringLiteral("search");
default:
return QStringLiteral("tools-report-bug");
}

View File

@@ -4,7 +4,6 @@
#include "login.h"
#include <Quotient/accountregistry.h>
#include <Quotient/connection.h>
#include <Quotient/qt_connection_util.h>
#include "controller.h"
@@ -54,7 +53,7 @@ void LoginHelper::init()
m_connection = new NeoChatConnection();
}
m_connection->resolveServer(m_matrixId);
connectSingleShot(m_connection, &Connection::loginFlowsChanged, this, [this]() {
connectSingleShot(m_connection.get(), &Connection::loginFlowsChanged, this, [this]() {
setHomeserverReachable(true);
m_testing = false;
Q_EMIT testingChanged();
@@ -100,7 +99,7 @@ void LoginHelper::init()
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();
});
}
@@ -182,7 +181,7 @@ QUrl LoginHelper::ssoUrl() const
void LoginHelper::loginWithSso()
{
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);
m_ssoUrl = session->ssoUrl();
Q_EMIT ssoUrlChanged();

View File

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

View File

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

View File

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

View File

@@ -10,6 +10,8 @@
#include <Quotient/events/eventcontent.h>
#include <qcoro/qcorosignal.h>
#include "neochatconnection.h"
using namespace Quotient;
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;
}
void AccountEmoticonModel::setConnection(Connection *connection)
void AccountEmoticonModel::setConnection(NeoChatConnection *connection)
{
if (m_connection) {
disconnect(m_connection, nullptr, this, nullptr);

View File

@@ -12,7 +12,7 @@
#include <QPointer>
#include <QQmlEngine>
#include <Quotient/connection.h>
class NeoChatConnection;
/**
* @class AccountEmoticonModel
@@ -29,7 +29,7 @@ class AccountEmoticonModel : public QAbstractListModel
/**
* @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:
enum Roles {
@@ -63,8 +63,8 @@ public:
*/
[[nodiscard]] QHash<int, QByteArray> roleNames() const override;
[[nodiscard]] Quotient::Connection *connection() const;
void setConnection(Quotient::Connection *connection);
[[nodiscard]] NeoChatConnection *connection() const;
void setConnection(NeoChatConnection *connection);
/**
* @brief Deletes the emoticon at the given index.
@@ -96,7 +96,7 @@ Q_SIGNALS:
private:
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> doAddEmoticon(QUrl source, QString shortcode, QString description, QString type);

View File

@@ -4,6 +4,7 @@
#include "actionsmodel.h"
#include "chatbarcache.h"
#include "neochatconnection.h"
#include "neochatroom.h"
#include "roommanager.h"
#include <Quotient/events/roommemberevent.h>
@@ -260,7 +261,7 @@ QList<ActionsModel::Action> actions{
return QString();
}
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);
if (parts.length() >= 2) {
RoomManager::instance().knockRoom(connection, roomName, parts[1], QStringList{knownServer});

View File

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

View File

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

View File

@@ -11,9 +11,10 @@
#include <KLocalizedString>
#include <Quotient/csapi/device_management.h>
#include <Quotient/connection.h>
#include <Quotient/user.h>
#include "neochatconnection.h"
using namespace Quotient;
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;
}
void DevicesModel::setConnection(Connection *connection)
void DevicesModel::setConnection(NeoChatConnection *connection)
{
if (m_connection) {
disconnect(m_connection, nullptr, this, nullptr);

View File

@@ -9,10 +9,7 @@
#include <Quotient/csapi/definitions/client_device.h>
namespace Quotient
{
class Connection;
}
class NeoChatConnection;
/**
* @class DevicesModel
@@ -31,7 +28,7 @@ class DevicesModel : public QAbstractListModel
/**
* @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:
/**
@@ -88,9 +85,8 @@ public:
explicit DevicesModel(QObject *parent = nullptr);
[[nodiscard]] Quotient::Connection *connection() const;
void setConnection(Quotient::Connection *connection);
[[nodiscard]] NeoChatConnection *connection() const;
void setConnection(NeoChatConnection *connection);
Q_SIGNALS:
void connectionChanged();
@@ -99,5 +95,5 @@ Q_SIGNALS:
private:
void fetchDevices();
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)
&& eventCast<const Quotient::RoomMessageEvent>(m_event)->rawMsgtype() == QStringLiteral("m.key.verification.request")) {
m_components += MessageComponent{MessageComponentType::Verification, QString(), {}};
} else {
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 {
m_components += MessageComponent{MessageComponentType::Reply, QString(), {}};
}
}
endResetModel();
return;
}
if (isEditing) {
m_components += MessageComponent{MessageComponentType::Edit, QString(), {}};
} else if (m_event->isRedacted()) {
m_components += MessageComponent{MessageComponentType::Text, QString(), {}};
if (m_event->isRedacted()) {
m_components += MessageComponent{MessageComponentType::Text, QString(), {}};
endResetModel();
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 {
if (eventHandler.messageComponentType() == MessageComponentType::Text) {
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(), {}};
}
m_components += MessageComponent{MessageComponentType::Reply, QString(), {}};
}
}
if (m_linkPreviewer != nullptr) {
if (m_linkPreviewer->loaded()) {
m_components += MessageComponent{MessageComponentType::LinkPreview, QString(), {}};
} else {
m_components += MessageComponent{MessageComponentType::LinkPreviewLoad, QString(), {}};
}
if (isEditing) {
m_components += MessageComponent{MessageComponentType::Edit, QString(), {}};
} else {
m_components.append(componentsForType(eventHandler.messageComponentType()));
}
if (m_linkPreviewer != nullptr) {
if (m_linkPreviewer->loaded()) {
m_components += MessageComponent{MessageComponentType::LinkPreview, QString(), {}};
} else {
m_components += MessageComponent{MessageComponentType::LinkPreviewLoad, QString(), {}};
}
}
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()
{
if (m_room == nullptr || m_event == nullptr) {

View File

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

View File

@@ -7,7 +7,6 @@
#include "neochatconfig.h"
#include <Quotient/connection.h>
#include <Quotient/csapi/rooms.h>
#include <Quotient/events/redactionevent.h>
#include <Quotient/events/roommessageevent.h>
@@ -117,34 +116,6 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
if (message != nullptr) {
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>()) {
m_currentRoom->createPollHandler(eventCast<const PollStartEvent>(event.get()));

View File

@@ -140,5 +140,4 @@ private:
Q_SIGNALS:
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
{
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);
@@ -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
// same day as they will be grouped as a single delegate.
const bool notLastRow = sourceRow < sourceModel()->rowCount() - 1;
const bool previousEventIsState = notLastRow
? sourceModel()->data(sourceModel()->index(sourceRow + 1, 0), MessageEventModel::DelegateTypeRole) == DelegateType::State
: false;
const bool previousEventIsState =
notLastRow ? sourceModel()->data(sourceModel()->index(sourceRow + 1, 0), MessageEventModel::DelegateTypeRole) == DelegateType::State : false;
const bool newDay = sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageEventModel::ShowSectionRole).toBool();
if (eventType == DelegateType::State && notLastRow && previousEventIsState && !newDay) {
return false;
@@ -72,7 +79,11 @@ bool MessageFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sour
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());
} else if (role == StateEventsRole) {
return stateEventsList(mapToSource(index).row());

View File

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

View File

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

View File

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

View File

@@ -9,10 +9,7 @@
#include <Quotient/csapi/list_public_rooms.h>
namespace Quotient
{
class Connection;
}
class NeoChatConnection;
/**
* @class PublicRoomListModel
@@ -33,7 +30,7 @@ class PublicRoomListModel : public QAbstractListModel
/**
* @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.
@@ -95,8 +92,8 @@ public:
*/
[[nodiscard]] QHash<int, QByteArray> roleNames() const override;
[[nodiscard]] Quotient::Connection *connection() const;
void setConnection(Quotient::Connection *conn);
[[nodiscard]] NeoChatConnection *connection() const;
void setConnection(NeoChatConnection *connection);
[[nodiscard]] QString server() const;
void setServer(const QString &value);
@@ -117,7 +114,7 @@ public:
Q_INVOKABLE void search(int limit = 50);
private:
QPointer<Quotient::Connection> m_connection = nullptr;
QPointer<NeoChatConnection> m_connection = nullptr;
QString m_server;
QString m_searchText;
bool m_showOnlySpaces = false;

View File

@@ -5,13 +5,13 @@
#include <QDebug>
#include <Quotient/connection.h>
#include <Quotient/converters.h>
#include <Quotient/csapi/definitions/push_ruleset.h>
#include <Quotient/csapi/pushrules.h>
#include <Quotient/jobs/basejob.h>
#include "neochatconfig.h"
#include "neochatconnection.h"
#include <KLazyLocalizedString>
@@ -454,7 +454,7 @@ void PushRuleModel::setConnection(NeoChatConnection *connection)
Q_EMIT connectionChanged();
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"));
}
}

View File

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

View File

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

View File

@@ -12,10 +12,11 @@ class NeoChatRoom;
namespace Quotient
{
class Connection;
class Room;
}
class NeoChatConnection;
/**
* @class RoomListModel
*
@@ -29,7 +30,7 @@ class RoomListModel : public QAbstractListModel
/**
* @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:
/**
@@ -60,8 +61,8 @@ public:
explicit RoomListModel(QObject *parent = nullptr);
~RoomListModel() override;
[[nodiscard]] Quotient::Connection *connection() const;
void setConnection(Quotient::Connection *connection);
[[nodiscard]] NeoChatConnection *connection() const;
void setConnection(NeoChatConnection *connection);
/**
* @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 = {});
private:
Quotient::Connection *m_connection = nullptr;
QPointer<NeoChatConnection> m_connection;
QList<NeoChatRoom *> m_rooms;
QString m_activeSpaceId;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -129,10 +129,6 @@ QString SortFilterRoomTreeModel::filterText() const
bool SortFilterRoomTreeModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{
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
&& m_mode == DirectChats) {
return true;
@@ -205,4 +201,14 @@ void SortFilterRoomTreeModel::setMode(SortFilterRoomTreeModel::Mode mode)
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"

View File

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

View File

@@ -3,7 +3,6 @@
#include "spacechildrenmodel.h"
#include <Quotient/connection.h>
#include <Quotient/jobs/basejob.h>
#include <Quotient/room.h>
@@ -47,7 +46,7 @@ void SpaceChildrenModel::setSpace(NeoChatRoom *space)
}
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())) {
m_pendingChildren.removeAll(room->name());
refreshModel();

View File

@@ -1,6 +1,8 @@
// 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
#include <QPointer>
#include <Quotient/csapi/space_hierarchy.h>
#include <Quotient/events/stateevent.h>
@@ -149,7 +151,7 @@ public:
bool isSuggested() const;
private:
NeoChatConnection *m_connection;
QPointer<NeoChatConnection> m_connection;
std::vector<std::unique_ptr<SpaceTreeItem>> m_children;
SpaceTreeItem *m_parentItem;

View File

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

View File

@@ -9,10 +9,7 @@
#include <Quotient/csapi/users.h>
namespace Quotient
{
class Connection;
}
class NeoChatConnection;
/**
* @class UserDirectoryListModel
@@ -32,7 +29,7 @@ class UserDirectoryListModel : public QAbstractListModel
/**
* @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.
@@ -57,8 +54,8 @@ public:
explicit UserDirectoryListModel(QObject *parent = nullptr);
[[nodiscard]] Quotient::Connection *connection() const;
void setConnection(Quotient::Connection *conn);
[[nodiscard]] NeoChatConnection *connection() const;
void setConnection(NeoChatConnection *connection);
[[nodiscard]] QString searchText() const;
void setSearchText(const QString &searchText);
@@ -99,7 +96,7 @@ Q_SIGNALS:
void searchingChanged();
private:
Quotient::Connection *m_connection = nullptr;
QPointer<NeoChatConnection> m_connection;
QString m_searchText;
bool attempted = false;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -17,7 +17,7 @@ RowLayout {
property bool collapsed: false
required property NeoChatConnection connection
property alias roomSearchFieldFocussed: roomSearchField.activeFocus
signal search
property Kirigami.Action exploreAction: Kirigami.Action {
text: i18n("Explore rooms")
@@ -83,15 +83,30 @@ RowLayout {
*/
signal textChanged(string newText)
Kirigami.SearchField {
id: roomSearchField
Layout.topMargin: Kirigami.Units.smallSpacing
Layout.bottomMargin: Kirigami.Units.smallSpacing
Item {
Layout.preferredWidth: Kirigami.Units.largeSpacing
}
Kirigami.Heading {
Layout.fillWidth: true
Layout.preferredWidth: root.desiredWidth ? root.desiredWidth - menuButton.width - root.spacing : -1
visible: !root.collapsed
onTextChanged: root.textChanged(text)
KeyNavigation.tab: treeView
text: i18nc("@title", "Rooms")
}
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 {
@@ -100,8 +115,8 @@ RowLayout {
display: QQC2.AbstractButton.IconOnly
checkable: true
action: Kirigami.Action {
text: i18n("Create rooms and chats")
icon.name: "irc-join-channel"
text: i18nc("@action:button", "Show Menu")
icon.name: "application-menu-symbolic"
onTriggered: {
if (Kirigami.isMobile) {
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
title: Config.windowTitleFocus ? activeFocusItem + " " + (activeFocusItem ? activeFocusItem.Accessible.name : "") : "NeoChat"
minimumWidth: Kirigami.Units.gridUnit * 20
minimumHeight: Kirigami.Units.gridUnit * 15
@@ -96,12 +98,9 @@ Kirigami.ApplicationWindow {
}
}
Loader {
id: quickView
active: !Kirigami.Settings.isMobile
sourceComponent: QuickSwitcher {
connection: root.connection
}
QuickSwitcher {
id: quickSwitcher
connection: root.connection
}
Connections {
@@ -160,8 +159,11 @@ Kirigami.ApplicationWindow {
connection: root.connection
handleOpenIcon.source: "arrow-right"
handleClosedIcon.source: "arrow-left"
handleClosedIcon.source: "documentinfo-symbolic"
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
Connections {
@@ -221,6 +223,8 @@ Kirigami.ApplicationWindow {
RoomListPage {
id: roomList
onSearch: quickSwitcher.open()
connection: root.connection
Shortcut {

View File

@@ -6,6 +6,7 @@ import QtQuick.Controls as QQC2
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.components
import org.kde.kitemmodels
import org.kde.neochat
@@ -19,10 +20,10 @@ QQC2.Dialog {
width: Math.min(700, parent.width)
height: 400
leftPadding: 0
rightPadding: 0
bottomPadding: 1
topPadding: 0
leftPadding: Kirigami.Units.smallSpacing
rightPadding: Kirigami.Units.smallSpacing
bottomPadding: Kirigami.Units.smallSpacing
topPadding: Kirigami.Units.smallSpacing
anchors.centerIn: applicationWindow().overlay
@@ -40,53 +41,60 @@ QQC2.Dialog {
roomList.currentIndex = 0;
}
header: Kirigami.SearchField {
id: searchField
Keys.onDownPressed: {
roomList.forceActiveFocus();
if (roomList.currentIndex < roomList.count - 1) {
roomList.currentIndex++;
} else {
roomList.currentIndex = 0;
background: DialogRoundedBackground {}
contentItem: ColumnLayout {
Kirigami.SearchField {
id: searchField
Layout.fillWidth: true
Keys.onDownPressed: {
roomList.forceActiveFocus();
if (roomList.currentIndex < roomList.count - 1) {
roomList.currentIndex++;
} else {
roomList.currentIndex = 0;
}
}
}
Keys.onUpPressed: {
if (roomList.currentIndex === 0) {
roomList.currentIndex = roomList.count - 1;
} else {
roomList.currentIndex--;
Keys.onUpPressed: {
if (roomList.currentIndex === 0) {
roomList.currentIndex = roomList.count - 1;
} else {
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 {
anchors.fill: parent
clip: true
QQC2.ScrollView {
clip: true
Keys.forwardTo: searchField
ListView {
id: roomList
currentIndex: 0
highlightMoveDuration: 200
Layout.fillWidth: true
Layout.fillHeight: true
Keys.forwardTo: searchField
keyNavigationEnabled: true
model: RoomManager.sortFilterRoomListModel
delegate: RoomDelegate {
connection: root.connection
onClicked: root.close()
ListView {
id: roomList
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 displayName
property bool showConfigure: true
property bool collapsed: false
readonly property bool hasNotifications: contextNotificationCount > 0
@@ -130,7 +132,7 @@ Delegates.RoundedItemDelegate {
QQC2.Button {
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")
display: QQC2.Button.IconOnly

View File

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

View File

@@ -21,269 +21,281 @@ QQC2.Control {
topPadding: 0
bottomPadding: 0
contentItem: Loader {
id: sidebarColumn
z: 0
onActiveFocusChanged: if (activeFocus) {
notificationsButton.forceActiveFocus();
}
sourceComponent: ColumnLayout {
spacing: 0
contentItem: ColumnLayout {
spacing: 0
QQC2.ScrollView {
id: scrollView
Layout.fillWidth: true
Layout.fillHeight: true
QQC2.ScrollView {
id: scrollView
Layout.fillWidth: true
Layout.fillHeight: true
QQC2.ScrollBar.vertical.policy: QQC2.ScrollBar.AlwaysOff
QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff
contentWidth: -1 // disable horizontal scroll
QQC2.ScrollBar.vertical.policy: QQC2.ScrollBar.AlwaysOff
QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff
contentWidth: -1 // disable horizontal scroll
background: Rectangle {
color: Kirigami.Theme.backgroundColor
Kirigami.Theme.colorSet: Kirigami.Theme.View
background: Rectangle {
color: Kirigami.Theme.backgroundColor
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 {
id: column
width: scrollView.width
spacing: 0
Kirigami.Separator {
Layout.fillWidth: true
Layout.leftMargin: Kirigami.Units.smallSpacing
Layout.rightMargin: Kirigami.Units.smallSpacing
}
AvatarTabButton {
id: notificationsButton
AvatarTabButton {
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.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"
}
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
}, {
title: i18nc("@title", "Notifications")
})
}).open();
}
Kirigami.Separator {
Layout.fillWidth: true
Layout.leftMargin: Kirigami.Units.smallSpacing
Layout.rightMargin: Kirigami.Units.smallSpacing
Component {
id: recommendedSpaceDialogComponent
RecommendedSpaceDialog {}
}
AvatarTabButton {
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"
}
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 {
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"
}
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() {
root.currentRoom.markAllMessagesAsRead();
// 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