[Rich text editor] Add link functionality to rich text editor (#1309)
* Add link functionality to rich text editor * Add 'list dialog' component compound design library * Add 'text field list item' component to compound design library
This commit is contained in:
1
changelog.d/1309.feature
Normal file
1
changelog.d/1309.feature
Normal file
@@ -0,0 +1 @@
|
||||
[Rich text editor] Add link support to rich text editor
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="screen_analytics_prompt_data_usage">"Wir zeichnen keine persönlichen Daten auf und erstellen keine Profile."</string>
|
||||
<string name="screen_analytics_prompt_help_us_improve">"Teile anonyme Nutzungsdaten, um uns bei der Identifizierung von Problemen zu helfen."</string>
|
||||
<string name="screen_analytics_prompt_read_terms">"Du kannst alle unsere Bedingungen lesen %1$s."</string>
|
||||
<string name="screen_analytics_prompt_help_us_improve">"Teilen Sie anonyme Nutzungsdaten, um uns bei der Identifizierung von Problemen zu helfen."</string>
|
||||
<string name="screen_analytics_prompt_read_terms">"Sie können alle unsere Bedingungen lesen%1$s."</string>
|
||||
<string name="screen_analytics_prompt_read_terms_content_link">"hier"</string>
|
||||
<string name="screen_analytics_prompt_settings">"Du kannst diese Funktion jederzeit deaktivieren"</string>
|
||||
<string name="screen_analytics_prompt_third_party_sharing">"Wir geben Ihre Daten nicht an Dritte weiter"</string>
|
||||
<string name="screen_analytics_prompt_third_party_sharing">"Wir geben deine Daten nicht an Dritte weiter"</string>
|
||||
<string name="screen_analytics_prompt_title">"Hilf uns %1$s zu verbessern"</string>
|
||||
</resources>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<string name="screen_notification_optin_title">"Erlaube Benachrichtigungen und verpasse keine Nachricht"</string>
|
||||
<string name="screen_welcome_bullet_1">"Anrufe, Umfragen, Suchfunktionen und mehr werden im Laufe des Jahres hinzugefügt."</string>
|
||||
<string name="screen_welcome_bullet_2">"Der Nachrichtenverlauf für verschlüsselte Räume wird in diesem Update nicht verfügbar sein."</string>
|
||||
<string name="screen_welcome_bullet_3">"Wir würden uns freuen, von Ihnen zu hören. Teilen Sie uns Ihre Meinung über die Einstellungsseite mit."</string>
|
||||
<string name="screen_welcome_bullet_3">"Wir würden uns freuen, von dir zu hören. Teile uns deine Meinung über die Einstellungsseite mit."</string>
|
||||
<string name="screen_welcome_button">"Los geht\'s!"</string>
|
||||
<string name="screen_welcome_subtitle">"Folgendes müssen Sie wissen:"</string>
|
||||
<string name="screen_welcome_subtitle">"Folgendes musst du wissen:"</string>
|
||||
<string name="screen_welcome_title">"Willkommen bei %1$s!"</string>
|
||||
</resources>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<string name="screen_account_provider_form_notice">"Gib einen Suchbegriff oder eine Domainadresse ein."</string>
|
||||
<string name="screen_account_provider_form_subtitle">"Suche nach einem Unternehmen, einer Community oder einem privaten Server."</string>
|
||||
<string name="screen_account_provider_form_title">"Kontoanbieter finden"</string>
|
||||
<string name="screen_account_provider_signin_subtitle">"Hier werden Ihre Gespräche gespeichert – genau so, wie du einen E-Mail-Anbieter nutzen würdest, um deine E-Mails aufzubewahren."</string>
|
||||
<string name="screen_account_provider_signin_subtitle">"Hier werden deine Gespräche gespeichert – genau so, wie du einen E-Mail-Anbieter nutzen würdest, um deine E-Mails aufzubewahren."</string>
|
||||
<string name="screen_account_provider_signin_title">"Du bist dabei, dich bei %s anzumelden"</string>
|
||||
<string name="screen_account_provider_signup_subtitle">"Hier werden deine Gespräche gespeichert – genau so, wie du einen E-Mail-Anbieter nutzen würdest, um deine E-Mails aufzubewahren."</string>
|
||||
<string name="screen_account_provider_signup_title">"Du bist dabei, ein Konto bei %s zu erstellen"</string>
|
||||
@@ -17,7 +17,7 @@
|
||||
<string name="screen_change_server_error_no_sliding_sync_message">"Dieser Server unterstützt derzeit kein Sliding Sync."</string>
|
||||
<string name="screen_change_server_form_header">"Homeserver-URL"</string>
|
||||
<string name="screen_change_server_form_notice">"Du kannst nur eine Verbindung zu einem vorhandenen Server herstellen, der Sliding Sync unterstützt. Dein Homeserver-Administrator muss das konfigurieren. %1$s"</string>
|
||||
<string name="screen_change_server_subtitle">"Wie lautet die Adresse Ihres Servers?"</string>
|
||||
<string name="screen_change_server_subtitle">"Wie lautet die Adresse deines Servers?"</string>
|
||||
<string name="screen_login_error_deactivated_account">"Dieses Konto wurde deaktiviert."</string>
|
||||
<string name="screen_login_error_invalid_credentials">"Falscher Benutzername und/oder Passwort"</string>
|
||||
<string name="screen_login_error_invalid_user_id">"Dies ist keine gültige Benutzerkennung. Erwartetes Format: \'@user:homeserver.org\'"</string>
|
||||
@@ -28,15 +28,15 @@
|
||||
<string name="screen_server_confirmation_change_server">"Kontoanbieter wechseln"</string>
|
||||
<string name="screen_server_confirmation_message_login_element_dot_io">"Ein privater Server für die Mitarbeiter von Element."</string>
|
||||
<string name="screen_server_confirmation_message_login_matrix_dot_org">"Matrix ist ein offenes Netzwerk für eine sichere, dezentrale Kommunikation."</string>
|
||||
<string name="screen_server_confirmation_message_register">"Hier werden Ihre Gespräche gespeichert - so wie Sie Ihre E-Mails bei einem E-Mail-Anbieter aufbewahren würden."</string>
|
||||
<string name="screen_server_confirmation_title_login">"Sie sind dabei, sich bei %1$s anzumelden"</string>
|
||||
<string name="screen_server_confirmation_title_register">"Sie sind dabei, ein Konto auf %1$s zu erstellen"</string>
|
||||
<string name="screen_waitlist_message">"Derzeit besteht eine hohe Nachfrage nach %1$s auf %2$s. Kehren Sie in ein paar Tagen zur App zurück und versuchen Sie es erneut.
|
||||
<string name="screen_server_confirmation_message_register">"Hier werden deine Gespräche gespeichert - so wie du deine E-Mails bei einem E-Mail-Anbieter aufbewahren würden."</string>
|
||||
<string name="screen_server_confirmation_title_login">"Du bist dabei, dich bei %1$s anzumelden"</string>
|
||||
<string name="screen_server_confirmation_title_register">"Du bist dabei, ein Konto auf %1$s zu erstellen"</string>
|
||||
<string name="screen_waitlist_message">"Derzeit besteht eine hohe Nachfrage nach %1$s auf %2$s. Kehre in ein paar Tagen zur App zurück und versuche es erneut.
|
||||
|
||||
Danke für Ihre Geduld!"</string>
|
||||
Danke für deine Geduld!"</string>
|
||||
<string name="screen_waitlist_message_success">"Willkommen bei %1$s!"</string>
|
||||
<string name="screen_waitlist_title">"Sie sind fast am Ziel."</string>
|
||||
<string name="screen_waitlist_title_success">"Sie sind dabei."</string>
|
||||
<string name="screen_waitlist_title">"Du bist fast am Ziel."</string>
|
||||
<string name="screen_waitlist_title_success">"Du bist dabei."</string>
|
||||
<string name="screen_account_provider_continue">"Weiter"</string>
|
||||
<string name="screen_change_server_submit">"Weiter"</string>
|
||||
<string name="screen_change_server_title">"Wähle deinen Server aus"</string>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="screen_signout_confirmation_dialog_content">"Sind Sie sicher, dass Sie sich abmelden wollen?"</string>
|
||||
<string name="screen_signout_confirmation_dialog_content">"Bist du sicher, dass du dich abmelden willst?"</string>
|
||||
<string name="screen_signout_confirmation_dialog_title">"Abmelden"</string>
|
||||
<string name="screen_signout_in_progress_dialog_content">"Abmelden…"</string>
|
||||
<string name="screen_signout_confirmation_dialog_submit">"Abmelden"</string>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<string name="screen_room_reactions_show_less">"Weniger anzeigen"</string>
|
||||
<string name="screen_room_reactions_show_more">"Mehr anzeigen"</string>
|
||||
<string name="screen_room_retry_send_menu_send_again_action">"Erneut senden"</string>
|
||||
<string name="screen_room_retry_send_menu_title">"Ihre Nachricht konnte nicht gesendet werden"</string>
|
||||
<string name="screen_room_retry_send_menu_title">"Deine Nachricht konnte nicht gesendet werden"</string>
|
||||
<string name="screen_room_timeline_add_reaction">"Emoji hinzufügen"</string>
|
||||
<string name="screen_room_timeline_less_reactions">"Weniger anzeigen"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Fehler beim Verarbeiten des hochgeladenen Mediums. Bitte versuche es erneut."</string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="screen_edit_profile_display_name">"Anzeigename"</string>
|
||||
<string name="screen_edit_profile_display_name_placeholder">"Ihr Anzeigename"</string>
|
||||
<string name="screen_edit_profile_display_name_placeholder">"Dein Anzeigename"</string>
|
||||
<string name="screen_edit_profile_error">"Ein unbekannter Fehler ist aufgetreten und die Informationen konnten nicht geändert werden."</string>
|
||||
<string name="screen_edit_profile_error_title">"Profil kann nicht aktualisiert werden"</string>
|
||||
<string name="screen_edit_profile_title">"Profil bearbeiten"</string>
|
||||
|
||||
@@ -10,6 +10,6 @@
|
||||
<string name="screen_bug_report_include_crash_logs">"Absturzprotokolle senden"</string>
|
||||
<string name="screen_bug_report_include_logs">"Protokolle zulassen"</string>
|
||||
<string name="screen_bug_report_include_screenshot">"Bildschirmfoto senden"</string>
|
||||
<string name="screen_bug_report_logs_description">"Die Protokolle werden Ihrer Nachricht beigefügt, um sicherzustellen, dass alles ordnungsgemäß funktioniert. Um deine Nachricht ohne Protokolle zu senden, deaktiviere diese Einstellung."</string>
|
||||
<string name="screen_bug_report_logs_description">"Die Protokolle werden deiner Nachricht beigefügt, um sicherzustellen, dass alles ordnungsgemäß funktioniert. Um deine Nachricht ohne Protokolle zu senden, deaktiviere diese Einstellung."</string>
|
||||
<string name="screen_bug_report_rash_logs_alert_title">"%1$s ist bei der letzten Nutzung abgestürzt. Möchtest du einen Absturzbericht mit uns teilen?"</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
<string name="screen_roomlist_empty_message">"Beginne, indem du jemandem eine Nachricht sendest."</string>
|
||||
<string name="screen_roomlist_empty_title">"Noch keine Chats."</string>
|
||||
<string name="screen_roomlist_main_space_title">"Alle Chats"</string>
|
||||
<string name="session_verification_banner_message">"Es sieht aus, als würden Sie ein neues Gerät verwenden. Verifizieren Sie es mit einem anderen Gerät, damit Sie auf Ihre verschlüsselten Nachrichten zugreifen können."</string>
|
||||
<string name="session_verification_banner_title">"Bestätigen Sie Ihre Identität"</string>
|
||||
<string name="session_verification_banner_message">"Es sieht aus, als würdest du ein neues Gerät verwenden. Verifiziere es mit einem anderen Gerät, damit du auf deine verschlüsselten Nachrichten zugreifen kannst."</string>
|
||||
<string name="session_verification_banner_title">"Bestätige deine Identität"</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="screen_session_verification_cancelled_subtitle">"Etwas scheint nicht zu stimmen. Entweder ist das Zeitlimit für die Anfrage abgelaufen oder die Anfrage wurde abgelehnt."</string>
|
||||
<string name="screen_session_verification_compare_emojis_subtitle">"Vergewissern Sie sich, dass die folgenden Emojis mit denen in Ihrer anderen Session übereinstimmen."</string>
|
||||
<string name="screen_session_verification_compare_emojis_subtitle">"Vergewissere dich dass die folgenden Emojis mit denen in deiner anderen Session übereinstimmen."</string>
|
||||
<string name="screen_session_verification_compare_emojis_title">"Emojis vergleichen"</string>
|
||||
<string name="screen_session_verification_complete_subtitle">"Ihre neue Session ist nun verifiziert. Sie hat Zugriff auf Ihre verschlüsselten Nachrichten und wird von anderen Benutzern als vertrauenswürdig eingestuft."</string>
|
||||
<string name="screen_session_verification_open_existing_session_subtitle">"Beweisen Sie Ihre Identität, um auf Ihren verschlüsselten Nachrichtenverlauf zuzugreifen."</string>
|
||||
<string name="screen_session_verification_open_existing_session_title">"Öffnen Sie eine bestehende Sitzung"</string>
|
||||
<string name="screen_session_verification_complete_subtitle">"Deine neue Session ist nun verifiziert. Sie hat Zugriff auf deine verschlüsselten Nachrichten und wird von anderen Benutzern als vertrauenswürdig eingestuft."</string>
|
||||
<string name="screen_session_verification_open_existing_session_subtitle">"Beweise deine Identität, um auf deinen verschlüsselten Nachrichtenverlauf zuzugreifen."</string>
|
||||
<string name="screen_session_verification_open_existing_session_title">"Öffne eine bestehende Session"</string>
|
||||
<string name="screen_session_verification_positive_button_canceled">"Verifizierung wiederholen"</string>
|
||||
<string name="screen_session_verification_positive_button_initial">"Ich bin bereit"</string>
|
||||
<string name="screen_session_verification_positive_button_verifying_ongoing">"Warten auf eine Übereinstimmung"</string>
|
||||
<string name="screen_session_verification_request_accepted_subtitle">"Vergleichen Sie die einzelnen Emojis und stellen Sie sicher, dass sie in der gleichen Reihenfolge erscheinen."</string>
|
||||
<string name="screen_session_verification_request_accepted_subtitle">"Vergleiche die einzelnen Emojis und stelle sicher, dass sie in der gleichen Reihenfolge erscheinen."</string>
|
||||
<string name="screen_session_verification_they_dont_match">"Sie stimmen nicht überein"</string>
|
||||
<string name="screen_session_verification_they_match">"Sie stimmen überein"</string>
|
||||
<string name="screen_session_verification_waiting_to_accept_subtitle">"Akzeptieren Sie die Anfrage, um den Verifizierungsprozess in Ihrer anderen Session zu starten, um fortzufahren."</string>
|
||||
<string name="screen_session_verification_waiting_to_accept_subtitle">"Akzeptiere die Anfrage, um den Verifizierungsprozess in deiner anderen Session zu starten, um fortzufahren."</string>
|
||||
<string name="screen_session_verification_waiting_to_accept_title">"Warten auf die Annahme der Anfrage"</string>
|
||||
<string name="screen_session_verification_cancelled_title">"Verifizierung abgebrochen"</string>
|
||||
<string name="screen_session_verification_positive_button_ready">"Start"</string>
|
||||
|
||||
@@ -46,7 +46,7 @@ dependencyanalysis = "1.22.0"
|
||||
stem = "2.3.0"
|
||||
sqldelight = "1.5.5"
|
||||
telephoto = "0.6.0"
|
||||
wysiwyg = "2.10.0"
|
||||
wysiwyg = "2.10.2"
|
||||
|
||||
# DI
|
||||
dagger = "2.48"
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
* Copyright (c) 2023 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.designsystem.components.dialogs
|
||||
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.airbnb.android.showkase.annotation.ShowkaseComposable
|
||||
import io.element.android.libraries.designsystem.components.list.TextFieldListItem
|
||||
import io.element.android.libraries.designsystem.preview.DayNightPreviews
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||
import io.element.android.libraries.designsystem.theme.components.DialogPreview
|
||||
import io.element.android.libraries.designsystem.theme.components.ListSupportingText
|
||||
import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun ListDialog(
|
||||
onDismissRequest: () -> Unit,
|
||||
onSubmit: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
title: String? = null,
|
||||
subtitle: String? = null,
|
||||
cancelText: String = stringResource(CommonStrings.action_cancel),
|
||||
submitText: String = stringResource(CommonStrings.action_ok),
|
||||
listItems: LazyListScope.() -> Unit,
|
||||
) {
|
||||
val decoratedSubtitle: @Composable (() -> Unit)? = subtitle?.let {
|
||||
@Composable {
|
||||
ListSupportingText(
|
||||
text = it,
|
||||
modifier = Modifier.padding(start = 8.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
AlertDialog(
|
||||
modifier = modifier,
|
||||
onDismissRequest = onDismissRequest,
|
||||
) {
|
||||
ListDialogContent(
|
||||
title = title,
|
||||
subtitle = decoratedSubtitle,
|
||||
cancelText = cancelText,
|
||||
submitText = submitText,
|
||||
onDismissRequest = onDismissRequest,
|
||||
onSubmitClicked = onSubmit,
|
||||
listItems = listItems,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
internal fun ListDialogContent(
|
||||
listItems: LazyListScope.() -> Unit,
|
||||
onDismissRequest: () -> Unit,
|
||||
onSubmitClicked: () -> Unit,
|
||||
cancelText: String,
|
||||
submitText: String,
|
||||
modifier: Modifier = Modifier,
|
||||
title: String? = null,
|
||||
subtitle: @Composable (() -> Unit)? = null,
|
||||
) {
|
||||
SimpleAlertDialogContent(
|
||||
title = title,
|
||||
subtitle = subtitle,
|
||||
modifier = modifier,
|
||||
cancelText = cancelText,
|
||||
submitText = submitText,
|
||||
onCancelClicked = onDismissRequest,
|
||||
onSubmitClicked = onSubmitClicked,
|
||||
applyPaddingToContents = false,
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.padding(start = 8.dp)
|
||||
) { listItems() }
|
||||
}
|
||||
}
|
||||
|
||||
@DayNightPreviews
|
||||
@ShowkaseComposable(group = PreviewGroup.Dialogs)
|
||||
@Composable
|
||||
internal fun ListDialogContentPreview() {
|
||||
ElementPreview(showBackground = false) {
|
||||
DialogPreview {
|
||||
ListDialogContent(
|
||||
listItems = {
|
||||
item {
|
||||
TextFieldListItem(placeholder = "Text input", text = "", onTextChanged = {})
|
||||
}
|
||||
item {
|
||||
TextFieldListItem(placeholder = "Another text input", text = "", onTextChanged = {})
|
||||
}
|
||||
},
|
||||
title = "Dialog title",
|
||||
onDismissRequest = {},
|
||||
onSubmitClicked = {},
|
||||
cancelText = "Cancel",
|
||||
submitText = "Save",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c) 2023 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.designsystem.components.list
|
||||
|
||||
import androidx.compose.material3.OutlinedTextFieldDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||
import io.element.android.libraries.designsystem.theme.components.OutlinedTextField
|
||||
import io.element.android.libraries.designsystem.theme.components.Text
|
||||
import io.element.android.libraries.theme.ElementTheme
|
||||
|
||||
@Composable
|
||||
fun TextFieldListItem(
|
||||
placeholder: String,
|
||||
text: String,
|
||||
onTextChanged: (String) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val textFieldStyle = ElementTheme.materialTypography.bodyLarge
|
||||
|
||||
OutlinedTextField(
|
||||
value = text,
|
||||
onValueChange = onTextChanged,
|
||||
placeholder = { Text(placeholder) },
|
||||
colors = OutlinedTextFieldDefaults.colors(
|
||||
disabledBorderColor = Color.Transparent,
|
||||
errorBorderColor = Color.Transparent,
|
||||
focusedBorderColor = Color.Transparent,
|
||||
unfocusedBorderColor = Color.Transparent,
|
||||
),
|
||||
textStyle = textFieldStyle,
|
||||
modifier = modifier,
|
||||
)
|
||||
}
|
||||
|
||||
@Preview("Text field List item - empty", group = PreviewGroup.ListItems)
|
||||
@Composable
|
||||
internal fun TextFieldListItemEmptyPreview() {
|
||||
ElementThemedPreview {
|
||||
TextFieldListItem(
|
||||
placeholder = "Placeholder",
|
||||
text = "",
|
||||
onTextChanged = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview("Text field List item - text", group = PreviewGroup.ListItems)
|
||||
@Composable
|
||||
internal fun TextFieldListItemPreview() {
|
||||
ElementThemedPreview {
|
||||
TextFieldListItem(
|
||||
placeholder = "Placeholder",
|
||||
text = "Text",
|
||||
onTextChanged = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -2,56 +2,56 @@
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="state_event_avatar_changed_too">"(Avatar wurde auch geändert)"</string>
|
||||
<string name="state_event_avatar_url_changed">"%1$s hat den Avatar geändert"</string>
|
||||
<string name="state_event_avatar_url_changed_by_you">"Sie haben Ihren Avatar geändert"</string>
|
||||
<string name="state_event_avatar_url_changed_by_you">"Du hast deinen Avatar geändert"</string>
|
||||
<string name="state_event_display_name_changed_from">"%1$s hat den Anzeigenamen von %2$s auf %3$s geändert"</string>
|
||||
<string name="state_event_display_name_changed_from_by_you">"Sie haben Ihren Anzeigenamen von %1$s auf %2$s geändert"</string>
|
||||
<string name="state_event_display_name_changed_from_by_you">"Du hast deinen Anzeigenamen von %1$s auf %2$s geändert"</string>
|
||||
<string name="state_event_display_name_removed">"%1$s hat den Anzeigenamen entfernt (war %2$s)"</string>
|
||||
<string name="state_event_display_name_removed_by_you">"Sie haben Ihren Anzeigenamen entfernt (war %1$s)"</string>
|
||||
<string name="state_event_display_name_set">"%1$s setzen ihren Anzeigenamen auf %2$s"</string>
|
||||
<string name="state_event_display_name_set_by_you">"Sie haben Ihren Anzeigenamen zu %1$s geändert"</string>
|
||||
<string name="state_event_display_name_removed_by_you">"Du hast deinen Anzeigenamen entfernt (war %1$s)"</string>
|
||||
<string name="state_event_display_name_set">"%1$s hat den Anzeigenamen auf %2$s geändert"</string>
|
||||
<string name="state_event_display_name_set_by_you">"Du hast deinen Anzeigenamen zu %1$s geändert"</string>
|
||||
<string name="state_event_room_avatar_changed">"%1$s hat den Raum-Avatar geändert"</string>
|
||||
<string name="state_event_room_avatar_changed_by_you">"Sie haben den Raum-Avatar geändert"</string>
|
||||
<string name="state_event_room_avatar_changed_by_you">"Du hast den Raum-Avatar geändert"</string>
|
||||
<string name="state_event_room_avatar_removed">"%1$s hat den Raum-Avatar entfernt"</string>
|
||||
<string name="state_event_room_avatar_removed_by_you">"Sie haben den Raum-Avatar entfernt"</string>
|
||||
<string name="state_event_room_avatar_removed_by_you">"Du hast den Raum-Avatar entfernt"</string>
|
||||
<string name="state_event_room_ban">"%1$s hat %2$s gesperrt"</string>
|
||||
<string name="state_event_room_ban_by_you">"Sie haben %1$s gesperrt"</string>
|
||||
<string name="state_event_room_ban_by_you">"Du hast %1$s gesperrt"</string>
|
||||
<string name="state_event_room_created">"%1$s hat den Raum erstellt"</string>
|
||||
<string name="state_event_room_created_by_you">"Sie haben den Raum erstellt"</string>
|
||||
<string name="state_event_room_created_by_you">"Du hast den Raum erstellt"</string>
|
||||
<string name="state_event_room_invite">"%1$s hat %2$s eingeladen"</string>
|
||||
<string name="state_event_room_invite_accepted">"%1$s hat die Einladung angenommen"</string>
|
||||
<string name="state_event_room_invite_accepted_by_you">"Sie haben die Einladung angenommen"</string>
|
||||
<string name="state_event_room_invite_by_you">"Sie haben %1$s eingeladen"</string>
|
||||
<string name="state_event_room_invite_accepted_by_you">"Du hast die Einladung angenommen"</string>
|
||||
<string name="state_event_room_invite_by_you">"Du hast %1$s eingeladen"</string>
|
||||
<string name="state_event_room_invite_you">"%1$s hat dich eingeladen"</string>
|
||||
<string name="state_event_room_join">"%1$s hat den Raum betreten"</string>
|
||||
<string name="state_event_room_join_by_you">"Sie haben den Raum betreten"</string>
|
||||
<string name="state_event_room_join_by_you">"Du hast den Raum betreten"</string>
|
||||
<string name="state_event_room_knock">"%1$s hat angefragt beizutreten"</string>
|
||||
<string name="state_event_room_knock_accepted">"%1$s hat %2$s den Beitritt erlaubt"</string>
|
||||
<string name="state_event_room_knock_accepted_by_you">"%1$s hat Ihnen den Betritt erlaubt"</string>
|
||||
<string name="state_event_room_knock_by_you">"Sie haben angefragt beizutreten"</string>
|
||||
<string name="state_event_room_knock_by_you">"Du hast angefragt beizutreten"</string>
|
||||
<string name="state_event_room_knock_denied">"%1$s hat die Beitrittsanfrage von %2$s abgelehnt"</string>
|
||||
<string name="state_event_room_knock_denied_by_you">"Sie haben die Beitrittsanfrage von %1$s abgelehnt"</string>
|
||||
<string name="state_event_room_knock_denied_you">"%1$s hat Ihre Beitrittsanfrage abgelehnt"</string>
|
||||
<string name="state_event_room_knock_denied_by_you">"Du hast die Beitrittsanfrage von %1$s abgelehnt"</string>
|
||||
<string name="state_event_room_knock_denied_you">"%1$s hat deine Beitrittsanfrage abgelehnt"</string>
|
||||
<string name="state_event_room_knock_retracted">"%1$s ist nicht mehr an einem Beitritt interessiert"</string>
|
||||
<string name="state_event_room_knock_retracted_by_you">"Sie haben Ihre Beitrittsanfrage zurückgezogen"</string>
|
||||
<string name="state_event_room_knock_retracted_by_you">"Du hast deine Beitrittsanfrage zurückgezogen"</string>
|
||||
<string name="state_event_room_leave">"%1$s hat den Raum verlassen"</string>
|
||||
<string name="state_event_room_leave_by_you">"Sie haben den Raum verlassen"</string>
|
||||
<string name="state_event_room_leave_by_you">"Du hast den Raum verlassen"</string>
|
||||
<string name="state_event_room_name_changed">"%1$s hat den Raumnamen geändert in: %2$s"</string>
|
||||
<string name="state_event_room_name_changed_by_you">"Sie haben den Raumnamen geändert in: %1$s"</string>
|
||||
<string name="state_event_room_name_changed_by_you">"Du hast den Raumnamen geändert in: %1$s"</string>
|
||||
<string name="state_event_room_name_removed">"%1$s hat den Raumnamen entfernt"</string>
|
||||
<string name="state_event_room_name_removed_by_you">"Sie haben den Raumnamen entfernt"</string>
|
||||
<string name="state_event_room_name_removed_by_you">"Du hast den Raumnamen entfernt"</string>
|
||||
<string name="state_event_room_reject">"%1$s hat die Einladung abgelehnt"</string>
|
||||
<string name="state_event_room_reject_by_you">"Sie haben die Einladung abgelehnt"</string>
|
||||
<string name="state_event_room_reject_by_you">"Du hast die Einladung abgelehnt"</string>
|
||||
<string name="state_event_room_remove">"%1$s hat %2$s entfernt"</string>
|
||||
<string name="state_event_room_remove_by_you">"Sie haben %1$s entfernt"</string>
|
||||
<string name="state_event_room_remove_by_you">"Du hast %1$s entfernt"</string>
|
||||
<string name="state_event_room_third_party_invite">"%1$s hat eine Einladung an %2$s gesendet, dem Raum beizutreten"</string>
|
||||
<string name="state_event_room_third_party_invite_by_you">"Sie haben eine Einladung an %1$s gesendet, dem Raum beizutreten"</string>
|
||||
<string name="state_event_room_third_party_invite_by_you">"Du hast eine Einladung an %1$s gesendet, dem Raum beizutreten"</string>
|
||||
<string name="state_event_room_third_party_revoked_invite">"%1$s hat die Einladung an %2$s zum Betreten des Raums zurückgezogen"</string>
|
||||
<string name="state_event_room_third_party_revoked_invite_by_you">"Sie haben die Einladung an %1$s zum Betreten des Raums zurückgezogen"</string>
|
||||
<string name="state_event_room_third_party_revoked_invite_by_you">"Du hast die Einladung an %1$s zum Betreten des Raums zurückgezogen"</string>
|
||||
<string name="state_event_room_topic_changed">"%1$s hat das Thema geändert in: %2$s"</string>
|
||||
<string name="state_event_room_topic_changed_by_you">"Sie haben das Thema geändert in: %1$s"</string>
|
||||
<string name="state_event_room_topic_changed_by_you">"Du hast das Thema geändert in: %1$s"</string>
|
||||
<string name="state_event_room_topic_removed">"%1$s hat das Raumthema entfernt"</string>
|
||||
<string name="state_event_room_topic_removed_by_you">"Sie haben das Raumthema entfernt"</string>
|
||||
<string name="state_event_room_topic_removed_by_you">"Du hast das Raumthema entfernt"</string>
|
||||
<string name="state_event_room_unban">"%1$s hat die Sperre für %2$s aufgehoben"</string>
|
||||
<string name="state_event_room_unban_by_you">"Sie haben die Sperre für %1$s aufgehoben"</string>
|
||||
<string name="state_event_room_unban_by_you">"Du hast die Sperre für %1$s aufgehoben"</string>
|
||||
<string name="state_event_room_unknown_membership_change">"%1$s hat eine unbekannte Raumänderung vorgenommen"</string>
|
||||
</resources>
|
||||
|
||||
@@ -45,7 +45,9 @@ import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
@@ -82,6 +84,7 @@ import io.element.android.wysiwyg.compose.RichTextEditor
|
||||
import io.element.android.wysiwyg.compose.RichTextEditorDefaults
|
||||
import io.element.android.wysiwyg.compose.RichTextEditorState
|
||||
import io.element.android.wysiwyg.view.models.InlineFormat
|
||||
import io.element.android.wysiwyg.view.models.LinkAction
|
||||
import uniffi.wysiwyg_composer.ActionState
|
||||
import uniffi.wysiwyg_composer.ComposerAction
|
||||
|
||||
@@ -183,7 +186,7 @@ fun TextComposer(
|
||||
placeholder = if (composerMode.inThread) {
|
||||
stringResource(id = CommonStrings.action_reply_in_thread)
|
||||
} else {
|
||||
stringResource(id = CommonStrings.rich_text_editor_composer_placeholder)
|
||||
stringResource(id = R.string.rich_text_editor_composer_placeholder)
|
||||
},
|
||||
roundedCorners = roundedCorners,
|
||||
bgColor = bgColor,
|
||||
@@ -337,67 +340,87 @@ private fun TextFormatting(
|
||||
state = state.actions[ComposerAction.BOLD].toButtonState(),
|
||||
onClick = { state.toggleInlineFormat(InlineFormat.Bold) },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.Bold),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_format_bold)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_format_bold)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.ITALIC].toButtonState(),
|
||||
onClick = { state.toggleInlineFormat(InlineFormat.Italic) },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.Italic),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_format_italic)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_format_italic)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.UNDERLINE].toButtonState(),
|
||||
onClick = { state.toggleInlineFormat(InlineFormat.Underline) },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.Underline),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_format_underline)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_format_underline)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.STRIKE_THROUGH].toButtonState(),
|
||||
onClick = { state.toggleInlineFormat(InlineFormat.StrikeThrough) },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.Strikethrough),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_format_strikethrough)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_format_strikethrough)
|
||||
)
|
||||
|
||||
var linkDialogAction by remember { mutableStateOf<LinkAction?>(null) }
|
||||
|
||||
linkDialogAction?.let {
|
||||
TextComposerLinkDialog(
|
||||
onDismissRequest = { linkDialogAction = null },
|
||||
onCreateLinkRequest = state::insertLink,
|
||||
onSaveLinkRequest = state::setLink,
|
||||
onRemoveLinkRequest = state::removeLink,
|
||||
linkAction = it,
|
||||
)
|
||||
}
|
||||
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.LINK].toButtonState(),
|
||||
onClick = { linkDialogAction = state.linkAction },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.Link),
|
||||
contentDescription = stringResource(R.string.rich_text_editor_link)
|
||||
)
|
||||
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.UNORDERED_LIST].toButtonState(),
|
||||
onClick = { state.toggleList(ordered = false) },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.BulletList),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_bullet_list)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_bullet_list)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.ORDERED_LIST].toButtonState(),
|
||||
onClick = { state.toggleList(ordered = true) },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.NumberedList),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_numbered_list)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_numbered_list)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.INDENT].toButtonState(),
|
||||
onClick = { state.indent() },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.IndentIncrease),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_indent)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_indent)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.UNINDENT].toButtonState(),
|
||||
onClick = { state.unindent() },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.IndentDecrease),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_unindent)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_unindent)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.INLINE_CODE].toButtonState(),
|
||||
onClick = { state.toggleInlineFormat(InlineFormat.InlineCode) },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.InlineCode),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_inline_code)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_inline_code)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.CODE_BLOCK].toButtonState(),
|
||||
onClick = { state.toggleCodeBlock() },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.CodeBlock),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_code_block)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_code_block)
|
||||
)
|
||||
FormattingOption(
|
||||
state = state.actions[ComposerAction.QUOTE].toButtonState(),
|
||||
onClick = { state.toggleQuote() },
|
||||
imageVector = ImageVector.vectorResource(VectorIcons.Quote),
|
||||
contentDescription = stringResource(CommonStrings.rich_text_editor_quote)
|
||||
contentDescription = stringResource(R.string.rich_text_editor_quote)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,236 @@
|
||||
/*
|
||||
* Copyright (c) 2023 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.textcomposer
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import io.element.android.libraries.designsystem.components.dialogs.ListDialog
|
||||
import io.element.android.libraries.designsystem.components.list.TextFieldListItem
|
||||
import io.element.android.libraries.designsystem.preview.DayNightPreviews
|
||||
import io.element.android.libraries.designsystem.theme.components.ListItem
|
||||
import io.element.android.libraries.designsystem.theme.components.Text
|
||||
import io.element.android.libraries.theme.ElementTheme
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
import io.element.android.wysiwyg.view.models.LinkAction
|
||||
|
||||
@Composable
|
||||
fun TextComposerLinkDialog(
|
||||
onDismissRequest: () -> Unit,
|
||||
linkAction: LinkAction,
|
||||
onSaveLinkRequest: (url: String) -> Unit,
|
||||
onCreateLinkRequest: (url: String, text: String) -> Unit,
|
||||
onRemoveLinkRequest: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val urlToEdit by remember(linkAction) {
|
||||
derivedStateOf {
|
||||
(linkAction as? LinkAction.SetLink)?.currentUrl
|
||||
}
|
||||
}
|
||||
|
||||
urlToEdit.let { url ->
|
||||
when {
|
||||
url != null -> {
|
||||
EditLinkDialog(
|
||||
currentUrl = url,
|
||||
onDismissRequest = onDismissRequest,
|
||||
onSaveLinkRequest = onSaveLinkRequest,
|
||||
onRemoveLinkRequest = onRemoveLinkRequest,
|
||||
modifier = modifier,
|
||||
)
|
||||
}
|
||||
linkAction is LinkAction.InsertLink -> {
|
||||
CreateLinkWithTextDialog(
|
||||
onDismissRequest = onDismissRequest,
|
||||
onCreateLinkRequest = onCreateLinkRequest,
|
||||
modifier = modifier,
|
||||
)
|
||||
}
|
||||
linkAction is LinkAction.SetLink -> {
|
||||
CreateLinkWithoutTextDialog(
|
||||
onDismissRequest = onDismissRequest,
|
||||
onSaveLinkRequest = onSaveLinkRequest,
|
||||
modifier = modifier,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun CreateLinkWithTextDialog(
|
||||
onDismissRequest: () -> Unit,
|
||||
onCreateLinkRequest: (url: String, text: String) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
var linkText by remember { mutableStateOf("") }
|
||||
var linkUrl by remember { mutableStateOf("") }
|
||||
|
||||
val titleText = stringResource(R.string.rich_text_editor_create_link)
|
||||
|
||||
fun onSubmit() {
|
||||
onCreateLinkRequest(linkUrl, linkText)
|
||||
onDismissRequest()
|
||||
}
|
||||
|
||||
ListDialog(
|
||||
onDismissRequest = onDismissRequest,
|
||||
onSubmit = ::onSubmit,
|
||||
title = titleText,
|
||||
modifier = modifier
|
||||
) {
|
||||
item {
|
||||
TextFieldListItem(
|
||||
placeholder = stringResource(id = CommonStrings.common_text),
|
||||
text = linkText,
|
||||
onTextChanged = { linkText = it },
|
||||
)
|
||||
}
|
||||
item {
|
||||
TextFieldListItem(
|
||||
placeholder = stringResource(id = R.string.rich_text_editor_url_placeholder),
|
||||
text = linkUrl,
|
||||
onTextChanged = { linkUrl = it },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun CreateLinkWithoutTextDialog(
|
||||
onDismissRequest: () -> Unit,
|
||||
onSaveLinkRequest: (url: String) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
var linkUrl by remember { mutableStateOf("") }
|
||||
|
||||
val titleText = stringResource(R.string.rich_text_editor_create_link)
|
||||
|
||||
fun onSubmit() {
|
||||
onSaveLinkRequest(linkUrl)
|
||||
onDismissRequest()
|
||||
}
|
||||
|
||||
ListDialog(
|
||||
onDismissRequest = onDismissRequest,
|
||||
onSubmit = ::onSubmit,
|
||||
title = titleText,
|
||||
modifier = modifier
|
||||
) {
|
||||
item {
|
||||
TextFieldListItem(
|
||||
placeholder = stringResource(id = R.string.rich_text_editor_url_placeholder),
|
||||
text = linkUrl,
|
||||
onTextChanged = { linkUrl = it },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The edit link dialog does not yet support displaying or editing the text of a link
|
||||
// https://github.com/matrix-org/matrix-rich-text-editor/issues/617
|
||||
@Composable
|
||||
private fun EditLinkDialog(
|
||||
currentUrl: String,
|
||||
onDismissRequest: () -> Unit,
|
||||
onSaveLinkRequest: (url: String) -> Unit,
|
||||
onRemoveLinkRequest: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
var linkUrl by remember { mutableStateOf(currentUrl) }
|
||||
|
||||
val titleText = stringResource(R.string.rich_text_editor_edit_link)
|
||||
|
||||
fun onSubmit() {
|
||||
onSaveLinkRequest(linkUrl)
|
||||
onDismissRequest()
|
||||
}
|
||||
|
||||
fun onRemoveClicked() {
|
||||
onRemoveLinkRequest()
|
||||
onDismissRequest()
|
||||
}
|
||||
|
||||
ListDialog(
|
||||
onDismissRequest = onDismissRequest,
|
||||
onSubmit = ::onSubmit,
|
||||
title = titleText,
|
||||
modifier = modifier
|
||||
) {
|
||||
item {
|
||||
TextFieldListItem(
|
||||
placeholder = stringResource(id = R.string.rich_text_editor_url_placeholder),
|
||||
text = linkUrl,
|
||||
onTextChanged = { linkUrl = it },
|
||||
)
|
||||
}
|
||||
item {
|
||||
ListItem(
|
||||
headlineContent = {
|
||||
Text(
|
||||
text = stringResource(R.string.rich_text_editor_remove_link),
|
||||
color = ElementTheme.colors.textCriticalPrimary
|
||||
)
|
||||
},
|
||||
onClick = ::onRemoveClicked,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DayNightPreviews
|
||||
@Composable
|
||||
internal fun TextComposerLinkDialogCreateLinkPreview() {
|
||||
TextComposerLinkDialog(
|
||||
onDismissRequest = {},
|
||||
linkAction = LinkAction.InsertLink,
|
||||
onSaveLinkRequest = {},
|
||||
onCreateLinkRequest = { _, _ -> },
|
||||
onRemoveLinkRequest = {},
|
||||
)
|
||||
}
|
||||
|
||||
@DayNightPreviews
|
||||
@Composable
|
||||
internal fun TextComposerLinkDialogCreateLinkWithoutTextPreview() {
|
||||
TextComposerLinkDialog(
|
||||
onDismissRequest = {},
|
||||
linkAction = LinkAction.SetLink(null),
|
||||
onSaveLinkRequest = {},
|
||||
onCreateLinkRequest = { _, _ -> },
|
||||
onRemoveLinkRequest = {},
|
||||
)
|
||||
}
|
||||
|
||||
@DayNightPreviews
|
||||
@Composable
|
||||
internal fun TextComposerLinkDialogEditLinkPreview() {
|
||||
TextComposerLinkDialog(
|
||||
onDismissRequest = {},
|
||||
linkAction = LinkAction.SetLink("https://element.io"),
|
||||
onSaveLinkRequest = {},
|
||||
onCreateLinkRequest = { _, _ -> },
|
||||
onRemoveLinkRequest = {},
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Přepnout seznam s odrážkami"</string>
|
||||
<string name="rich_text_editor_code_block">"Přepnout blok kódu"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Zpráva…"</string>
|
||||
<string name="rich_text_editor_format_bold">"Použít tučný text"</string>
|
||||
<string name="rich_text_editor_format_italic">"Použít kurzívu"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Použít přeškrtnutí"</string>
|
||||
<string name="rich_text_editor_format_underline">"Použít podtržení"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Přepnout režim celé obrazovky"</string>
|
||||
<string name="rich_text_editor_indent">"Odsazení"</string>
|
||||
<string name="rich_text_editor_inline_code">"Použít formát inline kódu"</string>
|
||||
<string name="rich_text_editor_link">"Nastavit odkaz"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Přepnout číslovaný seznam"</string>
|
||||
<string name="rich_text_editor_quote">"Přepnout citaci"</string>
|
||||
<string name="rich_text_editor_unindent">"Zrušit odsazení"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"Přidat přílohu"</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,4 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Aufzählungsliste umschalten"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Formatierungsoptionen schließen"</string>
|
||||
<string name="rich_text_editor_code_block">"Codeblock umschalten"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Nachricht…"</string>
|
||||
<string name="rich_text_editor_create_link">"Einen Link erstellen"</string>
|
||||
<string name="rich_text_editor_edit_link">"Link bearbeiten"</string>
|
||||
<string name="rich_text_editor_format_bold">"Fettes Format anwenden"</string>
|
||||
<string name="rich_text_editor_format_italic">"Kursives Format anwenden"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Durchgestrichenes Format anwenden"</string>
|
||||
<string name="rich_text_editor_format_underline">"Unterstreichungsformat anwenden"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Vollbildmodus umschalten"</string>
|
||||
<string name="rich_text_editor_indent">"Einrückung"</string>
|
||||
<string name="rich_text_editor_inline_code">"Inline-Codeformat anwenden"</string>
|
||||
<string name="rich_text_editor_link">"Link setzen"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Nummerierte Liste umschalten"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Optionen zum Verfassen öffnen"</string>
|
||||
<string name="rich_text_editor_quote">"Vorschlag umschalten"</string>
|
||||
<string name="rich_text_editor_remove_link">"Link entfernen"</string>
|
||||
<string name="rich_text_editor_unindent">"Ohne Einrückung"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Link"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"Anhang hinzufügen"</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Lista de puntos"</string>
|
||||
<string name="rich_text_editor_code_block">"Bloque de código"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Mensaje…"</string>
|
||||
<string name="rich_text_editor_format_bold">"Aplicar formato negrita"</string>
|
||||
<string name="rich_text_editor_format_italic">"Aplicar formato cursiva"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Aplicar formato tachado"</string>
|
||||
<string name="rich_text_editor_format_underline">"Aplicar formato de subrayado"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Pantalla completa"</string>
|
||||
<string name="rich_text_editor_indent">"Añadir sangría"</string>
|
||||
<string name="rich_text_editor_inline_code">"Código"</string>
|
||||
<string name="rich_text_editor_link">"Enlazar"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Lista numérica"</string>
|
||||
<string name="rich_text_editor_quote">"Cita"</string>
|
||||
<string name="rich_text_editor_unindent">"Quitar sangría"</string>
|
||||
</resources>
|
||||
@@ -1,4 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Afficher une liste à puces"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Fermer les options de formatage"</string>
|
||||
<string name="rich_text_editor_code_block">"Afficher le bloc de code"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
|
||||
<string name="rich_text_editor_create_link">"Créer un lien"</string>
|
||||
<string name="rich_text_editor_edit_link">"Modifier le lien"</string>
|
||||
<string name="rich_text_editor_format_bold">"Appliquer le format gras"</string>
|
||||
<string name="rich_text_editor_format_italic">"Appliquer le format italique"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Appliquer le format barré"</string>
|
||||
<string name="rich_text_editor_format_underline">"Appliquer le format souligné"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Activer/désactiver le mode plein écran"</string>
|
||||
<string name="rich_text_editor_indent">"Décaler vers la droite"</string>
|
||||
<string name="rich_text_editor_inline_code">"Appliquer le formatage de code en ligne"</string>
|
||||
<string name="rich_text_editor_link">"Définir un lien"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Afficher une liste numérotée"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Ouvrir les options de rédaction"</string>
|
||||
<string name="rich_text_editor_quote">"Afficher/masquer la citation"</string>
|
||||
<string name="rich_text_editor_remove_link">"Supprimer le lien"</string>
|
||||
<string name="rich_text_editor_unindent">"Décaler vers la gauche"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Lien"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"Ajouter une pièce jointe"</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Attiva/disattiva l\'elenco puntato"</string>
|
||||
<string name="rich_text_editor_code_block">"Attiva/disattiva il blocco di codice"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Messaggio…"</string>
|
||||
<string name="rich_text_editor_format_bold">"Applica il formato in grassetto"</string>
|
||||
<string name="rich_text_editor_format_italic">"Applicare il formato corsivo"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Applica il formato barrato"</string>
|
||||
<string name="rich_text_editor_format_underline">"Applicare il formato di sottolineatura"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Attiva/disattiva la modalità a schermo intero"</string>
|
||||
<string name="rich_text_editor_indent">"Rientro a destra"</string>
|
||||
<string name="rich_text_editor_inline_code">"Applicare il formato del codice in linea"</string>
|
||||
<string name="rich_text_editor_link">"Imposta collegamento"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Attiva/disattiva elenco numerato"</string>
|
||||
<string name="rich_text_editor_quote">"Attiva/disattiva citazione"</string>
|
||||
<string name="rich_text_editor_unindent">"Rientro a sinistra"</string>
|
||||
</resources>
|
||||
@@ -1,4 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Comutați lista cu puncte"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Închideți opțiunile de formatare"</string>
|
||||
<string name="rich_text_editor_code_block">"Comutați blocul de cod"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Mesaj…"</string>
|
||||
<string name="rich_text_editor_create_link">"Creați un link"</string>
|
||||
<string name="rich_text_editor_edit_link">"Editați link-ul"</string>
|
||||
<string name="rich_text_editor_format_bold">"Aplicați formatul aldin"</string>
|
||||
<string name="rich_text_editor_format_italic">"Aplicați formatul italic"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Aplicați formatul barat"</string>
|
||||
<string name="rich_text_editor_format_underline">"Aplică formatul de subliniere"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Comutați modul ecran complet"</string>
|
||||
<string name="rich_text_editor_indent">"Indentare"</string>
|
||||
<string name="rich_text_editor_inline_code">"Aplicați formatul de cod inline"</string>
|
||||
<string name="rich_text_editor_link">"Setați linkul"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Comutați lista numerotată"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Deschideți opțiunile de compunere"</string>
|
||||
<string name="rich_text_editor_quote">"Aplicați citatul"</string>
|
||||
<string name="rich_text_editor_unindent">"Dez-identare"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Link"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"Adăugați un atașament"</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Переключить список маркеров"</string>
|
||||
<string name="rich_text_editor_code_block">"Переключить блок кода"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Сообщение"</string>
|
||||
<string name="rich_text_editor_format_bold">"Применить жирный шрифт"</string>
|
||||
<string name="rich_text_editor_format_italic">"Применить курсивный формат"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Применить формат зачеркивания"</string>
|
||||
<string name="rich_text_editor_format_underline">"Применить формат подчеркивания"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Переключение полноэкранного режима"</string>
|
||||
<string name="rich_text_editor_indent">"Отступ"</string>
|
||||
<string name="rich_text_editor_inline_code">"Применить встроенный формат кода"</string>
|
||||
<string name="rich_text_editor_link">"Установить ссылку"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Переключить нумерованный список"</string>
|
||||
<string name="rich_text_editor_quote">"Переключить цитату"</string>
|
||||
<string name="rich_text_editor_unindent">"Без отступа"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"Прикрепить файл"</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,4 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Prepnúť zoznam odrážok"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Zatvoriť možnosti formátovania"</string>
|
||||
<string name="rich_text_editor_code_block">"Prepnúť blok kódu"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Správa…"</string>
|
||||
<string name="rich_text_editor_create_link">"Vytvoriť odkaz"</string>
|
||||
<string name="rich_text_editor_edit_link">"Upraviť odkaz"</string>
|
||||
<string name="rich_text_editor_format_bold">"Použiť tučný formát"</string>
|
||||
<string name="rich_text_editor_format_italic">"Použiť formát kurzívy"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Použiť formát prečiarknutia"</string>
|
||||
<string name="rich_text_editor_format_underline">"Použiť formát podčiarknutia"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Prepnúť režim celej obrazovky"</string>
|
||||
<string name="rich_text_editor_indent">"Odsadenie"</string>
|
||||
<string name="rich_text_editor_inline_code">"Použiť formát riadkového kódu"</string>
|
||||
<string name="rich_text_editor_link">"Nastaviť odkaz"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Prepnúť číslovaný zoznam"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Otvoriť možnosti písania"</string>
|
||||
<string name="rich_text_editor_quote">"Prepnúť citáciu"</string>
|
||||
<string name="rich_text_editor_remove_link">"Odstrániť odkaz"</string>
|
||||
<string name="rich_text_editor_unindent">"Zrušiť odsadenie"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Odkaz"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"Pridať prílohu"</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"切換項目編號"</string>
|
||||
<string name="rich_text_editor_code_block">"切換程式碼區塊"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"訊息"</string>
|
||||
<string name="rich_text_editor_create_link">"建立連結"</string>
|
||||
<string name="rich_text_editor_edit_link">"編輯連結"</string>
|
||||
<string name="rich_text_editor_format_bold">"套用粗體"</string>
|
||||
<string name="rich_text_editor_format_italic">"套用斜體"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"套用刪除線"</string>
|
||||
<string name="rich_text_editor_format_underline">"套用底線"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"切換全螢幕模式"</string>
|
||||
<string name="rich_text_editor_indent">"增加縮排"</string>
|
||||
<string name="rich_text_editor_link">"設定連結"</string>
|
||||
<string name="rich_text_editor_numbered_list">"切換數字編號"</string>
|
||||
<string name="rich_text_editor_quote">"切換引用"</string>
|
||||
<string name="rich_text_editor_unindent">"減少縮排"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"連結"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"新增附件"</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,4 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="rich_text_editor_bullet_list">"Toggle bullet list"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Close formatting options"</string>
|
||||
<string name="rich_text_editor_code_block">"Toggle code block"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
|
||||
<string name="rich_text_editor_create_link">"Create a link"</string>
|
||||
<string name="rich_text_editor_edit_link">"Edit link"</string>
|
||||
<string name="rich_text_editor_format_bold">"Apply bold format"</string>
|
||||
<string name="rich_text_editor_format_italic">"Apply italic format"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Apply strikethrough format"</string>
|
||||
<string name="rich_text_editor_format_underline">"Apply underline format"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Toggle full screen mode"</string>
|
||||
<string name="rich_text_editor_indent">"Indent"</string>
|
||||
<string name="rich_text_editor_inline_code">"Apply inline code format"</string>
|
||||
<string name="rich_text_editor_link">"Set link"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Toggle numbered list"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Open compose options"</string>
|
||||
<string name="rich_text_editor_quote">"Toggle quote"</string>
|
||||
<string name="rich_text_editor_remove_link">"Remove link"</string>
|
||||
<string name="rich_text_editor_unindent">"Unindent"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Link"</string>
|
||||
<string name="rich_text_editor_a11y_add_attachment">"Add attachment"</string>
|
||||
</resources>
|
||||
|
||||
@@ -171,20 +171,6 @@
|
||||
<string name="rageshake_dialog_content">"Zdá se, že jste frustrovaně třásli telefonem. Chcete otevřít obrazovku pro nahlášení chyby?"</string>
|
||||
<string name="report_content_explanation">"Tato zpráva bude nahlášena správci vašeho domovského serveru. Nebude si moci přečíst žádné šifrované zprávy."</string>
|
||||
<string name="report_content_hint">"Důvod nahlášení tohoto obsahu"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Přepnout seznam s odrážkami"</string>
|
||||
<string name="rich_text_editor_code_block">"Přepnout blok kódu"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Zpráva…"</string>
|
||||
<string name="rich_text_editor_format_bold">"Použít tučný text"</string>
|
||||
<string name="rich_text_editor_format_italic">"Použít kurzívu"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Použít přeškrtnutí"</string>
|
||||
<string name="rich_text_editor_format_underline">"Použít podtržení"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Přepnout režim celé obrazovky"</string>
|
||||
<string name="rich_text_editor_indent">"Odsazení"</string>
|
||||
<string name="rich_text_editor_inline_code">"Použít formát inline kódu"</string>
|
||||
<string name="rich_text_editor_link">"Nastavit odkaz"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Přepnout číslovaný seznam"</string>
|
||||
<string name="rich_text_editor_quote">"Přepnout citaci"</string>
|
||||
<string name="rich_text_editor_unindent">"Zrušit odsazení"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Toto je začátek %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Toto je začátek této konverzace."</string>
|
||||
<string name="room_timeline_read_marker_title">"Nové"</string>
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
<string name="common_report_submitted">"Bericht eingereicht"</string>
|
||||
<string name="common_rich_text_editor">"Rich-Text-Editor"</string>
|
||||
<string name="common_room_name">"Raumname"</string>
|
||||
<string name="common_room_name_placeholder">"z.B. Ihr Projektname"</string>
|
||||
<string name="common_room_name_placeholder">"z.B. dein Projektname"</string>
|
||||
<string name="common_search_for_someone">"Nach jemandem suchen"</string>
|
||||
<string name="common_search_results">"Suchergebnisse"</string>
|
||||
<string name="common_security">"Sicherheit"</string>
|
||||
@@ -159,9 +159,9 @@
|
||||
<string name="error_failed_creating_the_permalink">"Fehler beim Erstellen des Permalinks"</string>
|
||||
<string name="error_failed_loading_map">"%1$s konnte die Karte nicht laden. Bitte versuche es später erneut."</string>
|
||||
<string name="error_failed_loading_messages">"Fehler beim Laden der Nachrichten"</string>
|
||||
<string name="error_failed_locating_user">"%1$s konnte nicht auf Ihren Standort zugreifen. Bitte versuche es später erneut."</string>
|
||||
<string name="error_missing_location_auth_android">"%1$s hat keine Erlaubnis, auf Ihren Standort zuzugreifen. Du kannst den Zugriff in den Einstellungen aktivieren."</string>
|
||||
<string name="error_missing_location_rationale_android">"%1$s hat keine Erlaubnis, auf Ihren Standort zuzugreifen. Aktiviere unten den Zugriff."</string>
|
||||
<string name="error_failed_locating_user">"%1$s konnte nicht auf deinen Standort zugreifen. Bitte versuche es später erneut."</string>
|
||||
<string name="error_missing_location_auth_android">"%1$s hat keine Erlaubnis, auf deinen Standort zuzugreifen. Du kannst den Zugriff in den Einstellungen aktivieren."</string>
|
||||
<string name="error_missing_location_rationale_android">"%1$s hat keine Erlaubnis, auf deinen Standort zuzugreifen. Aktiviere unten den Zugriff."</string>
|
||||
<string name="error_some_messages_have_not_been_sent">"Einige Nachrichten wurden nicht gesendet"</string>
|
||||
<string name="error_unknown">"Entschuldigung, es ist ein Fehler aufgetreten"</string>
|
||||
<string name="invite_friends_rich_title">"🔐️ Begleite mich auf %1$s"</string>
|
||||
@@ -180,28 +180,8 @@
|
||||
</plurals>
|
||||
<string name="preference_rageshake">"Schüttel heftig zum Melden von Fehlern"</string>
|
||||
<string name="rageshake_dialog_content">"Du scheinst das Telefon aus Frustration zu schütteln. Möchtest du den Bildschirm für den Fehlerbericht öffnen?"</string>
|
||||
<string name="report_content_explanation">"Diese Meldung wird an den Administrator Ihres Homeservers weitergeleitet. Dieser kann keine verschlüsselten Nachrichten lesen."</string>
|
||||
<string name="report_content_explanation">"Diese Meldung wird an den Administrator deines Homeservers weitergeleitet. Dieser kann keine verschlüsselten Nachrichten lesen."</string>
|
||||
<string name="report_content_hint">"Grund für die Meldung dieses Inhalts"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Aufzählungsliste umschalten"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Formatierungsoptionen schließen"</string>
|
||||
<string name="rich_text_editor_code_block">"Codeblock umschalten"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Nachricht…"</string>
|
||||
<string name="rich_text_editor_create_link">"Einen Link erstellen"</string>
|
||||
<string name="rich_text_editor_edit_link">"Link bearbeiten"</string>
|
||||
<string name="rich_text_editor_format_bold">"Fettes Format anwenden"</string>
|
||||
<string name="rich_text_editor_format_italic">"Kursives Format anwenden"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Durchgestrichenes Format anwenden"</string>
|
||||
<string name="rich_text_editor_format_underline">"Unterstreichungsformat anwenden"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Vollbildmodus umschalten"</string>
|
||||
<string name="rich_text_editor_indent">"Einrückung"</string>
|
||||
<string name="rich_text_editor_inline_code">"Inline-Codeformat anwenden"</string>
|
||||
<string name="rich_text_editor_link">"Link setzen"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Nummerierte Liste umschalten"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Optionen zum Verfassen öffnen"</string>
|
||||
<string name="rich_text_editor_quote">"Vorschlag umschalten"</string>
|
||||
<string name="rich_text_editor_remove_link">"Link entfernen"</string>
|
||||
<string name="rich_text_editor_unindent">"Ohne Einrückung"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Link"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Dies ist der Anfang von %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Dies ist der Anfang dieses Gesprächs."</string>
|
||||
<string name="room_timeline_read_marker_title">"Neu"</string>
|
||||
|
||||
@@ -120,20 +120,6 @@
|
||||
<string name="rageshake_dialog_content">"Parece que sacudes el teléfono con frustración. ¿Quieres abrir la pantalla de informe de errores?"</string>
|
||||
<string name="report_content_explanation">"Este mensaje se notificará al administrador de su homeserver. No podrán leer ningún mensaje cifrado."</string>
|
||||
<string name="report_content_hint">"Motivo para denunciar este contenido"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Lista de puntos"</string>
|
||||
<string name="rich_text_editor_code_block">"Bloque de código"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Mensaje…"</string>
|
||||
<string name="rich_text_editor_format_bold">"Aplicar formato negrita"</string>
|
||||
<string name="rich_text_editor_format_italic">"Aplicar formato cursiva"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Aplicar formato tachado"</string>
|
||||
<string name="rich_text_editor_format_underline">"Aplicar formato de subrayado"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Pantalla completa"</string>
|
||||
<string name="rich_text_editor_indent">"Añadir sangría"</string>
|
||||
<string name="rich_text_editor_inline_code">"Código"</string>
|
||||
<string name="rich_text_editor_link">"Enlazar"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Lista numérica"</string>
|
||||
<string name="rich_text_editor_quote">"Cita"</string>
|
||||
<string name="rich_text_editor_unindent">"Quitar sangría"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Este es el principio de %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Este es el principio de esta conversación."</string>
|
||||
<string name="room_timeline_read_marker_title">"Nuevos"</string>
|
||||
|
||||
@@ -182,26 +182,6 @@
|
||||
<string name="rageshake_dialog_content">"Vous semblez secouer le téléphone avec frustration. Voulez-vous ouvrir le formulaire de rapport de problème ?"</string>
|
||||
<string name="report_content_explanation">"Ce message sera signalé à l’administrateur de votre serveur d’accueil. Il ne pourra lire aucun message chiffré."</string>
|
||||
<string name="report_content_hint">"Raison du signalement de ce contenu"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Afficher une liste à puces"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Fermer les options de formatage"</string>
|
||||
<string name="rich_text_editor_code_block">"Afficher le bloc de code"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
|
||||
<string name="rich_text_editor_create_link">"Créer un lien"</string>
|
||||
<string name="rich_text_editor_edit_link">"Modifier le lien"</string>
|
||||
<string name="rich_text_editor_format_bold">"Appliquer le format gras"</string>
|
||||
<string name="rich_text_editor_format_italic">"Appliquer le format italique"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Appliquer le format barré"</string>
|
||||
<string name="rich_text_editor_format_underline">"Appliquer le format souligné"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Activer/désactiver le mode plein écran"</string>
|
||||
<string name="rich_text_editor_indent">"Décaler vers la droite"</string>
|
||||
<string name="rich_text_editor_inline_code">"Appliquer le formatage de code en ligne"</string>
|
||||
<string name="rich_text_editor_link">"Définir un lien"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Afficher une liste numérotée"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Ouvrir les options de rédaction"</string>
|
||||
<string name="rich_text_editor_quote">"Afficher/masquer la citation"</string>
|
||||
<string name="rich_text_editor_remove_link">"Supprimer le lien"</string>
|
||||
<string name="rich_text_editor_unindent">"Décaler vers la gauche"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Lien"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Ceci est le début de %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Ceci est le début de cette conversation."</string>
|
||||
<string name="room_timeline_read_marker_title">"Nouveau"</string>
|
||||
|
||||
@@ -120,20 +120,6 @@
|
||||
<string name="rageshake_dialog_content">"Sembra che tu stia scuotendo il telefono per la frustrazione. Vuoi aprire la schermata di segnalazione dei problemi?"</string>
|
||||
<string name="report_content_explanation">"Questo messaggio verrà segnalato all\'amministratore dell\'homeserver. Questi non sarà in grado di leggere i messaggi criptati."</string>
|
||||
<string name="report_content_hint">"Motivo della segnalazione di questo contenuto"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Attiva/disattiva l\'elenco puntato"</string>
|
||||
<string name="rich_text_editor_code_block">"Attiva/disattiva il blocco di codice"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Messaggio…"</string>
|
||||
<string name="rich_text_editor_format_bold">"Applica il formato in grassetto"</string>
|
||||
<string name="rich_text_editor_format_italic">"Applicare il formato corsivo"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Applica il formato barrato"</string>
|
||||
<string name="rich_text_editor_format_underline">"Applicare il formato di sottolineatura"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Attiva/disattiva la modalità a schermo intero"</string>
|
||||
<string name="rich_text_editor_indent">"Rientro a destra"</string>
|
||||
<string name="rich_text_editor_inline_code">"Applicare il formato del codice in linea"</string>
|
||||
<string name="rich_text_editor_link">"Imposta collegamento"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Attiva/disattiva elenco numerato"</string>
|
||||
<string name="rich_text_editor_quote">"Attiva/disattiva citazione"</string>
|
||||
<string name="rich_text_editor_unindent">"Rientro a sinistra"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Questo è l\'inizio di %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Questo è l\'inizio della conversazione."</string>
|
||||
<string name="room_timeline_read_marker_title">"Nuovo"</string>
|
||||
|
||||
@@ -174,25 +174,6 @@
|
||||
<string name="rageshake_dialog_content">"Se pare că scuturați telefonul de frustrare. Doriți să deschdeți ecranul de raportare a unei erori?"</string>
|
||||
<string name="report_content_explanation">"Acest mesaj va fi raportat administratorilor homeserver-ului tau. Ei nu vor putea citi niciun mesaj criptat."</string>
|
||||
<string name="report_content_hint">"Motivul raportării acestui conținut"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Comutați lista cu puncte"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Închideți opțiunile de formatare"</string>
|
||||
<string name="rich_text_editor_code_block">"Comutați blocul de cod"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Mesaj…"</string>
|
||||
<string name="rich_text_editor_create_link">"Creați un link"</string>
|
||||
<string name="rich_text_editor_edit_link">"Editați link-ul"</string>
|
||||
<string name="rich_text_editor_format_bold">"Aplicați formatul aldin"</string>
|
||||
<string name="rich_text_editor_format_italic">"Aplicați formatul italic"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Aplicați formatul barat"</string>
|
||||
<string name="rich_text_editor_format_underline">"Aplică formatul de subliniere"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Comutați modul ecran complet"</string>
|
||||
<string name="rich_text_editor_indent">"Indentare"</string>
|
||||
<string name="rich_text_editor_inline_code">"Aplicați formatul de cod inline"</string>
|
||||
<string name="rich_text_editor_link">"Setați linkul"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Comutați lista numerotată"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Deschideți opțiunile de compunere"</string>
|
||||
<string name="rich_text_editor_quote">"Aplicați citatul"</string>
|
||||
<string name="rich_text_editor_unindent">"Dez-identare"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Link"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Acesta este începutul conversației %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Acesta este începutul acestei conversații."</string>
|
||||
<string name="room_timeline_read_marker_title">"Nou"</string>
|
||||
|
||||
@@ -170,20 +170,6 @@
|
||||
<string name="rageshake_dialog_content">"Кажется, вы трясли телефон. Хотите открыть экран отчета об ошибке?"</string>
|
||||
<string name="report_content_explanation">"Это сообщение будет передано администратору вашего домашнего сервера. Они не смогут прочитать зашифрованные сообщения."</string>
|
||||
<string name="report_content_hint">"Причина, по которой вы пожаловались на этот контент"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Переключить список маркеров"</string>
|
||||
<string name="rich_text_editor_code_block">"Переключить блок кода"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Сообщение"</string>
|
||||
<string name="rich_text_editor_format_bold">"Применить жирный шрифт"</string>
|
||||
<string name="rich_text_editor_format_italic">"Применить курсивный формат"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Применить формат зачеркивания"</string>
|
||||
<string name="rich_text_editor_format_underline">"Применить формат подчеркивания"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Переключение полноэкранного режима"</string>
|
||||
<string name="rich_text_editor_indent">"Отступ"</string>
|
||||
<string name="rich_text_editor_inline_code">"Применить встроенный формат кода"</string>
|
||||
<string name="rich_text_editor_link">"Установить ссылку"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Переключить нумерованный список"</string>
|
||||
<string name="rich_text_editor_quote">"Переключить цитату"</string>
|
||||
<string name="rich_text_editor_unindent">"Без отступа"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Это начало %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Это начало разговора."</string>
|
||||
<string name="room_timeline_read_marker_title">"Новый"</string>
|
||||
|
||||
@@ -184,26 +184,6 @@
|
||||
<string name="rageshake_dialog_content">"Zdá sa, že zúrivo trasiete telefónom. Chcete otvoriť obrazovku s nahlásením chýb?"</string>
|
||||
<string name="report_content_explanation">"Táto správa bude nahlásená správcovi vášho domovského servera. Nebude môcť prečítať žiadne šifrované správy."</string>
|
||||
<string name="report_content_hint">"Dôvod nahlásenia tohto obsahu"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Prepnúť zoznam odrážok"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Zatvoriť možnosti formátovania"</string>
|
||||
<string name="rich_text_editor_code_block">"Prepnúť blok kódu"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Správa…"</string>
|
||||
<string name="rich_text_editor_create_link">"Vytvoriť odkaz"</string>
|
||||
<string name="rich_text_editor_edit_link">"Upraviť odkaz"</string>
|
||||
<string name="rich_text_editor_format_bold">"Použiť tučný formát"</string>
|
||||
<string name="rich_text_editor_format_italic">"Použiť formát kurzívy"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Použiť formát prečiarknutia"</string>
|
||||
<string name="rich_text_editor_format_underline">"Použiť formát podčiarknutia"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Prepnúť režim celej obrazovky"</string>
|
||||
<string name="rich_text_editor_indent">"Odsadenie"</string>
|
||||
<string name="rich_text_editor_inline_code">"Použiť formát riadkového kódu"</string>
|
||||
<string name="rich_text_editor_link">"Nastaviť odkaz"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Prepnúť číslovaný zoznam"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Otvoriť možnosti písania"</string>
|
||||
<string name="rich_text_editor_quote">"Prepnúť citáciu"</string>
|
||||
<string name="rich_text_editor_remove_link">"Odstrániť odkaz"</string>
|
||||
<string name="rich_text_editor_unindent">"Zrušiť odsadenie"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Odkaz"</string>
|
||||
<string name="room_timeline_beginning_of_room">"Toto je začiatok %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"Toto je začiatok tejto konverzácie."</string>
|
||||
<string name="room_timeline_read_marker_title">"Nové"</string>
|
||||
|
||||
@@ -143,22 +143,6 @@
|
||||
<item quantity="other">"%d 票"</item>
|
||||
</plurals>
|
||||
<string name="report_content_hint">"檢舉這個內容的原因"</string>
|
||||
<string name="rich_text_editor_bullet_list">"切換項目編號"</string>
|
||||
<string name="rich_text_editor_code_block">"切換程式碼區塊"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"訊息"</string>
|
||||
<string name="rich_text_editor_create_link">"建立連結"</string>
|
||||
<string name="rich_text_editor_edit_link">"編輯連結"</string>
|
||||
<string name="rich_text_editor_format_bold">"套用粗體"</string>
|
||||
<string name="rich_text_editor_format_italic">"套用斜體"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"套用刪除線"</string>
|
||||
<string name="rich_text_editor_format_underline">"套用底線"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"切換全螢幕模式"</string>
|
||||
<string name="rich_text_editor_indent">"增加縮排"</string>
|
||||
<string name="rich_text_editor_link">"設定連結"</string>
|
||||
<string name="rich_text_editor_numbered_list">"切換數字編號"</string>
|
||||
<string name="rich_text_editor_quote">"切換引用"</string>
|
||||
<string name="rich_text_editor_unindent">"減少縮排"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"連結"</string>
|
||||
<string name="room_timeline_read_marker_title">"新訊息"</string>
|
||||
<string name="screen_analytics_settings_share_data">"分享分析數據"</string>
|
||||
<string name="screen_media_upload_preview_error_failed_sending">"無法上傳媒體檔案,請稍後再試。"</string>
|
||||
|
||||
@@ -182,26 +182,6 @@
|
||||
<string name="rageshake_dialog_content">"You seem to be shaking the phone in frustration. Would you like to open the bug report screen?"</string>
|
||||
<string name="report_content_explanation">"This message will be reported to your homeserver’s administrator. They will not be able to read any encrypted messages."</string>
|
||||
<string name="report_content_hint">"Reason for reporting this content"</string>
|
||||
<string name="rich_text_editor_bullet_list">"Toggle bullet list"</string>
|
||||
<string name="rich_text_editor_close_formatting_options">"Close formatting options"</string>
|
||||
<string name="rich_text_editor_code_block">"Toggle code block"</string>
|
||||
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
|
||||
<string name="rich_text_editor_create_link">"Create a link"</string>
|
||||
<string name="rich_text_editor_edit_link">"Edit link"</string>
|
||||
<string name="rich_text_editor_format_bold">"Apply bold format"</string>
|
||||
<string name="rich_text_editor_format_italic">"Apply italic format"</string>
|
||||
<string name="rich_text_editor_format_strikethrough">"Apply strikethrough format"</string>
|
||||
<string name="rich_text_editor_format_underline">"Apply underline format"</string>
|
||||
<string name="rich_text_editor_full_screen_toggle">"Toggle full screen mode"</string>
|
||||
<string name="rich_text_editor_indent">"Indent"</string>
|
||||
<string name="rich_text_editor_inline_code">"Apply inline code format"</string>
|
||||
<string name="rich_text_editor_link">"Set link"</string>
|
||||
<string name="rich_text_editor_numbered_list">"Toggle numbered list"</string>
|
||||
<string name="rich_text_editor_open_compose_options">"Open compose options"</string>
|
||||
<string name="rich_text_editor_quote">"Toggle quote"</string>
|
||||
<string name="rich_text_editor_remove_link">"Remove link"</string>
|
||||
<string name="rich_text_editor_unindent">"Unindent"</string>
|
||||
<string name="rich_text_editor_url_placeholder">"Link"</string>
|
||||
<string name="room_timeline_beginning_of_room">"This is the beginning of %1$s."</string>
|
||||
<string name="room_timeline_beginning_of_room_no_name">"This is the beginning of this conversation."</string>
|
||||
<string name="room_timeline_read_marker_title">"New"</string>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -47,7 +47,7 @@
|
||||
{
|
||||
"name": ":libraries:textcomposer:impl",
|
||||
"includeRegex": [
|
||||
"rich_text_editor_.*"
|
||||
"rich_text_editor.*"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user