diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7e50d3d1602b8c08f48dd15a88af548b6fb93bb6..2c8c31affb2a9066323531e499659f75ef558d63 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,7 +43,7 @@ android { signingConfig = signingConfigs.getByName("default") - resConfigs("en") + resConfigs("auto") vectorDrawables.useSupportLibrary = true diff --git a/app/src/debug/res/values-de/strings.xml b/app/src/debug/res/values-de/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..5b0184469c23cbaba90ea6dabedc9bdaf2d33f0a --- /dev/null +++ b/app/src/debug/res/values-de/strings.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">QuasselTest</string> +</resources> \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt index 73ede25fbd303f92edd2d09eadb5dab89406abe5..4c823409e1e51b3b7ae7bd084bce715702aa6301 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt @@ -249,7 +249,9 @@ class QuasselService : LifecycleService(), sessionManager.connectionProgress.toLiveData().observe(this, Observer { if (this.progress.first != it?.first && it?.first == ConnectionState.CONNECTED) { - database.message().clearMessages() + handler.post { + database.message().clearMessages() + } } this.progress = it ?: Triple(ConnectionState.DISCONNECTED, 0, 0) val handle = this.notificationHandle diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt index ed24b2b2344d076e0b7bf50afebe8bb8cc85616f..f0056f480a72e7b50e4ccb56dc85ad228cf1cae3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt @@ -294,21 +294,6 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc } true } - R.id.clear -> { - handler.post { - viewModel.sessionManager { manager -> - viewModel.getBuffer().value?.let { buffer -> - manager.backlogStorage.clearMessages(buffer) - manager.backlogManager?.requestBacklog( - bufferId = buffer, - last = -1, - limit = backlogSettings.dynamicAmount - ) - } - } - } - true - } R.id.settings -> { startActivity(Intent(applicationContext, SettingsActivity::class.java)) true diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt index 43a38bd33a9885942051847d7a81b81d2b2cea98..50ed8b3374829e7b28f081ac38003c9c28e67e8b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt @@ -179,7 +179,8 @@ class QuasselMessageRenderer( SpanFormatter.format( context.getString(R.string.message_format_join), formatPrefix(message.senderPrefixes, highlight), - formatNick(message.sender, self, highlight, true) + formatNick(message.sender, self, highlight, true), + message.content ), message.messageId == markerLine ) @@ -221,28 +222,54 @@ class QuasselMessageRenderer( }, message.messageId == markerLine ) - Message_Type.Kick -> FormattedMessage( - message.messageId, - timeFormatter.format(message.time.atZone(zoneId)), - SpanFormatter.format( - context.getString(R.string.message_format_kick), - formatContent(message.content, highlight), - formatPrefix(message.senderPrefixes, highlight), - formatNick(message.sender, self, highlight, true) - ), - message.messageId == markerLine - ) - Message_Type.Kill -> FormattedMessage( - message.messageId, - timeFormatter.format(message.time.atZone(zoneId)), - SpanFormatter.format( - context.getString(R.string.message_format_kill), - formatContent(message.content, highlight), - formatPrefix(message.senderPrefixes, highlight), - formatNick(message.sender, self, highlight, true) - ), - message.messageId == markerLine - ) + Message_Type.Kick -> { + val (user, reason) = message.content.split(' ', limit = 2) + listOf("", "") + FormattedMessage( + message.messageId, + timeFormatter.format(message.time.atZone(zoneId)), + if (reason.isBlank()) { + SpanFormatter.format( + context.getString(R.string.message_format_kick_1), + formatNick(user, false, highlight, false), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight, true) + ) + } else { + SpanFormatter.format( + context.getString(R.string.message_format_kick_2), + formatNick(user, false, highlight, false), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight, true), + formatContent(reason, highlight) + ) + }, + message.messageId == markerLine + ) + } + Message_Type.Kill -> { + val (user, reason) = message.content.split(' ', limit = 2) + listOf("", "") + FormattedMessage( + message.messageId, + timeFormatter.format(message.time.atZone(zoneId)), + if (reason.isBlank()) { + SpanFormatter.format( + context.getString(R.string.message_format_kill_1), + formatNick(user, false, highlight, false), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight, true) + ) + } else { + SpanFormatter.format( + context.getString(R.string.message_format_kill_2), + formatNick(user, false, highlight, false), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight, true), + formatContent(reason, highlight) + ) + }, + message.messageId == markerLine + ) + } Message_Type.NetsplitJoin -> { val split = message.content.split("#:#") val (server1, server2) = split.last().split(' ') diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt index f62b3efd22eb469c05a36513fe95966c38aaa24c..bac3b3691bb8b3111828fe9d995851acac0ef1e8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt @@ -29,7 +29,7 @@ class QuasseldroidNotificationManager(private val context: Context) { listOf( NotificationChannel( context.getString(R.string.notification_channel_background), - context.getString(R.string.notification_channel_background_title), + context.getString(R.string.notification_channel_connection_title), NotificationManager.IMPORTANCE_MIN ), NotificationChannel( diff --git a/app/src/main/res/drawable-de/ic_format_bold.xml b/app/src/main/res/drawable-de/ic_format_bold.xml new file mode 100644 index 0000000000000000000000000000000000000000..f14946cf3f9b4787c234f1511c50769ea48249a6 --- /dev/null +++ b/app/src/main/res/drawable-de/ic_format_bold.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> + <path + android:fillColor="#000" + android:pathData="M 16.509807,12.423077 H 11.0675 V 18 H 7.6924995 V 4.0000001 H 17.057884 V 6.605769 H 11.0675 v 3.2211544 h 5.442307 z" /> +</vector> diff --git a/app/src/main/res/drawable-de/ic_format_italic.xml b/app/src/main/res/drawable-de/ic_format_italic.xml new file mode 100644 index 0000000000000000000000000000000000000000..ab67774b3685479786e2516153dcdc665c8f89ee --- /dev/null +++ b/app/src/main/res/drawable-de/ic_format_italic.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> + <path + android:fillColor="#000" + android:pathData="m15.7 18h-3.2l-2-5.7-1.2,0.7-1.1 5h-2.9l3-14h2.93l-1.43 6.8 5.43-6.8h3.46l-5.7 6.7z" /> +</vector> \ No newline at end of file diff --git a/app/src/main/res/menu/activity_main.xml b/app/src/main/res/menu/activity_main.xml index 1dd3df6f7ba2ca4eb5db08655bf6fea6084c25ac..5d9cfcb50948f03ed64fec7b3ad47fbb00d6b709 100644 --- a/app/src/main/res/menu/activity_main.xml +++ b/app/src/main/res/menu/activity_main.xml @@ -3,9 +3,6 @@ <item android:id="@+id/filter_messages" android:title="@string/label_filter_messages" /> - <item - android:id="@+id/clear" - android:title="@string/label_clear_backlog" /> <item android:id="@+id/settings" android:title="@string/label_settings" /> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..af967b80600b2dc2f11d2cd629937ce0ce8aa218 --- /dev/null +++ b/app/src/main/res/values-de/strings.xml @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">QuasselDroid</string> + <string name="slideAccountSelectTitle">Account Auswählen</string> + <string name="slideAccountSelectDescription">Wähle einen Account aus oder erstelle einen neuen</string> + <string name="userOnHost">%1$s @ %2$s:%3$s</string> + <string name="slideAccountConnectionTitle">Verbindung</string> + <string name="slideAccountConnectionDescription">Bitte gebe an die Addresse des Servers an, auf dem dein Core läuft</string> + <string name="labelConnectionHost">Hostname</string> + <string name="labelConnectionPort">Port</string> + <string name="hintInvalidHost">Ungültiger Hostname</string> + <string name="hintInvalidPort">Ungültiger Port</string> + <string name="slideAccountUserTitle">Dein Account</string> + <string name="slideAccountUserDescription">Bitte gib Benutzernamen und Passwort für deinen Account ein. Falls du noch keinen hast, wird dieser für dich erstellt.</string> + <string name="labelAccountUser">Benutzername</string> + <string name="labelAccountPass">Passwort</string> + <string name="hintInvalidUser">Benutzername darf nicht leer sein</string> + <string name="slideAccountNameTitle">Account Anpassen</string> + <string name="slideAccountNameDescription">Benenne diesen Account</string> + <string name="labelAccountName">Accountname</string> + <string name="hintInvalidName">Accountname darf nicht leer sein</string> + <string name="slideCoreAuthenticatorSelectTitle">Authentifizierungsbackend auswählen</string> + <string name="slideCoreAuthenticatorSelectDescription">Bitte wähle aus, welches Authentifizierungsbackend der Quassel Core verwenden soll</string> + <string name="slideCoreBackendSelectTitle">Datenbank auswählen</string> + <string name="slideCoreBackendSelectDescription">Bitte wähle aus, in welchem Datenbankbackend der Quassel Core Nachrichten und andere Daten speichern soll</string> + <string name="slideCoreBackendSetupTitle">Datenbank konfigurieren</string> + <string name="slideCoreBackendSetupDescription">Bitte konfiguriere das ausgewählte Datenbankbackend</string> + <string name="message_type_join">Join-Meldungen</string> + <string name="message_type_part">Part-Meldungen</string> + <string name="message_type_quit">Quit-Meldungen</string> + <string name="message_type_nick">Benutzernamensänderungen</string> + <string name="message_type_mode">Modiänderungen</string> + <string name="message_type_topic">Themenänderungen</string> + <string name="message_format_plain">%1$s%2$s: %3$s</string> + <string name="message_format_action">* %1$s%2$s %3$s</string> + <string name="message_format_notice">[%1$s%2$s] %3$s</string> + <string name="message_format_nick">%1$s%2$s heißt jetzt %3$s%4$s</string> + <string name="message_format_nick_self">Du heißt jetzt justJanne</string> + <string name="message_format_mode">Modus %1$s durch %2$s%3$s</string> + <string name="message_format_join">%1$s%2$s hat %3$s betreten</string> + <string name="message_format_part_1">%1$s%2$s hat den Kanal verlassen</string> + <string name="message_format_part_2">%1$s%2$s hat den Kanal verlassen (%3$s)</string> + <string name="message_format_quit_1">%1$s%2$s hat das Netzwerk verlassen</string> + <string name="message_format_quit_2">%1$s%2$s hat das Netzwerk verlassen (%3$s)</string> + <string name="message_format_kick_1">%1$s wurde von %2$s%3$s aus dem Chat geworfen</string> + <string name="message_format_kill_1">%1$s wurde von %2$s%3$s vom Server geworfen</string> + <string name="message_format_kill_2">%1$s wurde von %2$s%3$s aus dem Chat geworfen (%4$s)</string> + <string name="message_format_kick_2">%1$s wurde von %2$s%3$s vom Server geworfen (%4$s)</string> + <string name="preference_appearance_title">Aussehen</string> + <string name="preference_theme_title">Farbschema</string> + <string name="preference_theme_entry_quassel_light">Quassel (Hell)</string> + <string name="preference_theme_entry_quassel_dark">Quassel (Dunkel)</string> + <string name="preference_theme_entry_amoled">AMOLED</string> + <string name="preference_theme_entry_solarized_light">Solarized (Hell)</string> + <string name="preference_theme_entry_solarized_dark">Solarized (Dunkel)</string> + <string name="preference_theme_entry_gruvbox_light">Gruvbox (Hell)</string> + <string name="preference_theme_entry_gruvbox_dark">Gruvbox (Dunkel)</string> + <string name="preference_monospace_title">Monospace-Schrift verwenden</string> + <string name="preference_textsize_title">Schriftgröße</string> + <string name="preference_show_seconds_title">Sekunden anzeigen</string> + <string name="preference_use_24h_clock_title">24h-Format verwenden</string> + <string name="preference_colorize_mirc_title">mIRC-Farben verwenden</string> + <string name="preference_colorize_mirc_summaryon">Zeigt Farben und Formatierungen in Nachrichten an</string> + <string name="preference_colorize_mirc_summaryoff">Farben und Formatierungen werden aus Nachrichten entfernt</string> + <string name="preference_colorize_nicknames_title">Benutzernamen farblich hervorheben</string> + <string name="preference_colorize_nicknames_entry_all">Alle Benutzernamen</string> + <string name="preference_colorize_nicknames_entry_all_but_mine">Alle Benutzernamen außer dem eigenen</string> + <string name="preference_colorize_nicknames_entry_none">Keine</string> + <string name="preference_show_prefix_title">Sendermodi anzeigen</string> + <string name="preference_show_prefix_entry_all">Alle Modi</string> + <string name="preference_show_prefix_entry_highest">Höchsten Modus</string> + <string name="preference_show_prefix_entry_none">Keine</string> + <string name="preference_input_enter_title">Eingabetaste auf Tastatur</string> + <string name="preference_input_enter_entry_emoji">Emoji-Auswahl</string> + <string name="preference_input_enter_entry_send">Senden</string> + <string name="preference_autocomplete_title">Autovervollständigung</string> + <string name="preference_hostmask_title">Hostmaske</string> + <string name="preference_hostmask_summary">Zeigt die gesame Spitzname!Ident@Host Information an</string> + <string name="preference_show_lag_title">Latenz anzeigen</string> + <string name="preference_show_lag_summary">Zeigt die Gerät-Core-Latenz in der Statusleiste</string> + <string name="preference_backlog_title">Verlauf</string> + <string name="preference_page_size_title">Seitengröße</string> + <string name="preference_page_size_summary">Anzahl an Nachrichten die pro Mal geladen und im Speicher gehalten werden</string> + <string name="preference_connection_title">Verbindung</string> + <string name="preference_show_notification_title">Benachrichtigung anzeigen</string> + <string name="preference_show_notification_summary">Zeigt eine permanente Benachrichtigung an, damit QuasselDroid durchgehend verbunden bleiben kann</string> + <string name="connection_service_title">Verbindungsdienst</string> + <string name="connection_service_description">Hält eine Verbindung zum Core, um Benachrichtigungen und die Übertragung von Nachrichten zu ermöglichen</string> + <string name="label_buffer_name">Chatname</string> + <string name="label_cancel">Abbrechen</string> + <string name="label_close">Schließen</string> + <string name="label_connect">Verbinden</string> + <string name="label_delete">Löschen</string> + <string name="label_disconnect">Verbindung trennen</string> + <string name="label_filter_messages">Nachrichten filtern</string> + <string name="label_hide_perm">Permanent ausblenden</string> + <string name="label_hide_temp">Temporär ausblenden</string> + <string name="label_input_history">Eingabeverlauf</string> + <string name="label_join">Verbinden</string> + <string name="label_no">Nein</string> + <string name="label_open">Öffnen</string> + <string name="label_part">Verlassen</string> + <string name="label_placeholder">Nachricht schreiben…</string> + <string name="label_rename">Umbenennen</string> + <string name="label_save">Speichern</string> + <string name="label_select_multiple">Auswählen</string> + <string name="label_settings">Einstellungen</string> + <string name="label_show_hidden">Alle anzeigen</string> + <string name="label_unhide">Nicht mehr ausblenden</string> + <string name="label_yes">Ja</string> + <string name="label_status_disconnected">Nicht verbunden</string> + <string name="label_status_connecting">Verbindung wird hergestellt</string> + <string name="label_status_handshake">Handshake</string> + <string name="label_status_init">Initialisieren</string> + <string name="label_status_connected">Verbunden</string> + <string name="notification_channel_connection_title">Verbindung</string> + <string name="notification_channel_highlight_title">Erwähnungen</string> + <string name="buffer_delete_confirmation">Bist du sicher, dass du diesen Chat auf ewig löschen möchtest?</string> + <string name="label_bold">Fettgedruckt</string> + <string name="label_italic">Kursiv</string> + <string name="label_strikethrough">Durchgestrichen</string> + <string name="label_underline">Unterstrichen</string> + <string name="label_monospace">Monospace</string> + <string name="label_foreground">Vordergrundfarbe</string> + <string name="label_background">Hintergrundfarbe</string> + <string name="label_clear_formatting">Formatierung entfernen</string> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1f0949e22993277c1a70d4fc8024010dbce9a900..555eeb0cfb42b884863ce99e876b0daf2fa9a6a6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,7 +6,6 @@ <string name="label_buffer_name">Buffer Name</string> <string name="label_cancel">Cancel</string> - <string name="label_clear_backlog">Clear Backlog</string> <string name="label_close">Close</string> <string name="label_connect">Connect</string> <string name="label_delete">Delete</string> @@ -35,7 +34,7 @@ <string name="label_status_connected">Connected</string> <string name="notification_channel_background" translatable="false">background</string> - <string name="notification_channel_background_title">Background</string> + <string name="notification_channel_connection_title">Connection</string> <string name="notification_channel_highlight" translatable="false">highlight</string> <string name="notification_channel_highlight_title">Highlight</string> @@ -45,7 +44,7 @@ <string name="label_strikethrough">Strikethrough</string> <string name="label_underline">Underline</string> <string name="label_monospace">Monospace</string> - <string name="label_foreground">Foreground</string> - <string name="label_background">Background</string> + <string name="label_foreground">Foreground Color</string> + <string name="label_background">Background Color</string> <string name="label_clear_formatting">Clear Formatting</string> </resources> diff --git a/app/src/main/res/values/strings_messages.xml b/app/src/main/res/values/strings_messages.xml index b3a7155e070b00b779456e47e97e4122f204568e..802cb0a7156cd59954798ffb8535d9a6665c1ac6 100644 --- a/app/src/main/res/values/strings_messages.xml +++ b/app/src/main/res/values/strings_messages.xml @@ -21,13 +21,15 @@ <string name="message_format_nick">%1$s%2$s is now known as %3$s%4$s</string> <string name="message_format_nick_self">You are now known as %1$s%2$s</string> <string name="message_format_mode">Mode %1$s by %2$s%3$s</string> - <string name="message_format_join">%1$s%2$s joined</string> + <string name="message_format_join">%1$s%2$s joined %3$s</string> <string name="message_format_part_1">%1$s%2$s left</string> <string name="message_format_part_2">%1$s%2$s left (%3$s)</string> <string name="message_format_quit_1">%1$s%2$s quit</string> <string name="message_format_quit_2">%1$s%2$s quit (%3$s)</string> - <string name="message_format_kick">%1$s was kicked by %2$s%3$s</string> - <string name="message_format_kill">%1$s was killed by %2$s%3$s</string> + <string name="message_format_kick_1">%1$s was kicked by %2$s%3$s</string> + <string name="message_format_kick_2">%1$s was kicked by %2$s%3$s (%4$s)</string> + <string name="message_format_kill_1">%1$s was killed by %2$s%3$s</string> + <string name="message_format_kill_2">%1$s was killed by %2$s%3$s (%4$s)</string> <plurals name="message_netsplit_join"> <item quantity="one">Netsplit between %1$s and %2$s ended: %3$d user joined</item> <item quantity="other">Netsplit between %1$s and %2$s ended: %3$d users joined</item> diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml index 4fac01a4fc27f604ec222e992ac6f8ca2eda7c86..9b4aadded34a60c0ac368a20276983a1636f1685 100644 --- a/app/src/main/res/values/strings_preferences.xml +++ b/app/src/main/res/values/strings_preferences.xml @@ -108,7 +108,7 @@ <string name="preference_page_size_key" translatable="false">page_size</string> <string name="preference_page_size_title">Page Size</string> - <string name="preference_page_size_summary">The number of messages loaded at a time</string> + <string name="preference_page_size_summary">The number of messages loaded and kept in memory at a time</string> <string name="preference_connection_title">Connection</string> diff --git a/app/src/main/res/values/strings_setup.xml b/app/src/main/res/values/strings_setup.xml index 2a5608326795f5ee2d13d339f7050e804ee80fdf..c5bf1bf09b71bcf7e49390e2c50b85da7e53e4c1 100644 --- a/app/src/main/res/values/strings_setup.xml +++ b/app/src/main/res/values/strings_setup.xml @@ -25,7 +25,7 @@ <!-- Account Name --> <string name="slideAccountNameTitle">Customize Account</string> - <string name="slideAccountNameDescription">Give this account a name and icon</string> + <string name="slideAccountNameDescription">Give this account a name</string> <string name="labelAccountName">Account name</string>