From 692f3775478b0c3efa21bc0f447a4970eefa0b3d Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Thu, 26 Mar 2020 18:47:52 +0100 Subject: [PATCH] Improve tests, update dependencies, and fix build --- .editorconfig | 42 +-- .gitlab-ci.yml | 56 ++-- app/build.gradle.kts | 7 +- app/src/main/AndroidManifest.xml | 85 +++--- .../app/QuasseldroidReleaseDelegate.kt | 34 +-- .../quasseldroid/ui/chat/ChatActivity.kt | 3 +- .../quasseldroid/ui/chat/ToolbarFragment.kt | 6 +- .../chat/add/create/ChannelCreateFragment.kt | 6 +- .../ui/chat/add/join/ChannelJoinFragment.kt | 6 +- .../ui/chat/add/query/QueryCreateFragment.kt | 8 +- .../ui/chat/archive/ArchiveListAdapter.kt | 6 +- .../ui/chat/buffers/BufferListAdapter.kt | 6 +- .../chat/buffers/BufferViewConfigFragment.kt | 24 +- .../ui/chat/input/AutoCompleteAdapter.kt | 4 +- .../ui/chat/input/ChatlineFragment.kt | 6 +- .../ui/chat/messages/MessageAdapter.kt | 2 +- .../ui/chat/messages/MessageListFragment.kt | 15 +- .../chat/messages/QuasselMessageRenderer.kt | 13 +- .../ui/chat/nicks/NickListFragment.kt | 6 +- .../ui/chat/topic/TopicFragment.kt | 6 +- .../ui/clientsettings/about/AboutFragment.kt | 3 +- .../ui/coresettings/CoreSettingsFragment.kt | 23 +- .../aliaslist/AliasListAdapter.kt | 2 + .../aliaslist/AliasListFragment.kt | 6 +- .../highlightlist/HighlightListFragment.kt | 20 +- .../highlightlist/HighlightRuleAdapter.kt | 2 + .../identity/IdentityBaseFragment.kt | 8 +- .../identity/IdentityNicksAdapter.kt | 2 + .../ignorelist/IgnoreListAdapter.kt | 2 + .../ignorelist/IgnoreListFragment.kt | 6 +- .../network/NetworkBaseFragment.kt | 12 +- .../network/NetworkServerAdapter.kt | 2 + .../networkconfig/NetworkConfigFragment.kt | 6 +- .../passwordchange/PasswordChangeFragment.kt | 2 +- .../certificate/CertificateInfoFragment.kt | 6 +- .../ui/info/channel/ChannelInfoFragment.kt | 6 +- .../ui/info/channellist/ChannelListAdapter.kt | 4 +- .../info/channellist/ChannelListFragment.kt | 71 ++--- .../ui/info/core/CoreInfoFragment.kt | 10 +- .../ui/info/user/UserInfoFragment.kt | 10 +- .../selection/AccountSelectionSlide.kt | 4 +- .../setup/network/NetworkSetupNetworkSlide.kt | 8 +- .../util/avatars/MatrixDataFetcher.kt | 8 +- .../AndroidCompatibilityUtils.kt | 10 +- .../util/irc/format/spans/ChannelLinkSpan.kt | 12 +- .../format/spans/IrcForegroundColorSpan.kt | 20 +- .../util/irc/format/spans/QuasselURLSpan.kt | 12 +- .../util/service/BackendServiceConnection.kt | 6 +- .../util/ui/ContextThemeWrapper.kt | 14 +- .../util/ui/LinkLongClickMenuHelper.kt | 7 +- .../quasseldroid/util/ui/LocaleHelper.kt | 18 +- .../util/ui/fastscroll/utils/Utils.java | 6 +- .../util/ui/view/InlineSnackBar.kt | 6 +- .../drawable-v21/bg_menuitem_rounded_dark.xml | 8 +- .../bg_menuitem_rounded_light.xml | 8 +- app/src/main/res/drawable/bg_badge.xml | 8 +- .../res/drawable/bg_menuitem_rounded_dark.xml | 8 +- .../drawable/bg_menuitem_rounded_light.xml | 8 +- app/src/main/res/layout-land/layout_main.xml | 46 ++-- .../layout-sw600dp-land/activity_setup.xml | 14 +- .../res/layout-sw600dp-land/layout_main.xml | 46 ++-- .../res/layout-sw600dp-land/setup_slide.xml | 14 +- .../res/layout-sw600dp/activity_setup.xml | 14 +- .../res/layout-sw720dp-land/activity_main.xml | 32 +-- app/src/main/res/layout/activity_drawable.xml | 18 +- app/src/main/res/layout/activity_main.xml | 12 +- app/src/main/res/layout/activity_settings.xml | 14 +- app/src/main/res/layout/activity_setup.xml | 14 +- app/src/main/res/layout/add_create.xml | 56 ++-- app/src/main/res/layout/add_join.xml | 28 +- app/src/main/res/layout/add_query.xml | 28 +- app/src/main/res/layout/chat_channel_join.xml | 42 +-- app/src/main/res/layout/chat_chatlist.xml | 52 ++-- app/src/main/res/layout/chat_messages.xml | 5 +- app/src/main/res/layout/chat_toolbar.xml | 25 +- .../res/layout/dialog_colorchooser_custom.xml | 147 +++++----- .../res/layout/dialog_missing_features.xml | 6 +- app/src/main/res/layout/info_certificate.xml | 68 +++-- app/src/main/res/layout/info_channel.xml | 48 ++-- app/src/main/res/layout/info_channellist.xml | 18 +- app/src/main/res/layout/info_core.xml | 57 ++-- app/src/main/res/layout/info_user.xml | 143 +++++----- app/src/main/res/layout/layout_editor.xml | 38 +-- app/src/main/res/layout/layout_history.xml | 14 +- app/src/main/res/layout/layout_main.xml | 46 ++-- app/src/main/res/layout/layout_toolbar.xml | 6 +- .../main/res/layout/preference_seekbar.xml | 16 +- .../main/res/layout/preference_vertical.xml | 35 ++- app/src/main/res/layout/preferences_about.xml | 8 +- .../res/layout/preferences_about_header.xml | 59 ++-- app/src/main/res/layout/preferences_crash.xml | 20 +- .../main/res/layout/preferences_whitelist.xml | 26 +- ...preferences_whitelist_certificate_item.xml | 8 +- .../preferences_whitelist_hostname_item.xml | 8 +- .../res/layout/settings_aliaslist_item.xml | 28 +- app/src/main/res/layout/settings_chatlist.xml | 92 +++---- .../res/layout/settings_highlightlist.xml | 82 +++--- .../layout/settings_highlightlist_rule.xml | 107 ++++---- .../res/layout/settings_highlightrule.xml | 24 +- app/src/main/res/layout/settings_identity.xml | 76 +++--- .../res/layout/settings_identity_nick.xml | 8 +- .../main/res/layout/settings_ignoreitem.xml | 22 +- .../res/layout/settings_ignorelist_item.xml | 30 +-- app/src/main/res/layout/settings_item.xml | 6 +- app/src/main/res/layout/settings_list.xml | 137 +++++----- app/src/main/res/layout/settings_network.xml | 132 ++++----- .../res/layout/settings_network_server.xml | 28 +- .../res/layout/settings_networkconfig.xml | 44 +-- .../res/layout/settings_networkserver.xml | 60 ++--- .../res/layout/settings_passwordchange.xml | 120 ++++----- .../res/layout/setup_account_connection.xml | 36 +-- .../main/res/layout/setup_account_edit.xml | 62 ++--- .../layout/setup_core_backend_configure.xml | 16 +- .../main/res/layout/setup_network_network.xml | 94 +++---- app/src/main/res/layout/setup_slide.xml | 28 +- .../main/res/layout/setup_user_network.xml | 66 ++--- .../res/layout/widget_archive_placeholder.xml | 6 +- app/src/main/res/layout/widget_banner.xml | 9 +- app/src/main/res/layout/widget_buffer.xml | 24 +- .../main/res/layout/widget_buffer_away.xml | 25 +- .../main/res/layout/widget_channel_search.xml | 6 +- .../res/layout/widget_chatmessage_action.xml | 33 ++- .../layout/widget_chatmessage_daychange.xml | 18 +- .../res/layout/widget_chatmessage_error.xml | 43 ++- .../res/layout/widget_chatmessage_info.xml | 45 ++-- .../res/layout/widget_chatmessage_notice.xml | 43 ++- .../res/layout/widget_chatmessage_plain.xml | 41 ++- .../res/layout/widget_chatmessage_server.xml | 43 ++- app/src/main/res/layout/widget_client.xml | 5 +- .../main/res/layout/widget_contributor.xml | 6 +- .../res/layout/widget_core_account_add.xml | 5 +- app/src/main/res/layout/widget_crash.xml | 8 +- app/src/main/res/layout/widget_emoji.xml | 5 +- app/src/main/res/layout/widget_formatting.xml | 154 +++++------ app/src/main/res/layout/widget_header.xml | 14 +- .../res/layout/widget_inline_snackbar.xml | 5 +- app/src/main/res/layout/widget_library.xml | 6 +- .../res/layout/widget_missing_feature.xml | 6 +- app/src/main/res/layout/widget_network.xml | 14 +- app/src/main/res/layout/widget_nick.xml | 5 +- app/src/main/res/layout/widget_nick_away.xml | 6 +- app/src/main/res/layout/widget_translator.xml | 6 +- .../main/res/layout/widget_warning_bar.xml | 19 +- app/src/main/res/values-de/strings.xml | 18 +- .../main/res/values-de/strings_messages.xml | 22 +- .../res/values-fr-rCA/strings_messages.xml | 22 +- app/src/main/res/values-it/strings.xml | 18 +- .../main/res/values-it/strings_messages.xml | 22 +- app/src/main/res/values-lt/strings.xml | 22 +- .../main/res/values-lt/strings_messages.xml | 32 +-- app/src/main/res/values-pt/strings.xml | 18 +- .../main/res/values-pt/strings_messages.xml | 22 +- .../main/res/values-sr/strings_messages.xml | 26 +- .../main/res/values-v17/styles_widgets.xml | 172 ------------ app/src/main/res/values/strings.xml | 18 +- app/src/main/res/values/strings_messages.xml | 40 +-- .../main/res/values/strings_preferences.xml | 254 +++++++++--------- app/src/main/res/values/styles_widgets.xml | 41 ++- app/src/main/res/values/themes_amoled.xml | 7 +- app/src/main/res/values/themes_dracula.xml | 8 +- app/src/main/res/values/themes_gruvbox.xml | 12 +- app/src/main/res/values/themes_material.xml | 12 +- app/src/main/res/values/themes_quassel.xml | 12 +- app/src/main/res/values/themes_solarized.xml | 12 +- .../main/res/xml/network_security_config.xml | 12 +- app/src/main/res/xml/preferences.xml | 130 ++++----- .../quasseldroid/testutil/StringEscaper.kt | 52 ---- .../compatibility/AndroidCrashFixerTest.kt | 28 +- .../quasseldroid/util/emoji/EmojiDataTest.kt | 7 +- .../irc/format/IrcFormatDeserializerTest.kt | 7 +- app/src/test/resources/crashing_text.txt | 1 + app/src/test/resources/valid_text.txt | 1 + gradle.properties | 3 - invokergenerator/build.gradle.kts | 1 - .../util/compatibility/CompatibilityUtils.kt | 11 +- ...BackportedSyncFlushDeflaterOutputStream.kt | 55 ---- malheur/build.gradle.kts | 4 +- .../java/de/kuschku/malheur/CrashHandler.kt | 9 +- .../malheur/collectors/DisplayCollector.kt | 10 +- persistence/build.gradle.kts | 4 +- ui_spinner/build.gradle.kts | 4 +- .../src/main/res/values/shape_attrs.xml | 24 +- viewmodel/build.gradle.kts | 4 +- 183 files changed, 2308 insertions(+), 2713 deletions(-) delete mode 100644 app/src/main/res/values-v17/styles_widgets.xml delete mode 100644 app/src/test/java/de/kuschku/quasseldroid/testutil/StringEscaper.kt create mode 100644 app/src/test/resources/crashing_text.txt create mode 100644 app/src/test/resources/valid_text.txt delete mode 100644 lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt diff --git a/.editorconfig b/.editorconfig index 8370c6e46..d9f5985b3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,30 +1,30 @@ [*] -charset=utf-8 -end_of_line=lf -insert_final_newline=true -indent_style=space -indent_size=4 +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 -[{*.mod,*.dtd,*.ent,*.elt}] -indent_style=space -indent_size=2 +[{*.mod, *.dtd, *.ent, *.elt}] +indent_style = space +indent_size = 2 -[{*.jhm,*.rng,*.wsdl,*.fxml,*.xslt,*.jrxml,*.ant,*.xul,*.xsl,*.xsd,*.tld,*.jnlp,*.xml}] -indent_style=space -indent_size=2 +[{*.jhm, *.rng, *.wsdl, *.fxml, *.xslt, *.jrxml, *.ant, *.xul, *.xsl, *.xsd, *.tld, *.jnlp, *.xml}] +indent_style = space +indent_size = 2 [*.json] -indent_style=space -indent_size=2 +indent_style = space +indent_size = 2 [*.java] -indent_style=space -indent_size=2 +indent_style = space +indent_size = 2 -[{*.kts,*.kt}] -indent_style=space -indent_size=2 +[{*.kts, *.kt}] +indent_style = space +indent_size = 2 -[{*.yml,*.yaml}] -indent_style=space -indent_size=2 +[{*.yml, *.yaml}] +indent_style = space +indent_size = 2 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 40cbf80c4..62036a3e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: "k8r.eu/justjanne/android-sdk:28-28.0.3" +image: "k8r.eu/justjanne/android-sdk:29-29.0.3" variables: GRADLE_OPTS: "-Dorg.gradle.daemon=false" @@ -6,31 +6,31 @@ variables: cache: key: "$CI_PROJECT_NAME" paths: - - ".gradle/wrapper" - - ".gradle/caches" + - ".gradle/wrapper" + - ".gradle/caches" before_script: -- "export GRADLE_USER_HOME=$(pwd)/.gradle" -- "export ANDROID_HOME=/android-sdk-linux" -- "export PATH=$PATH:/android-sdk-linux/platform-tools/" -- "chmod +x ./gradlew" + - "export GRADLE_USER_HOME=$(pwd)/.gradle" + - "export ANDROID_HOME=/android-sdk-linux" + - "export PATH=$PATH:/android-sdk-linux/platform-tools/" + - "chmod +x ./gradlew" -- "echo $SIGNING_KEYSTORE | base64 -d > /root/signing.keystore" -- "echo $SIGNING_PROPERTIES | base64 -d > signing.properties" + - "echo $SIGNING_KEYSTORE | base64 -d > /root/signing.keystore" + - "echo $SIGNING_PROPERTIES | base64 -d > signing.properties" stages: -- "build" -- "test" -- "deploy" + - "build" + - "test" + - "deploy" build: stage: "build" script: - - "./gradlew assembleRelease -x lintRelease -x lintVitalRelease" - - "cp app/build/outputs/apk/release/*.apk ." + - "./gradlew assembleRelease -x lintRelease -x lintVitalRelease" + - "cp app/build/outputs/apk/release/*.apk ." artifacts: paths: - - "*.apk" + - "*.apk" test: stage: "test" @@ -46,16 +46,16 @@ deploy-local: cache: {} only: refs: - - "master" + - "master" variables: - - "$S3_CONFIG" + - "$S3_CONFIG" dependencies: - - "build" + - "build" script: - - "echo $S3_CONFIG | base64 -d > $HOME/.s3cfg" - - "export VERSION=$(ls *.apk)" - - "s3cmd put $VERSION s3://releases/quasseldroid-ng/$VERSION" - - "s3cmd cp s3://releases/quasseldroid-ng/$VERSION s3://releases/quasseldroid-ng/Quasseldroid-latest.apk" + - "echo $S3_CONFIG | base64 -d > $HOME/.s3cfg" + - "export VERSION=$(ls *.apk)" + - "s3cmd put $VERSION s3://releases/quasseldroid-ng/$VERSION" + - "s3cmd cp s3://releases/quasseldroid-ng/$VERSION s3://releases/quasseldroid-ng/Quasseldroid-latest.apk" deploy-beta: stage: "deploy" @@ -63,12 +63,12 @@ deploy-beta: cache: {} only: refs: - - "master" + - "master" variables: - - "$FASTLANE_CONFIG" + - "$FASTLANE_CONFIG" dependencies: - - "build" + - "build" script: - - "echo $FASTLANE_CONFIG | base64 -d > $HOME/key.json" - - "export VERSION=$(ls *.apk)" - - "fastlane supply --apk $VERSION --track beta --json_key $HOME/key.json --package_name com.iskrembilen.quasseldroid --skip_upload_metadata=true --skip_upload_images=true --skip_upload_screenshots=true" + - "echo $FASTLANE_CONFIG | base64 -d > $HOME/key.json" + - "export VERSION=$(ls *.apk)" + - "fastlane supply --apk $VERSION --track beta --json_key $HOME/key.json --package_name com.iskrembilen.quasseldroid --skip_upload_metadata=true --skip_upload_images=true --skip_upload_screenshots=true" diff --git a/app/build.gradle.kts b/app/build.gradle.kts index aab8c846f..e7bdcdb7b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -24,7 +24,7 @@ plugins { } android { - compileSdkVersion(28) + compileSdkVersion(29) signingConfigs { SigningData.of(project.rootProject.properties("signing.properties"))?.let { @@ -39,7 +39,7 @@ android { defaultConfig { minSdkVersion(20) - targetSdkVersion(28) + targetSdkVersion(29) applicationId = "com.iskrembilen.quasseldroid" versionCode = cmd("git", "rev-list", "--count", "HEAD")?.toIntOrNull() ?: 1 @@ -193,8 +193,9 @@ dependencies { } testImplementation("junit", "junit", "4.12") - testImplementation("org.robolectric", "robolectric", "4.3") { + testImplementation("org.robolectric", "robolectric", "4.3.1") { exclude(group = "org.threeten", module = "threetenbp") + exclude(group = "com.google.auto.service", module = "auto-service") } androidTestImplementation("junit", "junit", "4.12") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ec75aaa6d..7958afecf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,17 +20,6 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.kuschku.quasseldroid"> - <uses-permission android:name="android.permission.INTERNET" /> - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> - - <uses-feature - android:name="android.hardware.touchscreen" - android:required="false" /> - <uses-feature - android:name="android.hardware.type.pc" - android:required="false" /> - <application android:name=".Quasseldroid" android:allowBackup="true" @@ -41,14 +30,6 @@ android:supportsRtl="true" android:theme="@style/Theme.SplashTheme"> - <meta-data - android:name="WindowManagerPreference:FreeformWindowSize" - android:value="tablet" /> - <meta-data - android:name="WindowManagerPreference:FreeformWindowOrientation" - android:value="landscape" /> - - <!-- Normal Chat --> <activity android:name=".ui.chat.ChatActivity" android:exported="true" @@ -76,20 +57,22 @@ <data android:scheme="ircs" /> </intent-filter> </activity> - - <!-- Info --> <activity android:name="de.kuschku.quasseldroid.ui.info.user.UserInfoActivity" android:exported="false" android:label="@string/label_info_user" android:parentActivityName=".ui.chat.ChatActivity" android:windowSoftInputMode="adjustResize" /> + + <!-- Normal Chat --> <activity android:name="de.kuschku.quasseldroid.ui.info.channel.ChannelInfoActivity" android:exported="false" android:label="@string/label_info_channel" android:parentActivityName=".ui.chat.ChatActivity" android:windowSoftInputMode="adjustResize" /> + + <!-- Info --> <activity android:name="de.kuschku.quasseldroid.ui.info.core.CoreInfoActivity" android:exported="false" @@ -111,32 +94,30 @@ android:exported="false" android:label="@string/label_info_certificate" android:windowSoftInputMode="adjustResize" /> - - <!-- Archive --> <activity android:name="de.kuschku.quasseldroid.ui.chat.archive.ArchiveActivity" android:exported="false" android:label="@string/label_archived_chats" android:windowSoftInputMode="adjustResize" /> - - <!-- Add --> <activity android:name="de.kuschku.quasseldroid.ui.chat.add.create.ChannelCreateActivity" android:exported="false" android:label="@string/label_create_channel" android:windowSoftInputMode="adjustResize" /> + + <!-- Archive --> <activity android:name="de.kuschku.quasseldroid.ui.chat.add.join.ChannelJoinActivity" android:exported="false" android:label="@string/label_join_long" android:windowSoftInputMode="adjustResize" /> + + <!-- Add --> <activity android:name="de.kuschku.quasseldroid.ui.chat.add.query.QueryCreateActivity" android:exported="false" android:label="@string/label_query_medium" android:windowSoftInputMode="adjustResize" /> - - <!-- Core Settings --> <activity android:name=".ui.coresettings.CoreSettingsActivity" android:exported="false" @@ -149,6 +130,8 @@ android:label="@string/settings_network_title" android:parentActivityName=".ui.coresettings.CoreSettingsActivity" android:windowSoftInputMode="adjustResize" /> + + <!-- Core Settings --> <activity android:name=".ui.coresettings.network.NetworkEditActivity" android:exported="false" @@ -231,8 +214,6 @@ android:exported="false" android:label="@string/label_password_change" android:windowSoftInputMode="adjustResize" /> - - <!-- Client Settings --> <activity android:name=".ui.clientsettings.client.ClientSettingsActivity" android:exported="false" @@ -243,6 +224,8 @@ android:exported="false" android:label="@string/label_crashes" android:windowSoftInputMode="adjustResize" /> + + <!-- Client Settings --> <activity android:name=".ui.clientsettings.whitelist.WhitelistActivity" android:exported="false" @@ -259,8 +242,6 @@ android:label="@string/label_license" android:parentActivityName=".ui.clientsettings.about.AboutActivity" android:windowSoftInputMode="adjustResize" /> - - <!-- Client Setup Flow --> <activity android:name=".ui.setup.accounts.selection.AccountSelectionActivity" android:exported="false" @@ -273,22 +254,20 @@ android:label="@string/app_name" android:parentActivityName=".ui.setup.accounts.selection.AccountSelectionActivity" android:windowSoftInputMode="adjustResize" /> + + <!-- Client Setup Flow --> <activity android:name=".ui.setup.accounts.edit.AccountEditActivity" android:exported="false" android:label="@string/app_name" android:parentActivityName=".ui.setup.accounts.selection.AccountSelectionActivity" android:windowSoftInputMode="adjustResize" /> - - <!-- Core Setup Flow --> <activity android:name=".ui.setup.core.CoreSetupActivity" android:exported="false" android:label="@string/setup_core_title" android:parentActivityName=".ui.chat.ChatActivity" android:windowSoftInputMode="adjustResize" /> - - <!-- Core User Setup Flow --> <activity android:name=".ui.setup.user.UserSetupActivity" android:exported="false" @@ -296,7 +275,7 @@ android:parentActivityName=".ui.chat.ChatActivity" android:windowSoftInputMode="adjustResize" /> - <!-- Network Setup Flow --> + <!-- Core Setup Flow --> <activity android:name=".ui.setup.network.NetworkSetupActivity" android:exported="false" @@ -304,13 +283,17 @@ android:parentActivityName=".ui.chat.ChatActivity" android:windowSoftInputMode="adjustResize" /> - <!-- Services --> - <service - android:name=".service.QuasselService" - android:description="@string/connection_service_description" - android:exported="false" - android:label="@string/connection_service_title" /> + <!-- Core User Setup Flow --> + <meta-data + android:name="WindowManagerPreference:FreeformWindowSize" + android:value="tablet" /> + + <!-- Network Setup Flow --> + <meta-data + android:name="WindowManagerPreference:FreeformWindowOrientation" + android:value="landscape" /> + <!-- Services --> <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" @@ -320,6 +303,24 @@ android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider> + + <service + android:name=".service.QuasselService" + android:description="@string/connection_service_description" + android:exported="false" + android:label="@string/connection_service_title" /> </application> + <uses-feature + android:name="android.hardware.type.pc" + android:required="false" /> + <uses-feature + android:name="android.hardware.touchscreen" + android:required="false" /> + + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + + <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> + </manifest> diff --git a/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt b/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt index 612a8e22a..ef97f538c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.app +import android.annotation.SuppressLint import android.os.Build import android.os.StrictMode import com.squareup.leakcanary.LeakCanary @@ -34,6 +35,7 @@ import de.kuschku.quasseldroid.persistence.util.AccountId import de.kuschku.quasseldroid.settings.AppearanceSettings import de.kuschku.quasseldroid.settings.SettingsMigration import de.kuschku.quasseldroid.settings.SettingsMigrationManager +import de.kuschku.quasseldroid.util.helper.letIf class QuasseldroidReleaseDelegate(private val app: Quasseldroid) : QuasseldroidBaseDelegate(app) { override fun shouldInit() = !LeakCanary.isInAnalyzerProcess(app) @@ -43,6 +45,7 @@ class QuasseldroidReleaseDelegate(private val app: Quasseldroid) : QuasseldroidB CrashHandler.init<BuildConfig>(application = app) } + @SuppressLint("NewApi") override fun onPostInit() { // Migrate preferences SettingsMigrationManager( @@ -146,18 +149,10 @@ class QuasseldroidReleaseDelegate(private val app: Quasseldroid) : QuasseldroidB StrictMode.ThreadPolicy.Builder() .detectNetwork() .detectCustomSlowCalls() - .let { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - it.detectResourceMismatches() - } else { - it - } - }.let { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - it.detectUnbufferedIo() - } else { - it - } + .letIf(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + it.detectResourceMismatches() + }.letIf(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + it.detectUnbufferedIo() } .penaltyLog() .build() @@ -168,18 +163,9 @@ class QuasseldroidReleaseDelegate(private val app: Quasseldroid) : QuasseldroidB .detectActivityLeaks() .detectLeakedClosableObjects() .detectLeakedRegistrationObjects() - .let { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - it.detectFileUriExposure() - } else { - it - } - }.let { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - it.detectContentUriWithoutPermission() - } else { - it - } + .detectFileUriExposure() + .letIf(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + it.detectContentUriWithoutPermission() } .penaltyLog() .build() 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 5ee29db9a..9d9dec1f2 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 @@ -703,9 +703,10 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc Toast.LENGTH_LONG).show() } it is ProtocolVersionException -> { + val protocolVersion: Int = it.protocol.version.toInt() Toast.makeText(this, getString(R.string.label_error_invalid_protocol_version, - it.protocol.version.toInt()), + protocolVersion), Toast.LENGTH_LONG).show() } it is ConnectException && diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt index 2dfe1990a..ef3e778f0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -127,7 +127,7 @@ class ToolbarFragment : ServiceBoundFragment() { Triple(it.first, it.second, avatarInfo) }.toLiveData() - .observe(this, Observer { + .observe(viewLifecycleOwner, Observer { if (it != null) { val (data, lag, avatarInfo) = it diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/create/ChannelCreateFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/create/ChannelCreateFragment.kt index 06f8557de..edb24889b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/create/ChannelCreateFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/create/ChannelCreateFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -114,7 +114,7 @@ class ChannelCreateFragment : ServiceBoundSettingsFragment() { NetworkItem(it.networkId, it.networkName) }.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, NetworkItem::name)) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { networkAdapter.submitList(it) if (!hasSetNetwork && networkId.isValidId() && it.isNotEmpty()) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/join/ChannelJoinFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/join/ChannelJoinFragment.kt index 187d0e4f6..f5b5e3c5c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/join/ChannelJoinFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/join/ChannelJoinFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -92,7 +92,7 @@ class ChannelJoinFragment : ServiceBoundFragment() { NetworkItem(it.networkId, it.networkName) }.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, NetworkItem::name)) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { networkAdapter.submitList(it) if (!hasSetNetwork && networkId.isValidId() && it.isNotEmpty()) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/query/QueryCreateFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/query/QueryCreateFragment.kt index 559c2af0d..a86699061 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/query/QueryCreateFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/add/query/QueryCreateFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -136,7 +136,7 @@ class QueryCreateFragment : ServiceBoundFragment() { NetworkItem(it.networkId, it.networkName) }.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, NetworkItem::name)) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { networkAdapter.submitList(it) if (!hasSetNetwork && networkId.isValidId() && it.isNotEmpty()) { @@ -286,7 +286,7 @@ class QueryCreateFragment : ServiceBoundFragment() { }.sortedBy { it.lowestMode }.toList() - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { nickListAdapter.submitList(it) }) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/archive/ArchiveListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/archive/ArchiveListAdapter.kt index eba0b698e..4402eb0fe 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/archive/ArchiveListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/archive/ArchiveListAdapter.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.ui.chat.archive +import android.annotation.SuppressLint import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.MotionEvent @@ -43,6 +44,7 @@ import de.kuschku.quasseldroid.viewmodel.data.BufferListItem import de.kuschku.quasseldroid.viewmodel.data.BufferStatus import io.reactivex.subjects.BehaviorSubject +@SuppressLint("ClickableViewAccessibility", "ResourceType") class ArchiveListAdapter( private val messageSettings: MessageSettings, private val selectedBuffer: BehaviorSubject<BufferId>, @@ -517,8 +519,8 @@ class ArchiveListAdapter( binding.description.visibleIf(item.props.description.isNotBlank()) binding.status.loadAvatars(item.props.avatarUrls, - item.props.fallbackDrawable, - crop = !messageSettings.squareAvatars) + item.props.fallbackDrawable, + crop = !messageSettings.squareAvatars) } } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt index f799c2342..c068ffe27 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.ui.chat.buffers +import android.annotation.SuppressLint import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.MotionEvent @@ -42,6 +43,7 @@ import de.kuschku.quasseldroid.viewmodel.data.BufferListItem import de.kuschku.quasseldroid.viewmodel.data.BufferStatus import io.reactivex.subjects.BehaviorSubject +@SuppressLint("ClickableViewAccessibility", "ResourceType") class BufferListAdapter( private val messageSettings: MessageSettings, private val selectedBuffer: BehaviorSubject<BufferId>, @@ -546,8 +548,8 @@ class BufferListAdapter( binding.description.visibleIf(item.props.description.isNotBlank()) binding.status.loadAvatars(item.props.avatarUrls, - item.props.fallbackDrawable, - crop = !messageSettings.squareAvatars) + item.props.fallbackDrawable, + crop = !messageSettings.squareAvatars) } } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt index cb9b27d4a..258134408 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt @@ -178,7 +178,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() { val adapter = BufferViewConfigAdapter() modelHelper.bufferViewConfigs.safeSwitchMap { combineLatest(it.map(BufferViewConfig::liveUpdates)) - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { adapter.submitList(it) } @@ -226,12 +226,14 @@ class BufferViewConfigFragment : ServiceBoundFragment() { } } - modelHelper.negotiatedFeatures.toLiveData().observe(this, Observer { (connected, features) -> - featureContextBufferActivitySync.setMode( - if (!connected || features.hasFeature(ExtendedFeature.BufferActivitySync)) WarningBarView.MODE_NONE - else WarningBarView.MODE_ICON - ) - }) + modelHelper.negotiatedFeatures.toLiveData().observe(viewLifecycleOwner, + Observer { (connected, features) -> + featureContextBufferActivitySync.setMode( + if (!connected || features.hasFeature( + ExtendedFeature.BufferActivitySync)) WarningBarView.MODE_NONE + else WarningBarView.MODE_ICON + ) + }) val filtered = combineLatest( database.filtered().listenRx(accountId).toObservable().map { @@ -242,7 +244,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() { modelHelper.processChatBufferList(filtered).map { buffers -> bufferPresenter.render(buffers) - }.toLiveData().observe(this, Observer { processedList -> + }.toLiveData().observe(viewLifecycleOwner, Observer { processedList -> if (hasRestoredChatListState) { chatListState = chatList.layoutManager?.onSaveInstanceState() hasRestoredChatListState = false @@ -254,7 +256,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() { listAdapter.setOnLongClickListener(this@BufferViewConfigFragment::longClickListener) chatList.adapter = listAdapter - modelHelper.selectedBuffer.toLiveData().observe(this, Observer { buffer -> + modelHelper.selectedBuffer.toLiveData().observe(viewLifecycleOwner, Observer { buffer -> actionMode?.let { BufferContextPresenter.present(it, buffer) } @@ -288,7 +290,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() { chatList.itemAnimator = DefaultItemAnimator() chatList.setItemViewCacheSize(10) - modelHelper.chat.stateReset.toLiveData().observe(this, Observer { + modelHelper.chat.stateReset.toLiveData().observe(viewLifecycleOwner, Observer { listAdapter.submitList(emptyList()) hasSetBufferViewConfigId = false }) @@ -299,7 +301,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() { combineLatest(modelHelper.chat.bufferSearchTemporarilyVisible.distinctUntilChanged(), bufferSearchPermanentlyVisible) - .toLiveData().observe(this, Observer { (temporarily, permanently) -> + .toLiveData().observe(viewLifecycleOwner, Observer { (temporarily, permanently) -> val visible = temporarily || permanently val menuItem = chatListToolbar.menu.findItem(R.id.action_search) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt index 2cd66d65d..4d2f75428 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt @@ -151,8 +151,8 @@ class AutoCompleteAdapter @Inject constructor( binding.avatar.visibleIf(messageSettings.showAvatars) binding.avatar.loadAvatars(data.avatarUrls, - data.fallbackDrawable, - crop = !messageSettings.squareAvatars) + data.fallbackDrawable, + crop = !messageSettings.squareAvatars) } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt index ca93d13b1..26fb83a0b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -169,7 +169,7 @@ class ChatlineFragment : ServiceBoundFragment() { } messageHistory.adapter = messageHistoryAdapter modelHelper.chat.recentlySentMessages.toLiveData() - .observe(this, Observer(messageHistoryAdapter::submitList)) + .observe(viewLifecycleOwner, Observer(messageHistoryAdapter::submitList)) messageHistoryAdapter.setOnUpdateFinishedListener { messageHistory.scrollToPosition(0) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt index 6c682499f..2c3110071 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt @@ -44,7 +44,7 @@ import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage import javax.inject.Inject class MessageAdapter @Inject constructor( - private val messageRenderer: QuasselMessageRenderer + private val messageRenderer: MessageRenderer ) : PagedListAdapter<DisplayMessage, MessageAdapter.QuasselMessageViewHolder>( object : DiffUtil.ItemCallback<DisplayMessage>() { override fun areItemsTheSame(oldItem: DisplayMessage, newItem: DisplayMessage) = diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt index 479f9db35..99fe0be42 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -170,8 +170,7 @@ class MessageListFragment : ServiceBoundFragment() { builder val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText(null, data) - clipboard.primaryClip = clip + clipboard.setPrimaryClip(ClipData.newPlainText(null, data)) actionMode?.finish() true } @@ -407,13 +406,13 @@ class MessageListFragment : ServiceBoundFragment() { database.message().lastMsgId(it) } - modelHelper.chat.bufferId.toLiveData().observe(this, Observer { bufferId -> + modelHelper.chat.bufferId.toLiveData().observe(viewLifecycleOwner, Observer { bufferId -> swipeRefreshLayout.isEnabled = (bufferId != null || bufferId?.isValidId() == true) }) combineLatest(modelHelper.bufferSyncer, modelHelper.sessionManager.mapSwitchMap(SessionManager::state).distinctUntilChanged()) - .toLiveData().observe(this, Observer { (bufferSyncer, state) -> + .toLiveData().observe(viewLifecycleOwner, Observer { (bufferSyncer, state) -> if (state?.orNull() == ConnectionState.CONNECTED) { runInBackgroundDelayed(16) { modelHelper.chat.bufferId { bufferId -> @@ -447,7 +446,7 @@ class MessageListFragment : ServiceBoundFragment() { }) modelHelper.connectedSession.toLiveData().zip(lastMessageId).observe( - this, Observer { + viewLifecycleOwner, Observer { runInBackground { val session = it?.first?.orNull() val message = it?.second @@ -517,7 +516,7 @@ class MessageListFragment : ServiceBoundFragment() { lastBuffer = BufferId(getInt(KEY_STATE_BUFFER)).nullIf { !it.isValidId() } } - data.observe(this, Observer { list -> + data.observe(viewLifecycleOwner, Observer { list -> previousLoadKey = list?.lastKey as? Int val firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition() val firstVisibleMessageId = adapter[firstVisibleItemPosition]?.content?.messageId 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 b57c6cda5..d81999035 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 @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -23,7 +23,6 @@ import android.content.Context import android.graphics.Typeface import android.graphics.drawable.ColorDrawable import android.graphics.drawable.LayerDrawable -import android.os.Build import android.text.SpannableStringBuilder import android.util.TypedValue import android.view.Gravity @@ -205,17 +204,13 @@ class QuasselMessageRenderer @Inject constructor( LinearLayout.LayoutParams(avatarContainerSize, LinearLayout.LayoutParams.WRAP_CONTENT).apply { val margin = viewHolder.itemView.context.resources.getDimensionPixelSize(R.dimen.message_horizontal) setMargins(0, 0, margin, 0) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - marginEnd = margin - } + marginEnd = margin } avatarPlaceholder?.layoutParams = LinearLayout.LayoutParams(avatarContainerSize, LinearLayout.LayoutParams.MATCH_PARENT).apply { val margin = viewHolder.itemView.context.resources.getDimensionPixelSize(R.dimen.message_horizontal) setMargins(0, 0, margin, 0) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - marginEnd = margin - } + marginEnd = margin } viewHolder.messageContainer?.apply { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt index fa596d38c..af05005d9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -106,7 +106,7 @@ class NickListFragment : ServiceBoundFragment() { val colorContext = ColorContext(requireContext(), messageSettings) val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size) - modelHelper.nickDataThrottled.toLiveData().observe(this, Observer { + modelHelper.nickDataThrottled.toLiveData().observe(viewLifecycleOwner, Observer { runInBackground { it?.asSequence()?.map { val nickName = it.nick diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt index 6451c31e4..0aece28be 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -125,7 +125,7 @@ class TopicFragment : ServiceBoundSettingsFragment(), Savable { modelHelper.chat.bufferId.onNext(bufferId) modelHelper.bufferData.filter { it.info != null - }.firstElement().toLiveData().observe(this, Observer { + }.firstElement().toLiveData().observe(viewLifecycleOwner, Observer { chatline.setText(formatDeserializer.formatString(it?.description, true)) }) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt index 239348782..1af58ebf8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt @@ -82,8 +82,7 @@ class AboutFragment : DaggerFragment() { versionContainer.setOnClickListener { val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText(null, BuildConfig.VERSION_NAME) - clipboard.primaryClip = clip + clipboard.setPrimaryClip(ClipData.newPlainText(null, BuildConfig.VERSION_NAME)) Toast.makeText(requireContext(), R.string.info_copied_version, Toast.LENGTH_LONG).show() } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt index 7b934204f..274ca3feb 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -147,7 +147,7 @@ class CoreSettingsFragment : ServiceBoundFragment() { }.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, SettingsItem<NetworkId>::name)) } } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { networkAdapter.submitList(it.orEmpty()) }) @@ -166,7 +166,7 @@ class CoreSettingsFragment : ServiceBoundFragment() { }.sortedBy(SettingsItem<IdentityId>::name) } } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { identityAdapter.submitList(it.orEmpty()) }) @@ -181,17 +181,18 @@ class CoreSettingsFragment : ServiceBoundFragment() { SettingsItem(it.bufferViewId(), it.bufferViewName()) }.sortedBy(SettingsItem<Int>::name) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { chatListAdapter.submitList(it.orEmpty()) }) var missingFeatureList: List<MissingFeature> = emptyList() - modelHelper.negotiatedFeatures.toLiveData().observe(this, Observer { (connected, features) -> - missingFeatureList = RequiredFeatures.features.filter { - it.feature !in features.enabledFeatures - } - featureContextMissing.visibleIf(connected && missingFeatureList.isNotEmpty()) - }) + modelHelper.negotiatedFeatures.toLiveData().observe(viewLifecycleOwner, + Observer { (connected, features) -> + missingFeatureList = RequiredFeatures.features.filter { + it.feature !in features.enabledFeatures + } + featureContextMissing.visibleIf(connected && missingFeatureList.isNotEmpty()) + }) featureContextMissing.setOnClickListener { MissingFeaturesDialog.Builder(requireActivity()) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt index 0421df006..4c885fbaa 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.ui.coresettings.aliaslist +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.MotionEvent import android.view.ViewGroup @@ -90,6 +91,7 @@ class AliasListAdapter @Inject constructor( holder.bind(data[position]) } + @SuppressLint("ClickableViewAccessibility") class AliasItemViewHolder( private val binding: SettingsAliaslistItemBinding, private val formatDeserializer: IrcFormatDeserializer, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt index 41e2517c4..650e7fe26 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -83,7 +83,7 @@ class AliasListFragment : ServiceBoundSettingsFragment(), Savable, Changeable { modelHelper.aliasManager .filter(Optional<AliasManager>::isPresent) .map(Optional<AliasManager>::get) - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { if (this.aliasManager == null) { this.aliasManager = Pair(it, it.copy()) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt index eecdee4e4..4458a826f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -136,7 +136,7 @@ class HighlightListFragment : ServiceBoundSettingsFragment(), Savable, Changeabl modelHelper.highlightRuleManager .filter(Optional<HighlightRuleManager>::isPresent) .map(Optional<HighlightRuleManager>::get) - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { if (this.ruleManager == null) { this.ruleManager = Pair(it, it.copy()) @@ -151,12 +151,14 @@ class HighlightListFragment : ServiceBoundSettingsFragment(), Savable, Changeabl } }) - modelHelper.negotiatedFeatures.toLiveData().observe(this, Observer { (connected, features) -> - featureContextCoreSideHighlights.setMode( - if (!connected || features.hasFeature(ExtendedFeature.CoreSideHighlights)) WarningBarView.MODE_NONE - else WarningBarView.MODE_ICON - ) - }) + modelHelper.negotiatedFeatures.toLiveData().observe(viewLifecycleOwner, + Observer { (connected, features) -> + featureContextCoreSideHighlights.setMode( + if (!connected || features.hasFeature( + ExtendedFeature.CoreSideHighlights)) WarningBarView.MODE_NONE + else WarningBarView.MODE_ICON + ) + }) return view } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt index 6617cd348..4ccadb7d9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.ui.coresettings.highlightlist +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.MotionEvent import android.view.ViewGroup @@ -28,6 +29,7 @@ import de.kuschku.quasseldroid.databinding.SettingsHighlightlistRuleBinding import de.kuschku.quasseldroid.util.helper.visibleIf import java.util.* +@SuppressLint("ClickableViewAccessibility") class HighlightRuleAdapter( private val clickListener: (HighlightRuleManager.HighlightRule) -> Unit, private val dragListener: (HighlightRuleViewHolder) -> Unit diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt index 776cdfcf2..e9daf44c8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -131,7 +131,7 @@ abstract class IdentityBaseFragment(private val initDefault: Boolean) : .filter(Optional<ISession>::isPresent) .map(Optional<ISession>::get) .firstElement() - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { it?.let { update(Defaults.identity(requireContext(), it.proxy)) } @@ -141,7 +141,7 @@ abstract class IdentityBaseFragment(private val initDefault: Boolean) : .filter(Optional<Identity>::isPresent) .map(Optional<Identity>::get) .firstElement() - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { it?.let { update(it) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt index 9c93b6ed6..4bffa58ef 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.ui.coresettings.identity +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.MotionEvent import android.view.ViewGroup @@ -26,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView import de.kuschku.quasseldroid.databinding.SettingsIdentityNickBinding import java.util.* +@SuppressLint("ClickableViewAccessibility") class IdentityNicksAdapter( private val clickListener: (Int, String) -> Unit, private val dragListener: (IdentityNickViewHolder) -> Unit diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt index 962ffd1bd..f6242d94c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.ui.coresettings.ignorelist +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.MotionEvent import android.view.ViewGroup @@ -28,6 +29,7 @@ import de.kuschku.quasseldroid.databinding.SettingsIgnorelistItemBinding import de.kuschku.quasseldroid.util.helper.visibleIf import java.util.* +@SuppressLint("ClickableViewAccessibility") class IgnoreListAdapter( private val clickListener: (IgnoreListManager.IgnoreListItem) -> Unit, private val dragListener: (IgnoreItemViewHolder) -> Unit diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt index d9cd707bc..bb4b03ba5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -90,7 +90,7 @@ class IgnoreListFragment : ServiceBoundSettingsFragment(), Savable, modelHelper.ignoreListManager .filter(Optional<IgnoreListManager>::isPresent) .map(Optional<IgnoreListManager>::get) - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { if (this.ignoreListManager == null) { this.ignoreListManager = Pair(it, it.copy()) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt index 6d4bfe039..2da6c9f38 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -176,7 +176,7 @@ abstract class NetworkBaseFragment(private val initDefault: Boolean) : combineLatest(it.values.map(Identity::liveUpdates)).map { it.sortedBy(Identity::identityName) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { val selectOriginal = identity.selectedItemId == Spinner.INVALID_ROW_ID identityAdapter.submitList(it) @@ -193,7 +193,7 @@ abstract class NetworkBaseFragment(private val initDefault: Boolean) : .filter(Optional<ISession>::isPresent) .map(Optional<ISession>::get) .firstElement() - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { it?.let { update(Defaults.network(requireContext(), it.proxy), identityAdapter) } @@ -204,7 +204,7 @@ abstract class NetworkBaseFragment(private val initDefault: Boolean) : .map(Optional<Network>::get) .firstElement() .toLiveData() - .observe(this, Observer { + .observe(viewLifecycleOwner, Observer { it?.let { update(it, identityAdapter) } @@ -214,7 +214,7 @@ abstract class NetworkBaseFragment(private val initDefault: Boolean) : .map(Optional<Network>::get) .safeSwitchMap(Network::liveCaps) .toLiveData() - .observe(this, Observer { + .observe(viewLifecycleOwner, Observer { autoidentifyWarning.visibleIf(it.contains("sasl")) }) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt index 30a2d4ff9..a414edf21 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.ui.coresettings.network +import android.annotation.SuppressLint import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.MotionEvent @@ -32,6 +33,7 @@ import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.tint import java.util.* +@SuppressLint("ClickableViewAccessibility", "ResourceType") class NetworkServerAdapter( private val clickListener: (INetwork.Server) -> Unit, private val dragListener: (NetworkServerViewHolder) -> Unit diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt index d91aada6e..28805a4ea 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -85,7 +85,7 @@ class NetworkConfigFragment : ServiceBoundSettingsFragment(), Savable, .filter(Optional<NetworkConfig>::isPresent) .map(Optional<NetworkConfig>::get) .firstElement() - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { it?.let { if (this.networkConfig == null) { this.networkConfig = Pair(it, it.copy()) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/passwordchange/PasswordChangeFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/passwordchange/PasswordChangeFragment.kt index 1f6c77c5e..e7c39575b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/passwordchange/PasswordChangeFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/passwordchange/PasswordChangeFragment.kt @@ -98,7 +98,7 @@ class PasswordChangeFragment : ServiceBoundFragment() { .mapSwitchMap(RpcHandler::passwordChanged) .filter(Optional<Boolean>::isPresent) .map(Optional<Boolean>::get) - .toLiveData().observe(this, Observer { + .toLiveData().observe(viewLifecycleOwner, Observer { val waiting = this.waiting if (waiting != null) { if (it) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/certificate/CertificateInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/certificate/CertificateInfoFragment.kt index 8e5eea990..78670aaa9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/certificate/CertificateInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/certificate/CertificateInfoFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -107,7 +107,7 @@ class CertificateInfoFragment : ServiceBoundSettingsFragment() { val dateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM) - modelHelper.peerCertificateChain.toLiveData().observe(this, Observer { + modelHelper.peerCertificateChain.toLiveData().observe(viewLifecycleOwner, Observer { val leafCertificate = it.firstOrNull() if (leafCertificate != null) { content.visibility = View.VISIBLE diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/channel/ChannelInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/channel/ChannelInfoFragment.kt index 6d856bbca..071de92ca 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/channel/ChannelInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/channel/ChannelInfoFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -114,7 +114,7 @@ class ChannelInfoFragment : ServiceBoundFragment() { channel.updates().map { Pair(info, it) } - }.toLiveData().observe(this, Observer { (info, channel) -> + }.toLiveData().observe(viewLifecycleOwner, Observer { (info, channel) -> name.text = channel.name() val (content, hasSpoilers) = contentFormatter.formatContent( channel.topic(), diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListAdapter.kt index d79a732d9..c6bb63cd1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListAdapter.kt @@ -97,8 +97,8 @@ class ChannelListAdapter @Inject constructor( ) binding.topic.text = content binding.users.text = itemView.context.resources.getQuantityString(R.plurals.label_user_count, - data.userCount.toInt(), - data.userCount.toInt()) + data.userCount.toInt(), + data.userCount.toInt()) this.data = data } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListFragment.kt index 42e50ed15..01555f395 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/channellist/ChannelListFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -44,6 +44,7 @@ import de.kuschku.quasseldroid.util.ui.settings.fragment.ServiceBoundSettingsFra import de.kuschku.quasseldroid.util.ui.view.MaterialContentLoadingProgressBar import de.kuschku.quasseldroid.util.ui.view.WarningBarView import de.kuschku.quasseldroid.viewmodel.helper.EditorViewModelHelper +import io.reactivex.BackpressureStrategy import io.reactivex.subjects.BehaviorSubject import javax.inject.Inject @@ -119,42 +120,46 @@ class ChannelListFragment : ServiceBoundSettingsFragment() { searchResults.layoutManager = LinearLayoutManager(view.context) searchResults.itemAnimator = DefaultItemAnimator() - combineLatest(results, sort).toLiveData().observe(this, Observer { (results, sort) -> - adapter.submitList(results.let { - when (sort.field) { - Sort.Field.CHANNEL_NAME -> { - when (sort.direction) { - Sort.Direction.ASC -> - it.sortedBy(IrcListHelper.ChannelDescription::channelName) - Sort.Direction.DESC -> - it.sortedByDescending(IrcListHelper.ChannelDescription::channelName) - } - } - Sort.Field.USER_COUNT -> { - when (sort.direction) { - Sort.Direction.ASC -> - it.sortedBy(IrcListHelper.ChannelDescription::userCount) - Sort.Direction.DESC -> - it.sortedByDescending(IrcListHelper.ChannelDescription::userCount) - } - } - Sort.Field.TOPIC -> { - when (sort.direction) { - Sort.Direction.ASC -> - it.sortedBy(IrcListHelper.ChannelDescription::topic) - Sort.Direction.DESC -> - it.sortedByDescending(IrcListHelper.ChannelDescription::topic) - } - } - } - }) - }) + combineLatest(results, sort).toLiveData().observe(viewLifecycleOwner, + Observer { (results, sort) -> + adapter.submitList(results.let { + when (sort.field) { + Sort.Field.CHANNEL_NAME -> { + when (sort.direction) { + Sort.Direction.ASC -> + it.sortedBy(IrcListHelper.ChannelDescription::channelName) + Sort.Direction.DESC -> + it.sortedByDescending( + IrcListHelper.ChannelDescription::channelName) + } + } + Sort.Field.USER_COUNT -> { + when (sort.direction) { + Sort.Direction.ASC -> + it.sortedBy(IrcListHelper.ChannelDescription::userCount) + Sort.Direction.DESC -> + it.sortedByDescending( + IrcListHelper.ChannelDescription::userCount) + } + } + Sort.Field.TOPIC -> { + when (sort.direction) { + Sort.Direction.ASC -> + it.sortedBy(IrcListHelper.ChannelDescription::topic) + Sort.Direction.DESC -> + it.sortedByDescending( + IrcListHelper.ChannelDescription::topic) + } + } + } + }) + }) modelHelper.ircListHelper .mapSwitchMap(IrcListHelper::observable) .filter(Optional<IrcListHelper.Event>::isPresent) .map(Optional<IrcListHelper.Event>::get) - .toLiveData().observe(this, Observer { + .toLiveData(BackpressureStrategy.BUFFER).observe(viewLifecycleOwner, Observer { when (it) { is IrcListHelper.Event.ChannelList -> { if (it.netId == query?.networkId) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt index 6215546c3..ce5dc9f95 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -113,7 +113,7 @@ class CoreInfoFragment : ServiceBoundFragment() { var missingFeatureList: List<MissingFeature> = emptyList() combineLatest(modelHelper.coreInfo, modelHelper.coreFeatures).toLiveData() - .observe(this, Observer { + .observe(viewLifecycleOwner, Observer { val data = it?.first?.orNull() val connected = it?.second?.first ?: false @@ -163,7 +163,7 @@ class CoreInfoFragment : ServiceBoundFragment() { CertificateInfoActivity.launch(it.context) } - modelHelper.sslSession.toLiveData().observe(this, Observer { + modelHelper.sslSession.toLiveData().observe(viewLifecycleOwner, Observer { val peerCertificateChain = try { it?.orNull()?.peerCertificateChain } catch (ignored: SSLPeerUnverifiedException) { @@ -218,7 +218,7 @@ class CoreInfoFragment : ServiceBoundFragment() { rpcHandler?.requestKickClient(it) } clients.adapter = adapter - modelHelper.coreInfoClients.toLiveData().observe(this, Observer { + modelHelper.coreInfoClients.toLiveData().observe(viewLifecycleOwner, Observer { clientsTitle.visibleIf(it?.isNotEmpty() == true) adapter.submitList(it) }) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/user/UserInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/user/UserInfoFragment.kt index 10f728033..766524dd5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/user/UserInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/user/UserInfoFragment.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -286,7 +286,7 @@ class UserInfoFragment : ServiceBoundFragment() { ignoreItems = ignoreItems) } } ?: Observable.just(IrcUser.NULL).safeSwitchMap { user -> processUser(user, null, null) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { val user = it.orNull() if (user != null) { currentBufferInfo = user.info @@ -312,7 +312,7 @@ class UserInfoFragment : ServiceBoundFragment() { val avatarInfo = MatrixAvatarInfo(it, model.size) val url = Uri.parse(avatarInfo.avatarUrl) - val imageUrl = matrixApi.avatarImage(server = url.host, + val imageUrl = matrixApi.avatarImage(server = url.host ?: "", id = url.pathSegments.first()).request().url() actualUrl = imageUrl.toString() } @@ -376,7 +376,7 @@ class UserInfoFragment : ServiceBoundFragment() { }) }.filter { it.isNotEmpty() - }.firstElement().toLiveData().observe(this, Observer { + }.firstElement().toLiveData().observe(viewLifecycleOwner, Observer { it?.firstOrNull()?.let { info -> ChatActivity.launch(view.context, bufferId = info.bufferId) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt index 91dac04be..a7b9ead5a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt @@ -83,7 +83,7 @@ class AccountSelectionSlide : SlideFragment() { accountViewModel.accounts.removeObserver(this) } } - accountViewModel.accounts.observe(this, firstObserver) + accountViewModel.accounts.observe(viewLifecycleOwner, firstObserver) accountList.layoutManager = LinearLayoutManager(context) accountList.itemAnimator = DefaultItemAnimator() accountList.adapter = adapter @@ -100,7 +100,7 @@ class AccountSelectionSlide : SlideFragment() { accountViewModel.accounts.zip(accountViewModel.selectedItem).map { (accounts, selected) -> accounts.map { Pair(it, it.id == selected) } - }.observe(this, Observer { + }.observe(viewLifecycleOwner, Observer { adapter.submitList((it ?: emptyList()) + Pair(null, false)) }) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt index 836b7ee6a..c64653395 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -192,7 +192,7 @@ class NetworkSetupNetworkSlide : ServiceBoundSlideFragment() { combineLatest(it.values.map(Identity::liveUpdates)).map { it.sortedBy(Identity::identityName) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { identityAdapter.submitList(it) } @@ -202,7 +202,7 @@ class NetworkSetupNetworkSlide : ServiceBoundSlideFragment() { combineLatest(it.values.map(Network::liveNetworkInfo)).map { it.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, INetwork.NetworkInfo::networkName)) } - }.toLiveData().observe(this, Observer { + }.toLiveData().observe(viewLifecycleOwner, Observer { if (it != null) { this.networks = it update() diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixDataFetcher.kt b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixDataFetcher.kt index 562c9a930..092fb03a1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixDataFetcher.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixDataFetcher.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -59,13 +59,13 @@ class MatrixDataFetcher( private fun inputStreamFromAvatarInfo(info: MatrixAvatarInfo): InputStream? { val url = Uri.parse(info.avatarUrl) return if (info.size != null && info.size < 512) { - api.avatarThumbnail(server = url.host, + api.avatarThumbnail(server = url.host ?: "", id = url.pathSegments.first(), width = info.size, height = info.size, method = if (info.size > 96) "scale" else "crop") } else { - api.avatarImage(server = url.host, id = url.pathSegments.first()) + api.avatarImage(server = url.host ?: "", id = url.pathSegments.first()) }.execute().body()?.byteStream() } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidCompatibilityUtils.kt b/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidCompatibilityUtils.kt index 53be5faf5..75fc33d18 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidCompatibilityUtils.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidCompatibilityUtils.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -32,12 +32,6 @@ object AndroidCompatibilityUtils { * @return Does the current device support KeepAlive sockets? */ CompatibilityUtils.supportsKeepAlive = !isChromeBook() - - /** - * This is used to check if the device supports SyncFlush - * As that feature was only added in KitKat, we just check for the device version. - */ - CompatibilityUtils.supportsCompression = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT } private fun isChromeBook(): Boolean { diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/ChannelLinkSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/ChannelLinkSpan.kt index e9f74f26e..81f23cc15 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/ChannelLinkSpan.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/ChannelLinkSpan.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -30,11 +30,9 @@ class ChannelLinkSpan( private val text: String, private val highlight: Boolean ) : ClickableSpan() { - override fun updateDrawState(ds: TextPaint?) { - if (ds != null) { - if (!highlight) ds.color = ds.linkColor - ds.isUnderlineText = true - } + override fun updateDrawState(ds: TextPaint) { + if (!highlight) ds.color = ds.linkColor + ds.isUnderlineText = true } override fun onClick(widget: View) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt index 41e20e44f..8e07dea50 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -26,11 +26,9 @@ import androidx.annotation.ColorInt sealed class IrcForegroundColorSpan<T : IrcForegroundColorSpan<T>>(@ColorInt color: Int) : ForegroundColorSpan(color), Copyable<T> { - override fun updateDrawState(ds: TextPaint?) { - if (ds != null) { - ds.color = foregroundColor - ds.linkColor = foregroundColor - } + override fun updateDrawState(ds: TextPaint) { + ds.color = foregroundColor + ds.linkColor = foregroundColor } class MIRC(private val mircColor: Int, @ColorInt color: Int) : @@ -45,6 +43,10 @@ sealed class IrcForegroundColorSpan<T : IrcForegroundColorSpan<T>>(@ColorInt col is MIRC -> other.mircColor == mircColor else -> false } + + override fun hashCode(): Int { + return mircColor + } } class HEX(@ColorInt color: Int) : @@ -58,5 +60,9 @@ sealed class IrcForegroundColorSpan<T : IrcForegroundColorSpan<T>>(@ColorInt col is HEX -> other.foregroundColor == foregroundColor else -> false } + + override fun hashCode(): Int { + return foregroundColor + } } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/QuasselURLSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/QuasselURLSpan.kt index cb16a9a88..d13cffac9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/QuasselURLSpan.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/QuasselURLSpan.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -28,11 +28,9 @@ import android.util.Log import android.view.View class QuasselURLSpan(text: String, private val highlight: Boolean) : URLSpan(text) { - override fun updateDrawState(ds: TextPaint?) { - if (ds != null) { - if (!highlight) ds.color = ds.linkColor - ds.isUnderlineText = true - } + override fun updateDrawState(ds: TextPaint) { + if (!highlight) ds.color = ds.linkColor + ds.isUnderlineText = true } override fun onClick(widget: View) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt index e0750736f..4bcaa70ee 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -55,7 +55,7 @@ class BackendServiceConnection : ServiceConnection, DefaultLifecycleObserver { override fun onServiceConnected(component: ComponentName?, binder: IBinder?) { when (component) { - ComponentName(context, QuasselService::class.java) -> + ComponentName(context!!, QuasselService::class.java) -> if (binder is QuasselBinder) { synchronized(this@BackendServiceConnection) { state = State.BOUND diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt index eb1828dd2..98713df9d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ContextThemeWrapper.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -24,7 +24,6 @@ import android.content.ContextWrapper import android.content.res.AssetManager import android.content.res.Configuration import android.content.res.Resources -import android.os.Build import android.view.LayoutInflater import androidx.annotation.StyleRes import de.kuschku.quasseldroid.R @@ -119,12 +118,9 @@ open class ContextThemeWrapper : ContextWrapper { private val resourcesInternal: Resources? get() { if (mResources == null) { - if (overrideConfiguration == null) { - mResources = super.getResources() - } else if (Build.VERSION.SDK_INT >= 17) { - val resContext = createConfigurationContext(overrideConfiguration) - mResources = resContext.resources - } + mResources = overrideConfiguration?.let { + createConfigurationContext(it).resources + } ?: super.getResources() } return mResources } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt index a39f2cf14..8e4dfb835 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LinkLongClickMenuHelper.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -42,8 +42,7 @@ class LinkLongClickMenuHelper : when (it.itemId) { R.id.action_copy -> { val clipboard = anchor.context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText(null, url) - clipboard.primaryClip = clip + clipboard.setPrimaryClip(ClipData.newPlainText(null, url)) menu.dismiss() linkMenu = null true diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt index 8d8b221e1..216e9ca16 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -21,7 +21,6 @@ package de.kuschku.quasseldroid.util.ui import android.content.Context import android.content.res.Configuration -import android.os.Build import de.kuschku.quasseldroid.settings.Settings import java.util.* @@ -43,15 +42,8 @@ object LocaleHelper { private fun updateResources(context: Context, language: String) = if (language.isNotEmpty()) { val locale = parseLanguageCode(language) Locale.setDefault(locale) - - val config = Configuration(context.resources.configuration) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - config.setLocale(locale) - context.createConfigurationContext(config) - } else { - config.locale = locale - context.resources.updateConfiguration(config, context.resources.displayMetrics) - context - } + context.createConfigurationContext(Configuration(context.resources.configuration).apply { + setLocale(locale) + }) } else context } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/utils/Utils.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/utils/Utils.java index d1c548b41..fe3557af6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/utils/Utils.java +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/utils/Utils.java @@ -16,9 +16,7 @@ package de.kuschku.quasseldroid.util.ui.fastscroll.utils; -import android.annotation.TargetApi; import android.content.res.Resources; -import android.os.Build; import android.util.TypedValue; import android.view.View; @@ -46,9 +44,7 @@ public class Utils { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, res.getDisplayMetrics()); } - @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public static boolean isRtl(Resources res) { - return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) && - (res.getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL); + return res.getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/view/InlineSnackBar.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/view/InlineSnackBar.kt index 3634df9dd..d2dbc3151 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/view/InlineSnackBar.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/view/InlineSnackBar.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -80,7 +80,7 @@ class InlineSnackBar : FrameLayout { button.setOnClickListener(listener) } - override fun setOnClickListener(listener: View.OnClickListener) { + override fun setOnClickListener(listener: OnClickListener?) { button.setOnClickListener(listener) } } diff --git a/app/src/main/res/drawable-v21/bg_menuitem_rounded_dark.xml b/app/src/main/res/drawable-v21/bg_menuitem_rounded_dark.xml index 95f876f57..fa3e24dfe 100644 --- a/app/src/main/res/drawable-v21/bg_menuitem_rounded_dark.xml +++ b/app/src/main/res/drawable-v21/bg_menuitem_rounded_dark.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,16 +20,16 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <shape android:shape="rectangle"> - <solid android:color="@color/ripple_dark" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="@color/ripple_dark" /> </shape> </item> <item> <ripple android:color="@color/ripple_dark"> <item android:id="@android:id/mask"> <shape> - <solid android:color="#fff" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="#fff" /> </shape> </item> </ripple> diff --git a/app/src/main/res/drawable-v21/bg_menuitem_rounded_light.xml b/app/src/main/res/drawable-v21/bg_menuitem_rounded_light.xml index 8131c5530..fdc934f88 100644 --- a/app/src/main/res/drawable-v21/bg_menuitem_rounded_light.xml +++ b/app/src/main/res/drawable-v21/bg_menuitem_rounded_light.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,16 +20,16 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <shape> - <solid android:color="@color/ripple_light" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="@color/ripple_light" /> </shape> </item> <item> <ripple android:color="@color/ripple_light"> <item android:id="@android:id/mask"> <shape> - <solid android:color="#fff" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="#fff" /> </shape> </item> </ripple> diff --git a/app/src/main/res/drawable/bg_badge.xml b/app/src/main/res/drawable/bg_badge.xml index 001b34bc2..2ccf20f53 100644 --- a/app/src/main/res/drawable/bg_badge.xml +++ b/app/src/main/res/drawable/bg_badge.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,11 +18,11 @@ --> <shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid /> + <corners android:radius="16dp" /> <padding android:bottom="4dp" android:left="8dp" android:right="8dp" android:top="4dp" /> - <corners android:radius="16dp" /> + <solid /> </shape> diff --git a/app/src/main/res/drawable/bg_menuitem_rounded_dark.xml b/app/src/main/res/drawable/bg_menuitem_rounded_dark.xml index a68dff2d0..d632e1afb 100644 --- a/app/src/main/res/drawable/bg_menuitem_rounded_dark.xml +++ b/app/src/main/res/drawable/bg_menuitem_rounded_dark.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,14 +20,14 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <shape android:shape="rectangle"> - <solid android:color="@color/ripple_dark" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="@color/ripple_dark" /> </shape> </item> <item android:state_pressed="true"> <shape android:shape="rectangle"> - <solid android:color="@color/ripple_dark" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="@color/ripple_dark" /> </shape> </item> </selector> diff --git a/app/src/main/res/drawable/bg_menuitem_rounded_light.xml b/app/src/main/res/drawable/bg_menuitem_rounded_light.xml index 8a4b8f227..cc57283dd 100644 --- a/app/src/main/res/drawable/bg_menuitem_rounded_light.xml +++ b/app/src/main/res/drawable/bg_menuitem_rounded_light.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,14 +20,14 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <shape android:shape="rectangle"> - <solid android:color="@color/ripple_light" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="@color/ripple_light" /> </shape> </item> <item android:state_pressed="true"> <shape android:shape="rectangle"> - <solid android:color="@color/ripple_light" /> <corners android:radius="@dimen/button_corner_radius" /> + <solid android:color="@color/ripple_light" /> </shape> </item> </selector> diff --git a/app/src/main/res/layout-land/layout_main.xml b/app/src/main/res/layout-land/layout_main.xml index 0b0b96f4d..d06b68b31 100644 --- a/app/src/main/res/layout-land/layout_main.xml +++ b/app/src/main/res/layout-land/layout_main.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,20 +24,35 @@ android:layout_height="match_parent" android:gravity="bottom"> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_anchor="@id/fragment_chatline" + app:layout_anchorGravity="top"> + + <Space + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_height" /> + + <de.kuschku.quasseldroid.util.ui.view.ShadowView + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_height" + android:gravity="bottom" /> + </LinearLayout> + <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="?actionBarSize" android:orientation="vertical"> - <include layout="@layout/layout_toolbar" /> - <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_messages" android:name="de.kuschku.quasseldroid.ui.chat.messages.MessageListFragment" android:layout_width="match_parent" @@ -61,26 +76,11 @@ app:behavior_peekHeight="92dp" app:layout_behavior="@string/bottom_sheet_behavior" tools:listitem="@layout/widget_nick" /> - </androidx.coordinatorlayout.widget.CoordinatorLayout> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_anchor="@id/fragment_chatline" - app:layout_anchorGravity="top"> - <de.kuschku.quasseldroid.util.ui.view.ShadowView - android:layout_width="match_parent" - android:layout_height="@dimen/shadow_height" - android:gravity="bottom" /> - - <Space - android:layout_width="match_parent" - android:layout_height="@dimen/shadow_height" /> - </LinearLayout> + <include layout="@layout/layout_toolbar" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_chatline" android:name="de.kuschku.quasseldroid.ui.chat.input.ChatlineFragment" android:layout_width="match_parent" diff --git a/app/src/main/res/layout-sw600dp-land/activity_setup.xml b/app/src/main/res/layout-sw600dp-land/activity_setup.xml index fa9648b72..11b005eea 100644 --- a/app/src/main/res/layout-sw600dp-land/activity_setup.xml +++ b/app/src/main/res/layout-sw600dp-land/activity_setup.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -23,11 +23,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <androidx.viewpager.widget.ViewPager - android:id="@+id/view_pager" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - <androidx.appcompat.widget.ActionMenuView android:id="@+id/menu_view" android:layout_width="56dp" @@ -35,6 +30,11 @@ android:layout_gravity="end|top" android:theme="?attr/actionBarPopupTheme" /> + <androidx.viewpager.widget.ViewPager + android:id="@+id/view_pager" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/next_button" style="@style/Widget.MaterialComponents.FloatingActionButton" diff --git a/app/src/main/res/layout-sw600dp-land/layout_main.xml b/app/src/main/res/layout-sw600dp-land/layout_main.xml index 57fabed1a..636281d14 100644 --- a/app/src/main/res/layout-sw600dp-land/layout_main.xml +++ b/app/src/main/res/layout-sw600dp-land/layout_main.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,13 +25,28 @@ android:fitsSystemWindows="true" android:orientation="vertical"> - <include layout="@layout/layout_toolbar" /> - <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom"> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_anchor="@id/fragment_chatline" + app:layout_anchorGravity="top"> + + <Space + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_height" /> + + <de.kuschku.quasseldroid.util.ui.view.ShadowView + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_height" + android:gravity="bottom" /> + </LinearLayout> + <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" @@ -43,7 +58,7 @@ android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_messages" android:name="de.kuschku.quasseldroid.ui.chat.messages.MessageListFragment" android:layout_width="match_parent" @@ -69,24 +84,7 @@ tools:listitem="@layout/widget_nick" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_anchor="@id/fragment_chatline" - app:layout_anchorGravity="top"> - - <de.kuschku.quasseldroid.util.ui.view.ShadowView - android:layout_width="match_parent" - android:layout_height="@dimen/shadow_height" - android:gravity="bottom" /> - - <Space - android:layout_width="match_parent" - android:layout_height="@dimen/shadow_height" /> - </LinearLayout> - - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_chatline" android:name="de.kuschku.quasseldroid.ui.chat.input.ChatlineFragment" android:layout_width="match_parent" @@ -98,4 +96,6 @@ </androidx.coordinatorlayout.widget.CoordinatorLayout> + <include layout="@layout/layout_toolbar" /> + </LinearLayout> diff --git a/app/src/main/res/layout-sw600dp-land/setup_slide.xml b/app/src/main/res/layout-sw600dp-land/setup_slide.xml index 323ea47c2..b75aa4476 100644 --- a/app/src/main/res/layout-sw600dp-land/setup_slide.xml +++ b/app/src/main/res/layout-sw600dp-land/setup_slide.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -35,6 +35,11 @@ android:layout_weight="1" android:orientation="vertical"> + <Space + android:layout_width="match_parent" + android:layout_height="8dp" + android:layout_gravity="end" /> + <TextView android:id="@+id/title" style="@style/Widget.RtlConformTextView" @@ -46,11 +51,6 @@ android:textSize="28sp" tools:text="Connection" /> - <Space - android:layout_width="match_parent" - android:layout_height="8dp" - android:layout_gravity="end" /> - <TextView android:id="@+id/description" style="@style/Widget.RtlConformTextView" diff --git a/app/src/main/res/layout-sw600dp/activity_setup.xml b/app/src/main/res/layout-sw600dp/activity_setup.xml index fa9648b72..11b005eea 100644 --- a/app/src/main/res/layout-sw600dp/activity_setup.xml +++ b/app/src/main/res/layout-sw600dp/activity_setup.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -23,11 +23,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <androidx.viewpager.widget.ViewPager - android:id="@+id/view_pager" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - <androidx.appcompat.widget.ActionMenuView android:id="@+id/menu_view" android:layout_width="56dp" @@ -35,6 +30,11 @@ android:layout_gravity="end|top" android:theme="?attr/actionBarPopupTheme" /> + <androidx.viewpager.widget.ViewPager + android:id="@+id/view_pager" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/next_button" style="@style/Widget.MaterialComponents.FloatingActionButton" diff --git a/app/src/main/res/layout-sw720dp-land/activity_main.xml b/app/src/main/res/layout-sw720dp-land/activity_main.xml index c67a18280..023c8a0d0 100644 --- a/app/src/main/res/layout-sw720dp-land/activity_main.xml +++ b/app/src/main/res/layout-sw720dp-land/activity_main.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -30,18 +30,17 @@ android:layout_height="match_parent" android:orientation="horizontal"> - <fragment - android:id="@+id/fragment_chat_list" - android:name="de.kuschku.quasseldroid.ui.chat.buffers.BufferViewConfigFragment" - android:layout_width="320dp" - android:layout_height="match_parent" - tools:layout="@layout/chat_chatlist" /> - <LinearLayout android:layout_width="1dp" android:layout_height="match_parent" android:orientation="vertical"> + <View + android:layout_width="1dp" + android:layout_height="0dip" + android:layout_weight="1" + android:background="?colorDivider" /> + <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -54,18 +53,19 @@ app:popupTheme="?attr/actionBarPopupTheme" /> </com.google.android.material.appbar.AppBarLayout> - - <View - android:layout_width="1dp" - android:layout_height="0dip" - android:layout_weight="1" - android:background="?colorDivider" /> </LinearLayout> + <androidx.fragment.app.FragmentContainerView + android:id="@+id/fragment_chat_list" + android:name="de.kuschku.quasseldroid.ui.chat.buffers.BufferViewConfigFragment" + android:layout_width="320dp" + android:layout_height="match_parent" + tools:layout="@layout/chat_chatlist" /> + <include layout="@layout/layout_main" /> </LinearLayout> - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_nick_list" android:name="de.kuschku.quasseldroid.ui.chat.nicks.NickListFragment" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/activity_drawable.xml b/app/src/main/res/layout/activity_drawable.xml index bc2aed944..9a6db6a5a 100644 --- a/app/src/main/res/layout/activity_drawable.xml +++ b/app/src/main/res/layout/activity_drawable.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -31,6 +31,13 @@ android:fitsSystemWindows="true" android:orientation="vertical"> + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/imageView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" + android:scaleType="fitCenter" /> + <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -44,13 +51,6 @@ app:popupTheme="?attr/actionBarPopupTheme" /> </com.google.android.material.appbar.AppBarLayout> - - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/imageView" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="center" - android:scaleType="fitCenter" /> </LinearLayout> <de.kuschku.quasseldroid.util.ui.view.NavigationDrawerLayout diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3c337b60a..e0fd20629 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,9 +25,7 @@ android:layout_height="match_parent" android:fitsSystemWindows="true"> - <include layout="@layout/layout_main" /> - - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_nick_list" android:name="de.kuschku.quasseldroid.ui.chat.nicks.NickListFragment" android:layout_width="match_parent" @@ -43,11 +41,13 @@ android:fitsSystemWindows="true" app:insetBackground="?attr/colorPrimaryDark"> - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_chat_list" android:name="de.kuschku.quasseldroid.ui.chat.buffers.BufferViewConfigFragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout="@layout/chat_chatlist" /> </de.kuschku.quasseldroid.util.ui.view.NavigationDrawerLayout> + + <include layout="@layout/layout_main" /> </androidx.drawerlayout.widget.DrawerLayout> diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 0b296746f..448c8b4ee 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -29,6 +29,11 @@ android:fitsSystemWindows="true" android:orientation="vertical"> + <FrameLayout + android:id="@+id/fragment_container" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -42,11 +47,6 @@ app:popupTheme="?attr/actionBarPopupTheme" /> </com.google.android.material.appbar.AppBarLayout> - - <FrameLayout - android:id="@+id/fragment_container" - android:layout_width="match_parent" - android:layout_height="match_parent" /> </LinearLayout> </androidx.drawerlayout.widget.DrawerLayout> diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml index dffcab092..c73c20cbb 100644 --- a/app/src/main/res/layout/activity_setup.xml +++ b/app/src/main/res/layout/activity_setup.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -23,11 +23,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <androidx.viewpager.widget.ViewPager - android:id="@+id/view_pager" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - <androidx.appcompat.widget.ActionMenuView android:id="@+id/menu_view" android:layout_width="56dp" @@ -35,6 +30,11 @@ android:layout_gravity="end|top" android:theme="?attr/actionBarPopupTheme" /> + <androidx.viewpager.widget.ViewPager + android:id="@+id/view_pager" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/next_button" style="@style/Widget.MaterialComponents.FloatingActionButton" diff --git a/app/src/main/res/layout/add_create.xml b/app/src/main/res/layout/add_create.xml index a144dd89a..0d7fb60cd 100644 --- a/app/src/main/res/layout/add_create.xml +++ b/app/src/main/res/layout/add_create.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -37,32 +37,6 @@ <LinearLayout style="@style/Widget.CoreSettings.Wrapper"> - <de.kuschku.ui.spinner.MaterialSpinnerLayout - style="@style/Widget.CustomSpinnerLayout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/label_network"> - - <androidx.appcompat.widget.AppCompatSpinner - android:id="@+id/network" - style="@style/Widget.MaterialSpinner" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_spinner_item_material" /> - </de.kuschku.ui.spinner.MaterialSpinnerLayout> - - <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.CustomTextInput" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/label_channel_name"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/name" - style="@style/Widget.CoreSettings.EditText" - tools:text="#trees" /> - </com.google.android.material.textfield.TextInputLayout> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -127,6 +101,32 @@ tools:text="NickServ" /> </com.google.android.material.textfield.TextInputLayout> </LinearLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.CustomTextInput" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/label_channel_name"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/name" + style="@style/Widget.CoreSettings.EditText" + tools:text="#trees" /> + </com.google.android.material.textfield.TextInputLayout> + + <de.kuschku.ui.spinner.MaterialSpinnerLayout + style="@style/Widget.CustomSpinnerLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/label_network"> + + <androidx.appcompat.widget.AppCompatSpinner + android:id="@+id/network" + style="@style/Widget.MaterialSpinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/widget_spinner_item_material" /> + </de.kuschku.ui.spinner.MaterialSpinnerLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/add_join.xml b/app/src/main/res/layout/add_join.xml index 718051091..d2b475c60 100644 --- a/app/src/main/res/layout/add_join.xml +++ b/app/src/main/res/layout/add_join.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -32,6 +32,18 @@ <LinearLayout style="@style/Widget.CoreSettings.Wrapper"> + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.CustomTextInput" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/label_channel_name"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/name" + style="@style/Widget.CoreSettings.EditText" + tools:text="#trees" /> + </com.google.android.material.textfield.TextInputLayout> + <de.kuschku.ui.spinner.MaterialSpinnerLayout style="@style/Widget.CustomSpinnerLayout" android:layout_width="match_parent" @@ -45,18 +57,6 @@ android:layout_height="wrap_content" tools:listitem="@layout/widget_spinner_item_material" /> </de.kuschku.ui.spinner.MaterialSpinnerLayout> - - <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.CustomTextInput" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/label_channel_name"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/name" - style="@style/Widget.CoreSettings.EditText" - tools:text="#trees" /> - </com.google.android.material.textfield.TextInputLayout> </LinearLayout> <de.kuschku.quasseldroid.util.ui.view.ShadowView diff --git a/app/src/main/res/layout/add_query.xml b/app/src/main/res/layout/add_query.xml index 5b0e620bf..8023ff206 100644 --- a/app/src/main/res/layout/add_query.xml +++ b/app/src/main/res/layout/add_query.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -35,6 +35,18 @@ <LinearLayout style="@style/Widget.CoreSettings.Wrapper"> + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.CustomTextInput" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/label_nick"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/name" + style="@style/Widget.CoreSettings.EditText" + tools:text="justJanne" /> + </com.google.android.material.textfield.TextInputLayout> + <de.kuschku.ui.spinner.MaterialSpinnerLayout style="@style/Widget.CustomSpinnerLayout" android:layout_width="match_parent" @@ -48,18 +60,6 @@ android:layout_height="wrap_content" tools:listitem="@layout/widget_spinner_item_material" /> </de.kuschku.ui.spinner.MaterialSpinnerLayout> - - <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.CustomTextInput" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/label_nick"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/name" - style="@style/Widget.CoreSettings.EditText" - tools:text="justJanne" /> - </com.google.android.material.textfield.TextInputLayout> </LinearLayout> <de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView diff --git a/app/src/main/res/layout/chat_channel_join.xml b/app/src/main/res/layout/chat_channel_join.xml index c4b8e98c0..d545b333b 100644 --- a/app/src/main/res/layout/chat_channel_join.xml +++ b/app/src/main/res/layout/chat_channel_join.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,20 +24,6 @@ android:layout_height="match_parent" android:orientation="vertical"> - <de.kuschku.ui.spinner.MaterialSpinnerLayout - style="@style/Widget.CustomSpinnerLayout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/label_network"> - - <androidx.appcompat.widget.AppCompatSpinner - android:id="@+id/network" - style="@style/Widget.MaterialSpinner" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_spinner_item_material" /> - </de.kuschku.ui.spinner.MaterialSpinnerLayout> - <androidx.cardview.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" @@ -100,6 +86,13 @@ </androidx.cardview.widget.CardView> + <de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView + android:id="@+id/search_results" + style="@style/Widget.FastScroller" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:listitem="@layout/widget_channel_search" /> + <de.kuschku.quasseldroid.util.ui.view.WarningBarView android:id="@+id/error" android:layout_width="match_parent" @@ -107,11 +100,18 @@ app:icon="@drawable/ic_alert" app:mode="none" /> - <de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView - android:id="@+id/search_results" - style="@style/Widget.FastScroller" + <de.kuschku.ui.spinner.MaterialSpinnerLayout + style="@style/Widget.CustomSpinnerLayout" android:layout_width="match_parent" - android:layout_height="match_parent" - tools:listitem="@layout/widget_channel_search" /> + android:layout_height="wrap_content" + android:hint="@string/label_network"> + + <androidx.appcompat.widget.AppCompatSpinner + android:id="@+id/network" + style="@style/Widget.MaterialSpinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/widget_spinner_item_material" /> + </de.kuschku.ui.spinner.MaterialSpinnerLayout> </LinearLayout> diff --git a/app/src/main/res/layout/chat_chatlist.xml b/app/src/main/res/layout/chat_chatlist.xml index 4627ab8a1..05b835739 100644 --- a/app/src/main/res/layout/chat_chatlist.xml +++ b/app/src/main/res/layout/chat_chatlist.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -28,6 +28,22 @@ android:layout_height="wrap_content" android:theme="?attr/actionBarTheme"> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <de.kuschku.quasseldroid.util.ui.view.WarningBarView + android:id="@+id/feature_context_bufferactivitysync" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:icon="@drawable/ic_alert" + app:text="@string/label_feature_context_bufferactivitysync" /> + + <include layout="@layout/widget_search" /> + </LinearLayout> + <androidx.appcompat.widget.Toolbar android:id="@+id/chatListToolbar" android:layout_width="match_parent" @@ -47,32 +63,8 @@ </androidx.appcompat.widget.Toolbar> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical" - app:layout_behavior="@string/appbar_scrolling_view_behavior"> - - <include layout="@layout/widget_search" /> - - <de.kuschku.quasseldroid.util.ui.view.WarningBarView - android:id="@+id/feature_context_bufferactivitysync" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:icon="@drawable/ic_alert" - app:text="@string/label_feature_context_bufferactivitysync" /> - </LinearLayout> - </com.google.android.material.appbar.AppBarLayout> - <de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView - android:id="@+id/chatList" - style="@style/Widget.FastScroller" - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior" - tools:listitem="@layout/widget_buffer" /> - <com.leinardi.android.speeddial.SpeedDialOverlayLayout android:id="@+id/fab_chatlist_overlay" android:layout_width="match_parent" @@ -89,4 +81,12 @@ app:sdMainFabClosedSrc="@drawable/ic_add" app:sdOverlayLayout="@id/fab_chatlist_overlay" /> + <de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView + android:id="@+id/chatList" + style="@style/Widget.FastScroller" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" + tools:listitem="@layout/widget_buffer" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> diff --git a/app/src/main/res/layout/chat_messages.xml b/app/src/main/res/layout/chat_messages.xml index ff8a713fe..3ee860ba4 100644 --- a/app/src/main/res/layout/chat_messages.xml +++ b/app/src/main/res/layout/chat_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -46,7 +46,6 @@ android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_marginEnd="12dp" - android:layout_marginRight="12dp" android:layout_marginBottom="12dp" android:tint="@color/colorFillDark" android:visibility="gone" diff --git a/app/src/main/res/layout/chat_toolbar.xml b/app/src/main/res/layout/chat_toolbar.xml index 202fdaa43..81187243f 100644 --- a/app/src/main/res/layout/chat_toolbar.xml +++ b/app/src/main/res/layout/chat_toolbar.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -32,17 +32,6 @@ android:theme="?attr/actionBarTheme" tools:showIn="@layout/activity_main"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/toolbar_icon" - android:layout_width="@dimen/avatar_size_buffer" - android:layout_height="@dimen/avatar_size_buffer" - android:layout_gravity="center_vertical" - android:layout_marginEnd="8dp" - android:layout_marginRight="8dp" - android:visibility="gone" - tools:src="@tools:sample/avatars" - tools:visibility="visible" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" @@ -82,4 +71,14 @@ android:visibility="gone" /> </LinearLayout> + + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/toolbar_icon" + android:layout_width="@dimen/avatar_size_buffer" + android:layout_height="@dimen/avatar_size_buffer" + android:layout_gravity="center_vertical" + android:layout_marginEnd="8dp" + android:visibility="gone" + tools:src="@tools:sample/avatars" + tools:visibility="visible" /> </LinearLayout> diff --git a/app/src/main/res/layout/dialog_colorchooser_custom.xml b/app/src/main/res/layout/dialog_colorchooser_custom.xml index 657fc7331..87eb234b1 100644 --- a/app/src/main/res/layout/dialog_colorchooser_custom.xml +++ b/app/src/main/res/layout/dialog_colorchooser_custom.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -27,12 +27,6 @@ android:paddingBottom="@dimen/md_title_frame_margin_bottom" tools:ignore="PrivateResource"> - <View - android:id="@+id/md_colorIndicator" - android:layout_width="match_parent" - android:layout_height="120dp" - tools:background="@color/md_material_blue_600" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -40,17 +34,6 @@ android:layout_marginTop="@dimen/md_title_frame_margin_bottom" android:gravity="center"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="2dp" - android:layout_marginRight="2dp" - android:digits="0123456789abcdefABCDEF" - android:text="#" - android:textColor="?colorTextPrimary" - android:textSize="@dimen/md_title_textsize" - tools:ignore="HardcodedText,TextViewEdits" /> - <EditText android:id="@+id/md_hexInput" android:layout_width="wrap_content" @@ -64,6 +47,16 @@ android:textSize="@dimen/md_title_textsize" tools:ignore="HardcodedText" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="2dp" + android:digits="0123456789abcdefABCDEF" + android:text="#" + android:textColor="?colorTextPrimary" + android:textSize="@dimen/md_title_textsize" + tools:ignore="HardcodedText,TextViewEdits" /> + </LinearLayout> <RelativeLayout @@ -75,6 +68,39 @@ <!-- Alpha --> + <SeekBar + android:id="@+id/md_colorA" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/md_title_frame_margin_bottom" + android:layout_toStartOf="@+id/md_colorAValue" + android:layout_toEndOf="@+id/md_colorALabel" + android:focusable="true" + android:max="255" /> + + <SeekBar + android:id="@+id/md_colorG" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/md_colorR" + android:layout_marginTop="@dimen/md_title_frame_margin_bottom" + android:layout_toStartOf="@+id/md_colorGValue" + android:layout_toEndOf="@+id/md_colorGLabel" + android:focusable="true" + android:max="255" /> + + <SeekBar + android:id="@+id/md_colorB" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/md_colorG" + android:layout_marginTop="@dimen/md_title_frame_margin_bottom" + android:layout_toStartOf="@+id/md_colorBValue" + android:layout_toEndOf="@+id/md_colorBLabel" + android:max="255" /> + + <!-- Red --> + <TextView android:id="@+id/md_colorALabel" android:layout_width="wrap_content" @@ -82,24 +108,11 @@ android:layout_alignTop="@+id/md_colorA" android:layout_alignBottom="@+id/md_colorA" android:layout_marginEnd="4dp" - android:layout_marginRight="4dp" android:text="A" android:textColor="?colorTextPrimary" android:textSize="@dimen/md_content_textsize" tools:ignore="HardcodedText" /> - <SeekBar - android:id="@+id/md_colorA" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="@dimen/md_title_frame_margin_bottom" - android:layout_toStartOf="@+id/md_colorAValue" - android:layout_toLeftOf="@+id/md_colorAValue" - android:layout_toEndOf="@+id/md_colorALabel" - android:layout_toRightOf="@+id/md_colorALabel" - android:focusable="true" - android:max="255" /> - <TextView android:id="@+id/md_colorAValue" android:layout_width="wrap_content" @@ -107,9 +120,7 @@ android:layout_alignTop="@+id/md_colorA" android:layout_alignBottom="@+id/md_colorA" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_marginStart="4dp" - android:layout_marginLeft="4dp" android:gravity="center" android:minWidth="24dp" android:text="0" @@ -117,8 +128,6 @@ android:textSize="@dimen/md_content_textsize" tools:ignore="HardcodedText" /> - <!-- Red --> - <TextView android:id="@+id/md_colorRLabel" android:layout_width="wrap_content" @@ -126,24 +135,12 @@ android:layout_alignTop="@+id/md_colorR" android:layout_alignBottom="@+id/md_colorR" android:layout_marginEnd="4dp" - android:layout_marginRight="4dp" android:text="R" android:textColor="?colorTextPrimary" android:textSize="@dimen/md_content_textsize" tools:ignore="HardcodedText" /> - <androidx.appcompat.widget.AppCompatSeekBar - android:id="@+id/md_colorR" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/md_colorA" - android:layout_marginTop="@dimen/md_title_frame_margin_bottom" - android:layout_toStartOf="@+id/md_colorRValue" - android:layout_toLeftOf="@+id/md_colorRValue" - android:layout_toEndOf="@+id/md_colorRLabel" - android:layout_toRightOf="@+id/md_colorRLabel" - android:focusable="true" - android:max="255" /> + <!-- Green --> <TextView android:id="@+id/md_colorRValue" @@ -152,9 +149,7 @@ android:layout_alignTop="@+id/md_colorR" android:layout_alignBottom="@+id/md_colorR" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_marginStart="4dp" - android:layout_marginLeft="4dp" android:gravity="center" android:minWidth="24dp" android:text="0" @@ -162,8 +157,6 @@ android:textSize="@dimen/md_content_textsize" tools:ignore="HardcodedText" /> - <!-- Green --> - <TextView android:id="@+id/md_colorGLabel" android:layout_width="wrap_content" @@ -171,25 +164,11 @@ android:layout_alignTop="@+id/md_colorG" android:layout_alignBottom="@+id/md_colorG" android:layout_marginEnd="4dp" - android:layout_marginRight="4dp" android:text="G" android:textColor="?colorTextPrimary" android:textSize="@dimen/md_content_textsize" tools:ignore="HardcodedText" /> - <SeekBar - android:id="@+id/md_colorG" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/md_colorR" - android:layout_marginTop="@dimen/md_title_frame_margin_bottom" - android:layout_toStartOf="@+id/md_colorGValue" - android:layout_toLeftOf="@+id/md_colorGValue" - android:layout_toEndOf="@+id/md_colorGLabel" - android:layout_toRightOf="@+id/md_colorGLabel" - android:focusable="true" - android:max="255" /> - <TextView android:id="@+id/md_colorGValue" android:layout_width="wrap_content" @@ -197,9 +176,7 @@ android:layout_alignTop="@+id/md_colorG" android:layout_alignBottom="@+id/md_colorG" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_marginStart="4dp" - android:layout_marginLeft="4dp" android:gravity="center" android:minWidth="24dp" android:text="0" @@ -216,24 +193,11 @@ android:layout_alignTop="@+id/md_colorB" android:layout_alignBottom="@+id/md_colorB" android:layout_marginEnd="4dp" - android:layout_marginRight="4dp" android:text="B" android:textColor="?colorTextPrimary" android:textSize="@dimen/md_content_textsize" tools:ignore="HardcodedText" /> - <SeekBar - android:id="@+id/md_colorB" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/md_colorG" - android:layout_marginTop="@dimen/md_title_frame_margin_bottom" - android:layout_toStartOf="@+id/md_colorBValue" - android:layout_toLeftOf="@+id/md_colorBValue" - android:layout_toEndOf="@+id/md_colorBLabel" - android:layout_toRightOf="@+id/md_colorBLabel" - android:max="255" /> - <TextView android:id="@+id/md_colorBValue" android:layout_width="wrap_content" @@ -241,9 +205,7 @@ android:layout_alignTop="@+id/md_colorB" android:layout_alignBottom="@+id/md_colorB" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_marginStart="4dp" - android:layout_marginLeft="4dp" android:gravity="center" android:minWidth="24dp" android:text="0" @@ -251,6 +213,23 @@ android:textSize="@dimen/md_content_textsize" tools:ignore="HardcodedText" /> + <androidx.appcompat.widget.AppCompatSeekBar + android:id="@+id/md_colorR" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/md_colorA" + android:layout_marginTop="@dimen/md_title_frame_margin_bottom" + android:layout_toStartOf="@+id/md_colorRValue" + android:layout_toEndOf="@+id/md_colorRLabel" + android:focusable="true" + android:max="255" /> + </RelativeLayout> + <View + android:id="@+id/md_colorIndicator" + android:layout_width="match_parent" + android:layout_height="120dp" + tools:background="@color/md_material_blue_600" /> + </LinearLayout> diff --git a/app/src/main/res/layout/dialog_missing_features.xml b/app/src/main/res/layout/dialog_missing_features.xml index 5723f6bc6..fc8988e99 100644 --- a/app/src/main/res/layout/dialog_missing_features.xml +++ b/app/src/main/res/layout/dialog_missing_features.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -36,10 +36,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingTop="8dp" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" android:paddingBottom="8dp" android:textColor="?colorTextPrimary" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/info_certificate.xml b/app/src/main/res/layout/info_certificate.xml index 7a65e992c..033850119 100644 --- a/app/src/main/res/layout/info_certificate.xml +++ b/app/src/main/res/layout/info_certificate.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,6 +24,21 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + <TextView + android:id="@+id/error" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:gravity="center" + android:minHeight="?android:attr/listPreferredItemHeightSmall" + android:paddingStart="?listPreferredItemPaddingLeft" + android:paddingEnd="?listPreferredItemPaddingRight" + android:text="@string/label_error_certificate_no_certificate" + android:textColor="?colorTextSecondary" + android:textStyle="italic" + android:visibility="gone" + tools:visibility="visible" /> + <androidx.core.widget.NestedScrollView android:id="@+id/content" android:layout_width="match_parent" @@ -37,13 +52,13 @@ <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_account" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/certificate_subject" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_account" /> </LinearLayout> <LinearLayout @@ -104,13 +119,13 @@ <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_domain" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/certificate_issuer" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_domain" /> </LinearLayout> <LinearLayout @@ -157,13 +172,13 @@ <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_clock" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/certificate_validity" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_clock" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroup"> @@ -192,13 +207,13 @@ <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_fingerprint" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/certificate_fingerprints" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_fingerprint" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroup"> @@ -230,21 +245,4 @@ android:layout_height="16dp" /> </LinearLayout> </androidx.core.widget.NestedScrollView> - - <TextView - android:id="@+id/error" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:gravity="center" - android:minHeight="?android:attr/listPreferredItemHeightSmall" - android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" - android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" - android:text="@string/label_error_certificate_no_certificate" - android:textColor="?colorTextSecondary" - android:textStyle="italic" - android:visibility="gone" - tools:visibility="visible" /> </FrameLayout> diff --git a/app/src/main/res/layout/info_channel.xml b/app/src/main/res/layout/info_channel.xml index eb212ddff..1a9b1cd88 100644 --- a/app/src/main/res/layout/info_channel.xml +++ b/app/src/main/res/layout/info_channel.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -29,26 +29,6 @@ android:animateLayoutChanges="true" android:orientation="vertical"> - <LinearLayout style="@style/Widget.Info.Header"> - - <TextView - android:id="@+id/name" - style="@style/Widget.Info.Header.Name" - android:textIsSelectable="true" - tools:text="#quassel" /> - - <TextView - android:id="@+id/topic" - style="@style/Widget.Info.Header.Description" - android:textIsSelectable="true" - tools:text="Quassel IRC - https://quassel-irc.org || Latest: 0.12.4 || Mailing Lists: https://lists.quassel-irc.org || Tracker: https://bugs.quassel-irc.org || Activity RSS: #quassel-announce || German: #quassel.de || Quassel on Android: #quasseldroid; on iOS: #woboquassel || Server migration complete; new IPs may still need some time to propagate" /> - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> - <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content"> @@ -57,9 +37,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" - android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight"> + android:paddingEnd="?android:attr/listPreferredItemPaddingRight"> <androidx.appcompat.widget.AppCompatButton android:id="@+id/action_edit_topic" @@ -105,6 +83,26 @@ </LinearLayout> </HorizontalScrollView> + <LinearLayout style="@style/Widget.Info.Header"> + + <TextView + android:id="@+id/name" + style="@style/Widget.Info.Header.Name" + android:textIsSelectable="true" + tools:text="#quassel" /> + + <TextView + android:id="@+id/topic" + style="@style/Widget.Info.Header.Description" + android:textIsSelectable="true" + tools:text="Quassel IRC - https://quassel-irc.org || Latest: 0.12.4 || Mailing Lists: https://lists.quassel-irc.org || Tracker: https://bugs.quassel-irc.org || Activity RSS: #quassel-announce || German: #quassel.de || Quassel on Android: #quasseldroid; on iOS: #woboquassel || Server migration complete; new IPs may still need some time to propagate" /> + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + <View android:layout_width="match_parent" android:layout_height="1dp" diff --git a/app/src/main/res/layout/info_channellist.xml b/app/src/main/res/layout/info_channellist.xml index 729984627..8152430a5 100644 --- a/app/src/main/res/layout/info_channellist.xml +++ b/app/src/main/res/layout/info_channellist.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -86,13 +86,6 @@ </androidx.cardview.widget.CardView> - <de.kuschku.quasseldroid.util.ui.view.WarningBarView - android:id="@+id/error" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:icon="@drawable/ic_alert" - app:mode="none" /> - <de.kuschku.quasseldroid.util.ui.fastscroll.views.FastScrollRecyclerView android:id="@+id/search_results" style="@style/Widget.FastScroller" @@ -100,4 +93,11 @@ android:layout_height="match_parent" tools:listitem="@layout/widget_channel_search" /> + <de.kuschku.quasseldroid.util.ui.view.WarningBarView + android:id="@+id/error" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:icon="@drawable/ic_alert" + app:mode="none" /> + </LinearLayout> diff --git a/app/src/main/res/layout/info_core.xml b/app/src/main/res/layout/info_core.xml index 66cd5feae..1601dcaac 100644 --- a/app/src/main/res/layout/info_core.xml +++ b/app/src/main/res/layout/info_core.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -30,10 +30,6 @@ android:animateLayoutChanges="true" android:orientation="vertical"> - <TextView - style="@style/Widget.Info.Section" - android:text="@string/label_core_version" /> - <LinearLayout style="@style/Widget.Info.Item"> <TextView @@ -56,15 +52,6 @@ android:text="@string/label_missing_features" /> </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> - - <TextView - style="@style/Widget.Info.Section" - android:text="@string/label_core_uptime" /> - <LinearLayout android:id="@+id/uptime_container" style="@style/Widget.Info.Item" @@ -77,15 +64,6 @@ tools:text="30 minutes" /> </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> - - <TextView - style="@style/Widget.Info.Section" - android:text="@string/label_core_security" /> - <LinearLayout style="@style/Widget.Info.Item" android:orientation="vertical"> @@ -108,7 +86,6 @@ android:layout_height="24dp" android:layout_gravity="center" android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" app:srcCompat="@drawable/ic_lock" /> </LinearLayout> @@ -132,10 +109,17 @@ android:text="@string/label_info" /> </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> + <TextView + style="@style/Widget.Info.Section" + android:text="@string/label_core_version" /> + + <TextView + style="@style/Widget.Info.Section" + android:text="@string/label_core_uptime" /> + + <TextView + style="@style/Widget.Info.Section" + android:text="@string/label_core_security" /> <TextView android:id="@+id/clients_title" @@ -144,6 +128,21 @@ android:visibility="gone" tools:visibility="visible" /> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + <androidx.recyclerview.widget.RecyclerView android:id="@+id/clients" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/info_user.xml b/app/src/main/res/layout/info_user.xml index 546e62612..d5dd6c57e 100644 --- a/app/src/main/res/layout/info_user.xml +++ b/app/src/main/res/layout/info_user.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -23,40 +23,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <com.google.android.material.appbar.AppBarLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="#40000000" - app:elevation="0dip"> - - <com.google.android.material.appbar.CollapsingToolbarLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_scrollFlags="scroll"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_collapseMode="parallax"> - - <ImageView - android:id="@+id/avatar" - android:layout_width="0dp" - android:layout_height="0dp" - android:adjustViewBounds="true" - android:contentDescription="@string/label_avatar" - android:scaleType="centerCrop" - app:layout_constraintDimensionRatio="1:1" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:src="@tools:sample/avatars" /> - - </androidx.constraintlayout.widget.ConstraintLayout> - - </com.google.android.material.appbar.CollapsingToolbarLayout> - </com.google.android.material.appbar.AppBarLayout> - <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" @@ -68,27 +34,8 @@ android:layout_height="match_parent" android:animateLayoutChanges="true" android:elevation="4dp" - android:orientation="vertical"> - - <LinearLayout style="@style/Widget.Info.Header"> - - <TextView - android:id="@+id/nick" - style="@style/Widget.Info.Header.Name" - android:textIsSelectable="true" - tools:text="justJanne" /> - - <TextView - android:id="@+id/real_name" - style="@style/Widget.Info.Header.Description" - android:textIsSelectable="true" - tools:text="Janne Mareike Koschinski https://kuschku.de/" /> - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> + android:orientation="vertical" + tools:ignore="UnusedAttribute"> <HorizontalScrollView android:layout_width="match_parent" @@ -98,9 +45,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" - android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight"> + android:paddingEnd="?android:attr/listPreferredItemPaddingRight"> <androidx.appcompat.widget.AppCompatButton android:id="@+id/action_query" @@ -144,10 +89,20 @@ </LinearLayout> </HorizontalScrollView> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> + <LinearLayout style="@style/Widget.Info.Header"> + + <TextView + android:id="@+id/nick" + style="@style/Widget.Info.Header.Name" + android:textIsSelectable="true" + tools:text="justJanne" /> + + <TextView + android:id="@+id/real_name" + style="@style/Widget.Info.Header.Description" + android:textIsSelectable="true" + tools:text="Janne Mareike Koschinski https://kuschku.de/" /> + </LinearLayout> <LinearLayout android:id="@+id/away_container" @@ -157,10 +112,6 @@ android:visibility="gone" tools:visibility="visible"> - <TextView - style="@style/Widget.Info.Section" - android:text="@string/label_user_away" /> - <LinearLayout style="@style/Widget.Info.Item"> <TextView @@ -174,16 +125,16 @@ android:text="@string/label_user_away_reason" /> </LinearLayout> + <TextView + style="@style/Widget.Info.Section" + android:text="@string/label_user_away" /> + <View android:layout_width="match_parent" android:layout_height="1dp" android:background="?colorDivider" /> </LinearLayout> - <TextView - style="@style/Widget.Info.Section" - android:text="@string/label_user_identity" /> - <LinearLayout android:id="@+id/account_container" style="@style/Widget.Info.Item" @@ -252,14 +203,62 @@ android:text="@string/label_user_server" /> </LinearLayout> + <TextView + style="@style/Widget.Info.Section" + android:text="@string/label_user_identity" /> + <TextView style="@style/Widget.Info.Section" android:text="@string/label_user_common_channels" /> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + <androidx.recyclerview.widget.RecyclerView android:id="@+id/common_channels" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </androidx.core.widget.NestedScrollView> + + <com.google.android.material.appbar.AppBarLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="#40000000" + app:elevation="0dip"> + + <com.google.android.material.appbar.CollapsingToolbarLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_scrollFlags="scroll"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_collapseMode="parallax"> + + <ImageView + android:id="@+id/avatar" + android:layout_width="0dp" + android:layout_height="0dp" + android:adjustViewBounds="true" + android:contentDescription="@string/label_avatar" + android:scaleType="centerCrop" + app:layout_constraintDimensionRatio="1:1" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:src="@tools:sample/avatars" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + </com.google.android.material.appbar.CollapsingToolbarLayout> + </com.google.android.material.appbar.AppBarLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout> diff --git a/app/src/main/res/layout/layout_editor.xml b/app/src/main/res/layout/layout_editor.xml index 39910170a..a4a85dc52 100644 --- a/app/src/main/res/layout/layout_editor.xml +++ b/app/src/main/res/layout/layout_editor.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -51,6 +51,23 @@ app:srcCompat="@drawable/ic_tab" app:tint="?attr/colorTextSecondary" /> + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/send" + style="?attr/buttonStyleSmall" + android:layout_width="?attr/actionBarSize" + android:layout_height="?attr/actionBarSize" + android:layout_gravity="top" + android:autoMirrored="true" + android:background="?attr/selectableItemBackgroundBorderless" + android:contentDescription="@string/label_send" + android:padding="12dp" + android:scaleType="fitXY" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_send" + app:tint="?attr/colorAccent" + tools:ignore="UnusedAttribute" /> + <de.kuschku.quasseldroid.util.ui.FixedNestingScrollView android:id="@+id/chatline_scroller" android:layout_width="0dip" @@ -75,23 +92,6 @@ android:textColor="?attr/colorForeground" android:textSize="16sp" /> </de.kuschku.quasseldroid.util.ui.FixedNestingScrollView> - - <androidx.appcompat.widget.AppCompatImageButton - android:id="@+id/send" - style="?attr/buttonStyleSmall" - android:layout_width="?attr/actionBarSize" - android:layout_height="?attr/actionBarSize" - android:layout_gravity="top" - android:autoMirrored="true" - android:background="?attr/selectableItemBackgroundBorderless" - android:contentDescription="@string/label_send" - android:padding="12dp" - android:scaleType="fitXY" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_send" - app:tint="?attr/colorAccent" - tools:ignore="UnusedAttribute" /> </LinearLayout> <androidx.recyclerview.widget.RecyclerView diff --git a/app/src/main/res/layout/layout_history.xml b/app/src/main/res/layout/layout_history.xml index 51aad6722..88b196732 100644 --- a/app/src/main/res/layout/layout_history.xml +++ b/app/src/main/res/layout/layout_history.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -48,6 +48,11 @@ android:layout_height="48dp" android:orientation="horizontal"> + <Space + android:layout_width="0dip" + android:layout_height="match_parent" + android:layout_weight="1" /> + <TextView style="@style/Widget.RtlConformTextView" android:layout_width="wrap_content" @@ -59,11 +64,6 @@ android:textAppearance="@style/TextAppearance.AppCompat.Body2" android:textColor="?attr/colorForegroundSecondary" /> - <Space - android:layout_width="0dip" - android:layout_height="match_parent" - android:layout_weight="1" /> - <androidx.appcompat.widget.AppCompatImageButton android:id="@+id/close" android:layout_width="48dp" diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml index eb90da74a..109bb17b3 100644 --- a/app/src/main/res/layout/layout_main.xml +++ b/app/src/main/res/layout/layout_main.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,13 +25,28 @@ android:fitsSystemWindows="true" android:orientation="vertical"> - <include layout="@layout/layout_toolbar" /> - <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom"> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_anchor="@id/fragment_chatline" + app:layout_anchorGravity="top"> + + <Space + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_height" /> + + <de.kuschku.quasseldroid.util.ui.view.ShadowView + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_height" + android:gravity="bottom" /> + </LinearLayout> + <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" @@ -43,7 +58,7 @@ android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_messages" android:name="de.kuschku.quasseldroid.ui.chat.messages.MessageListFragment" android:layout_width="match_parent" @@ -70,24 +85,7 @@ tools:listitem="@layout/widget_nick" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_anchor="@id/fragment_chatline" - app:layout_anchorGravity="top"> - - <de.kuschku.quasseldroid.util.ui.view.ShadowView - android:layout_width="match_parent" - android:layout_height="@dimen/shadow_height" - android:gravity="bottom" /> - - <Space - android:layout_width="match_parent" - android:layout_height="@dimen/shadow_height" /> - </LinearLayout> - - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_chatline" android:name="de.kuschku.quasseldroid.ui.chat.input.ChatlineFragment" android:layout_width="match_parent" @@ -99,4 +97,6 @@ </androidx.coordinatorlayout.widget.CoordinatorLayout> + <include layout="@layout/layout_toolbar" /> + </LinearLayout> diff --git a/app/src/main/res/layout/layout_toolbar.xml b/app/src/main/res/layout/layout_toolbar.xml index d03bd6765..e256cc20f 100644 --- a/app/src/main/res/layout/layout_toolbar.xml +++ b/app/src/main/res/layout/layout_toolbar.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -36,7 +36,7 @@ app:contentInsetStartWithNavigation="0dp" app:popupTheme="?attr/actionBarPopupTheme"> - <fragment + <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_toolbar" android:name="de.kuschku.quasseldroid.ui.chat.ToolbarFragment" android:layout_width="fill_parent" diff --git a/app/src/main/res/layout/preference_seekbar.xml b/app/src/main/res/layout/preference_seekbar.xml index ab04415bf..e29a6d01e 100644 --- a/app/src/main/res/layout/preference_seekbar.xml +++ b/app/src/main/res/layout/preference_seekbar.xml @@ -21,19 +21,10 @@ android:gravity="center_vertical" android:orientation="horizontal" android:paddingStart="15dp" - android:paddingLeft="15dp" android:paddingTop="5dp" android:paddingEnd="10dp" - android:paddingRight="10dp" android:paddingBottom="5dp"> - <androidx.appcompat.widget.AppCompatSeekBar - android:id="@+id/seekBarPrefSeekBar" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_gravity="bottom" - android:layout_weight="1" /> - <TextView android:id="@+id/seekBarPrefUnitsRight" android:layout_width="wrap_content" @@ -51,4 +42,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" tools:text="$" /> + + <androidx.appcompat.widget.AppCompatSeekBar + android:id="@+id/seekBarPrefSeekBar" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:layout_weight="1" /> </LinearLayout> diff --git a/app/src/main/res/layout/preference_vertical.xml b/app/src/main/res/layout/preference_vertical.xml index f18ce94e7..92a25068c 100644 --- a/app/src/main/res/layout/preference_vertical.xml +++ b/app/src/main/res/layout/preference_vertical.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -29,24 +29,19 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" - android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight"> + android:paddingEnd="?android:attr/listPreferredItemPaddingRight"> <FrameLayout android:id="@+id/icon_frame" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="-4dp" - android:layout_marginLeft="-4dp" android:gravity="start|center_vertical" android:minWidth="60dp" android:orientation="horizontal" android:paddingStart="0dp" - android:paddingLeft="0dp" android:paddingTop="4dp" android:paddingEnd="12dp" - android:paddingRight="12dp" android:paddingBottom="4dp"> <androidx.appcompat.widget.AppCompatImageView @@ -67,15 +62,11 @@ android:paddingTop="16dp" android:paddingBottom="16dp"> - <TextView - android:id="@android:id/title" - android:layout_width="wrap_content" + <LinearLayout + android:id="@android:id/widget_frame" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:ellipsize="marquee" - android:singleLine="true" - android:textColor="?colorTextPrimary" - android:textSize="16sp" - tools:text="Font Size" /> + android:orientation="vertical" /> <TextView android:id="@android:id/summary" @@ -86,10 +77,14 @@ android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="?colorTextSecondary" /> - <LinearLayout - android:id="@android:id/widget_frame" - android:layout_width="match_parent" + <TextView + android:id="@android:id/title" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="vertical" /> + android:ellipsize="marquee" + android:singleLine="true" + android:textColor="?colorTextPrimary" + android:textSize="16sp" + tools:text="Font Size" /> </LinearLayout> </LinearLayout> diff --git a/app/src/main/res/layout/preferences_about.xml b/app/src/main/res/layout/preferences_about.xml index 1ef2388d8..0a987b5b4 100644 --- a/app/src/main/res/layout/preferences_about.xml +++ b/app/src/main/res/layout/preferences_about.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -28,8 +28,6 @@ android:layout_height="match_parent" android:orientation="vertical"> - <include layout="@layout/preferences_about_header" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -104,5 +102,7 @@ </LinearLayout> + <include layout="@layout/preferences_about_header" /> + </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/preferences_about_header.xml b/app/src/main/res/layout/preferences_about_header.xml index a5f7fd2e9..c1fcc812e 100644 --- a/app/src/main/res/layout/preferences_about_header.xml +++ b/app/src/main/res/layout/preferences_about_header.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,10 +24,8 @@ android:layout_height="wrap_content" android:orientation="vertical" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingTop="?listPreferredItemHeight" - android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight"> + android:paddingEnd="?listPreferredItemPaddingRight"> <LinearLayout android:id="@+id/version_container" @@ -38,14 +36,6 @@ android:focusable="true" android:orientation="horizontal"> - <androidx.appcompat.widget.AppCompatImageView - android:layout_width="?actionBarSize" - android:layout_height="?actionBarSize" - android:layout_gravity="center" - android:layout_marginEnd="?listPreferredItemPaddingRight" - android:layout_marginRight="?listPreferredItemPaddingRight" - app:srcCompat="@mipmap/ic_launcher_legacy" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -65,8 +55,24 @@ android:textAppearance="@style/TextAppearance.AppCompat.Small" tools:text="v0.3.0-310-ge2d1d05" /> </LinearLayout> + + <androidx.appcompat.widget.AppCompatImageView + android:layout_width="?actionBarSize" + android:layout_height="?actionBarSize" + android:layout_gravity="center" + android:layout_marginEnd="?listPreferredItemPaddingRight" + app:srcCompat="@mipmap/ic_launcher_legacy" /> </LinearLayout> + <TextView + style="@style/Widget.RtlConformTextView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="4dp" + android:layout_marginRight="4dp" + android:text="@string/app_description_long" + android:textAlignment="gravity" /> + <com.google.android.flexbox.FlexboxLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -77,12 +83,9 @@ app:alignItems="flex_start" app:flexWrap="wrap"> - <com.google.android.material.button.MaterialButton - android:id="@+id/action_website" - style="@style/Widget.Button.Colored" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/label_website" /> + <Space + android:layout_width="8dp" + android:layout_height="wrap_content" /> <Space android:layout_width="8dp" @@ -95,9 +98,12 @@ android:layout_height="wrap_content" android:text="@string/label_source" /> - <Space - android:layout_width="8dp" - android:layout_height="wrap_content" /> + <com.google.android.material.button.MaterialButton + android:id="@+id/action_website" + style="@style/Widget.Button.Colored" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/label_website" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_donate" @@ -108,15 +114,6 @@ </com.google.android.flexbox.FlexboxLayout> - <TextView - style="@style/Widget.RtlConformTextView" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginLeft="4dp" - android:layout_marginRight="4dp" - android:text="@string/app_description_long" - android:textAlignment="gravity" /> - <com.google.android.material.button.MaterialButton android:id="@+id/action_privacy_policy" style="@style/Widget.Button.Borderless.Colored" diff --git a/app/src/main/res/layout/preferences_crash.xml b/app/src/main/res/layout/preferences_crash.xml index 818a6b02c..8cf7c0730 100644 --- a/app/src/main/res/layout/preferences_crash.xml +++ b/app/src/main/res/layout/preferences_crash.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -22,13 +22,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/list" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:scrollbars="vertical" - tools:listitem="@layout/widget_crash" /> - <TextView android:id="@+id/crashes_empty" android:layout_width="match_parent" @@ -37,12 +30,17 @@ android:gravity="center" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" android:text="@string/label_crashes_empty" android:textColor="?colorTextSecondary" android:textStyle="italic" android:visibility="gone" tools:visibility="visible" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/list" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scrollbars="vertical" + tools:listitem="@layout/widget_crash" /> </FrameLayout> diff --git a/app/src/main/res/layout/preferences_whitelist.xml b/app/src/main/res/layout/preferences_whitelist.xml index 79862b227..bbc99f6fe 100644 --- a/app/src/main/res/layout/preferences_whitelist.xml +++ b/app/src/main/res/layout/preferences_whitelist.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -39,23 +39,12 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" android:text="@string/label_whitelist_certificates_empty" android:textColor="?colorTextSecondary" android:textStyle="italic" android:visibility="gone" /> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/certificate_whitelist" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingLeft="2dp" - android:paddingRight="2dp" - tools:itemCount="2" - tools:listitem="@layout/preferences_whitelist_certificate_item" /> - <TextView style="@style/Widget.Subhead" android:text="@string/label_whitelist_hostnames" /> @@ -67,14 +56,21 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" android:text="@string/label_whitelist_hostnames_empty" android:textColor="?colorTextSecondary" android:textStyle="italic" android:visibility="gone" /> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/certificate_whitelist" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="2dp" + android:paddingRight="2dp" + tools:itemCount="2" + tools:listitem="@layout/preferences_whitelist_certificate_item" /> + <androidx.recyclerview.widget.RecyclerView android:id="@+id/hostname_whitelist" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/preferences_whitelist_certificate_item.xml b/app/src/main/res/layout/preferences_whitelist_certificate_item.xml index 0eed12550..8084ad0ca 100644 --- a/app/src/main/res/layout/preferences_whitelist_certificate_item.xml +++ b/app/src/main/res/layout/preferences_whitelist_certificate_item.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -33,10 +33,8 @@ android:layout_weight="1" android:orientation="vertical" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingTop="16dp" android:paddingEnd="0dip" - android:paddingRight="0dip" android:paddingBottom="16dp"> <TextView @@ -68,9 +66,7 @@ android:background="?selectableItemBackgroundBorderless" android:contentDescription="@string/label_delete" android:paddingStart="32dp" - android:paddingLeft="32dp" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" app:srcCompat="@drawable/ic_delete" app:tint="?colorTextSecondary" /> </LinearLayout> diff --git a/app/src/main/res/layout/preferences_whitelist_hostname_item.xml b/app/src/main/res/layout/preferences_whitelist_hostname_item.xml index b007c9dc0..483a73630 100644 --- a/app/src/main/res/layout/preferences_whitelist_hostname_item.xml +++ b/app/src/main/res/layout/preferences_whitelist_hostname_item.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -33,10 +33,8 @@ android:layout_weight="1" android:orientation="vertical" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingTop="16dp" android:paddingEnd="0dip" - android:paddingRight="0dip" android:paddingBottom="16dp"> <TextView @@ -68,9 +66,7 @@ android:background="?selectableItemBackgroundBorderless" android:contentDescription="@string/label_delete" android:paddingStart="32dp" - android:paddingLeft="32dp" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" app:srcCompat="@drawable/ic_delete" app:tint="?colorTextSecondary" /> </LinearLayout> diff --git a/app/src/main/res/layout/settings_aliaslist_item.xml b/app/src/main/res/layout/settings_aliaslist_item.xml index b79559693..b92581af1 100644 --- a/app/src/main/res/layout/settings_aliaslist_item.xml +++ b/app/src/main/res/layout/settings_aliaslist_item.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -26,28 +26,14 @@ android:orientation="horizontal" tools:showIn="@layout/settings_aliaslist"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/handle" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_gravity="center_vertical" - android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" - android:paddingEnd="32dp" - android:paddingRight="32dp" - app:srcCompat="@drawable/ic_reorder" - app:tint="?colorTextSecondary" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:orientation="vertical" android:paddingStart="0dip" - android:paddingLeft="0dip" android:paddingTop="16dp" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" android:paddingBottom="16dp"> <TextView @@ -72,4 +58,14 @@ tools:text="/quote away" /> </LinearLayout> + + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/handle" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:paddingStart="?listPreferredItemPaddingLeft" + android:paddingEnd="32dp" + app:srcCompat="@drawable/ic_reorder" + app:tint="?colorTextSecondary" /> </LinearLayout> diff --git a/app/src/main/res/layout/settings_chatlist.xml b/app/src/main/res/layout/settings_chatlist.xml index dbd456c82..594e2c090 100644 --- a/app/src/main/res/layout/settings_chatlist.xml +++ b/app/src/main/res/layout/settings_chatlist.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -31,31 +31,19 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_eye" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_chatlist_ui" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_eye" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> - <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.CustomTextInput" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/settings_chatlist_buffer_view_name"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/buffer_view_name" - style="@style/Widget.CoreSettings.EditText" - tools:text="All Chats" /> - </com.google.android.material.textfield.TextInputLayout> - <androidx.appcompat.widget.SwitchCompat android:id="@+id/show_search" style="@style/Widget.CoreSettings.PrimaryItemSwitch" @@ -73,6 +61,18 @@ style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:checked="true" android:text="@string/settings_chatlist_add_new_buffers_automatically" /> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.CustomTextInput" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/settings_chatlist_buffer_view_name"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/buffer_view_name" + style="@style/Widget.CoreSettings.EditText" + tools:text="All Chats" /> + </com.google.android.material.textfield.TextInputLayout> </LinearLayout> <LinearLayout @@ -80,19 +80,25 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_server_network" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_chatlist_network" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_server_network" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/show_status_buffer" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:checked="true" + android:text="@string/settings_chatlist_show_status_buffer" /> + <de.kuschku.ui.spinner.MaterialSpinnerLayout style="@style/Widget.CustomSpinnerLayout" android:layout_width="match_parent" @@ -106,12 +112,6 @@ android:layout_height="wrap_content" tools:listitem="@layout/widget_spinner_item_material" /> </de.kuschku.ui.spinner.MaterialSpinnerLayout> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/show_status_buffer" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:checked="true" - android:text="@string/settings_chatlist_show_status_buffer" /> </LinearLayout> <LinearLayout @@ -119,13 +119,13 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_tag_text" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_chatlist_types" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_tag_text" /> </LinearLayout> <LinearLayout @@ -150,19 +150,29 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_clock" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_chatlist_activity" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_clock" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/hide_inactive_buffers" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_chatlist_hide_inactive_buffers" /> + + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/hide_inactive_networks" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_chatlist_hide_inactive_networks" /> + <de.kuschku.ui.spinner.MaterialSpinnerLayout style="@style/Widget.CustomSpinnerLayout" android:layout_width="match_parent" @@ -176,16 +186,6 @@ android:layout_height="wrap_content" tools:listitem="@layout/widget_spinner_item_material" /> </de.kuschku.ui.spinner.MaterialSpinnerLayout> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/hide_inactive_buffers" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_chatlist_hide_inactive_buffers" /> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/hide_inactive_networks" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_chatlist_hide_inactive_networks" /> </LinearLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/settings_highlightlist.xml b/app/src/main/res/layout/settings_highlightlist.xml index 1e0112871..0349be1f5 100644 --- a/app/src/main/res/layout/settings_highlightlist.xml +++ b/app/src/main/res/layout/settings_highlightlist.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -29,14 +29,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <de.kuschku.quasseldroid.util.ui.view.WarningBarView - android:id="@+id/feature_context_coresidehighlights" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:icon="@drawable/ic_alert" - app:mode="none" - app:text="@string/label_feature_context_coresidehighlights" /> - <LinearLayout style="@style/Widget.CoreSettings.Wrapper"> <LinearLayout @@ -44,19 +36,24 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_server_network" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_highlightlist_highlight_nick" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_server_network" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/is_case_sensitive" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_highlightlist_nicks_case_sensitive" /> + <de.kuschku.ui.spinner.MaterialSpinnerLayout style="@style/Widget.CustomSpinnerLayout" android:layout_width="match_parent" @@ -70,11 +67,6 @@ android:layout_height="wrap_content" tools:listitem="@layout/widget_spinner_item_material" /> </de.kuschku.ui.spinner.MaterialSpinnerLayout> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/is_case_sensitive" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_highlightlist_nicks_case_sensitive" /> </LinearLayout> <LinearLayout @@ -82,26 +74,19 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_server_network" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_highlightlist_rules" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_server_network" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/highlight_rules" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:itemCount="2" - tools:listitem="@layout/settings_highlightlist_rule" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -114,6 +99,13 @@ android:layout_height="wrap_content" android:text="@string/label_new_highlight_rule" /> </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/highlight_rules" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:itemCount="2" + tools:listitem="@layout/settings_highlightlist_rule" /> </LinearLayout> <LinearLayout @@ -121,26 +113,19 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_server_network" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_highlightlist_ignore_rules" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_server_network" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/highlight_ignore_rules" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:itemCount="2" - tools:listitem="@layout/settings_highlightlist_rule" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -153,7 +138,22 @@ android:layout_height="wrap_content" android:text="@string/label_new_highlight_ignore_rule" /> </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/highlight_ignore_rules" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:itemCount="2" + tools:listitem="@layout/settings_highlightlist_rule" /> </LinearLayout> </LinearLayout> + + <de.kuschku.quasseldroid.util.ui.view.WarningBarView + android:id="@+id/feature_context_coresidehighlights" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:icon="@drawable/ic_alert" + app:mode="none" + app:text="@string/label_feature_context_coresidehighlights" /> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/settings_highlightlist_rule.xml b/app/src/main/res/layout/settings_highlightlist_rule.xml index 32def896e..c85157da2 100644 --- a/app/src/main/res/layout/settings_highlightlist_rule.xml +++ b/app/src/main/res/layout/settings_highlightlist_rule.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -34,18 +34,6 @@ android:gravity="center_vertical" android:minHeight="?listPreferredItemHeightSmall"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/handle" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_gravity="center_vertical" - android:paddingStart="?listPreferredItemPaddingRight" - android:paddingLeft="?listPreferredItemPaddingRight" - android:paddingEnd="32dp" - android:paddingRight="32dp" - app:srcCompat="@drawable/ic_reorder" - app:tint="?colorTextSecondary" /> - <LinearLayout android:layout_width="0dip" android:layout_height="wrap_content" @@ -54,37 +42,12 @@ android:paddingTop="16dp" android:paddingBottom="16dp"> - <TextView - android:id="@+id/match_all" - style="@style/Widget.RtlConformTextView" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_vertical" - android:ellipsize="marquee" - android:orientation="vertical" - android:singleLine="true" - android:text="@string/label_match_all" - android:textAppearance="?android:textAppearanceMedium" - android:textColor="?colorTextPrimary" - android:textSize="16sp" - android:textStyle="italic" - android:visibility="gone" - tools:visibility="visible" /> - <LinearLayout android:id="@+id/name_row" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> - <androidx.appcompat.widget.AppCompatImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="8dp" - android:layout_marginRight="8dp" - app:srcCompat="@drawable/ic_message_bulleted" - app:tint="?colorTextSecondary" /> - <TextView android:id="@+id/name" style="@style/Widget.RtlConformTextView" @@ -99,6 +62,13 @@ android:textSize="16sp" tools:text="(janne): " /> + <androidx.appcompat.widget.AppCompatImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + app:srcCompat="@drawable/ic_message_bulleted" + app:tint="?colorTextSecondary" /> + </LinearLayout> <LinearLayout @@ -107,14 +77,6 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - <androidx.appcompat.widget.AppCompatImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="8dp" - android:layout_marginRight="8dp" - app:srcCompat="@drawable/ic_account" - app:tint="?colorTextSecondary" /> - <TextView android:id="@+id/sender" style="@style/Widget.RtlConformTextView" @@ -126,6 +88,13 @@ android:textAppearance="?textAppearanceListItemSecondary" android:textColor="?colorTextSecondary" tools:text="TARS" /> + + <androidx.appcompat.widget.AppCompatImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + app:srcCompat="@drawable/ic_account" + app:tint="?colorTextSecondary" /> </LinearLayout> <LinearLayout @@ -134,14 +103,6 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - <androidx.appcompat.widget.AppCompatImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="8dp" - android:layout_marginRight="8dp" - app:srcCompat="@drawable/ic_channel" - app:tint="?colorTextSecondary" /> - <TextView android:id="@+id/channel" style="@style/Widget.RtlConformTextView" @@ -153,18 +114,50 @@ android:textAppearance="?textAppearanceListItemSecondary" android:textColor="?colorTextSecondary" tools:text="#yepityha" /> + + <androidx.appcompat.widget.AppCompatImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + app:srcCompat="@drawable/ic_channel" + app:tint="?colorTextSecondary" /> </LinearLayout> + <TextView + android:id="@+id/match_all" + style="@style/Widget.RtlConformTextView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:ellipsize="marquee" + android:orientation="vertical" + android:singleLine="true" + android:text="@string/label_match_all" + android:textAppearance="?android:textAppearanceMedium" + android:textColor="?colorTextPrimary" + android:textSize="16sp" + android:textStyle="italic" + android:visibility="gone" + tools:visibility="visible" /> + </LinearLayout> + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/handle" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:paddingStart="?listPreferredItemPaddingRight" + android:paddingEnd="32dp" + app:srcCompat="@drawable/ic_reorder" + app:tint="?colorTextSecondary" /> + <androidx.appcompat.widget.SwitchCompat android:id="@+id/toggle" android:layout_width="wrap_content" android:layout_height="match_parent" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" android:text="" /> </LinearLayout> </com.google.android.material.card.MaterialCardView> diff --git a/app/src/main/res/layout/settings_highlightrule.xml b/app/src/main/res/layout/settings_highlightrule.xml index 8f3bb1621..8fb2c3c14 100644 --- a/app/src/main/res/layout/settings_highlightrule.xml +++ b/app/src/main/res/layout/settings_highlightrule.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -46,6 +46,16 @@ style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/is_regex" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_highlightrule_regular_expression" /> + + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/is_case_sensitive" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_highlightrule_case_sensitive" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -58,16 +68,6 @@ tools:text="https://clbin.com/*.jpg*" /> </com.google.android.material.textfield.TextInputLayout> - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/is_regex" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_highlightrule_regular_expression" /> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/is_case_sensitive" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_highlightrule_case_sensitive" /> - <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/settings_identity.xml b/app/src/main/res/layout/settings_identity.xml index f122e24db..c731b448a 100644 --- a/app/src/main/res/layout/settings_identity.xml +++ b/app/src/main/res/layout/settings_identity.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -31,13 +31,13 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_account_card" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_identity_names" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_account_card" /> </LinearLayout> <LinearLayout @@ -98,13 +98,6 @@ android:orientation="vertical" android:visibility="visible"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/nicks" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:itemCount="4" - tools:listitem="@layout/settings_identity_nick" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -117,6 +110,13 @@ android:layout_height="wrap_content" android:text="@string/label_new_nick" /> </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/nicks" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:itemCount="4" + tools:listitem="@layout/settings_identity_nick" /> </LinearLayout> <LinearLayout @@ -124,13 +124,13 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_message_bulleted" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_identity_messages" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_message_bulleted" /> </LinearLayout> <LinearLayout @@ -179,36 +179,19 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_clock" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_identity_away" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_clock" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> - <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.CustomTextInput" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/settings_identity_away_reason"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/away_reason" - style="@style/Widget.CoreSettings.EditText" - tools:text="Gone Fishing." /> - </com.google.android.material.textfield.TextInputLayout> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/detach_away" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_identity_detach_away" /> - <LinearLayout android:id="@+id/detach_away_group" android:layout_width="match_parent" @@ -226,6 +209,23 @@ tools:text="Gone Fishing." /> </com.google.android.material.textfield.TextInputLayout> </LinearLayout> + + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/detach_away" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_identity_detach_away" /> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.CustomTextInput" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/settings_identity_away_reason"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/away_reason" + style="@style/Widget.CoreSettings.EditText" + tools:text="Gone Fishing." /> + </com.google.android.material.textfield.TextInputLayout> </LinearLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/settings_identity_nick.xml b/app/src/main/res/layout/settings_identity_nick.xml index ff94e38fa..88732fb10 100644 --- a/app/src/main/res/layout/settings_identity_nick.xml +++ b/app/src/main/res/layout/settings_identity_nick.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -41,9 +41,7 @@ android:layout_gravity="center_vertical" android:layout_weight="1" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingEnd="0dip" - android:paddingRight="0dip" android:textAppearance="?android:attr/textAppearanceListItemSmall" tools:text="@sample/messages.json/data/sender" /> @@ -53,9 +51,7 @@ android:layout_height="match_parent" android:layout_gravity="center_vertical" android:paddingStart="32dp" - android:paddingLeft="32dp" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" app:srcCompat="@drawable/ic_reorder" app:tint="?colorTextSecondary" /> </LinearLayout> diff --git a/app/src/main/res/layout/settings_ignoreitem.xml b/app/src/main/res/layout/settings_ignoreitem.xml index 737bdcb08..1f51813a4 100644 --- a/app/src/main/res/layout/settings_ignoreitem.xml +++ b/app/src/main/res/layout/settings_ignoreitem.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -46,6 +46,11 @@ style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/isregex" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_ignoreitem_isregex" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -58,11 +63,6 @@ tools:text="https://clbin.com/*.jpg*" /> </com.google.android.material.textfield.TextInputLayout> - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/isregex" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_ignoreitem_isregex" /> - <de.kuschku.ui.spinner.MaterialSpinnerLayout style="@style/Widget.CustomSpinnerLayout" android:layout_width="match_parent" @@ -97,13 +97,13 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_tag_text" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_ignoreitem_scope" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_tag_text" /> </LinearLayout> <LinearLayout diff --git a/app/src/main/res/layout/settings_ignorelist_item.xml b/app/src/main/res/layout/settings_ignorelist_item.xml index 1604bdc0b..ef88a2ae3 100644 --- a/app/src/main/res/layout/settings_ignorelist_item.xml +++ b/app/src/main/res/layout/settings_ignorelist_item.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -28,18 +28,6 @@ android:minHeight="?listPreferredItemHeightSmall" tools:showIn="@layout/settings_ignorelist"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/handle" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_gravity="center_vertical" - android:paddingStart="?listPreferredItemPaddingRight" - android:paddingLeft="?listPreferredItemPaddingRight" - android:paddingEnd="32dp" - android:paddingRight="32dp" - app:srcCompat="@drawable/ic_reorder" - app:tint="?colorTextSecondary" /> - <LinearLayout android:layout_width="0dip" android:layout_height="wrap_content" @@ -74,12 +62,20 @@ </LinearLayout> + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/handle" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:paddingStart="?listPreferredItemPaddingRight" + android:paddingEnd="32dp" + app:srcCompat="@drawable/ic_reorder" + app:tint="?colorTextSecondary" /> + <androidx.appcompat.widget.SwitchCompat android:id="@+id/toggle" android:layout_width="wrap_content" android:layout_height="match_parent" android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" - android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" /> + android:paddingEnd="?listPreferredItemPaddingRight" /> </LinearLayout> diff --git a/app/src/main/res/layout/settings_item.xml b/app/src/main/res/layout/settings_item.xml index 51e4d22d5..081c9ce7d 100644 --- a/app/src/main/res/layout/settings_item.xml +++ b/app/src/main/res/layout/settings_item.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -26,9 +26,7 @@ android:gravity="center_vertical" android:minHeight="?listPreferredItemHeightSmall" android:paddingStart="8dp" - android:paddingLeft="8dp" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" tools:showIn="@layout/settings_list"> <LinearLayout diff --git a/app/src/main/res/layout/settings_list.xml b/app/src/main/res/layout/settings_list.xml index ef4c27db1..e683890cd 100644 --- a/app/src/main/res/layout/settings_list.xml +++ b/app/src/main/res/layout/settings_list.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -29,35 +29,19 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <de.kuschku.quasseldroid.util.ui.view.BannerView - android:id="@+id/feature_context_missing" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginBottom="8dp" - app:buttonText="@string/label_feature_context_missing_button" - app:icon="@drawable/ic_alert" - app:text="@string/label_feature_context_missing" /> - <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_server_network" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_networks_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_server_network" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroup"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/networks" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:itemCount="2" - tools:listitem="@layout/settings_item" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -70,33 +54,32 @@ android:layout_height="wrap_content" android:text="@string/label_new_network" /> </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/networks" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:itemCount="2" + tools:listitem="@layout/settings_item" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_account_card" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_identities_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_account_card" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="72dp" - android:layout_marginLeft="72dp" android:orientation="vertical"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/identities" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:itemCount="1" - tools:listitem="@layout/settings_item" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -109,28 +92,28 @@ android:layout_height="wrap_content" android:text="@string/label_new_identity" /> </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/identities" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:itemCount="1" + tools:listitem="@layout/settings_item" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_list_bulleted" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_chatlists_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_list_bulleted" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroup"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/chatlists" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:itemCount="2" - tools:listitem="@layout/settings_item" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -143,6 +126,13 @@ android:layout_height="wrap_content" android:text="@string/label_new_chatlist" /> </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/chatlists" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:itemCount="2" + tools:listitem="@layout/settings_item" /> </LinearLayout> <LinearLayout @@ -150,13 +140,13 @@ style="@style/Widget.CoreSettings.PrimaryItemGroupHeader" android:focusable="true"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_filter" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_ignorelist_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_filter" /> </LinearLayout> <LinearLayout @@ -164,13 +154,13 @@ style="@style/Widget.CoreSettings.PrimaryItemGroupHeader" android:focusable="true"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_bell" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_highlightlist_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_bell" /> </LinearLayout> <LinearLayout @@ -178,13 +168,13 @@ style="@style/Widget.CoreSettings.PrimaryItemGroupHeader" android:focusable="true"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_message_bulleted" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_aliaslist_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_message_bulleted" /> </LinearLayout> <LinearLayout @@ -192,13 +182,13 @@ style="@style/Widget.CoreSettings.PrimaryItemGroupHeader" android:focusable="true"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_settings" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_networkconfig_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_settings" /> </LinearLayout> <LinearLayout @@ -206,13 +196,13 @@ style="@style/Widget.CoreSettings.PrimaryItemGroupHeader" android:focusable="true"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_info" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/label_info_core" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_info" /> </LinearLayout> <LinearLayout @@ -220,13 +210,22 @@ style="@style/Widget.CoreSettings.PrimaryItemGroupHeader" android:focusable="true"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_key_variant" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/label_password_change" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_key_variant" /> </LinearLayout> + + <de.kuschku.quasseldroid.util.ui.view.BannerView + android:id="@+id/feature_context_missing" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + app:buttonText="@string/label_feature_context_missing_button" + app:icon="@drawable/ic_alert" + app:text="@string/label_feature_context_missing" /> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/settings_network.xml b/app/src/main/res/layout/settings_network.xml index f6df4ac10..828ecec58 100644 --- a/app/src/main/res/layout/settings_network.xml +++ b/app/src/main/res/layout/settings_network.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -32,13 +32,13 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_message_bulleted" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_network_title" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_message_bulleted" /> </LinearLayout> <LinearLayout @@ -63,14 +63,6 @@ android:orientation="vertical" android:visibility="visible"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/servers" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - tools:itemCount="4" - tools:listitem="@layout/settings_network_server" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -83,6 +75,14 @@ android:layout_height="wrap_content" android:text="@string/label_new_server" /> </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/servers" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + tools:itemCount="4" + tools:listitem="@layout/settings_network_server" /> </LinearLayout> <LinearLayout @@ -90,13 +90,13 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_account_card" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_network_identity" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_account_card" /> </LinearLayout> <LinearLayout @@ -191,15 +191,6 @@ style="@style/Widget.CoreSettings.DependentGroup" tools:visibility="visible"> - <de.kuschku.quasseldroid.util.ui.view.InlineSnackBar - android:id="@+id/autoidentify_warning" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginBottom="8dp" - app:buttonText="@string/settings_network_sasl_upgrade" - app:text="@string/settings_network_sasl_supported" /> - <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -227,6 +218,15 @@ android:inputType="textPassword" tools:text="thisisasecurepassword" /> </com.google.android.material.textfield.TextInputLayout> + + <de.kuschku.quasseldroid.util.ui.view.InlineSnackBar + android:id="@+id/autoidentify_warning" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + app:buttonText="@string/settings_network_sasl_upgrade" + app:text="@string/settings_network_sasl_supported" /> </LinearLayout> <LinearLayout @@ -234,19 +234,24 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_server_network" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_network_connection" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_server_network" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/rejoin_channels" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_network_rejoin_channels" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -259,11 +264,6 @@ android:inputType="textMultiLine" tools:text="/mode -x" /> </com.google.android.material.textfield.TextInputLayout> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/rejoin_channels" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_network_rejoin_channels" /> </LinearLayout> <LinearLayout @@ -290,6 +290,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + style="@style/Widget.CoreSettings.EditTextSuffix" + android:text="@string/settings_network_autoreconnect_interval_unit" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -301,12 +305,13 @@ style="@style/Widget.CoreSettings.EditText" tools:text="60" /> </com.google.android.material.textfield.TextInputLayout> - - <TextView - style="@style/Widget.CoreSettings.EditTextSuffix" - android:text="@string/settings_network_autoreconnect_interval_unit" /> </FrameLayout> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/autoreconnect_unlimited" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_network_autoreconnect_unlimited" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -318,11 +323,6 @@ style="@style/Widget.CoreSettings.EditText" tools:text="20" /> </com.google.android.material.textfield.TextInputLayout> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/autoreconnect_unlimited" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_network_autoreconnect_unlimited" /> </LinearLayout> <LinearLayout @@ -345,27 +345,14 @@ style="@style/Widget.CoreSettings.DependentGroup" tools:visibility="visible"> - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/customratelimits_unlimited" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_network_customratelimits_unlimited" /> - - <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.CustomTextInput" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/settings_network_customratelimits_burstsize"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/customratelimits_burstsize" - style="@style/Widget.CoreSettings.EditText" - tools:text="5" /> - </com.google.android.material.textfield.TextInputLayout> - <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + style="@style/Widget.CoreSettings.EditTextSuffix" + android:text="@string/settings_network_customratelimits_interval_unit" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -377,11 +364,24 @@ style="@style/Widget.CoreSettings.EditText" tools:text="2.20" /> </com.google.android.material.textfield.TextInputLayout> - - <TextView - style="@style/Widget.CoreSettings.EditTextSuffix" - android:text="@string/settings_network_customratelimits_interval_unit" /> </FrameLayout> + + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/customratelimits_unlimited" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_network_customratelimits_unlimited" /> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.CustomTextInput" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/settings_network_customratelimits_burstsize"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/customratelimits_burstsize" + style="@style/Widget.CoreSettings.EditText" + tools:text="5" /> + </com.google.android.material.textfield.TextInputLayout> </LinearLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/settings_network_server.xml b/app/src/main/res/layout/settings_network_server.xml index 30ce5ad3a..12865a66c 100644 --- a/app/src/main/res/layout/settings_network_server.xml +++ b/app/src/main/res/layout/settings_network_server.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -35,18 +35,6 @@ android:paddingTop="10dp" android:paddingBottom="10dp"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/ssl_enabled" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_gravity="center_vertical" - android:paddingStart="?listPreferredItemPaddingLeft" - android:paddingLeft="?listPreferredItemPaddingLeft" - android:paddingEnd="32dp" - android:paddingRight="32dp" - tools:srcCompat="@drawable/ic_lock" - tools:tint="?colorTintSecure" /> - <LinearLayout android:layout_width="0dip" android:layout_height="wrap_content" @@ -76,15 +64,23 @@ tools:text="@sample/networks.json/data/port" /> </LinearLayout> + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/ssl_enabled" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:paddingStart="?listPreferredItemPaddingLeft" + android:paddingEnd="32dp" + tools:srcCompat="@drawable/ic_lock" + tools:tint="?colorTintSecure" /> + <androidx.appcompat.widget.AppCompatImageView android:id="@+id/handle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center_vertical" android:paddingStart="32dp" - android:paddingLeft="32dp" android:paddingEnd="?listPreferredItemPaddingRight" - android:paddingRight="?listPreferredItemPaddingRight" app:srcCompat="@drawable/ic_reorder" app:tint="?colorTextSecondary" /> </LinearLayout> diff --git a/app/src/main/res/layout/settings_networkconfig.xml b/app/src/main/res/layout/settings_networkconfig.xml index 2e288b5a6..b37ad3a11 100644 --- a/app/src/main/res/layout/settings_networkconfig.xml +++ b/app/src/main/res/layout/settings_networkconfig.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -50,6 +50,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + style="@style/Widget.CoreSettings.EditTextSuffix" + android:text="@string/settings_networkconfig_ping_interval_unit" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -62,16 +66,16 @@ android:inputType="number" tools:text="30" /> </com.google.android.material.textfield.TextInputLayout> - - <TextView - style="@style/Widget.CoreSettings.EditTextSuffix" - android:text="@string/settings_networkconfig_ping_interval_unit" /> </FrameLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + style="@style/Widget.CoreSettings.EditTextSuffix" + android:text="@string/settings_networkconfig_max_ping_count_unit" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -84,10 +88,6 @@ android:inputType="number" tools:text="10" /> </com.google.android.material.textfield.TextInputLayout> - - <TextView - style="@style/Widget.CoreSettings.EditTextSuffix" - android:text="@string/settings_networkconfig_max_ping_count_unit" /> </FrameLayout> </LinearLayout> @@ -115,6 +115,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + style="@style/Widget.CoreSettings.EditTextSuffix" + android:text="@string/settings_networkconfig_auto_who_interval_unit" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -127,16 +131,16 @@ android:inputType="number" tools:text="90" /> </com.google.android.material.textfield.TextInputLayout> - - <TextView - style="@style/Widget.CoreSettings.EditTextSuffix" - android:text="@string/settings_networkconfig_auto_who_interval_unit" /> </FrameLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + style="@style/Widget.CoreSettings.EditTextSuffix" + android:text="@string/settings_networkconfig_auto_who_nick_limit_unit" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -149,16 +153,16 @@ android:inputType="number" tools:text="100" /> </com.google.android.material.textfield.TextInputLayout> - - <TextView - style="@style/Widget.CoreSettings.EditTextSuffix" - android:text="@string/settings_networkconfig_auto_who_nick_limit_unit" /> </FrameLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + style="@style/Widget.CoreSettings.EditTextSuffix" + android:text="@string/settings_networkconfig_auto_who_delay_unit" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -171,10 +175,6 @@ android:inputType="number" tools:text="5" /> </com.google.android.material.textfield.TextInputLayout> - - <TextView - style="@style/Widget.CoreSettings.EditTextSuffix" - android:text="@string/settings_networkconfig_auto_who_delay_unit" /> </FrameLayout> </LinearLayout> diff --git a/app/src/main/res/layout/settings_networkserver.xml b/app/src/main/res/layout/settings_networkserver.xml index 91d0ec8ea..ced991320 100644 --- a/app/src/main/res/layout/settings_networkserver.xml +++ b/app/src/main/res/layout/settings_networkserver.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -31,19 +31,29 @@ android:layout_height="wrap_content" android:minHeight="48dp"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_server_network" /> - <TextView style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:text="@string/settings_networkserver_connection" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_server_network" /> </LinearLayout> <LinearLayout style="@style/Widget.CoreSettings.DependentGroup" android:visibility="visible"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/ssl_enabled" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_networkserver_ssl_enabled" /> + + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/ssl_verify" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:text="@string/settings_networkserver_ssl_verify" /> + <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -69,16 +79,6 @@ tools:text="6667" /> </com.google.android.material.textfield.TextInputLayout> - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/ssl_enabled" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_networkserver_ssl_enabled" /> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/ssl_verify" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:text="@string/settings_networkserver_ssl_verify" /> - <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -114,20 +114,6 @@ style="@style/Widget.CoreSettings.DependentGroup" tools:visibility="visible"> - <de.kuschku.ui.spinner.MaterialSpinnerLayout - style="@style/Widget.CustomSpinnerLayout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/settings_networkserver_proxy_type"> - - <androidx.appcompat.widget.AppCompatSpinner - android:id="@+id/proxy_type" - style="@style/Widget.MaterialSpinner" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_spinner_item_material" /> - </de.kuschku.ui.spinner.MaterialSpinnerLayout> - <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" android:layout_width="match_parent" @@ -178,6 +164,20 @@ android:inputType="textPassword" tools:text="thisisasecurepassword" /> </com.google.android.material.textfield.TextInputLayout> + + <de.kuschku.ui.spinner.MaterialSpinnerLayout + style="@style/Widget.CustomSpinnerLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/settings_networkserver_proxy_type"> + + <androidx.appcompat.widget.AppCompatSpinner + android:id="@+id/proxy_type" + style="@style/Widget.MaterialSpinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/widget_spinner_item_material" /> + </de.kuschku.ui.spinner.MaterialSpinnerLayout> </LinearLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/settings_passwordchange.xml b/app/src/main/res/layout/settings_passwordchange.xml index 99518fec8..26c1ed462 100644 --- a/app/src/main/res/layout/settings_passwordchange.xml +++ b/app/src/main/res/layout/settings_passwordchange.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -30,42 +30,44 @@ android:orientation="vertical" android:padding="32dp"> - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/userWrapper" - style="@style/Widget.CustomTextInput" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="16dp" - android:hint="@string/label_account_user" - tools:ignore="LabelFor"> + android:orientation="horizontal"> - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/user" - android:layout_width="match_parent" + <Space + android:layout_width="0dip" + android:layout_height="match_parent" + android:layout_weight="1" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/save" + style="@style/Widget.Button.Colored" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:enabled="false" - android:inputType="textVisiblePassword|textNoSuggestions" - app:errorEnabled="true" - tools:text="kuschku" /> - </com.google.android.material.textfield.TextInputLayout> + android:text="@string/label_save" /> - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/password_old_wrapper" - style="@style/Widget.CustomTextInput" + <me.zhanghai.android.materialprogressbar.MaterialProgressBar + android:id="@+id/progress" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_gravity="center_vertical" + android:visibility="gone" + tools:visibility="visible" /> + + </LinearLayout> + + <TextView + android:id="@+id/error" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginLeft="4dp" + android:layout_marginRight="4dp" android:layout_marginBottom="16dp" - android:hint="@string/label_password_old" - app:passwordToggleEnabled="true" - tools:ignore="LabelFor"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/password_old" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="textPassword" - app:errorEnabled="true" /> - </com.google.android.material.textfield.TextInputLayout> + android:textColor="?colorForegroundError" + android:visibility="gone" + tools:text="Error occured: Passwords do not match" + tools:visibility="visible" /> <com.google.android.material.textfield.TextInputLayout style="@style/Widget.CustomTextInput" @@ -102,44 +104,42 @@ </com.google.android.material.textfield.TextInputLayout> - <TextView - android:id="@+id/error" + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/userWrapper" + style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginLeft="4dp" - android:layout_marginRight="4dp" android:layout_marginBottom="16dp" - android:textColor="?colorForegroundError" - android:visibility="gone" - tools:text="Error occured: Passwords do not match" - tools:visibility="visible" /> + android:hint="@string/label_account_user" + tools:ignore="LabelFor"> - <LinearLayout + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/user" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:enabled="false" + android:inputType="textVisiblePassword|textNoSuggestions" + app:errorEnabled="true" + tools:text="kuschku" /> + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/password_old_wrapper" + style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:layout_marginBottom="16dp" + android:hint="@string/label_password_old" + app:passwordToggleEnabled="true" + tools:ignore="LabelFor"> - <com.google.android.material.button.MaterialButton - android:id="@+id/save" - style="@style/Widget.Button.Colored" - android:layout_width="wrap_content" + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/password_old" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/label_save" /> - - <Space - android:layout_width="0dip" - android:layout_height="match_parent" - android:layout_weight="1" /> - - <me.zhanghai.android.materialprogressbar.MaterialProgressBar - android:id="@+id/progress" - android:layout_width="32dp" - android:layout_height="32dp" - android:layout_gravity="center_vertical" - android:visibility="gone" - tools:visibility="visible" /> - - </LinearLayout> + android:inputType="textPassword" + app:errorEnabled="true" /> + </com.google.android.material.textfield.TextInputLayout> </LinearLayout> diff --git a/app/src/main/res/layout/setup_account_connection.xml b/app/src/main/res/layout/setup_account_connection.xml index 819286c43..bbd8e9eff 100644 --- a/app/src/main/res/layout/setup_account_connection.xml +++ b/app/src/main/res/layout/setup_account_connection.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -27,44 +27,44 @@ android:orientation="vertical" android:padding="32dp"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/require_ssl" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/label_connection_ssl" /> + <com.google.android.material.textfield.TextInputLayout - android:id="@+id/hostWrapper" + android:id="@+id/portWrapper" style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/label_connection_host" + android:hint="@string/label_connection_port" app:errorEnabled="true" tools:ignore="LabelFor"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/host" + android:id="@+id/port" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="textUri" /> + android:inputType="number" + android:text="@string/defaultConnectionPort" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputLayout - android:id="@+id/portWrapper" + android:id="@+id/hostWrapper" style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/label_connection_port" + android:hint="@string/label_connection_host" app:errorEnabled="true" tools:ignore="LabelFor"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/port" + android:id="@+id/host" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="number" - android:text="@string/defaultConnectionPort" /> + android:inputType="textUri" /> </com.google.android.material.textfield.TextInputLayout> - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/require_ssl" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/label_connection_ssl" /> - </LinearLayout> diff --git a/app/src/main/res/layout/setup_account_edit.xml b/app/src/main/res/layout/setup_account_edit.xml index 03acd4459..6d5b0556f 100644 --- a/app/src/main/res/layout/setup_account_edit.xml +++ b/app/src/main/res/layout/setup_account_edit.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -28,10 +28,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <Space - android:layout_width="match_parent" - android:layout_height="16dp" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -68,10 +64,6 @@ </com.google.android.material.textfield.TextInputLayout> </LinearLayout> - <Space - android:layout_width="match_parent" - android:layout_height="16dp" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -96,53 +88,48 @@ android:layout_height="wrap_content" android:orientation="vertical"> + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/require_ssl" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/label_connection_ssl" /> + <com.google.android.material.textfield.TextInputLayout - android:id="@+id/hostWrapper" + android:id="@+id/portWrapper" style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/label_connection_host" + android:hint="@string/label_connection_port" tools:ignore="LabelFor"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/host" + android:id="@+id/port" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="textUri" + android:inputType="number" + android:text="@string/defaultConnectionPort" app:errorEnabled="true" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputLayout - android:id="@+id/portWrapper" + android:id="@+id/hostWrapper" style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/label_connection_port" + android:hint="@string/label_connection_host" tools:ignore="LabelFor"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/port" + android:id="@+id/host" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="number" - android:text="@string/defaultConnectionPort" + android:inputType="textUri" app:errorEnabled="true" /> </com.google.android.material.textfield.TextInputLayout> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/require_ssl" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/label_connection_ssl" /> </LinearLayout> </LinearLayout> - <Space - android:layout_width="match_parent" - android:layout_height="16dp" /> - - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -206,5 +193,18 @@ <Space android:layout_width="match_parent" android:layout_height="16dp" /> + + <Space + android:layout_width="match_parent" + android:layout_height="16dp" /> + + + <Space + android:layout_width="match_parent" + android:layout_height="16dp" /> + + <Space + android:layout_width="match_parent" + android:layout_height="16dp" /> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/app/src/main/res/layout/setup_core_backend_configure.xml b/app/src/main/res/layout/setup_core_backend_configure.xml index fb80a6b8c..1fef8606a 100644 --- a/app/src/main/res/layout/setup_core_backend_configure.xml +++ b/app/src/main/res/layout/setup_core_backend_configure.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -23,15 +23,15 @@ android:orientation="vertical" android:padding="32dp"> - <TextView - android:id="@+id/no_options_info" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/setup_core_backend_no_options" /> - <LinearLayout android:id="@+id/frame" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> + + <TextView + android:id="@+id/no_options_info" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/setup_core_backend_no_options" /> </LinearLayout> diff --git a/app/src/main/res/layout/setup_network_network.xml b/app/src/main/res/layout/setup_network_network.xml index 714fd4955..e0367c46a 100644 --- a/app/src/main/res/layout/setup_network_network.xml +++ b/app/src/main/res/layout/setup_network_network.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,55 +25,18 @@ android:orientation="vertical" android:padding="32dp"> - <de.kuschku.ui.spinner.MaterialSpinnerLayout - style="@style/Widget.CustomSpinnerLayout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/settings_network_title"> - - <androidx.appcompat.widget.AppCompatSpinner - android:id="@+id/network" - style="@style/Widget.MaterialSpinner" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_spinner_item_material" /> - </de.kuschku.ui.spinner.MaterialSpinnerLayout> - <LinearLayout android:id="@+id/network_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> - <de.kuschku.ui.spinner.MaterialSpinnerLayout - style="@style/Widget.CustomSpinnerLayout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/settings_identity_title"> - - <androidx.appcompat.widget.AppCompatSpinner - android:id="@+id/identity" - style="@style/Widget.MaterialSpinner" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_spinner_item_material" /> - </de.kuschku.ui.spinner.MaterialSpinnerLayout> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/nameWrapper" - style="@style/Widget.CustomTextInput" + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/ssl_enabled" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/settings_network_network_name" - tools:ignore="LabelFor"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="textUri|textNoSuggestions" - app:errorEnabled="true" /> - </com.google.android.material.textfield.TextInputLayout> + android:text="@string/settings_networkserver_ssl_enabled" /> <com.google.android.material.textfield.TextInputLayout android:id="@+id/hostWrapper" @@ -110,12 +73,49 @@ tools:ignore="HardcodedText" /> </com.google.android.material.textfield.TextInputLayout> - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/ssl_enabled" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/nameWrapper" + style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/settings_networkserver_ssl_enabled" /> + android:hint="@string/settings_network_network_name" + tools:ignore="LabelFor"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="textUri|textNoSuggestions" + app:errorEnabled="true" /> + </com.google.android.material.textfield.TextInputLayout> + + <de.kuschku.ui.spinner.MaterialSpinnerLayout + style="@style/Widget.CustomSpinnerLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/settings_identity_title"> + + <androidx.appcompat.widget.AppCompatSpinner + android:id="@+id/identity" + style="@style/Widget.MaterialSpinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/widget_spinner_item_material" /> + </de.kuschku.ui.spinner.MaterialSpinnerLayout> </LinearLayout> + <de.kuschku.ui.spinner.MaterialSpinnerLayout + style="@style/Widget.CustomSpinnerLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/settings_network_title"> + + <androidx.appcompat.widget.AppCompatSpinner + android:id="@+id/network" + style="@style/Widget.MaterialSpinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/widget_spinner_item_material" /> + </de.kuschku.ui.spinner.MaterialSpinnerLayout> + </LinearLayout> diff --git a/app/src/main/res/layout/setup_slide.xml b/app/src/main/res/layout/setup_slide.xml index 3eabf0871..3388f659a 100644 --- a/app/src/main/res/layout/setup_slide.xml +++ b/app/src/main/res/layout/setup_slide.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,6 +24,17 @@ android:layout_height="match_parent" tools:ignore="InconsistentLayout"> + <androidx.core.widget.NestedScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <FrameLayout + android:id="@+id/content_host" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + </androidx.core.widget.NestedScrollView> + <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> @@ -60,10 +71,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="32dp" - android:layout_marginLeft="32dp" android:layout_marginTop="8dp" android:layout_marginEnd="48dp" - android:layout_marginRight="48dp" android:layout_marginBottom="24dp" android:textColor="?android:attr/textColorSecondaryInverse" android:textSize="16sp" @@ -78,15 +87,4 @@ app:titleMarginStart="16dp" /> </com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.AppBarLayout> - - <androidx.core.widget.NestedScrollView - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_behavior="@string/appbar_scrolling_view_behavior"> - - <FrameLayout - android:id="@+id/content_host" - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - </androidx.core.widget.NestedScrollView> </androidx.coordinatorlayout.widget.CoordinatorLayout> diff --git a/app/src/main/res/layout/setup_user_network.xml b/app/src/main/res/layout/setup_user_network.xml index e91a293e3..140f4ebc5 100644 --- a/app/src/main/res/layout/setup_user_network.xml +++ b/app/src/main/res/layout/setup_user_network.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,41 +25,18 @@ android:orientation="vertical" android:padding="32dp"> - <de.kuschku.ui.spinner.MaterialSpinnerLayout - style="@style/Widget.CustomSpinnerLayout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/settings_network_title"> - - <androidx.appcompat.widget.AppCompatSpinner - android:id="@+id/network" - style="@style/Widget.MaterialSpinner" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_spinner_item_material" /> - </de.kuschku.ui.spinner.MaterialSpinnerLayout> - <LinearLayout android:id="@+id/network_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/nameWrapper" - style="@style/Widget.CustomTextInput" + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/ssl_enabled" + style="@style/Widget.CoreSettings.PrimaryItemSwitch" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/settings_network_network_name" - tools:ignore="LabelFor"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="textUri|textNoSuggestions" - app:errorEnabled="true" /> - </com.google.android.material.textfield.TextInputLayout> + android:text="@string/settings_networkserver_ssl_enabled" /> <com.google.android.material.textfield.TextInputLayout android:id="@+id/hostWrapper" @@ -96,12 +73,35 @@ tools:ignore="HardcodedText" /> </com.google.android.material.textfield.TextInputLayout> - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/ssl_enabled" - style="@style/Widget.CoreSettings.PrimaryItemSwitch" + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/nameWrapper" + style="@style/Widget.CustomTextInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/settings_networkserver_ssl_enabled" /> + android:hint="@string/settings_network_network_name" + tools:ignore="LabelFor"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="textUri|textNoSuggestions" + app:errorEnabled="true" /> + </com.google.android.material.textfield.TextInputLayout> </LinearLayout> + <de.kuschku.ui.spinner.MaterialSpinnerLayout + style="@style/Widget.CustomSpinnerLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/settings_network_title"> + + <androidx.appcompat.widget.AppCompatSpinner + android:id="@+id/network" + style="@style/Widget.MaterialSpinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/widget_spinner_item_material" /> + </de.kuschku.ui.spinner.MaterialSpinnerLayout> + </LinearLayout> diff --git a/app/src/main/res/layout/widget_archive_placeholder.xml b/app/src/main/res/layout/widget_archive_placeholder.xml index b16ad2939..23bb9cea7 100644 --- a/app/src/main/res/layout/widget_archive_placeholder.xml +++ b/app/src/main/res/layout/widget_archive_placeholder.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -22,8 +22,6 @@ android:id="@+id/content" style="@style/Widget.CoreSettings.TextView" android:paddingStart="72dp" - android:paddingLeft="72dp" android:paddingEnd="16dp" - android:paddingRight="16dp" android:textStyle="italic" tools:text="@string/label_temporarily_archived_empty" /> diff --git a/app/src/main/res/layout/widget_banner.xml b/app/src/main/res/layout/widget_banner.xml index 8069bb84e..10321649e 100644 --- a/app/src/main/res/layout/widget_banner.xml +++ b/app/src/main/res/layout/widget_banner.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -28,16 +28,13 @@ android:focusable="true" android:orientation="vertical" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight" android:theme="?attr/actionBarTheme"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="-4dp" - android:layout_marginLeft="-4dp" android:baselineAligned="false" android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" @@ -50,10 +47,8 @@ android:minWidth="60dp" android:orientation="horizontal" android:paddingStart="0dp" - android:paddingLeft="0dp" android:paddingTop="4dp" android:paddingEnd="12dp" - android:paddingRight="12dp" android:paddingBottom="4dp"> <androidx.appcompat.widget.AppCompatImageView diff --git a/app/src/main/res/layout/widget_buffer.xml b/app/src/main/res/layout/widget_buffer.xml index d4675ff1f..b5aaa515f 100644 --- a/app/src/main/res/layout/widget_buffer.xml +++ b/app/src/main/res/layout/widget_buffer.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -31,16 +31,6 @@ android:paddingBottom="4dp" android:textAppearance="?android:attr/textAppearanceListItemSmall"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/status" - android:layout_width="@dimen/avatar_size_buffer" - android:layout_height="@dimen/avatar_size_buffer" - android:layout_gravity="center_vertical" - android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" - android:contentDescription="@string/label_avatar" - tools:src="@tools:sample/avatars" /> - <LinearLayout android:layout_width="0dip" android:layout_height="wrap_content" @@ -74,13 +64,21 @@ tools:visibility="visible" /> </LinearLayout> + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/status" + android:layout_width="@dimen/avatar_size_buffer" + android:layout_height="@dimen/avatar_size_buffer" + android:layout_gravity="center_vertical" + android:layout_marginEnd="16dp" + android:contentDescription="@string/label_avatar" + tools:src="@tools:sample/avatars" /> + <androidx.appcompat.widget.AppCompatImageView android:id="@+id/handle" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" android:contentDescription="@string/label_reorder" android:visibility="gone" app:srcCompat="@drawable/ic_reorder" diff --git a/app/src/main/res/layout/widget_buffer_away.xml b/app/src/main/res/layout/widget_buffer_away.xml index 3e4a9c043..5e274fae8 100644 --- a/app/src/main/res/layout/widget_buffer_away.xml +++ b/app/src/main/res/layout/widget_buffer_away.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -31,16 +31,6 @@ android:paddingBottom="4dp" android:textAppearance="?android:attr/textAppearanceListItemSmall"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/status" - android:layout_width="@dimen/avatar_size_buffer" - android:layout_height="@dimen/avatar_size_buffer" - android:layout_gravity="center_vertical" - android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" - android:contentDescription="@string/label_avatar" - tools:src="@tools:sample/avatars" /> - <LinearLayout android:layout_width="0dip" android:layout_height="wrap_content" @@ -76,12 +66,20 @@ tools:visibility="visible" /> </LinearLayout> + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/status" + android:layout_width="@dimen/avatar_size_buffer" + android:layout_height="@dimen/avatar_size_buffer" + android:layout_gravity="center_vertical" + android:layout_marginEnd="16dp" + android:contentDescription="@string/label_avatar" + tools:src="@tools:sample/avatars" /> + <androidx.appcompat.widget.AppCompatImageView android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" android:contentDescription="@string/label_user_away" app:srcCompat="@drawable/ic_clock" app:tint="?colorTextSecondary" /> @@ -92,7 +90,6 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" android:contentDescription="@string/label_reorder" app:srcCompat="@drawable/ic_reorder" app:tint="?colorTextSecondary" /> diff --git a/app/src/main/res/layout/widget_channel_search.xml b/app/src/main/res/layout/widget_channel_search.xml index 0227a0f9f..6030d6eb9 100644 --- a/app/src/main/res/layout/widget_channel_search.xml +++ b/app/src/main/res/layout/widget_channel_search.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -36,7 +36,6 @@ android:layout_height="@dimen/avatar_size_buffer" android:layout_gravity="center_vertical" android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" android:contentDescription="@string/label_avatar" tools:src="@tools:sample/avatars" /> @@ -72,7 +71,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" - android:layout_marginLeft="8dp" android:ellipsize="marquee" android:singleLine="true" android:textColor="?attr/colorTextSecondary" diff --git a/app/src/main/res/layout/widget_chatmessage_action.xml b/app/src/main/res/layout/widget_chatmessage_action.xml index b52536e5c..ea1c9d0b6 100644 --- a/app/src/main/res/layout/widget_chatmessage_action.xml +++ b/app/src/main/res/layout/widget_chatmessage_action.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -23,8 +23,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <include layout="@layout/widget_chatmessage_daychange" /> - <LinearLayout android:id="@+id/message_container" android:layout_width="match_parent" @@ -39,24 +37,11 @@ android:paddingBottom="@dimen/message_vertical" android:textAppearance="?android:attr/textAppearanceListItemSmall"> - <TextView - android:id="@+id/time_left" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="top" - android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" - android:textColor="?attr/colorForegroundSecondary" - android:typeface="monospace" - tools:text="@sample/messages.json/data/time" - tools:visibility="gone" /> - <FrameLayout android:id="@+id/avatar_container" android:layout_width="@dimen/avatar_size" android:layout_height="@dimen/avatar_size" android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" android:visibility="gone" tools:ignore="UselessParent" tools:visibility="visible"> @@ -99,7 +84,6 @@ android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginStart="@dimen/message_horizontal" - android:layout_marginLeft="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:textStyle="italic" android:visibility="gone" @@ -108,6 +92,19 @@ tools:textSize="11.9sp" tools:visibility="visible" /> </LinearLayout> + + <TextView + android:id="@+id/time_left" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top" + android:layout_marginEnd="@dimen/message_horizontal" + android:textColor="?attr/colorForegroundSecondary" + android:typeface="monospace" + tools:text="@sample/messages.json/data/time" + tools:visibility="gone" /> </LinearLayout> + <include layout="@layout/widget_chatmessage_daychange" /> + </LinearLayout> diff --git a/app/src/main/res/layout/widget_chatmessage_daychange.xml b/app/src/main/res/layout/widget_chatmessage_daychange.xml index 44793380a..ed644e4bb 100644 --- a/app/src/main/res/layout/widget_chatmessage_daychange.xml +++ b/app/src/main/res/layout/widget_chatmessage_daychange.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -37,6 +37,13 @@ android:paddingRight="@dimen/message_horizontal" android:paddingBottom="@dimen/message_vertical_daychange"> + <View + android:layout_width="0dip" + android:layout_height="1dp" + android:layout_gravity="center_vertical" + android:layout_weight="1" + android:background="?colorDivider" /> + <View android:layout_width="0dip" android:layout_height="1dp" @@ -58,12 +65,5 @@ android:textColor="?attr/colorForeground" android:textStyle="bold" tools:text="27.03.2018" /> - - <View - android:layout_width="0dip" - android:layout_height="1dp" - android:layout_gravity="center_vertical" - android:layout_weight="1" - android:background="?colorDivider" /> </LinearLayout> </LinearLayout> diff --git a/app/src/main/res/layout/widget_chatmessage_error.xml b/app/src/main/res/layout/widget_chatmessage_error.xml index 1a3242481..9a66e6e85 100644 --- a/app/src/main/res/layout/widget_chatmessage_error.xml +++ b/app/src/main/res/layout/widget_chatmessage_error.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,8 +24,6 @@ android:orientation="vertical" tools:showIn="@layout/chat_messages"> - <include layout="@layout/widget_chatmessage_daychange" /> - <LinearLayout android:id="@+id/message_container" android:layout_width="match_parent" @@ -40,41 +38,29 @@ android:paddingBottom="@dimen/message_vertical" android:textAppearance="?android:attr/textAppearanceListItemSmall"> + <Space + android:id="@+id/avatar_placeholder" + android:layout_width="@dimen/avatar_size" + android:layout_height="match_parent" + android:layout_marginEnd="@dimen/message_horizontal" + android:visibility="gone" /> + <TextView android:id="@+id/time_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:typeface="monospace" tools:text="@sample/messages.json/data/time" /> - <Space - android:id="@+id/avatar_placeholder" - android:layout_width="@dimen/avatar_size" - android:layout_height="match_parent" - android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" - android:visibility="gone" /> - - <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView - android:id="@+id/combined" - style="@style/Widget.RtlConformTextView" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_weight="1" - android:textColor="?attr/colorForegroundError" - tools:text="@sample/messages.json/data/message" /> - <TextView android:id="@+id/time_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginStart="@dimen/message_horizontal" - android:layout_marginLeft="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:textStyle="italic" android:visibility="gone" @@ -82,5 +68,16 @@ tools:text="@sample/messages.json/data/time" tools:textSize="11.9sp" tools:visibility="visible" /> + + <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView + android:id="@+id/combined" + style="@style/Widget.RtlConformTextView" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="?attr/colorForegroundError" + tools:text="@sample/messages.json/data/message" /> </LinearLayout> + + <include layout="@layout/widget_chatmessage_daychange" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_chatmessage_info.xml b/app/src/main/res/layout/widget_chatmessage_info.xml index eb61303f9..c10ab801e 100644 --- a/app/src/main/res/layout/widget_chatmessage_info.xml +++ b/app/src/main/res/layout/widget_chatmessage_info.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,8 +24,6 @@ android:orientation="vertical" tools:showIn="@layout/chat_messages"> - <include layout="@layout/widget_chatmessage_daychange" /> - <LinearLayout android:id="@+id/message_container" android:layout_width="match_parent" @@ -40,34 +38,22 @@ android:paddingBottom="@dimen/message_vertical" android:textAppearance="?android:attr/textAppearanceListItemSmall"> - <TextView - android:id="@+id/time_left" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="top" - android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" - android:textColor="?attr/colorForegroundSecondary" - android:typeface="monospace" - tools:text="@sample/messages.json/data/time" /> - <Space android:id="@+id/avatar_placeholder" android:layout_width="@dimen/avatar_size" android:layout_height="match_parent" android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" android:visibility="gone" /> - <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView - android:id="@+id/combined" - style="@style/Widget.RtlConformTextView" - android:layout_width="0dip" + <TextView + android:id="@+id/time_left" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" + android:layout_gravity="top" + android:layout_marginEnd="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" - android:textStyle="italic" - tools:text="@sample/messages.json/data/message" /> + android:typeface="monospace" + tools:text="@sample/messages.json/data/time" /> <TextView android:id="@+id/time_right" @@ -75,7 +61,6 @@ android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginStart="@dimen/message_horizontal" - android:layout_marginLeft="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:textStyle="italic" android:visibility="gone" @@ -83,5 +68,17 @@ tools:text="@sample/messages.json/data/time" tools:textSize="11.9sp" tools:visibility="visible" /> + + <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView + android:id="@+id/combined" + style="@style/Widget.RtlConformTextView" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="?attr/colorForegroundSecondary" + android:textStyle="italic" + tools:text="@sample/messages.json/data/message" /> </LinearLayout> + + <include layout="@layout/widget_chatmessage_daychange" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_chatmessage_notice.xml b/app/src/main/res/layout/widget_chatmessage_notice.xml index 5d69f7ee2..c1a3043fa 100644 --- a/app/src/main/res/layout/widget_chatmessage_notice.xml +++ b/app/src/main/res/layout/widget_chatmessage_notice.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,8 +24,6 @@ android:orientation="vertical" tools:showIn="@layout/chat_messages"> - <include layout="@layout/widget_chatmessage_daychange" /> - <LinearLayout android:id="@+id/message_container" android:layout_width="match_parent" @@ -40,41 +38,29 @@ android:paddingBottom="@dimen/message_vertical" android:textAppearance="?android:attr/textAppearanceListItemSmall"> + <Space + android:id="@+id/avatar_placeholder" + android:layout_width="@dimen/avatar_size" + android:layout_height="match_parent" + android:layout_marginEnd="@dimen/message_horizontal" + android:visibility="gone" /> + <TextView android:id="@+id/time_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:typeface="monospace" tools:text="@sample/messages.json/data/time" /> - <Space - android:id="@+id/avatar_placeholder" - android:layout_width="@dimen/avatar_size" - android:layout_height="match_parent" - android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" - android:visibility="gone" /> - - <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView - android:id="@+id/combined" - style="@style/Widget.RtlConformTextView" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_weight="1" - android:textColor="?attr/colorForegroundNotice" - tools:text="@sample/messages.json/data/message" /> - <TextView android:id="@+id/time_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginStart="@dimen/message_horizontal" - android:layout_marginLeft="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:textStyle="italic" android:visibility="gone" @@ -82,5 +68,16 @@ tools:text="@sample/messages.json/data/time" tools:textSize="11.9sp" tools:visibility="visible" /> + + <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView + android:id="@+id/combined" + style="@style/Widget.RtlConformTextView" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="?attr/colorForegroundNotice" + tools:text="@sample/messages.json/data/message" /> </LinearLayout> + + <include layout="@layout/widget_chatmessage_daychange" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_chatmessage_plain.xml b/app/src/main/res/layout/widget_chatmessage_plain.xml index 7016bc4ba..7ae5ca5b4 100644 --- a/app/src/main/res/layout/widget_chatmessage_plain.xml +++ b/app/src/main/res/layout/widget_chatmessage_plain.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,8 +24,6 @@ android:orientation="vertical" tools:showIn="@layout/chat_messages"> - <include layout="@layout/widget_chatmessage_daychange" /> - <LinearLayout android:id="@+id/message_container" android:layout_width="match_parent" @@ -38,24 +36,11 @@ android:paddingBottom="@dimen/message_vertical" android:textAppearance="?android:attr/textAppearanceListItemSmall"> - <TextView - android:id="@+id/time_left" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="top" - android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" - android:textColor="?attr/colorForegroundSecondary" - android:typeface="monospace" - tools:text="@sample/messages.json/data/time" - tools:visibility="gone" /> - <FrameLayout android:id="@+id/avatar_container" android:layout_width="@dimen/avatar_size" android:layout_height="@dimen/avatar_size" android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" android:visibility="gone" tools:visibility="visible"> @@ -77,6 +62,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + <Space + android:layout_width="4dp" + android:layout_height="0dip" /> + <TextView android:id="@+id/name" style="@style/Widget.RtlConformTextView" @@ -90,10 +79,6 @@ tools:text="@sample/messages.json/data/sender" tools:visibility="visible" /> - <Space - android:layout_width="4dp" - android:layout_height="0dip" /> - <TextView android:id="@+id/realname" style="@style/Widget.RtlConformTextView" @@ -147,7 +132,6 @@ android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginStart="@dimen/message_horizontal" - android:layout_marginLeft="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:textStyle="italic" android:visibility="gone" @@ -157,6 +141,19 @@ tools:visibility="visible" /> </LinearLayout> </LinearLayout> + + <TextView + android:id="@+id/time_left" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top" + android:layout_marginEnd="@dimen/message_horizontal" + android:textColor="?attr/colorForegroundSecondary" + android:typeface="monospace" + tools:text="@sample/messages.json/data/time" + tools:visibility="gone" /> </LinearLayout> + <include layout="@layout/widget_chatmessage_daychange" /> + </LinearLayout> diff --git a/app/src/main/res/layout/widget_chatmessage_server.xml b/app/src/main/res/layout/widget_chatmessage_server.xml index 7d339b8b2..3c9bc0630 100644 --- a/app/src/main/res/layout/widget_chatmessage_server.xml +++ b/app/src/main/res/layout/widget_chatmessage_server.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -24,8 +24,6 @@ android:orientation="vertical" tools:showIn="@layout/chat_messages"> - <include layout="@layout/widget_chatmessage_daychange" /> - <LinearLayout android:id="@+id/message_container" android:layout_width="match_parent" @@ -40,33 +38,22 @@ android:paddingBottom="@dimen/message_vertical" android:textAppearance="?android:attr/textAppearanceListItemSmall"> - <TextView - android:id="@+id/time_left" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="top" - android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" - android:textColor="?attr/colorForegroundSecondary" - android:typeface="monospace" - tools:text="@sample/messages.json/data/time" /> - <Space android:id="@+id/avatar_placeholder" android:layout_width="@dimen/avatar_size" android:layout_height="match_parent" android:layout_marginEnd="@dimen/message_horizontal" - android:layout_marginRight="@dimen/message_horizontal" android:visibility="gone" /> - <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView - android:id="@+id/combined" - style="@style/Widget.RtlConformTextView" - android:layout_width="0dip" + <TextView + android:id="@+id/time_left" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" + android:layout_gravity="top" + android:layout_marginEnd="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" - tools:text="@sample/messages.json/data/message" /> + android:typeface="monospace" + tools:text="@sample/messages.json/data/time" /> <TextView android:id="@+id/time_right" @@ -74,7 +61,6 @@ android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginStart="@dimen/message_horizontal" - android:layout_marginLeft="@dimen/message_horizontal" android:textColor="?attr/colorForegroundSecondary" android:textStyle="italic" android:visibility="gone" @@ -82,5 +68,16 @@ tools:text="@sample/messages.json/data/time" tools:textSize="11.9sp" tools:visibility="visible" /> + + <de.kuschku.quasseldroid.util.ui.view.RipplePassthroughTextView + android:id="@+id/combined" + style="@style/Widget.RtlConformTextView" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="?attr/colorForegroundSecondary" + tools:text="@sample/messages.json/data/message" /> </LinearLayout> + + <include layout="@layout/widget_chatmessage_daychange" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_client.xml b/app/src/main/res/layout/widget_client.xml index 40691d86b..f28eda5a5 100644 --- a/app/src/main/res/layout/widget_client.xml +++ b/app/src/main/res/layout/widget_client.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -67,6 +67,5 @@ android:layout_height="24dp" android:layout_gravity="top" android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" app:srcCompat="@drawable/ic_lock" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_contributor.xml b/app/src/main/res/layout/widget_contributor.xml index 95ba56859..8e21bca26 100644 --- a/app/src/main/res/layout/widget_contributor.xml +++ b/app/src/main/res/layout/widget_contributor.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,9 +25,7 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight" tools:showIn="@layout/preferences_about"> <LinearLayout diff --git a/app/src/main/res/layout/widget_core_account_add.xml b/app/src/main/res/layout/widget_core_account_add.xml index ef1f06e38..4762aab26 100644 --- a/app/src/main/res/layout/widget_core_account_add.xml +++ b/app/src/main/res/layout/widget_core_account_add.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -35,7 +35,6 @@ android:layout_height="32dp" android:layout_gravity="center_vertical" android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" android:tint="#727272" app:srcCompat="@drawable/ic_add" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/widget_crash.xml b/app/src/main/res/layout/widget_crash.xml index 2c92ac872..e6b502158 100644 --- a/app/src/main/res/layout/widget_crash.xml +++ b/app/src/main/res/layout/widget_crash.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,9 +25,7 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" - android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight"> + android:paddingEnd="?android:attr/listPreferredItemPaddingRight"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_emoji.xml b/app/src/main/res/layout/widget_emoji.xml index 41e2c57a5..8b261e4eb 100644 --- a/app/src/main/res/layout/widget_emoji.xml +++ b/app/src/main/res/layout/widget_emoji.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -34,7 +34,6 @@ android:layout_height="32dp" android:layout_gravity="center_vertical|start" android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" android:fontFamily="sans-serif-medium" android:gravity="center_vertical|start" android:singleLine="true" diff --git a/app/src/main/res/layout/widget_formatting.xml b/app/src/main/res/layout/widget_formatting.xml index 5444af863..bc5fdb3d3 100644 --- a/app/src/main/res/layout/widget_formatting.xml +++ b/app/src/main/res/layout/widget_formatting.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -27,66 +27,19 @@ android:layout_height="match_parent" android:padding="2dp"> - <androidx.appcompat.widget.AppCompatImageButton - android:id="@+id/action_format_bold" - style="@style/Widget.Button.Format" - android:contentDescription="@string/label_bold" - app:srcCompat="@drawable/ic_format_bold" - app:tint="?colorControlNormal" /> - - <Space - android:layout_width="2dp" - android:layout_height="match_parent" /> - - <androidx.appcompat.widget.AppCompatImageButton - android:id="@+id/action_format_italic" - style="@style/Widget.Button.Format" - android:contentDescription="@string/label_italic" - app:srcCompat="@drawable/ic_format_italic" - app:tint="?colorControlNormal" /> - - <Space - android:layout_width="2dp" - android:layout_height="match_parent" /> - - <androidx.appcompat.widget.AppCompatImageButton - android:id="@+id/action_format_underline" - style="@style/Widget.Button.Format" - android:contentDescription="@string/label_underline" - app:srcCompat="@drawable/ic_format_underline" - app:tint="?colorControlNormal" /> - - <Space - android:layout_width="2dp" - android:layout_height="match_parent" /> - - <androidx.appcompat.widget.AppCompatImageButton - android:id="@+id/action_format_strikethrough" - style="@style/Widget.Button.Format" - android:contentDescription="@string/label_strikethrough" - app:srcCompat="@drawable/ic_format_strikethrough" - app:tint="?colorControlNormal" /> - - <Space - android:layout_width="2dp" - android:layout_height="match_parent" /> - - <androidx.appcompat.widget.AppCompatImageButton - android:id="@+id/action_format_monospace" - style="@style/Widget.Button.Format" - android:contentDescription="@string/label_monospace" - app:srcCompat="@drawable/ic_format_monospace" - app:tint="?colorControlNormal" /> - - <Space - android:layout_width="2dp" - android:layout_height="match_parent" /> - <FrameLayout android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="center"> + <View + android:id="@+id/action_format_foreground_preview" + android:layout_width="match_parent" + android:layout_height="4dp" + android:layout_gravity="center_horizontal|bottom" + android:layout_margin="8dp" + android:background="?colorForeground" /> + <androidx.appcompat.widget.AppCompatImageButton android:id="@+id/action_format_foreground" style="@style/Widget.Button.Format" @@ -96,25 +49,21 @@ android:paddingBottom="4dp" app:srcCompat="@drawable/ic_format_foreground" app:tint="?colorControlNormal" /> - - <View - android:id="@+id/action_format_foreground_preview" - android:layout_width="match_parent" - android:layout_height="4dp" - android:layout_gravity="center_horizontal|bottom" - android:layout_margin="8dp" - android:background="?colorForeground" /> </FrameLayout> - <Space - android:layout_width="2dp" - android:layout_height="match_parent" /> - <FrameLayout android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="center"> + <View + android:id="@+id/action_format_background_preview" + android:layout_width="match_parent" + android:layout_height="4dp" + android:layout_gravity="center_horizontal|bottom" + android:layout_margin="8dp" + android:background="?colorBackground" /> + <androidx.appcompat.widget.AppCompatImageButton android:id="@+id/action_format_background" style="@style/Widget.Button.Format" @@ -124,20 +73,71 @@ android:paddingBottom="4dp" app:srcCompat="@drawable/ic_format_background" app:tint="?colorControlNormal" /> - - <View - android:id="@+id/action_format_background_preview" - android:layout_width="match_parent" - android:layout_height="4dp" - android:layout_gravity="center_horizontal|bottom" - android:layout_margin="8dp" - android:background="?colorBackground" /> </FrameLayout> <Space android:layout_width="2dp" android:layout_height="match_parent" /> + <Space + android:layout_width="2dp" + android:layout_height="match_parent" /> + + <Space + android:layout_width="2dp" + android:layout_height="match_parent" /> + + <Space + android:layout_width="2dp" + android:layout_height="match_parent" /> + + <Space + android:layout_width="2dp" + android:layout_height="match_parent" /> + + <Space + android:layout_width="2dp" + android:layout_height="match_parent" /> + + <Space + android:layout_width="2dp" + android:layout_height="match_parent" /> + + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/action_format_bold" + style="@style/Widget.Button.Format" + android:contentDescription="@string/label_bold" + app:srcCompat="@drawable/ic_format_bold" + app:tint="?colorControlNormal" /> + + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/action_format_italic" + style="@style/Widget.Button.Format" + android:contentDescription="@string/label_italic" + app:srcCompat="@drawable/ic_format_italic" + app:tint="?colorControlNormal" /> + + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/action_format_underline" + style="@style/Widget.Button.Format" + android:contentDescription="@string/label_underline" + app:srcCompat="@drawable/ic_format_underline" + app:tint="?colorControlNormal" /> + + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/action_format_strikethrough" + style="@style/Widget.Button.Format" + android:contentDescription="@string/label_strikethrough" + app:srcCompat="@drawable/ic_format_strikethrough" + app:tint="?colorControlNormal" /> + + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/action_format_monospace" + style="@style/Widget.Button.Format" + android:contentDescription="@string/label_monospace" + app:srcCompat="@drawable/ic_format_monospace" + app:tint="?colorControlNormal" /> + <androidx.appcompat.widget.AppCompatImageButton android:id="@+id/action_format_clear" style="@style/Widget.Button.Format" diff --git a/app/src/main/res/layout/widget_header.xml b/app/src/main/res/layout/widget_header.xml index 654625426..b8530f991 100644 --- a/app/src/main/res/layout/widget_header.xml +++ b/app/src/main/res/layout/widget_header.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -26,23 +26,21 @@ <LinearLayout style="@style/Widget.CoreSettings.PrimaryItemGroupHeader"> - <androidx.appcompat.widget.AppCompatImageView - style="@style/Widget.CoreSettings.PrimaryItemIcon" - app:srcCompat="@drawable/ic_clock" /> - <TextView android:id="@+id/title" style="@style/Widget.CoreSettings.PrimaryItemSwitch" tools:text="@string/label_temporarily_archived" /> + + <androidx.appcompat.widget.AppCompatImageView + style="@style/Widget.CoreSettings.PrimaryItemIcon" + app:srcCompat="@drawable/ic_clock" /> </LinearLayout> <TextView android:id="@+id/content" style="@style/Widget.CoreSettings.TextView" android:layout_marginStart="72dp" - android:layout_marginLeft="72dp" android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" tools:text="@string/label_temporarily_archived_long" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_inline_snackbar.xml b/app/src/main/res/layout/widget_inline_snackbar.xml index 3513ef481..64776b65b 100644 --- a/app/src/main/res/layout/widget_inline_snackbar.xml +++ b/app/src/main/res/layout/widget_inline_snackbar.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -36,7 +36,6 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" android:layout_weight="1" android:textColor="?colorOnPrimary" tools:text="This server supports SASL" /> diff --git a/app/src/main/res/layout/widget_library.xml b/app/src/main/res/layout/widget_library.xml index 071b1b8b8..b2ee94ae4 100644 --- a/app/src/main/res/layout/widget_library.xml +++ b/app/src/main/res/layout/widget_library.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -26,9 +26,7 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight" tools:showIn="@layout/preferences_about"> <LinearLayout diff --git a/app/src/main/res/layout/widget_missing_feature.xml b/app/src/main/res/layout/widget_missing_feature.xml index 389b19fe4..d56b3e7ee 100644 --- a/app/src/main/res/layout/widget_missing_feature.xml +++ b/app/src/main/res/layout/widget_missing_feature.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -26,9 +26,7 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight" tools:showIn="@layout/dialog_missing_features"> <LinearLayout diff --git a/app/src/main/res/layout/widget_network.xml b/app/src/main/res/layout/widget_network.xml index e052974c0..291703b6f 100644 --- a/app/src/main/res/layout/widget_network.xml +++ b/app/src/main/res/layout/widget_network.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,11 +25,6 @@ android:background="?attr/backgroundMenuItem" android:orientation="vertical"> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?attr/colorDivider" /> - <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -68,4 +63,9 @@ app:srcCompat="@drawable/ic_chevron_down" app:tint="?attr/colorTextSecondary" /> </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?attr/colorDivider" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_nick.xml b/app/src/main/res/layout/widget_nick.xml index f80f0ba04..e9fb18946 100644 --- a/app/src/main/res/layout/widget_nick.xml +++ b/app/src/main/res/layout/widget_nick.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -36,7 +36,6 @@ android:layout_height="@dimen/avatar_size" android:layout_gravity="center_vertical" android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" android:contentDescription="@string/label_avatar" tools:src="@tools:sample/avatars" /> diff --git a/app/src/main/res/layout/widget_nick_away.xml b/app/src/main/res/layout/widget_nick_away.xml index 1fae09e59..b03ec2064 100644 --- a/app/src/main/res/layout/widget_nick_away.xml +++ b/app/src/main/res/layout/widget_nick_away.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -36,7 +36,6 @@ android:layout_height="@dimen/avatar_size" android:layout_gravity="center_vertical" android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" android:contentDescription="@string/label_avatar" tools:src="@tools:sample/avatars" /> @@ -78,7 +77,6 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" android:contentDescription="@string/label_user_away" app:srcCompat="@drawable/ic_clock" app:tint="?colorTextSecondary" /> diff --git a/app/src/main/res/layout/widget_translator.xml b/app/src/main/res/layout/widget_translator.xml index d94d08739..7fdc18a82 100644 --- a/app/src/main/res/layout/widget_translator.xml +++ b/app/src/main/res/layout/widget_translator.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -25,9 +25,7 @@ android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?android:attr/listPreferredItemPaddingLeft" - android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingEnd="?android:attr/listPreferredItemPaddingRight" - android:paddingRight="?android:attr/listPreferredItemPaddingRight" tools:showIn="@layout/preferences_about"> <LinearLayout diff --git a/app/src/main/res/layout/widget_warning_bar.xml b/app/src/main/res/layout/widget_warning_bar.xml index 2c94f1746..b0df357ab 100644 --- a/app/src/main/res/layout/widget_warning_bar.xml +++ b/app/src/main/res/layout/widget_warning_bar.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -29,6 +29,13 @@ android:paddingBottom="6dp" android:theme="?attr/actionBarTheme"> + <TextView + android:id="@+id/text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:textColor="?android:textColorPrimary" /> + <androidx.appcompat.widget.AppCompatImageView android:id="@+id/icon" android:layout_width="20dp" @@ -46,12 +53,4 @@ android:visibility="gone" app:mpb_indeterminateTint="?android:textColorPrimary" /> - <TextView - android:id="@+id/text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" - android:textColor="?android:textColorPrimary" /> - </LinearLayout> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 78644456f..a66f3f457 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,13 +18,17 @@ --> <resources xmlns:tools="http://schemas.android.com/tools"> + <plurals name="label_user_count"> + <item quantity="one">%1$d Benutzer</item> + <item quantity="other">%1$d Benutzer</item> + </plurals> <string name="app_name">Quasseldroid</string> <string name="app_description">Ein Android-Client für das dezentralen Quassel IRC Client.</string> - <string name="app_description_long">Quassel ist ein dezentraler IRC client, entwickelt in C++ mit Qt. Quasseldroid ist ein Kotlin-basierter Client für den Quassel Core, der es ermöglicht, Quassel auch auf Android™-Telefonen zu nutzen.</string> + <string name="app_description_long">Quassel ist ein dezentraler IRC client, entwickelt in C++ mit Qt. Quasseldroid ist ein Kotlin-basierter Client für den Quassel Core, der es ermöglicht, Quassel auch auf Android™-Telefonen zu nutzen.</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="connection_service_description">Hält eine Verbindung zum Core, um Benachrichtigungen und die Übertragung von Nachrichten zu ermöglichen</string> <string name="label_about">Über</string> <string name="label_accept">Akzeptieren</string> <string name="label_acknowledgements">Danksagungen</string> @@ -155,12 +159,8 @@ <string name="label_who_long">Informationen aller Nutzer aktualisieren</string> <string name="label_whois">Whois</string> <string name="label_whois_long">Nutzerinformationen aktualisieren</string> - <string name="label_yes">Ja</string> - <plurals name="label_user_count"> - <item quantity="one">%1$d Benutzer</item> - <item quantity="other">%1$d Benutzer</item> - </plurals> + <string name="label_yes">Ja</string> <string name="label_feature_synchronizedmarkerline">Benötigt um die vorherige Position in Chats zu synchronisieren</string> <string name="label_feature_saslauthentication">Benötigt für SASL</string> diff --git a/app/src/main/res/values-de/strings_messages.xml b/app/src/main/res/values-de/strings_messages.xml index 3ad2b476c..7cb1f08af 100644 --- a/app/src/main/res/values-de/strings_messages.xml +++ b/app/src/main/res/values-de/strings_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,15 +18,23 @@ --> <resources> + <plurals name="message_netsplit_join"> + <item quantity="one">Netsplit zwischen %1$s und %2$s beendet: %3$d Nutzer war betroffen: %4$s</item> + <item quantity="other">Netsplit zwischen %1$s und %2$s beendet: %3$d Nutzer waren betroffen: %4$s</item> + </plurals> + <plurals name="message_netsplit_quit"> + <item quantity="one">Netsplit zwischen %1$s und %2$s: %3$d Nutzer ist betroffen: %4$s</item> + <item quantity="other">Netsplit zwischen %1$s und %2$s: %3$d Nutzer sind betroffen: %4$s</item> + </plurals> <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_copy">[%1$s] %2$s</string> <string name="message_format_copy_complex">[%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> @@ -41,12 +49,4 @@ <string name="message_format_kick_2">%1$s wurde von %2$s%3$s aus dem Chat geworfen (%4$s)</string> <string name="message_format_kill_1">%1$s wurde von %2$s%3$s aus dem Netzwerk geworfen</string> <string name="message_format_kill_2">%1$s wurde von %2$s%3$s aus dem Netzwerk geworfen (%4$s)</string> - <plurals name="message_netsplit_join"> - <item quantity="one">Netsplit zwischen %1$s und %2$s beendet: %3$d Nutzer war betroffen: %4$s</item> - <item quantity="other">Netsplit zwischen %1$s und %2$s beendet: %3$d Nutzer waren betroffen: %4$s</item> - </plurals> - <plurals name="message_netsplit_quit"> - <item quantity="one">Netsplit zwischen %1$s und %2$s: %3$d Nutzer ist betroffen: %4$s</item> - <item quantity="other">Netsplit zwischen %1$s und %2$s: %3$d Nutzer sind betroffen: %4$s</item> - </plurals> </resources> diff --git a/app/src/main/res/values-fr-rCA/strings_messages.xml b/app/src/main/res/values-fr-rCA/strings_messages.xml index 2e0598e89..a7419f730 100644 --- a/app/src/main/res/values-fr-rCA/strings_messages.xml +++ b/app/src/main/res/values-fr-rCA/strings_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,15 +18,23 @@ --> <resources> + <plurals name="message_netsplit_join"> + <item quantity="one">Netsplit entre %1$s et %2$s est terminé: %3$d nouvel utilisateur: %4$s</item> + <item quantity="other">Netsplit entre %1$s et %2$s est terminé: %3$d nouveaux utilisateurs: %4$s</item> + </plurals> + <plurals name="message_netsplit_quit"> + <item quantity="one">Netsplit entre %1$s et %2$s: %3$d utilisateur a quitté: %4$s</item> + <item quantity="other">Netsplit entre %1$s et %2$s: %3$d utilisateurs ont quittés: %4$s</item> + </plurals> <string name="message_type_join">Joindre</string> <string name="message_type_part">Partir</string> <string name="message_type_quit">Quitter</string> <string name="message_type_nick">Nom</string> <string name="message_type_mode">Mode</string> <string name="message_type_topic">Topique</string> + <string name="message_format_copy">[%1$s] %2$s</string> <string name="message_format_copy_complex">[%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 est maintenant connu selon: %3$s%4$s</string> @@ -41,12 +49,4 @@ <string name="message_format_kick_2">%1$s a été expulsé par %2$s%3$s (%4$s)</string> <string name="message_format_kill_1">%1$s a été supprimé %2$s%3$s</string> <string name="message_format_kill_2">%1$s a été supprimé par %2$s%3$s (%4$s)</string> - <plurals name="message_netsplit_join"> - <item quantity="one">Netsplit entre %1$s et %2$s est terminé: %3$d nouvel utilisateur: %4$s</item> - <item quantity="other">Netsplit entre %1$s et %2$s est terminé: %3$d nouveaux utilisateurs: %4$s</item> - </plurals> - <plurals name="message_netsplit_quit"> - <item quantity="one">Netsplit entre %1$s et %2$s: %3$d utilisateur a quitté: %4$s</item> - <item quantity="other">Netsplit entre %1$s et %2$s: %3$d utilisateurs ont quittés: %4$s</item> - </plurals> </resources> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 8b830ffaf..d9dfed1ea 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,13 +18,17 @@ --> <resources xmlns:tools="http://schemas.android.com/tools"> + <plurals name="label_user_count"> + <item quantity="one">%1$d utente</item> + <item quantity="other">%1$d utenti</item> + </plurals> <string name="app_name">Quasseldroid</string> <string name="app_description">Un client Android per utilizzare IRC in modo decentralizzato con Quassel.</string> - <string name="app_description_long">Quassel è un client IRC distribuito e decentralizzato, scritto in C++ e Qt. Quasseldroid è un client per il core Quassel scritto interamente in Kotlin che ti offre la possibilità di connetterti ad un core Quassel con il tuo telefono Android™.</string> + <string name="app_description_long">Quassel è un client IRC distribuito e decentralizzato, scritto in C++ e Qt. Quasseldroid è un client per il core Quassel scritto interamente in Kotlin che ti offre la possibilità di connetterti ad un core Quassel con il tuo telefono Android™.</string> <string name="connection_service_title">Servizio di connessione</string> - <string name="connection_service_description">Mantiene la connessione al core per ricevere notifiche e trasmettere messaggi.</string> + <string name="connection_service_description">Mantiene la connessione al core per ricevere notifiche e trasmettere messaggi.</string> <string name="label_about">Informazioni</string> <string name="label_accept">Accetta</string> <string name="label_acknowledgements">Ringraziamenti</string> @@ -155,12 +159,8 @@ <string name="label_who_long">Aggiorna le informazioni per tutti gli utenti</string> <string name="label_whois">Whois</string> <string name="label_whois_long">Aggiorna le informazioni dell’utente</string> - <string name="label_yes">Sì</string> - <plurals name="label_user_count"> - <item quantity="one">%1$d utente</item> - <item quantity="other">%1$d utenti</item> - </plurals> + <string name="label_yes">Sì</string> <string name="label_feature_synchronizedmarkerline">Necessario per sincronizzare l’ultima posizione nei canali</string> <string name="label_feature_saslauthentication">Necessario per SASL</string> diff --git a/app/src/main/res/values-it/strings_messages.xml b/app/src/main/res/values-it/strings_messages.xml index a6db684e0..5a6daa9ff 100644 --- a/app/src/main/res/values-it/strings_messages.xml +++ b/app/src/main/res/values-it/strings_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,15 +18,23 @@ --> <resources> + <plurals name="message_netsplit_join"> + <item quantity="one">Netsplit tra %1$s e %2$s terminato: %3$d utente entrato: %4$s</item> + <item quantity="other">Netsplit tra %1$s e %2$s terminato: %3$d utenti entrati: %4$s</item> + </plurals> + <plurals name="message_netsplit_quit"> + <item quantity="one">Netsplit tra %1$s e %2$s: %3$d utente disconnesso: %4$s</item> + <item quantity="other">Netsplit tra %1$s e %2$s: %3$d utenti disconnessi: %4$s</item> + </plurals> <string name="message_type_join">Entrato</string> <string name="message_type_part">Uscito</string> <string name="message_type_quit">Disconnesso</string> <string name="message_type_nick">Nick</string> <string name="message_type_mode">Modo</string> <string name="message_type_topic">Argomento</string> + <string name="message_format_copy">[%1$s] %2$s</string> <string name="message_format_copy_complex">[%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 è ora conosciuto come %3$s%4$s</string> @@ -41,12 +49,4 @@ <string name="message_format_kick_2">%1$s è stato espulso da %2$s%3$s (%4$s)</string> <string name="message_format_kill_1">%1$s è stato disconnesso forzatamente da %2$s%3$s</string> <string name="message_format_kill_2">%1$s è stato disconnesso forzatamente da %2$s%3$s (%4$s)</string> - <plurals name="message_netsplit_join"> - <item quantity="one">Netsplit tra %1$s e %2$s terminato: %3$d utente entrato: %4$s</item> - <item quantity="other">Netsplit tra %1$s e %2$s terminato: %3$d utenti entrati: %4$s</item> - </plurals> - <plurals name="message_netsplit_quit"> - <item quantity="one">Netsplit tra %1$s e %2$s: %3$d utente disconnesso: %4$s</item> - <item quantity="other">Netsplit tra %1$s e %2$s: %3$d utenti disconnessi: %4$s</item> - </plurals> </resources> diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 21803b8b4..06a98b5d0 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,13 +18,19 @@ --> <resources xmlns:tools="http://schemas.android.com/tools"> + <plurals name="label_user_count" tools:ignore="UnusedQuantity"> + <item quantity="one">%1$d vartotojas</item> + <item quantity="few">%1$d vartotojai</item> + <item quantity="many">%1$d vartotojų</item> + <item quantity="other">%1$d vartotojų</item> + </plurals> <string name="app_name">Quasseldroid</string> <string name="app_description">Android klientas decentralizuotam Quassel IRC klientui.</string> - <string name="app_description_long">Quassel yra išskirstytas, decentralizuotas IRC klientas, parašytas C++ ir Qt kalbomis. Quasseldroid yra klientas Quassel branduoliui, leidžiantis jums prisijungti prie Quassel branduolio naudojantis jūsų Android™ įrenginiu.</string> + <string name="app_description_long">Quassel yra išskirstytas, decentralizuotas IRC klientas, parašytas C++ ir Qt kalbomis. Quasseldroid yra klientas Quassel branduoliui, leidžiantis jums prisijungti prie Quassel branduolio naudojantis jūsų Android™ įrenginiu.</string> <string name="connection_service_title">Ryšio tarnyba</string> - <string name="connection_service_description">Palaiko ryšį su jūsų branduoliu, jog būtų galima siųsti žinutes ir gauti pranešimus.</string> + <string name="connection_service_description">Palaiko ryšį su jūsų branduoliu, jog būtų galima siųsti žinutes ir gauti pranešimus.</string> <string name="label_about">Apie</string> <string name="label_accept">Priimti</string> <string name="label_acknowledgements">Padėkos</string> @@ -153,14 +159,8 @@ <string name="label_who_long">Atnaujinti visų vartotojų informaciją</string> <string name="label_whois">Whois</string> <string name="label_whois_long">Atnaujinti vartotojo informaciją</string> - <string name="label_yes">Taip</string> - <plurals name="label_user_count" tools:ignore="UnusedQuantity"> - <item quantity="one">%1$d vartotojas</item> - <item quantity="few">%1$d vartotojai</item> - <item quantity="many">%1$d vartotojų</item> - <item quantity="other">%1$d vartotojų</item> - </plurals> + <string name="label_yes">Taip</string> <string name="label_feature_synchronizedmarkerline">Reikalinga norint sinchronizuoti poziciją kanaluose</string> <string name="label_feature_saslauthentication">Reikalinga SASL</string> diff --git a/app/src/main/res/values-lt/strings_messages.xml b/app/src/main/res/values-lt/strings_messages.xml index 28874a39a..fc749d470 100644 --- a/app/src/main/res/values-lt/strings_messages.xml +++ b/app/src/main/res/values-lt/strings_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,15 +18,27 @@ --> <resources xmlns:tools="http://schemas.android.com/tools"> + <plurals name="message_netsplit_join" tools:ignore="UnusedQuantity"> + <item quantity="one">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojas prisijungė: %4$s</item> + <item quantity="few">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojai prisijungė: %4$s</item> + <item quantity="many">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojų prisijungė: %4$s</item> + <item quantity="other">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojų prisijungė: %4$s</item> + </plurals> + <plurals name="message_netsplit_quit" tools:ignore="UnusedQuantity"> + <item quantity="one">Netsplit tarp %1$s ir %2$s: %3$d vartotojas išėjo: %4$s</item> + <item quantity="few">Netsplit tarp %1$s ir %2$s: %3$d vartotojai išėjo: %4$s</item> + <item quantity="many">Netsplit tarp %1$s ir %2$s: %3$d vartotojų išėjo: %4$s</item> + <item quantity="other">Netsplit tarp %1$s ir %2$s: %3$d vartotojų išėjo: %4$s</item> + </plurals> <string name="message_type_join">Prisijungimas</string> <string name="message_type_part">Atsijungimas</string> <string name="message_type_quit">Išėjimas</string> <string name="message_type_nick">Slapyvardis</string> <string name="message_type_mode">Rėžimas</string> <string name="message_type_topic">Tema</string> + <string name="message_format_copy">[%1$s] %2$s</string> <string name="message_format_copy_complex">[%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 dabar žinomas kaip %3$s%4$s</string> @@ -39,19 +51,7 @@ <string name="message_format_quit_2">%1$s%2$s išėjo (%3$s)</string> <string name="message_format_kick_1">%1$s buvo išspirtas %2$s%3$s</string> <string name="message_format_kick_2">%1$s buvo išspirtas %2$s%3$s (%4$s)</string> + <!-- Transifex’ quantity handling is different from Android’s. Issue opened on 2018-05-18 --> <string name="message_format_kill_1">%1$s buvo nužudytas %2$s%3$s</string> <string name="message_format_kill_2">%1$s buvo nužudytas %2$s%3$s (%4$s)</string> - <!-- Transifex’ quantity handling is different from Android’s. Issue opened on 2018-05-18 --> - <plurals name="message_netsplit_join" tools:ignore="UnusedQuantity"> - <item quantity="one">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojas prisijungė: %4$s</item> - <item quantity="few">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojai prisijungė: %4$s</item> - <item quantity="many">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojų prisijungė: %4$s</item> - <item quantity="other">Netsplit tarp %1$s ir %2$s baigėsi: %3$d vartotojų prisijungė: %4$s</item> - </plurals> - <plurals name="message_netsplit_quit" tools:ignore="UnusedQuantity"> - <item quantity="one">Netsplit tarp %1$s ir %2$s: %3$d vartotojas išėjo: %4$s</item> - <item quantity="few">Netsplit tarp %1$s ir %2$s: %3$d vartotojai išėjo: %4$s</item> - <item quantity="many">Netsplit tarp %1$s ir %2$s: %3$d vartotojų išėjo: %4$s</item> - <item quantity="other">Netsplit tarp %1$s ir %2$s: %3$d vartotojų išėjo: %4$s</item> - </plurals> </resources> diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 08770c933..a20109170 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,13 +18,17 @@ --> <resources xmlns:tools="http://schemas.android.com/tools"> + <plurals name="label_user_count"> + <item quantity="one">%1$d utilizadores</item> + <item quantity="other">%1$d utilizadores</item> + </plurals> <string name="app_name">Quasseldroid</string> <string name="app_description">Um cliente baseado no Android para o cliente de IRC Quassel descentralizado.</string> - <string name="app_description_long">Quassel é um cliente IRC distribuído e descentralizado, escrito usando C++ e Qt. O Quasseldroid é um cliente escrito puramente em kotlin para o núcleo Quassel, permitindo que você se ligue ao seu núcleo Quassel usando o seu telemóvel Android™.</string> + <string name="app_description_long">Quassel é um cliente IRC distribuído e descentralizado, escrito usando C++ e Qt. O Quasseldroid é um cliente escrito puramente em kotlin para o núcleo Quassel, permitindo que você se ligue ao seu núcleo Quassel usando o seu telemóvel Android™.</string> <string name="connection_service_title">Serviço de Ligação</string> - <string name="connection_service_description">Mantém uma ligação com o seu núcleo para permitir notificações e transmissão de mensagens.</string> + <string name="connection_service_description">Mantém uma ligação com o seu núcleo para permitir notificações e transmissão de mensagens.</string> <string name="label_about">Sobre</string> <string name="label_accept">Aceitar</string> <string name="label_acknowledgements">Agradecimentos</string> @@ -153,12 +157,8 @@ <string name="label_who_long">Atualizar as informações de utilizador de todos os utilizadores</string> <string name="label_whois">Whois</string> <string name="label_whois_long">Atualizar informações de utilizador</string> - <string name="label_yes">Sim</string> - <plurals name="label_user_count"> - <item quantity="one">%1$d utilizadores</item> - <item quantity="other">%1$d utilizadores</item> - </plurals> + <string name="label_yes">Sim</string> <string name="label_feature_synchronizedmarkerline">Necessário para sincronizar a última posição nos canais</string> <string name="label_feature_saslauthentication">Necessario para SASL</string> diff --git a/app/src/main/res/values-pt/strings_messages.xml b/app/src/main/res/values-pt/strings_messages.xml index 7bec4264b..8ed0c3164 100644 --- a/app/src/main/res/values-pt/strings_messages.xml +++ b/app/src/main/res/values-pt/strings_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,15 +18,23 @@ --> <resources> + <plurals name="message_netsplit_join"> + <item quantity="one">Netsplit entre %1$s e %2$s terminou: %3$d utilizadores entraram: %4$s</item> + <item quantity="other">Netsplit entre %1$s e %2$s terminou: %3$d utilizadores entraram: %4$s</item> + </plurals> + <plurals name="message_netsplit_quit"> + <item quantity="one">Netsplit entre %1$s and %2$s: %3$d user qui: %4$s</item> + <item quantity="other">Netsplit entre %1$s e %2$s: %3$d utilizadores saíram: %4$s</item> + </plurals> <string name="message_type_join">Entrar</string> <string name="message_type_part">Sair</string> <string name="message_type_quit">Desligar</string> <string name="message_type_nick">Nick</string> <string name="message_type_mode">Modo</string> <string name="message_type_topic">Tópico</string> + <string name="message_format_copy">[%1$s] %2$s</string> <string name="message_format_copy_complex">[%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 é agora conhecido/a como %3$s%4$s</string> @@ -41,12 +49,4 @@ <string name="message_format_kick_2">%1$s foi kickado por %2$s%3$s (%4$s)</string> <string name="message_format_kill_1">%1$s foi killado por %2$s%3$s</string> <string name="message_format_kill_2">%1$s foi killado por %2$s%3$s (%4$s)</string> - <plurals name="message_netsplit_join"> - <item quantity="one">Netsplit entre %1$s e %2$s terminou: %3$d utilizadores entraram: %4$s</item> - <item quantity="other">Netsplit entre %1$s e %2$s terminou: %3$d utilizadores entraram: %4$s</item> - </plurals> - <plurals name="message_netsplit_quit"> - <item quantity="one">Netsplit entre %1$s and %2$s: %3$d user qui: %4$s</item> - <item quantity="other">Netsplit entre %1$s e %2$s: %3$d utilizadores saíram: %4$s</item> - </plurals> </resources> diff --git a/app/src/main/res/values-sr/strings_messages.xml b/app/src/main/res/values-sr/strings_messages.xml index 2b8c67752..e72e3182e 100644 --- a/app/src/main/res/values-sr/strings_messages.xml +++ b/app/src/main/res/values-sr/strings_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,15 +18,25 @@ --> <resources> + <plurals name="message_netsplit_join"> + <item quantity="one">Netsplit između %1$s i %2$s se završio: %3$d se pridružio/la: %4$s</item> + <item quantity="few">Netsplit između %1$s i %2$s se završio: %3$d su se pridružili: %4$s</item> + <item quantity="other">Netsplit između %1$s i %2$s se završio: %3$d korisnika se pridružilo: %4$s</item> + </plurals> + <plurals name="message_netsplit_quit"> + <item quantity="one">Netsplit između %1$s i %2$s: %3$d je napustio/la: %4$s</item> + <item quantity="few">Netsplit između %1$s i %2$s: %3$d su napustili: %4$s</item> + <item quantity="other">Netsplit između %1$s i %2$s: %3$d korisnika je prekinulo vezu: %4$s</item> + </plurals> <string name="message_type_join">Pridruži se</string> <string name="message_type_part">Napusti</string> <string name="message_type_quit">Izađi</string> <string name="message_type_nick">Nadimak</string> <string name="message_type_mode">Mod</string> <string name="message_type_topic">Tema</string> + <string name="message_format_copy">[%1$s] %2$s</string> <string name="message_format_copy_complex">[%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 je sada poznat/a kao %3$s%4$s</string> @@ -41,14 +51,4 @@ <string name="message_format_kick_2">%1$s je izbačen od %2$s%3$s (%4$s)</string> <string name="message_format_kill_1">%1$s je ubijen/na od %2$s%3$s</string> <string name="message_format_kill_2">%1$s je ubijen/na od %2$s%3$s (%4$s)</string> - <plurals name="message_netsplit_join"> - <item quantity="one">Netsplit između %1$s i %2$s se završio: %3$d se pridružio/la: %4$s</item> - <item quantity="few">Netsplit između %1$s i %2$s se završio: %3$d su se pridružili: %4$s</item> - <item quantity="other">Netsplit između %1$s i %2$s se završio: %3$d korisnika se pridružilo: %4$s</item> - </plurals> - <plurals name="message_netsplit_quit"> - <item quantity="one">Netsplit između %1$s i %2$s: %3$d je napustio/la: %4$s</item> - <item quantity="few">Netsplit između %1$s i %2$s: %3$d su napustili: %4$s</item> - <item quantity="other">Netsplit između %1$s i %2$s: %3$d korisnika je prekinulo vezu: %4$s</item> - </plurals> </resources> diff --git a/app/src/main/res/values-v17/styles_widgets.xml b/app/src/main/res/values-v17/styles_widgets.xml deleted file mode 100644 index c975c6f82..000000000 --- a/app/src/main/res/values-v17/styles_widgets.xml +++ /dev/null @@ -1,172 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><!-- - Quasseldroid - Quassel client for Android - - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License version 3 as published - by the Free Software Foundation. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see <http://www.gnu.org/licenses/>. - --> - -<resources> - - <style name="Widget.RtlConformTextView" parent=""> - <item name="android:textAlignment">gravity</item> - <item name="android:textDirection">locale</item> - </style> - - <style name="Widget.CoreSettings.Wrapper" parent=""> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:orientation">vertical</item> - <item name="android:paddingStart">?listPreferredItemPaddingLeft</item> - <item name="android:paddingLeft">?listPreferredItemPaddingLeft</item> - <item name="android:paddingEnd">?listPreferredItemPaddingRight</item> - <item name="android:paddingRight">?listPreferredItemPaddingRight</item> - <item name="android:paddingTop">8dp</item> - <item name="android:paddingBottom">8dp</item> - </style> - - <style name="Widget.CoreSettings.PrimaryItemGroupHeader" parent=""> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:background">?selectableItemBackground</item> - <item name="android:gravity">center_vertical</item> - <item name="android:minHeight">?listPreferredItemHeightSmall</item> - <item name="android:paddingEnd">?listPreferredItemPaddingRight</item> - <item name="android:paddingLeft">?listPreferredItemPaddingLeft</item> - <item name="android:paddingRight">?listPreferredItemPaddingRight</item> - <item name="android:paddingStart">?listPreferredItemPaddingLeft</item> - </style> - - <style name="Widget.CoreSettings.PrimaryItemGroup" parent=""> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:layout_marginLeft">72dp</item> - <item name="android:layout_marginStart">72dp</item> - <item name="android:orientation">vertical</item> - </style> - - <style name="Widget.CoreSettings.PrimaryItemIcon" parent=""> - <item name="android:layout_width">24dp</item> - <item name="android:layout_height">24dp</item> - <item name="android:layout_gravity">center_vertical</item> - <item name="android:layout_marginRight">32dp</item> - <item name="android:layout_marginEnd">32dp</item> - <item name="tint">?colorTextSecondary</item> - </style> - - <style name="Widget.CoreSettings.DependentGroup" parent=""> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:orientation">vertical</item> - <item name="android:visibility">gone</item> - <item name="android:layout_marginLeft">56dp</item> - <item name="android:layout_marginStart">56dp</item> - </style> - - <style name="Widget.CoreSettings.EditTextSuffix" parent="Widget.RtlConformTextView"> - <item name="android:layout_width">wrap_content</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:layout_gravity">bottom|end</item> - <item name="android:layout_marginBottom">12dp</item> - <item name="android:layout_marginEnd">8dp</item> - <item name="android:layout_marginRight">8dp</item> - <item name="android:textColor">?colorTextSecondary</item> - </style> - - <style name="Widget.CoreSettings.SubHeader" parent="Widget.RtlConformTextView"> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:layout_gravity">center_vertical</item> - <item name="android:paddingTop">10dp</item> - <item name="android:paddingBottom">10dp</item> - <item name="android:paddingRight">16dp</item> - <item name="android:paddingEnd">16dp</item> - <item name="android:gravity">center_vertical</item> - <item name="android:textAppearance">?android:textAppearanceMedium</item> - <item name="android:textSize">14sp</item> - <item name="android:textColor">?colorTextPrimary</item> - <item name="android:textStyle">bold</item> - </style> - - <style name="Widget.CoreSettings.TextView" parent="Widget.RtlConformTextView"> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:layout_gravity">center_vertical</item> - <item name="android:paddingTop">10dp</item> - <item name="android:paddingBottom">10dp</item> - <item name="android:paddingRight">16dp</item> - <item name="android:paddingEnd">16dp</item> - <item name="android:gravity">center_vertical</item> - <item name="android:textAppearance">?android:textAppearanceMedium</item> - <item name="android:textSize">14sp</item> - <item name="android:textColor">?colorTextSecondary</item> - </style> - - <style name="Widget.Info.Header" parent=""> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:gravity">center_vertical</item> - <item name="android:minHeight">?listPreferredItemHeight</item> - <item name="android:orientation">vertical</item> - <item name="android:paddingBottom">8dp</item> - <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingStart">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingTop">8dp</item> - </style> - - <style name="Widget.Info.Section" parent="Widget.RtlConformTextView"> - <item name="android:layout_width">wrap_content</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:gravity">center_vertical</item> - <item name="android:minHeight">48dp</item> - <item name="android:paddingBottom">8dp</item> - <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingStart">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingTop">8dp</item> - <item name="android:textColor">?colorTextPrimary</item> - <item name="android:textStyle">bold</item> - </style> - - <style name="Widget.Info.Item" parent=""> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:gravity">center_vertical</item> - <item name="android:minHeight">?android:attr/listPreferredItemHeightSmall</item> - <item name="android:orientation">vertical</item> - <item name="android:paddingBottom">16dp</item> - <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingStart">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingTop">16dp</item> - </style> - - <style name="Widget.Subhead" parent="Widget.RtlConformTextView"> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:gravity">center_vertical</item> - <item name="android:minHeight">?listPreferredItemHeightSmall</item> - <item name="android:paddingEnd">?listPreferredItemPaddingRight</item> - <item name="android:paddingLeft">?listPreferredItemPaddingLeft</item> - <item name="android:paddingRight">?listPreferredItemPaddingRight</item> - <item name="android:paddingStart">?listPreferredItemPaddingLeft</item> - <item name="android:textColor">?colorAccent</item> - <item name="android:textSize">14sp</item> - <item name="android:textStyle">bold</item> - </style> -</resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 560cce6ab..cbde82b7e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,13 +18,17 @@ --> <resources xmlns:tools="http://schemas.android.com/tools"> + <plurals name="label_user_count"> + <item quantity="one">%1$d user</item> + <item quantity="other">%1$d users</item> + </plurals> <string name="app_name">Quasseldroid</string> <string name="app_description">An Android-based client for the decentralized Quassel IRC client.</string> - <string name="app_description_long">Quassel is a distributed, decentralized IRC client, written using C++ and Qt. Quasseldroid is a pure-kotlin client for the Quassel core, allowing you to connect to your Quassel core using your Android™ phone.</string> + <string name="app_description_long">Quassel is a distributed, decentralized IRC client, written using C++ and Qt. Quasseldroid is a pure-kotlin client for the Quassel core, allowing you to connect to your Quassel core using your Android™ phone.</string> <string name="connection_service_title">Connection Service</string> - <string name="connection_service_description">Keeps a connection to your core to allow for notifications, and to transmit messages.</string> + <string name="connection_service_description">Keeps a connection to your core to allow for notifications, and to transmit messages.</string> <string name="label_about">About</string> <string name="label_accept">Accept</string> <string name="label_acknowledgements">Acknowledgements</string> @@ -155,12 +159,8 @@ <string name="label_who_long">Update user information of all users</string> <string name="label_whois">Whois</string> <string name="label_whois_long">Update user information</string> - <string name="label_yes">Yes</string> - <plurals name="label_user_count"> - <item quantity="one">%1$d user</item> - <item quantity="other">%1$d users</item> - </plurals> + <string name="label_yes">Yes</string> <string name="label_feature_synchronizedmarkerline">Required for synchronizing the last position in channels</string> <string name="label_feature_saslauthentication">Required for SASL</string> diff --git a/app/src/main/res/values/strings_messages.xml b/app/src/main/res/values/strings_messages.xml index 9e246e174..6153889e7 100644 --- a/app/src/main/res/values/strings_messages.xml +++ b/app/src/main/res/values/strings_messages.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -18,24 +18,24 @@ --> <resources> + <plurals name="message_netsplit_join"> + <item quantity="one">Netsplit between %1$s and %2$s ended: %3$d user joined: %4$s</item> + <item quantity="other">Netsplit between %1$s and %2$s ended: %3$d users joined: %4$s</item> + </plurals> + <plurals name="message_netsplit_quit"> + <item quantity="one">Netsplit between %1$s and %2$s: %3$d user quit: %4$s</item> + <item quantity="other">Netsplit between %1$s and %2$s: %3$d users quit: %4$s</item> + </plurals> <string name="message_type_join">Join</string> <string name="message_type_part">Part</string> <string name="message_type_quit">Quit</string> <string name="message_type_nick">Nick</string> <string name="message_type_mode">Mode</string> - <string name="message_type_topic">Topic</string> - <string-array name="message_filter_types" translatable="false"> - <item>@string/message_type_join</item> - <item>@string/message_type_part</item> - <item>@string/message_type_quit</item> - <item>@string/message_type_nick</item> - <item>@string/message_type_mode</item> - <item>@string/message_type_topic</item> - </string-array> + <string name="message_type_topic">Topic</string> <string name="message_format_copy">[%1$s] %2$s</string> - <string name="message_format_copy_complex">[%1$s] <%2$s> %3$s</string> + <string name="message_format_copy_complex">[%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 is now known as %3$s%4$s</string> @@ -50,12 +50,12 @@ <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: %4$s</item> - <item quantity="other">Netsplit between %1$s and %2$s ended: %3$d users joined: %4$s</item> - </plurals> - <plurals name="message_netsplit_quit"> - <item quantity="one">Netsplit between %1$s and %2$s: %3$d user quit: %4$s</item> - <item quantity="other">Netsplit between %1$s and %2$s: %3$d users quit: %4$s</item> - </plurals> + <string-array name="message_filter_types" translatable="false"> + <item>@string/message_type_join</item> + <item>@string/message_type_part</item> + <item>@string/message_type_quit</item> + <item>@string/message_type_nick</item> + <item>@string/message_type_mode</item> + <item>@string/message_type_topic</item> + </string-array> </resources> diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml index c1d7384e5..110584314 100644 --- a/app/src/main/res/values/strings_preferences.xml +++ b/app/src/main/res/values/strings_preferences.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -36,59 +36,25 @@ <string name="preference_theme_entry_gruvbox_light">Gruvbox (Light)</string> <string name="preference_theme_entry_gruvbox_dark">Gruvbox (Dark)</string> <string name="preference_theme_entry_dracula">Dracula</string> - <string-array name="preference_theme_entries" translatable="false"> - <item>@string/preference_theme_entry_material_light</item> - <item>@string/preference_theme_entry_material_dark</item> - <item>@string/preference_theme_entry_quassel_light</item> - <item>@string/preference_theme_entry_quassel_dark</item> - <item>@string/preference_theme_entry_amoled</item> - <item>@string/preference_theme_entry_solarized_light</item> - <item>@string/preference_theme_entry_solarized_dark</item> - <item>@string/preference_theme_entry_gruvbox_light</item> - <item>@string/preference_theme_entry_gruvbox_dark</item> - <item>@string/preference_theme_entry_dracula</item> - </string-array> - <string-array name="preference_theme_entryvalues" translatable="false"> - <item>MATERIAL_LIGHT</item> - <item>MATERIAL_DARK</item> - <item>QUASSEL_LIGHT</item> - <item>QUASSEL_DARK</item> - <item>AMOLED</item> - <item>SOLARIZED_LIGHT</item> - <item>SOLARIZED_DARK</item> - <item>GRUVBOX_LIGHT</item> - <item>GRUVBOX_DARK</item> - <item>DRACULA</item> - </string-array> - <string name="preference_input_enter_key" translatable="false">input_enter</string> <string name="preference_input_enter_title">Enter key on keyboard</string> + <string name="preference_input_enter_entry_emoji">Emoji</string> <string name="preference_input_enter_entry_send">Send</string> <string name="preference_input_enter_entry_newline">New Line</string> - <string-array name="preference_input_enter_entries" translatable="false"> - <item>@string/preference_input_enter_entry_emoji</item> - <item>@string/preference_input_enter_entry_send</item> - <item>@string/preference_input_enter_entry_newline</item> - </string-array> - <string-array name="preference_input_enter_entryvalues" translatable="false"> - <item>EMOJI</item> - <item>SEND</item> - <item>NEWLINE</item> - </string-array> - <string name="preference_show_lag_key" translatable="false">show_lag</string> <string name="preference_show_lag_title">Show Lag</string> <string name="preference_show_lag_summary">Displays the lag between client and core in the action bar</string> - <string name="preference_keep_screen_on_key" translatable="false">keep_screen_on</string> + <string name="preference_keep_screen_on_title">Keep Screen Active</string> <string name="preference_keep_screen_on_summary">Prevents the device from going to sleep while the app is in foreground</string> - <string name="preference_language_key" translatable="false">language</string> + <string name="preference_language_title">Language</string> <string name="preference_language_entry_auto">System Default</string> <string name="preference_language_entry_en" translatable="false">English</string> + <string name="preference_language_entry_en_gb" translatable="false">English (Great Britain)</string> <string name="preference_language_entry_de" translatable="false">Deutsch</string> <string name="preference_language_entry_fr" translatable="false">Français</string> @@ -98,56 +64,29 @@ <string name="preference_language_entry_nl" translatable="false">Nederlands</string> <string name="preference_language_entry_pt" translatable="false">Português</string> <string name="preference_language_entry_sr" translatable="false">Srpski (latinica)</string> - <string-array name="preference_language_entries" translatable="false"> - <item>@string/preference_language_entry_auto</item> - <item>@string/preference_language_entry_en</item> - <item>@string/preference_language_entry_en_gb</item> - <item>@string/preference_language_entry_de</item> - <item>@string/preference_language_entry_fr</item> - <item>@string/preference_language_entry_fr_ca</item> - <item>@string/preference_language_entry_it</item> - <item>@string/preference_language_entry_lt</item> - <item>@string/preference_language_entry_pt</item> - <item>@string/preference_language_entry_sr</item> - </string-array> - <string-array name="preference_language_entryvalues" translatable="false"> - <item /> - <item>en</item> - <item>en_gb</item> - <item>de</item> - <item>fr</item> - <item>fr-CA</item> - <item>it</item> - <item>lt</item> - <item>pt</item> - <item>sr</item> - </string-array> - - <string name="preference_redirection_title">Message Redirection</string> - <string name="preference_redirection_user_notices_key" translatable="false">redirection_user_notices</string> <string name="preference_redirection_user_notices_title">Redirect User Notices</string> <string name="preference_redirection_user_notices_summary">Displays user notices in the currently open channel</string> - <string name="preference_redirection_server_notices_key" translatable="false">redirection_user_notices</string> <string name="preference_redirection_server_notices_title">Redirect Server Notices</string> + + <string name="preference_redirection_server_notices_summary">Displays server notices in the currently open channel</string> <string name="preference_redirection_errors_key" translatable="false">redirection_errors</string> <string name="preference_redirection_errors_title">Redirect Errors</string> <string name="preference_redirection_errors_summary">Displays errors in the currently open channel</string> - <string name="preference_notifications_title">Notifications</string> - <string name="preference_notification_query_key" translatable="false">notification_query</string> <string name="preference_notification_query_title">Direct Messages</string> <string name="preference_notification_channel_key" translatable="false">notification_channel</string> <string name="preference_notification_channel_title">Channel Messages</string> - <string name="preference_notification_other_key" translatable="false">notification_other</string> + + <string name="preference_notification_other_title">Other Messages</string> <string name="preference_notification_sound_key" translatable="false">notification_sound</string> @@ -161,33 +100,22 @@ <string name="preference_notification_mark_read_on_swipe_key" translatable="false">mark_read_on_swipe</string> <string name="preference_notification_mark_read_on_swipe_title">Mark channel read when swiping notifications</string> - <string name="preference_notification_mark_read_on_swipe_summary">Marks all messages in a channel as read when a notification for the channel is swiped away</string> + <string name="preference_notification_mark_read_on_swipe_summary">Marks all messages in a channel as read when a notification for the channel is swiped away</string> <string name="preference_notification_network_name_in_notification_title_key" translatable="false">network_name_in_notification_title</string> - <string name="preference_notification_network_name_in_notification_title_title">Show network name in notifications title</string> + <string name="preference_notification_network_name_in_notification_title_title">Show network name in notifications title</string> <string name="preference_notification_show_all_activities_in_toolbar_key" translatable="false">show_all_activities_in_toolbar</string> + <string name="preference_notification_show_all_activities_in_toolbar_title">Mark all activities in toolbar</string> <string name="preference_notification_show_all_activities_in_toolbar_summary">Displays a colored bubble in the toolbar for all chat activities</string> - <string name="preference_notification_configure_key" translatable="false">notification_configure</string> - <string name="preference_notification_configure_title">Configure Notifications</string> + <string name="preference_notification_configure_title">Configure Notifications</string> <string name="preference_notifications_level_all">All Messages</string> + <string name="preference_notifications_level_highlight">Mentions</string> <string name="preference_notifications_level_none">Never</string> - <string-array name="preference_notifications_level_entries" translatable="false"> - <item>@string/preference_notifications_level_all</item> - <item>@string/preference_notifications_level_highlight</item> - <item>@string/preference_notifications_level_none</item> - </string-array> - <string-array name="preference_notifications_level_entryvalues" translatable="false"> - <item>ALL</item> - <item>HIGHLIGHT</item> - <item>NONE</item> - </string-array> - - <string name="preference_messages_title">Messages</string> <string name="preference_monospace_key" translatable="false">monospace</string> @@ -195,64 +123,43 @@ <string name="preference_textsize_key" translatable="false">fontsize</string> <string name="preference_textsize_title">Text Size</string> - <string name="preference_show_seconds_key" translatable="false">show_seconds</string> <string name="preference_show_seconds_title">Show Seconds</string> - <string name="preference_use_24h_clock_key" translatable="false">use_24h_clock</string> + + <string name="preference_use_24h_clock_title">Use 24h Clock</string> <string name="preference_colorize_mirc_key" translatable="false">colorize_mirc</string> <string name="preference_colorize_mirc_title">Use mIRC Colors</string> + <string name="preference_colorize_mirc_summaryon">Show mIRC colors in messages</string> <string name="preference_colorize_mirc_summaryoff">Strip mIRC colors from messages</string> <string name="preference_colorize_nicknames_key" translatable="false">colorize_nicknames</string> <string name="preference_colorize_nicknames_title">Colorize nicknames</string> + <string name="preference_colorize_nicknames_entry_all">All nicks</string> <string name="preference_colorize_nicknames_entry_all_but_mine">All but own nick</string> - <string name="preference_colorize_nicknames_entry_none">No nicks</string> - <string-array name="preference_colorize_nicknames_entries" translatable="false"> - <item>@string/preference_colorize_nicknames_entry_all</item> - <item>@string/preference_colorize_nicknames_entry_all_but_mine</item> - <item>@string/preference_colorize_nicknames_entry_none</item> - </string-array> - <string-array name="preference_colorize_nicknames_entryvalues" translatable="false"> - <item>ALL</item> - <item>ALL_BUT_MINE</item> - <item>NONE</item> - </string-array> + <string name="preference_colorize_nicknames_entry_none">No nicks</string> <string name="preference_show_prefix_key" translatable="false">show_prefix</string> <string name="preference_show_prefix_title">Show sendermodes</string> <string name="preference_show_prefix_entry_all">All modes</string> + <string name="preference_show_prefix_entry_highest">Highest mode</string> <string name="preference_show_prefix_entry_none">No modes</string> - <string-array name="preference_show_prefix_entries" translatable="false"> - <item>@string/preference_show_prefix_entry_all</item> - <item>@string/preference_show_prefix_entry_highest</item> - <item>@string/preference_show_prefix_entry_none</item> - </string-array> - <string-array name="preference_show_prefix_entryvalues" translatable="false"> - <item>ALL</item> - <item>HIGHEST</item> - <item>NONE</item> - </string-array> - <string name="preference_hostmask_actions_key" translatable="false">hostmask_actions</string> <string name="preference_hostmask_actions_title">Show Hostmask in actions</string> <string name="preference_hostmask_actions_summary">Display the full nick!ident@host in join/part/quit messages</string> - <string name="preference_nicks_on_new_line_key" translatable="false">nicks_on_new_line</string> <string name="preference_nicks_on_new_line_title">Separate Nicknames</string> - <string name="preference_nicks_on_new_line_summary">Shows nicknames on a separate line</string> + <string name="preference_nicks_on_new_line_summary">Shows nicknames on a separate line</string> <string name="preference_show_realnames_key" translatable="false">show_realnames</string> <string name="preference_show_realnames_title">Show Realnames</string> - <string name="preference_show_avatars_key" translatable="false">show_avatars</string> <string name="preference_show_avatars_title">Show Avatars</string> - <string name="preference_square_avatars_key" translatable="false">square_avatars</string> <string name="preference_square_avatars_title">Square Avatars</string> @@ -266,9 +173,10 @@ <string name="preference_show_matrix_avatars_key" translatable="false">show_matrix_avatars</string> <string name="preference_show_matrix_avatars_title">Show Matrix Avatars</string> - <string name="preference_show_matrix_avatars_summary">Shows for users without avatar their Matrix fallback, if available</string> + <string name="preference_show_matrix_avatars_summary">Shows for users without avatar their Matrix fallback, if available</string> <string name="preference_time_at_end_key" translatable="false">time_at_end</string> + <string name="preference_time_at_end_title">Right-Aligned Timestamps</string> <string name="preference_time_at_end_summary">Aligns timestamps at the end of each message</string> @@ -284,23 +192,23 @@ <string name="preference_replace_emoji_title">Replace Emoji Shortcodes</string> <string name="preference_replace_emoji_summary">Automatically replaces shortcodes such as :+1: or :like: with emoji</string> - <string name="preference_autocomplete_title">Autocomplete</string> - <string name="preference_autocomplete_sender_doubleclick_key" translatable="false">autocomplete_sender_doubleclick</string> <string name="preference_autocomplete_sender_doubleclick_title">Sender Autocomplete</string> - <string name="preference_autocomplete_sender_doubleclick_summary">Doubleclick on a message to autocomplete its sender</string> + <string name="preference_autocomplete_sender_doubleclick_summary">Doubleclick on a message to autocomplete its sender</string> <string name="preference_autocomplete_button_key" translatable="false">autocomplete_button</string> <string name="preference_autocomplete_button_title">Autocomplete Button</string> - <string name="preference_autocomplete_button_summary">Shows a button on the left of the input line that triggers tabcomplete</string> + <string name="preference_autocomplete_button_summary">Shows a button on the left of the input line that triggers tabcomplete</string> <string name="preference_autocomplete_doubletap_key" translatable="false">autocomplete_doubletap</string> <string name="preference_autocomplete_doubletap_title">Double tap to autocomplete</string> - <string name="preference_autocomplete_doubletap_summary">Suggest nicks and channels after doubleclicking on the input field</string> + <string name="preference_autocomplete_doubletap_summary">Suggest nicks and channels after doubleclicking on the input field</string> <string name="preference_autocomplete_auto_key" translatable="false">autocomplete_auto</string> <string name="preference_autocomplete_auto_title">Show automatically</string> + + <string name="preference_autocomplete_auto_summary">Suggest nicks and channels after entering the first 3 characters</string> <string name="preference_autocomplete_prefix_key" translatable="false">autocomplete_prefix</string> @@ -309,17 +217,14 @@ <string name="preference_autocomplete_nicks_key" translatable="false">autocomplete_nicks</string> <string name="preference_autocomplete_nicks_title">Autocomplete Nicknames</string> - <string name="preference_autocomplete_buffers_key" translatable="false">autocomplete_buffers</string> - <string name="preference_autocomplete_buffers_title">Autocomplete Chats</string> + <string name="preference_autocomplete_buffers_title">Autocomplete Chats</string> <string name="preference_autocomplete_aliases_key" translatable="false">autocomplete_aliases</string> <string name="preference_autocomplete_aliases_title">Autocomplete Commands</string> <string name="preference_autocomplete_emoji_key" translatable="false">autocomplete_emoji</string> <string name="preference_autocomplete_emoji_title">Autocomplete Emoji</string> - - <string name="preference_backlog_title">Backlog</string> <string name="preference_page_size_key" translatable="false">page_size</string> @@ -328,15 +233,17 @@ <string name="preference_initial_amount_key" translatable="false">initial_amount</string> <string name="preference_initial_amount_title">Initial Amount</string> - <string name="preference_initial_amount_summary">Number of messages to load when opening a buffer for the first time</string> + <string name="preference_initial_amount_summary">Number of messages to load when opening a buffer for the first time</string> <string name="preference_clear_cache_key" translatable="false">clear_cache_key</string> - <string name="preference_clear_cache_title">Clear Backlog Cache</string> + <string name="preference_clear_cache_title">Clear Backlog Cache</string> <string name="preference_connection_title">Connection</string> <string name="preference_show_notification_key" translatable="false">show_notification</string> <string name="preference_show_notification_title">Show notification</string> + + <string name="preference_show_notification_summary">Keeps Quasseldroid always connected by showing a persistent notification</string> <string name="preference_ignore_network_changes_key" translatable="false">ignore_network_changes</string> @@ -344,4 +251,97 @@ <string name="preference_ignore_network_changes_summary">Stops Quasseldroid from reconnecting automatically if the network changes</string> <string name="preference_notification_id_key" translatable="false">notification_id</string> + <string-array name="preference_theme_entries" translatable="false"> + <item>@string/preference_theme_entry_material_light</item> + <item>@string/preference_theme_entry_material_dark</item> + <item>@string/preference_theme_entry_quassel_light</item> + <item>@string/preference_theme_entry_quassel_dark</item> + <item>@string/preference_theme_entry_amoled</item> + <item>@string/preference_theme_entry_solarized_light</item> + <item>@string/preference_theme_entry_solarized_dark</item> + <item>@string/preference_theme_entry_gruvbox_light</item> + <item>@string/preference_theme_entry_gruvbox_dark</item> + <item>@string/preference_theme_entry_dracula</item> + </string-array> + <string-array name="preference_theme_entryvalues" translatable="false"> + <item>MATERIAL_LIGHT</item> + <item>MATERIAL_DARK</item> + <item>QUASSEL_LIGHT</item> + <item>QUASSEL_DARK</item> + <item>AMOLED</item> + <item>SOLARIZED_LIGHT</item> + <item>SOLARIZED_DARK</item> + <item>GRUVBOX_LIGHT</item> + <item>GRUVBOX_DARK</item> + <item>DRACULA</item> + </string-array> + + <string-array name="preference_input_enter_entries" translatable="false"> + <item>@string/preference_input_enter_entry_emoji</item> + <item>@string/preference_input_enter_entry_send</item> + <item>@string/preference_input_enter_entry_newline</item> + </string-array> + <string-array name="preference_input_enter_entryvalues" translatable="false"> + <item>EMOJI</item> + <item>SEND</item> + <item>NEWLINE</item> + </string-array> + + <string-array name="preference_language_entries" translatable="false"> + <item>@string/preference_language_entry_auto</item> + <item>@string/preference_language_entry_en</item> + <item>@string/preference_language_entry_en_gb</item> + <item>@string/preference_language_entry_de</item> + <item>@string/preference_language_entry_fr</item> + <item>@string/preference_language_entry_fr_ca</item> + <item>@string/preference_language_entry_it</item> + <item>@string/preference_language_entry_lt</item> + <item>@string/preference_language_entry_pt</item> + <item>@string/preference_language_entry_sr</item> + </string-array> + + <string-array name="preference_language_entryvalues" translatable="false"> + <item /> + <item>en</item> + <item>en_gb</item> + <item>de</item> + <item>fr</item> + <item>fr-CA</item> + <item>it</item> + <item>lt</item> + <item>pt</item> + <item>sr</item> + </string-array> + <string-array name="preference_notifications_level_entries" translatable="false"> + <item>@string/preference_notifications_level_all</item> + <item>@string/preference_notifications_level_highlight</item> + <item>@string/preference_notifications_level_none</item> + </string-array> + <string-array name="preference_notifications_level_entryvalues" translatable="false"> + <item>ALL</item> + <item>HIGHLIGHT</item> + <item>NONE</item> + </string-array> + + <string-array name="preference_colorize_nicknames_entries" translatable="false"> + <item>@string/preference_colorize_nicknames_entry_all</item> + <item>@string/preference_colorize_nicknames_entry_all_but_mine</item> + <item>@string/preference_colorize_nicknames_entry_none</item> + </string-array> + <string-array name="preference_colorize_nicknames_entryvalues" translatable="false"> + <item>ALL</item> + <item>ALL_BUT_MINE</item> + <item>NONE</item> + </string-array> + <string-array name="preference_show_prefix_entries" translatable="false"> + <item>@string/preference_show_prefix_entry_all</item> + <item>@string/preference_show_prefix_entry_highest</item> + <item>@string/preference_show_prefix_entry_none</item> + </string-array> + + <string-array name="preference_show_prefix_entryvalues" translatable="false"> + <item>ALL</item> + <item>HIGHEST</item> + <item>NONE</item> + </string-array> </resources> diff --git a/app/src/main/res/values/styles_widgets.xml b/app/src/main/res/values/styles_widgets.xml index 91b625487..93db80380 100644 --- a/app/src/main/res/values/styles_widgets.xml +++ b/app/src/main/res/values/styles_widgets.xml @@ -1,8 +1,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -21,7 +21,10 @@ <style name="Widget" /> - <style name="Widget.RtlConformTextView" parent="" /> + <style name="Widget.RtlConformTextView" parent=""> + <item name="android:textAlignment">gravity</item> + <item name="android:textDirection">locale</item> + </style> <style name="Widget.Button.Borderless" parent="Widget.MaterialComponents.Button.TextButton"> <item name="android:textColor">?attr/colorTextPrimary</item> @@ -142,7 +145,9 @@ <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:orientation">vertical</item> + <item name="android:paddingStart">?listPreferredItemPaddingLeft</item> <item name="android:paddingLeft">?listPreferredItemPaddingLeft</item> + <item name="android:paddingEnd">?listPreferredItemPaddingRight</item> <item name="android:paddingRight">?listPreferredItemPaddingRight</item> <item name="android:paddingTop">8dp</item> <item name="android:paddingBottom">8dp</item> @@ -154,14 +159,17 @@ <item name="android:background">?selectableItemBackground</item> <item name="android:gravity">center_vertical</item> <item name="android:minHeight">?listPreferredItemHeightSmall</item> + <item name="android:paddingEnd">?listPreferredItemPaddingRight</item> <item name="android:paddingLeft">?listPreferredItemPaddingLeft</item> <item name="android:paddingRight">?listPreferredItemPaddingRight</item> + <item name="android:paddingStart">?listPreferredItemPaddingLeft</item> </style> <style name="Widget.CoreSettings.PrimaryItemGroup" parent=""> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_marginLeft">72dp</item> + <item name="android:layout_marginStart">72dp</item> <item name="android:orientation">vertical</item> </style> @@ -190,6 +198,7 @@ <item name="android:layout_height">24dp</item> <item name="android:layout_gravity">center_vertical</item> <item name="android:layout_marginRight">32dp</item> + <item name="android:layout_marginEnd">32dp</item> <item name="tint">?colorTextSecondary</item> </style> @@ -199,6 +208,7 @@ <item name="android:orientation">vertical</item> <item name="android:visibility">gone</item> <item name="android:layout_marginLeft">56dp</item> + <item name="android:layout_marginStart">56dp</item> </style> <style name="Widget.CoreSettings.EditText" parent="Widget.RtlConformTextView"> @@ -207,11 +217,12 @@ <item name="android:textColor">?colorTextPrimary</item> </style> - <style name="Widget.CoreSettings.EditTextSuffix" parent=""> + <style name="Widget.CoreSettings.EditTextSuffix" parent="Widget.RtlConformTextView"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_gravity">bottom|end</item> <item name="android:layout_marginBottom">12dp</item> + <item name="android:layout_marginEnd">8dp</item> <item name="android:layout_marginRight">8dp</item> <item name="android:textColor">?colorTextSecondary</item> </style> @@ -232,6 +243,7 @@ <item name="android:paddingTop">10dp</item> <item name="android:paddingBottom">10dp</item> <item name="android:paddingRight">16dp</item> + <item name="android:paddingEnd">16dp</item> <item name="android:gravity">center_vertical</item> <item name="android:textAppearance">?android:textAppearanceMedium</item> <item name="android:textSize">14sp</item> @@ -246,6 +258,7 @@ <item name="android:paddingTop">10dp</item> <item name="android:paddingBottom">10dp</item> <item name="android:paddingRight">16dp</item> + <item name="android:paddingEnd">16dp</item> <item name="android:gravity">center_vertical</item> <item name="android:textAppearance">?android:textAppearanceMedium</item> <item name="android:textSize">14sp</item> @@ -263,10 +276,11 @@ <item name="android:minHeight">?listPreferredItemHeight</item> <item name="android:orientation">vertical</item> <item name="android:paddingBottom">8dp</item> + <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingRight</item> <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> + <item name="android:paddingStart">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingTop">8dp</item> - <item name="android:animateLayoutChanges">true</item> </style> <style name="Widget.Info.Header.Name" parent="Widget.RtlConformTextView"> @@ -305,8 +319,10 @@ <item name="android:gravity">center_vertical</item> <item name="android:minHeight">48dp</item> <item name="android:paddingBottom">8dp</item> + <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingRight</item> <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> + <item name="android:paddingStart">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingTop">8dp</item> <item name="android:textColor">?colorTextPrimary</item> <item name="android:textStyle">bold</item> @@ -319,10 +335,11 @@ <item name="android:minHeight">?android:attr/listPreferredItemHeightSmall</item> <item name="android:orientation">vertical</item> <item name="android:paddingBottom">16dp</item> + <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingRight</item> <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> + <item name="android:paddingStart">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingTop">16dp</item> - <item name="android:animateLayoutChanges">true</item> </style> <style name="Widget.Info.Item.Content" parent="Widget.RtlConformTextView"> @@ -348,12 +365,14 @@ </style> <style name="Widget.Subhead" parent="Widget.RtlConformTextView"> - <item name="android:layout_width">wrap_content</item> + <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:gravity">center_vertical</item> <item name="android:minHeight">?listPreferredItemHeightSmall</item> + <item name="android:paddingEnd">?listPreferredItemPaddingRight</item> <item name="android:paddingLeft">?listPreferredItemPaddingLeft</item> <item name="android:paddingRight">?listPreferredItemPaddingRight</item> + <item name="android:paddingStart">?listPreferredItemPaddingLeft</item> <item name="android:textColor">?colorAccent</item> <item name="android:textSize">14sp</item> <item name="android:textStyle">bold</item> @@ -374,15 +393,12 @@ </style> <!-- NavigationDrawerLayout --> - <declare-styleable name="NavigationDrawerLayout"> - <attr name="insetBackground" /> - </declare-styleable> - <style name="Widget.NavigationDrawerLayout" parent=""> <item name="insetBackground">#4000</item> </style> <attr name="icon" format="reference" /> + <attr name="text" format="string" /> <attr name="mode"> <enum name="none" value="0" /> @@ -391,6 +407,9 @@ <enum name="progress" value="3" /> </attr> <attr name="buttonText" format="string" /> + <declare-styleable name="NavigationDrawerLayout"> + <attr name="insetBackground" /> + </declare-styleable> <!-- WarningBarView --> <declare-styleable name="WarningBarView"> diff --git a/app/src/main/res/values/themes_amoled.xml b/app/src/main/res/values/themes_amoled.xml index d84a10414..5c3b2adc6 100644 --- a/app/src/main/res/values/themes_amoled.xml +++ b/app/src/main/res/values/themes_amoled.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,7 +20,6 @@ --> <resources> - <color name="amoled_background">#000000</color> <style name="Theme.ChatTheme.Amoled" parent="Theme.ChatTheme.Auto"> <item name="colorPrimary">#000</item> @@ -81,4 +80,6 @@ <item name="colorTintPartiallySecure">#ffaf3b</item> <item name="colorTintInsecure">#BB2222</item> </style> + + <color name="amoled_background">#000000</color> </resources> diff --git a/app/src/main/res/values/themes_dracula.xml b/app/src/main/res/values/themes_dracula.xml index e1afaed47..3d8c2f175 100644 --- a/app/src/main/res/values/themes_dracula.xml +++ b/app/src/main/res/values/themes_dracula.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,8 +20,6 @@ --> <resources> - <color name="dracula_dark_background">#282a36</color> - <style name="Theme.ChatTheme.Dracula" parent="Theme.ChatTheme.Auto"> <item name="colorPrimary">?attr/colorBackgroundCard</item> <item name="colorPrimaryDark">?attr/colorBackground</item> @@ -85,4 +83,6 @@ <item name="colorTintPartiallySecure">#ffb86c</item> <item name="colorTintInsecure">#ff5555</item> </style> + + <color name="dracula_dark_background">#282a36</color> </resources> diff --git a/app/src/main/res/values/themes_gruvbox.xml b/app/src/main/res/values/themes_gruvbox.xml index d9ee8ebd5..638b89c0b 100644 --- a/app/src/main/res/values/themes_gruvbox.xml +++ b/app/src/main/res/values/themes_gruvbox.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,8 +20,6 @@ --> <resources> - <color name="gruvbox_light_background">#fbf1c7</color> - <style name="Theme.ChatTheme.Gruvbox_Light" parent="Theme.ChatTheme.Light.Auto"> <item name="colorPrimary">?attr/colorBackgroundCard</item> <item name="colorPrimaryDark">#b6ae91</item> @@ -85,8 +83,6 @@ <item name="colorTintInsecure">#9d0006</item> </style> - <color name="gruvbox_dark_background">#282828</color> - <style name="Theme.ChatTheme.Gruvbox_Dark" parent="Theme.ChatTheme.Auto"> <item name="colorPrimary">?attr/colorBackgroundCard</item> <item name="colorPrimaryDark">#3c3734</item> @@ -149,4 +145,8 @@ <item name="colorTintPartiallySecure">#d79921</item> <item name="colorTintInsecure">#cc241d</item> </style> + + <color name="gruvbox_light_background">#fbf1c7</color> + + <color name="gruvbox_dark_background">#282828</color> </resources> diff --git a/app/src/main/res/values/themes_material.xml b/app/src/main/res/values/themes_material.xml index 82ce901e9..7207cf717 100644 --- a/app/src/main/res/values/themes_material.xml +++ b/app/src/main/res/values/themes_material.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,8 +20,6 @@ --> <resources> - <color name="material_light_background">#fafafa</color> - <style name="Theme.ChatTheme.Material_Light" parent="Theme.ChatTheme.Light.DarkHead"> <item name="senderColor0">#F44336</item> <item name="senderColor1">#2196F3</item> @@ -76,8 +74,6 @@ <item name="colorTintInsecure">#D32F2F</item> </style> - <color name="material_dark_background">#303030</color> - <style name="Theme.ChatTheme.Material_Dark" parent="Theme.ChatTheme.Auto"> <item name="senderColor0">#F44336</item> <item name="senderColor1">#2196F3</item> @@ -132,4 +128,8 @@ <item name="colorTintPartiallySecure">#FFC107</item> <item name="colorTintInsecure">#D32F2F</item> </style> + + <color name="material_light_background">#fafafa</color> + + <color name="material_dark_background">#303030</color> </resources> diff --git a/app/src/main/res/values/themes_quassel.xml b/app/src/main/res/values/themes_quassel.xml index 20ba64eda..38a9e4163 100644 --- a/app/src/main/res/values/themes_quassel.xml +++ b/app/src/main/res/values/themes_quassel.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,8 +20,6 @@ --> <resources> - <color name="quassel_light_background">#fafafa</color> - <style name="Theme.ChatTheme.Quassel_Light" parent="Theme.ChatTheme.Light.DarkHead"> <item name="senderColor0">#cc0000</item> <item name="senderColor1">#006cad</item> @@ -78,8 +76,6 @@ <item name="colorTintInsecure">#BB2222</item> </style> - <color name="quassel_dark_background">#303030</color> - <style name="Theme.ChatTheme.Quassel_Dark" parent="Theme.ChatTheme.Auto"> <item name="senderColor0">#cc0000</item> <item name="senderColor1">#006cad</item> @@ -136,4 +132,8 @@ <item name="colorTintPartiallySecure">#ffaf3b</item> <item name="colorTintInsecure">#BB2222</item> </style> + + <color name="quassel_light_background">#fafafa</color> + + <color name="quassel_dark_background">#303030</color> </resources> diff --git a/app/src/main/res/values/themes_solarized.xml b/app/src/main/res/values/themes_solarized.xml index 3afa65194..4a4f38bcc 100644 --- a/app/src/main/res/values/themes_solarized.xml +++ b/app/src/main/res/values/themes_solarized.xml @@ -3,8 +3,8 @@ <!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -20,8 +20,6 @@ --> <resources> - <color name="solarized_light_background">#FDF6E3</color> - <style name="Theme.ChatTheme.Solarized_Light" parent="Theme.ChatTheme.Light.Auto"> <item name="colorPrimary">?attr/colorBackgroundCard</item> <item name="colorPrimaryDark">#b0ac9e</item> @@ -85,8 +83,6 @@ <item name="colorTintInsecure">#CB4B16</item> </style> - <color name="solarized_dark_background">#002B36</color> - <style name="Theme.ChatTheme.Solarized_Dark" parent="Theme.ChatTheme.Auto"> <item name="colorPrimary">?attr/colorBackgroundCard</item> <item name="colorPrimaryDark">?attr/colorBackground</item> @@ -150,4 +146,8 @@ <item name="colorTintPartiallySecure">#B58900</item> <item name="colorTintInsecure">#CB4B16</item> </style> + + <color name="solarized_light_background">#FDF6E3</color> + + <color name="solarized_dark_background">#002B36</color> </resources> diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index 1f0994416..ea464f8b2 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -17,13 +17,15 @@ with this program. If not, see <http://www.gnu.org/licenses/>. --> -<network-security-config> - <base-config cleartextTrafficPermitted="true"> +<network-security-config xmlns:tools="http://schemas.android.com/tools"> + <base-config> <trust-anchors> <!-- Trust preinstalled CAs --> <certificates src="system" /> <!-- Additionally trust user added CAs --> - <certificates src="user" /> + <certificates + src="user" + tools:ignore="AcceptsUserCertificates" /> </trust-anchors> </base-config> </network-security-config> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index f886cb38e..b5ad607b6 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?><!-- Quasseldroid - Quassel client for Android - Copyright (c) 2019 Janne Mareike Koschinski - Copyright (c) 2019 The Quassel Project + Copyright (c) 2020 Janne Mareike Koschinski + Copyright (c) 2020 The Quassel Project This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published @@ -21,20 +21,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:robobunny="http://robobunny.com"> - <PreferenceScreen android:layout="@layout/widget_advertisement_support_patreon"> - <intent - android:action="android.intent.action.VIEW" - android:data="https://www.patreon.com/justjanne" /> - </PreferenceScreen> - <PreferenceCategory android:title="@string/preference_appearance_title"> - <ListPreference - android:defaultValue="MATERIAL_LIGHT" - android:entries="@array/preference_theme_entries" - android:entryValues="@array/preference_theme_entryvalues" - android:key="@string/preference_theme_key" - android:title="@string/preference_theme_title" /> - <DropDownPreference android:defaultValue="NEWLINE" android:entries="@array/preference_input_enter_entries" @@ -42,17 +29,12 @@ android:key="@string/preference_input_enter_key" android:title="@string/preference_input_enter_title" /> - <SwitchPreference - android:defaultValue="false" - android:key="@string/preference_show_lag_key" - android:summary="@string/preference_show_lag_summary" - android:title="@string/preference_show_lag_title" /> - - <SwitchPreference - android:defaultValue="false" - android:key="@string/preference_keep_screen_on_key" - android:summary="@string/preference_keep_screen_on_summary" - android:title="@string/preference_keep_screen_on_title" /> + <ListPreference + android:defaultValue="MATERIAL_LIGHT" + android:entries="@array/preference_theme_entries" + android:entryValues="@array/preference_theme_entryvalues" + android:key="@string/preference_theme_key" + android:title="@string/preference_theme_title" /> <ListPreference android:defaultValue="" @@ -60,9 +42,22 @@ android:entryValues="@array/preference_language_entryvalues" android:key="@string/preference_language_key" android:title="@string/preference_language_title" /> + + <SwitchPreference + android:defaultValue="false" + android:key="@string/preference_keep_screen_on_key" + android:summary="@string/preference_keep_screen_on_summary" + android:title="@string/preference_keep_screen_on_title" /> + + <SwitchPreference + android:defaultValue="false" + android:key="@string/preference_show_lag_key" + android:summary="@string/preference_show_lag_summary" + android:title="@string/preference_show_lag_title" /> </PreferenceCategory> <PreferenceCategory android:layout="@layout/widget_preference_divider" /> + <PreferenceCategory android:title="@string/preference_redirection_title"> <SwitchPreference android:defaultValue="true" @@ -80,7 +75,6 @@ android:summary="@string/preference_redirection_errors_summary" android:title="@string/preference_redirection_errors_title" /> </PreferenceCategory> - <PreferenceCategory android:layout="@layout/widget_preference_divider" /> <PreferenceCategory android:title="@string/preference_notifications_title"> @@ -103,6 +97,16 @@ android:key="@string/preference_notification_other_key" android:title="@string/preference_notification_other_title" /> + <PreferenceScreen + android:key="@string/preference_notification_configure_key" + android:title="@string/preference_notification_configure_title"> + <intent android:action="android.settings.APP_NOTIFICATION_SETTINGS"> + <extra + android:name="android.provider.extra.APP_PACKAGE" + android:value="@string/package_name" /> + </intent> + </PreferenceScreen> + <SwitchPreference android:defaultValue="false" android:key="@string/preference_notification_mark_read_on_swipe_key" @@ -120,14 +124,6 @@ android:summary="@string/preference_notification_show_all_activities_in_toolbar_summary" android:title="@string/preference_notification_show_all_activities_in_toolbar_title" /> - <de.kuschku.quasseldroid.util.ui.settings.RingtonePreference - android:defaultValue="content://settings/system/notification_sound" - android:key="@string/preference_notification_sound_key" - android:title="@string/preference_notification_sound_title" - app:ringtoneType="notification" - app:showDefault="true" - app:showSilent="true" /> - <SwitchPreference android:defaultValue="true" android:key="@string/preference_notification_vibration_key" @@ -138,33 +134,38 @@ android:key="@string/preference_notification_light_key" android:title="@string/preference_notification_light_title" /> - <PreferenceScreen - android:key="@string/preference_notification_configure_key" - android:title="@string/preference_notification_configure_title"> - <intent android:action="android.settings.APP_NOTIFICATION_SETTINGS"> - <extra - android:name="android.provider.extra.APP_PACKAGE" - android:value="@string/package_name" /> - </intent> - </PreferenceScreen> + <de.kuschku.quasseldroid.util.ui.settings.RingtonePreference + android:defaultValue="content://settings/system/notification_sound" + android:key="@string/preference_notification_sound_key" + android:title="@string/preference_notification_sound_title" + app:ringtoneType="notification" + app:showDefault="true" + app:showSilent="true" /> </PreferenceCategory> <PreferenceCategory android:layout="@layout/widget_preference_divider" /> <PreferenceCategory android:title="@string/preference_messages_title"> + <DropDownPreference + android:defaultValue="ALL_BUT_MINE" + android:entries="@array/preference_colorize_nicknames_entries" + android:entryValues="@array/preference_colorize_nicknames_entryvalues" + android:key="@string/preference_colorize_nicknames_key" + android:title="@string/preference_colorize_nicknames_title" /> + + <DropDownPreference + android:defaultValue="HIGHEST" + android:entries="@array/preference_show_prefix_entries" + android:entryValues="@array/preference_show_prefix_entryvalues" + android:key="@string/preference_show_prefix_key" + android:title="@string/preference_show_prefix_title" /> + <SwitchPreference android:defaultValue="false" android:key="@string/preference_monospace_key" android:title="@string/preference_monospace_title" /> - <de.kuschku.quasseldroid.util.ui.settings.SeekBarPreference - android:defaultValue="14" - android:key="@string/preference_textsize_key" - android:max="24" - android:title="@string/preference_textsize_title" - robobunny:min="6" /> - <SwitchPreference android:defaultValue="false" android:key="@string/preference_show_seconds_key" @@ -182,20 +183,6 @@ android:summaryOn="@string/preference_colorize_mirc_summaryon" android:title="@string/preference_colorize_mirc_title" /> - <DropDownPreference - android:defaultValue="ALL_BUT_MINE" - android:entries="@array/preference_colorize_nicknames_entries" - android:entryValues="@array/preference_colorize_nicknames_entryvalues" - android:key="@string/preference_colorize_nicknames_key" - android:title="@string/preference_colorize_nicknames_title" /> - - <DropDownPreference - android:defaultValue="HIGHEST" - android:entries="@array/preference_show_prefix_entries" - android:entryValues="@array/preference_show_prefix_entryvalues" - android:key="@string/preference_show_prefix_key" - android:title="@string/preference_show_prefix_title" /> - <SwitchPreference android:defaultValue="true" android:key="@string/preference_square_avatars_key" @@ -247,6 +234,7 @@ android:key="@string/preference_time_at_end_key" android:summary="@string/preference_time_at_end_summary" android:title="@string/preference_time_at_end_title" /> + <SwitchPreference android:defaultValue="false" android:dependency="@string/preference_nicks_on_new_line_key" @@ -263,6 +251,12 @@ android:key="@string/preference_replace_emoji_key" android:summary="@string/preference_replace_emoji_summary" android:title="@string/preference_replace_emoji_title" /> + <de.kuschku.quasseldroid.util.ui.settings.SeekBarPreference + android:defaultValue="14" + android:key="@string/preference_textsize_key" + android:max="24" + android:title="@string/preference_textsize_title" + robobunny:min="6" /> </PreferenceCategory> <PreferenceCategory android:layout="@layout/widget_preference_divider" /> @@ -354,4 +348,10 @@ android:summary="@string/preference_ignore_network_changes_summary" android:title="@string/preference_ignore_network_changes_title" /> </PreferenceCategory> + + <PreferenceScreen android:layout="@layout/widget_advertisement_support_patreon"> + <intent + android:action="android.intent.action.VIEW" + android:data="https://www.patreon.com/justjanne" /> + </PreferenceScreen> </PreferenceScreen> diff --git a/app/src/test/java/de/kuschku/quasseldroid/testutil/StringEscaper.kt b/app/src/test/java/de/kuschku/quasseldroid/testutil/StringEscaper.kt deleted file mode 100644 index a5663ff39..000000000 --- a/app/src/test/java/de/kuschku/quasseldroid/testutil/StringEscaper.kt +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Quasseldroid - Quassel client for Android - * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -package de.kuschku.quasseldroid.testutil - -object StringEscaper { - private fun escape(text: String): String { - val stringBuilder = StringBuilder() - escape(stringBuilder, text) - return stringBuilder.toString() - } - - private fun escape(stringBuilder: StringBuilder, text: String) { - for (char in text) { - escape(stringBuilder, char) - } - } - - private fun escape(stringBuilder: StringBuilder, text: Char) { - if (text > '\u007f') { - // write \udddd - stringBuilder.append("\\u") - val hex = StringBuffer(Integer.toHexString(text.toInt())) - hex.reverse() - val length = 4 - hex.length - for (j in 0 until length) { - hex.append('0') - } - for (j in 0..3) { - stringBuilder.append(hex[3 - j]) - } - } else { - stringBuilder.append(Character.toString(text)) - } - } -} diff --git a/app/src/test/java/de/kuschku/quasseldroid/util/compatibility/AndroidCrashFixerTest.kt b/app/src/test/java/de/kuschku/quasseldroid/util/compatibility/AndroidCrashFixerTest.kt index 1b5203255..30e44f11a 100644 --- a/app/src/test/java/de/kuschku/quasseldroid/util/compatibility/AndroidCrashFixerTest.kt +++ b/app/src/test/java/de/kuschku/quasseldroid/util/compatibility/AndroidCrashFixerTest.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -19,23 +19,37 @@ package de.kuschku.quasseldroid.util.compatibility -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse +import org.junit.Assert.* +import org.junit.BeforeClass import org.junit.Test class AndroidCrashFixerTest { - private val crashingText = "<⚫> \uD83D\uDC48\uD83C\uDFFB \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F \u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u200E\u200F\u2067\u202E" - private val nonCrashingText = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽDžLJLjNJNjǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZDzǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃɄɅɆɈɊɌɎͰͲͶ\u037FΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϏϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦ\u0528\u052A\u052C\u052EԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅჇჍᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯᏰᏱᏲᏳᏴ\u13F5ḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯᾈᾉᾊᾋᾌᾍᾎᾏᾘᾙᾚᾛᾜᾝᾞᾟᾨᾩᾪᾫᾬᾭᾮᾯᾸᾹᾺΆᾼῈΈῊΉῌῘῙῚΊῨῩῪΎῬῸΌῺΏῼℂℇℋℌℍℐℑℒℕℙℚℛℜℝℤΩℨKÅℬℭℰℱℲℳℾℿⅅⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯↃⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⰀⰁⰂⰃⰄⰅⰆⰇⰈⰉⰊⰋⰌⰍⰎⰏⰐⰑⰒⰓⰔⰕⰖⰗⰘⰙⰚⰛⰜⰝⰞⰟⰠⰡⰢⰣⰤⰥⰦⰧⰨⰩⰪⰫⰬⰭⰮⱠⱢⱣⱤⱧⱩⱫⱭⱮⱯⱰⱲⱵⱾⱿⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖ\uA698\uA69AꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒ\uA796\uA798\uA79A\uA79C\uA79EꞠꞢꞤꞦꞨꞪ\uA7AB\uA7AC\uA7AD\uA7AE\uA7B0\uA7B1\uA7B2\uA7B3\uA7B4\uA7B6\uD801\uDC00\uD801\uDC01\uD801\uDC02\uD801\uDC03\uD801\uDC04\uD801\uDC05\uD801\uDC06\uD801\uDC07\uD801\uDC08\uD801\uDC09\uD801\uDC0A\uD801\uDC0B\uD801\uDC0C\uD801\uDC0D\uD801\uDC0E\uD801\uDC0F\uD801\uDC10\uD801\uDC11\uD801\uDC12\uD801\uDC13\uD801\uDC14\uD801\uDC15\uD801\uDC16\uD801\uDC17\uD801\uDC18\uD801\uDC19\uD801\uDC1A\uD801\uDC1B\uD801\uDC1C\uD801\uDC1D\uD801\uDC1E\uD801\uDC1F\uD801\uDC20\uD801\uDC21\uD801\uDC22\uD801\uDC23\uD801\uDC24\uD801\uDC25\uD801\uDC26\uD801\uDC27\uD801\uDCB0\uD801\uDCB1\uD801\uDCB2\uD801\uDCB3\uD801\uDCB4\uD801\uDCB5\uD801\uDCB6\uD801\uDCB7\uD801\uDCB8\uD801\uDCB9\uD801\uDCBA\uD801\uDCBB\uD801\uDCBC\uD801\uDCBD\uD801\uDCBE\uD801\uDCBF\uD801\uDCC0\uD801\uDCC1\uD801\uDCC2\uD801\uDCC3\uD801\uDCC4\uD801\uDCC5\uD801\uDCC6\uD801\uDCC7\uD801\uDCC8\uD801\uDCC9\uD801\uDCCA\uD801\uDCCB\uD801\uDCCC\uD801\uDCCD\uD801\uDCCE\uD801\uDCCF\uD801\uDCD0\uD801\uDCD1\uD801\uDCD2\uD801\uDCD3\uD803\uDC80\uD803\uDC81\uD803\uDC82\uD803\uDC83\uD803\uDC84\uD803\uDC85\uD803\uDC86\uD803\uDC87\uD803\uDC88\uD803\uDC89\uD803\uDC8A\uD803\uDC8B\uD803\uDC8C\uD803\uDC8D\uD803\uDC8E\uD803\uDC8F\uD803\uDC90\uD803\uDC91\uD803\uDC92\uD803\uDC93\uD803\uDC94\uD803\uDC95\uD803\uDC96\uD803\uDC97\uD803\uDC98\uD803\uDC99\uD803\uDC9A\uD803\uDC9B\uD803\uDC9C\uD803\uDC9D\uD803\uDC9E\uD803\uDC9F\uD803\uDCA0\uD803\uDCA1\uD803\uDCA2\uD803\uDCA3\uD803\uDCA4\uD803\uDCA5\uD803\uDCA6\uD803\uDCA7\uD803\uDCA8\uD803\uDCA9\uD803\uDCAA\uD803\uDCAB\uD803\uDCAC\uD803\uDCAD\uD803\uDCAE\uD803\uDCAF\uD803\uDCB0\uD803\uDCB1\uD803\uDCB2\uD806\uDCA0\uD806\uDCA1\uD806\uDCA2\uD806\uDCA3\uD806\uDCA4\uD806\uDCA5\uD806\uDCA6\uD806\uDCA7\uD806\uDCA8\uD806\uDCA9\uD806\uDCAA\uD806\uDCAB\uD806\uDCAC\uD806\uDCAD\uD806\uDCAE\uD806\uDCAF\uD806\uDCB0\uD806\uDCB1\uD806\uDCB2\uD806\uDCB3\uD806\uDCB4\uD806\uDCB5\uD806\uDCB6\uD806\uDCB7\uD806\uDCB8\uD806\uDCB9\uD806\uDCBA\uD806\uDCBB\uD806\uDCBC\uD806\uDCBD\uD806\uDCBE\uD806\uDCBF\uD835\uDC00\uD835\uDC01\uD835\uDC02\uD835\uDC03\uD835\uDC04\uD835\uDC05\uD835\uDC06\uD835\uDC07\uD835\uDC08\uD835\uDC09\uD835\uDC0A\uD835\uDC0B\uD835\uDC0C\uD835\uDC0D\uD835\uDC0E\uD835\uDC0F\uD835\uDC10\uD835\uDC11\uD835\uDC12\uD835\uDC13\uD835\uDC14\uD835\uDC15\uD835\uDC16\uD835\uDC17\uD835\uDC18\uD835\uDC19\uD835\uDC34\uD835\uDC35\uD835\uDC36\uD835\uDC37\uD835\uDC38\uD835\uDC39\uD835\uDC3A\uD835\uDC3B\uD835\uDC3C\uD835\uDC3D\uD835\uDC3E\uD835\uDC3F\uD835\uDC40\uD835\uDC41\uD835\uDC42\uD835\uDC43\uD835\uDC44\uD835\uDC45\uD835\uDC46\uD835\uDC47\uD835\uDC48\uD835\uDC49\uD835\uDC4A\uD835\uDC4B\uD835\uDC4C\uD835\uDC4D\uD835\uDC68\uD835\uDC69\uD835\uDC6A\uD835\uDC6B\uD835\uDC6C\uD835\uDC6D\uD835\uDC6E\uD835\uDC6F\uD835\uDC70\uD835\uDC71\uD835\uDC72\uD835\uDC73\uD835\uDC74\uD835\uDC75\uD835\uDC76\uD835\uDC77\uD835\uDC78\uD835\uDC79\uD835\uDC7A\uD835\uDC7B\uD835\uDC7C\uD835\uDC7D\uD835\uDC7E\uD835\uDC7F\uD835\uDC80\uD835\uDC81\uD835\uDC9C\uD835\uDC9E\uD835\uDC9F\uD835\uDCA2\uD835\uDCA5\uD835\uDCA6\uD835\uDCA9\uD835\uDCAA\uD835\uDCAB\uD835\uDCAC\uD835\uDCAE\uD835\uDCAF\uD835\uDCB0\uD835\uDCB1\uD835\uDCB2\uD835\uDCB3\uD835\uDCB4\uD835\uDCB5\uD835\uDCD0\uD835\uDCD1\uD835\uDCD2\uD835\uDCD3\uD835\uDCD4\uD835\uDCD5\uD835\uDCD6\uD835\uDCD7\uD835\uDCD8\uD835\uDCD9\uD835\uDCDA\uD835\uDCDB\uD835\uDCDC\uD835\uDCDD\uD835\uDCDE\uD835\uDCDF\uD835\uDCE0\uD835\uDCE1\uD835\uDCE2\uD835\uDCE3\uD835\uDCE4\uD835\uDCE5\uD835\uDCE6\uD835\uDCE7\uD835\uDCE8\uD835\uDCE9\uD835\uDD04\uD835\uDD05\uD835\uDD07\uD835\uDD08\uD835\uDD09\uD835\uDD0A\uD835\uDD0D\uD835\uDD0E\uD835\uDD0F\uD835\uDD10\uD835\uDD11\uD835\uDD12\uD835\uDD13\uD835\uDD14\uD835\uDD16\uD835\uDD17\uD835\uDD18\uD835\uDD19\uD835\uDD1A\uD835\uDD1B\uD835\uDD1C\uD835\uDD38\uD835\uDD39\uD835\uDD3B\uD835\uDD3C\uD835\uDD3D\uD835\uDD3E\uD835\uDD40\uD835\uDD41\uD835\uDD42\uD835\uDD43\uD835\uDD44\uD835\uDD46\uD835\uDD4A\uD835\uDD4B\uD835\uDD4C\uD835\uDD4D\uD835\uDD4E\uD835\uDD4F\uD835\uDD50\uD835\uDD6C\uD835\uDD6D\uD835\uDD6E\uD835\uDD6F\uD835\uDD70\uD835\uDD71\uD835\uDD72\uD835\uDD73\uD835\uDD74\uD835\uDD75\uD835\uDD76\uD835\uDD77\uD835\uDD78\uD835\uDD79\uD835\uDD7A\uD835\uDD7B\uD835\uDD7C\uD835\uDD7D\uD835\uDD7E\uD835\uDD7F\uD835\uDD80\uD835\uDD81\uD835\uDD82\uD835\uDD83\uD835\uDD84\uD835\uDD85\uD835\uDDA0\uD835\uDDA1\uD835\uDDA2\uD835\uDDA3\uD835\uDDA4\uD835\uDDA5\uD835\uDDA6\uD835\uDDA7\uD835\uDDA8\uD835\uDDA9\uD835\uDDAA\uD835\uDDAB\uD835\uDDAC\uD835\uDDAD\uD835\uDDAE\uD835\uDDAF\uD835\uDDB0\uD835\uDDB1\uD835\uDDB2\uD835\uDDB3\uD835\uDDB4\uD835\uDDB5\uD835\uDDB6\uD835\uDDB7\uD835\uDDB8\uD835\uDDB9\uD835\uDDD4\uD835\uDDD5\uD835\uDDD6\uD835\uDDD7\uD835\uDDD8\uD835\uDDD9\uD835\uDDDA\uD835\uDDDB\uD835\uDDDC\uD835\uDDDD\uD835\uDDDE\uD835\uDDDF\uD835\uDDE0\uD835\uDDE1\uD835\uDDE2\uD835\uDDE3\uD835\uDDE4\uD835\uDDE5\uD835\uDDE6\uD835\uDDE7\uD835\uDDE8\uD835\uDDE9\uD835\uDDEA\uD835\uDDEB\uD835\uDDEC\uD835\uDDED\uD835\uDE08\uD835\uDE09\uD835\uDE0A\uD835\uDE0B\uD835\uDE0C\uD835\uDE0D\uD835\uDE0E\uD835\uDE0F\uD835\uDE10\uD835\uDE11\uD835\uDE12\uD835\uDE13\uD835\uDE14\uD835\uDE15\uD835\uDE16\uD835\uDE17\uD835\uDE18\uD835\uDE19\uD835\uDE1A\uD835\uDE1B\uD835\uDE1C\uD835\uDE1D\uD835\uDE1E\uD835\uDE1F\uD835\uDE20\uD835\uDE21\uD835\uDE3C\uD835\uDE3D\uD835\uDE3E\uD835\uDE3F\uD835\uDE40\uD835\uDE41\uD835\uDE42\uD835\uDE43\uD835\uDE44\uD835\uDE45\uD835\uDE46\uD835\uDE47\uD835\uDE48\uD835\uDE49\uD835\uDE4A\uD835\uDE4B\uD835\uDE4C\uD835\uDE4D\uD835\uDE4E\uD835\uDE4F\uD835\uDE50\uD835\uDE51\uD835\uDE52\uD835\uDE53\uD835\uDE54\uD835\uDE55\uD835\uDE70\uD835\uDE71\uD835\uDE72\uD835\uDE73\uD835\uDE74\uD835\uDE75\uD835\uDE76\uD835\uDE77\uD835\uDE78\uD835\uDE79\uD835\uDE7A\uD835\uDE7B\uD835\uDE7C\uD835\uDE7D\uD835\uDE7E\uD835\uDE7F\uD835\uDE80\uD835\uDE81\uD835\uDE82\uD835\uDE83\uD835\uDE84\uD835\uDE85\uD835\uDE86\uD835\uDE87\uD835\uDE88\uD835\uDE89\uD835\uDEA8\uD835\uDEA9\uD835\uDEAA\uD835\uDEAB\uD835\uDEAC\uD835\uDEAD\uD835\uDEAE\uD835\uDEAF\uD835\uDEB0\uD835\uDEB1\uD835\uDEB2\uD835\uDEB3\uD835\uDEB4\uD835\uDEB5\uD835\uDEB6\uD835\uDEB7\uD835\uDEB8\uD835\uDEB9\uD835\uDEBA\uD835\uDEBB\uD835\uDEBC\uD835\uDEBD\uD835\uDEBE\uD835\uDEBF\uD835\uDEC0\uD835\uDEE2\uD835\uDEE3\uD835\uDEE4\uD835\uDEE5\uD835\uDEE6\uD835\uDEE7\uD835\uDEE8\uD835\uDEE9\uD835\uDEEA\uD835\uDEEB\uD835\uDEEC\uD835\uDEED\uD835\uDEEE\uD835\uDEEF\uD835\uDEF0\uD835\uDEF1\uD835\uDEF2\uD835\uDEF3\uD835\uDEF4\uD835\uDEF5\uD835\uDEF6\uD835\uDEF7\uD835\uDEF8\uD835\uDEF9\uD835\uDEFA\uD835\uDF1C\uD835\uDF1D\uD835\uDF1E\uD835\uDF1F\uD835\uDF20\uD835\uDF21\uD835\uDF22\uD835\uDF23\uD835\uDF24\uD835\uDF25\uD835\uDF26\uD835\uDF27\uD835\uDF28\uD835\uDF29\uD835\uDF2A\uD835\uDF2B\uD835\uDF2C\uD835\uDF2D\uD835\uDF2E\uD835\uDF2F\uD835\uDF30\uD835\uDF31\uD835\uDF32\uD835\uDF33\uD835\uDF34\uD835\uDF56\uD835\uDF57\uD835\uDF58\uD835\uDF59\uD835\uDF5A\uD835\uDF5B\uD835\uDF5C\uD835\uDF5D\uD835\uDF5E\uD835\uDF5F\uD835\uDF60\uD835\uDF61\uD835\uDF62\uD835\uDF63\uD835\uDF64\uD835\uDF65\uD835\uDF66\uD835\uDF67\uD835\uDF68\uD835\uDF69\uD835\uDF6A\uD835\uDF6B\uD835\uDF6C\uD835\uDF6D\uD835\uDF6E\uD835\uDF90\uD835\uDF91\uD835\uDF92\uD835\uDF93\uD835\uDF94\uD835\uDF95\uD835\uDF96\uD835\uDF97\uD835\uDF98\uD835\uDF99\uD835\uDF9A\uD835\uDF9B\uD835\uDF9C\uD835\uDF9D\uD835\uDF9E\uD835\uDF9F\uD835\uDFA0\uD835\uDFA1\uD835\uDFA2\uD835\uDFA3\uD835\uDFA4\uD835\uDFA5\uD835\uDFA6\uD835\uDFA7\uD835\uDFA8\uD835\uDFCA\uD83A\uDD00\uD83A\uDD01\uD83A\uDD02\uD83A\uDD03\uD83A\uDD04\uD83A\uDD05\uD83A\uDD06\uD83A\uDD07\uD83A\uDD08\uD83A\uDD09\uD83A\uDD0A\uD83A\uDD0B\uD83A\uDD0C\uD83A\uDD0D\uD83A\uDD0E\uD83A\uDD0F\uD83A\uDD10\uD83A\uDD11\uD83A\uDD12\uD83A\uDD13\uD83A\uDD14\uD83A\uDD15\uD83A\uDD16\uD83A\uDD17\uD83A\uDD18\uD83A\uDD19\uD83A\uDD1A\uD83A\uDD1B\uD83A\uDD1C\uD83A\uDD1D\uD83A\uDD1E\uD83A\uDD1F\uD83A\uDD20\uD83A\uDD21\uD83C\uDD30\uD83C\uDD31\uD83C\uDD32\uD83C\uDD33\uD83C\uDD34\uD83C\uDD35\uD83C\uDD36\uD83C\uDD37\uD83C\uDD38\uD83C\uDD39\uD83C\uDD3A\uD83C\uDD3B\uD83C\uDD3C\uD83C\uDD3D\uD83C\uDD3E\uD83C\uDD3F\uD83C\uDD40\uD83C\uDD41\uD83C\uDD42\uD83C\uDD43\uD83C\uDD44\uD83C\uDD45\uD83C\uDD46\uD83C\uDD47\uD83C\uDD48\uD83C\uDD49\uD83C\uDD50\uD83C\uDD51\uD83C\uDD52\uD83C\uDD53\uD83C\uDD54\uD83C\uDD55\uD83C\uDD56\uD83C\uDD57\uD83C\uDD58\uD83C\uDD59\uD83C\uDD5A\uD83C\uDD5B\uD83C\uDD5C\uD83C\uDD5D\uD83C\uDD5E\uD83C\uDD5F\uD83C\uDD60\uD83C\uDD61\uD83C\uDD62\uD83C\uDD63\uD83C\uDD64\uD83C\uDD65\uD83C\uDD66\uD83C\uDD67\uD83C\uDD68\uD83C\uDD69\uD83C\uDD70\uD83C\uDD71\uD83C\uDD72\uD83C\uDD73\uD83C\uDD74\uD83C\uDD75\uD83C\uDD76\uD83C\uDD77\uD83C\uDD78\uD83C\uDD79\uD83C\uDD7A\uD83C\uDD7B\uD83C\uDD7C\uD83C\uDD7D\uD83C\uDD7E\uD83C\uDD7F\uD83C\uDD80\uD83C\uDD81\uD83C\uDD82\uD83C\uDD83\uD83C\uDD84\uD83C\uDD85\uD83C\uDD86\uD83C\uDD87\uD83C\uDD88\uD83C\uDD89ABCDEFGHIJKLMNOPQRSTUVWXYZ" + companion object { + lateinit var crashingText: String + lateinit var validText: String + + @JvmStatic + @BeforeClass + fun setUp() { + crashingText = AndroidCrashFixerTest::class.java.getResourceAsStream("/crashing_text.txt")?.bufferedReader()?.readText() + ?: "" + validText = AndroidCrashFixerTest::class.java.getResourceAsStream("/valid_text.txt")?.bufferedReader()?.readText() + ?: "" + } + } + @Test fun testRemovesCrashableCharacters() { val result = AndroidCrashFixer.removeCrashableCharacters(crashingText) + assertTrue(Regex("\u200F\\s*\u200E").containsMatchIn(crashingText)) + assertTrue(Regex("\u200E\\s*\u200F").containsMatchIn(crashingText)) assertFalse(Regex("\u200F\\s*\u200E").containsMatchIn(result)) assertFalse(Regex("\u200E\\s*\u200F").containsMatchIn(result)) } @Test fun testRetainsContent() { - assertEquals(nonCrashingText, AndroidCrashFixer.removeCrashableCharacters(nonCrashingText)) + assertEquals(validText, AndroidCrashFixer.removeCrashableCharacters(validText)) } } diff --git a/app/src/test/java/de/kuschku/quasseldroid/util/emoji/EmojiDataTest.kt b/app/src/test/java/de/kuschku/quasseldroid/util/emoji/EmojiDataTest.kt index 3615a8d44..014cda500 100644 --- a/app/src/test/java/de/kuschku/quasseldroid/util/emoji/EmojiDataTest.kt +++ b/app/src/test/java/de/kuschku/quasseldroid/util/emoji/EmojiDataTest.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.util.emoji +import android.os.Build import android.text.SpannableStringBuilder import de.kuschku.quasseldroid.QuasseldroidTest import org.junit.Assert.assertEquals @@ -27,7 +28,7 @@ import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config -@Config(application = QuasseldroidTest::class) +@Config(application = QuasseldroidTest::class, sdk = [Build.VERSION_CODES.P]) @RunWith(RobolectricTestRunner::class) class EmojiDataTest { @Test diff --git a/app/src/test/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializerTest.kt b/app/src/test/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializerTest.kt index c0edb8197..63c0ee68f 100644 --- a/app/src/test/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializerTest.kt +++ b/app/src/test/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializerTest.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -19,6 +19,7 @@ package de.kuschku.quasseldroid.util.irc.format +import android.os.Build import de.kuschku.quasseldroid.QuasseldroidTest import de.kuschku.quasseldroid.util.irc.format.model.FormatInfo import de.kuschku.quasseldroid.util.irc.format.model.IrcFormat @@ -29,7 +30,7 @@ import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config -@Config(application = QuasseldroidTest::class) +@Config(application = QuasseldroidTest::class, sdk = [Build.VERSION_CODES.P]) @RunWith(RobolectricTestRunner::class) class IrcFormatDeserializerTest { private lateinit var deserializer: IrcFormatDeserializer diff --git a/app/src/test/resources/crashing_text.txt b/app/src/test/resources/crashing_text.txt new file mode 100644 index 000000000..c37fc0960 --- /dev/null +++ b/app/src/test/resources/crashing_text.txt @@ -0,0 +1 @@ +<⚫> 👈🏻 diff --git a/app/src/test/resources/valid_text.txt b/app/src/test/resources/valid_text.txt new file mode 100644 index 000000000..d35637bcb --- /dev/null +++ b/app/src/test/resources/valid_text.txt @@ -0,0 +1 @@ +ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽDžLJLjNJNjǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZDzǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃɄɅɆɈɊɌɎͰͲͶͿΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϏϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԨԪԬԮԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅჇჍᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯᏰᏱᏲᏳᏴᏵḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯᾈᾉᾊᾋᾌᾍᾎᾏᾘᾙᾚᾛᾜᾝᾞᾟᾨᾩᾪᾫᾬᾭᾮᾯᾸᾹᾺΆᾼῈΈῊΉῌῘῙῚΊῨῩῪΎῬῸΌῺΏῼℂℇℋℌℍℐℑℒℕℙℚℛℜℝℤΩℨKÅℬℭℰℱℲℳℾℿⅅⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯↃⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⰀⰁⰂⰃⰄⰅⰆⰇⰈⰉⰊⰋⰌⰍⰎⰏⰐⰑⰒⰓⰔⰕⰖⰗⰘⰙⰚⰛⰜⰝⰞⰟⰠⰡⰢⰣⰤⰥⰦⰧⰨⰩⰪⰫⰬⰭⰮⱠⱢⱣⱤⱧⱩⱫⱭⱮⱯⱰⱲⱵⱾⱿⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꚘꚚꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞖꞘꞚꞜꞞꞠꞢꞤꞦꞨꞪꞫꞬꞭꞮꞰꞱꞲꞳꞴꞶ𐐀𐐁𐐂𐐃𐐄𐐅𐐆𐐇𐐈𐐉𐐊𐐋𐐌𐐍𐐎𐐏𐐐𐐑𐐒𐐓𐐔𐐕𐐖𐐗𐐘𐐙𐐚𐐛𐐜𐐝𐐞𐐟𐐠𐐡𐐢𐐣𐐤𐐥𐐦𐐧𐒰𐒱𐒲𐒳𐒴𐒵𐒶𐒷𐒸𐒹𐒺𐒻𐒼𐒽𐒾𐒿𐓀𐓁𐓂𐓃𐓄𐓅𐓆𐓇𐓈𐓉𐓊𐓋𐓌𐓍𐓎𐓏𐓐𐓑𐓒𐓓𐲀𐲁𐲂𐲃𐲄𐲅𐲆𐲇𐲈𐲉𐲊𐲋𐲌𐲍𐲎𐲏𐲐𐲑𐲒𐲓𐲔𐲕𐲖𐲗𐲘𐲙𐲚𐲛𐲜𐲝𐲞𐲟𐲠𐲡𐲢𐲣𐲤𐲥𐲦𐲧𐲨𐲩𐲪𐲫𐲬𐲭𐲮𐲯𐲰𐲱𐲲𑢠𑢡𑢢𑢣𑢤𑢥𑢦𑢧𑢨𑢩𑢪𑢫𑢬𑢭𑢮𑢯𑢰𑢱𑢲𑢳𑢴𑢵𑢶𑢷𑢸𑢹𑢺𑢻𑢼𑢽𑢾𑢿𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁𝒜𝒞𝒟𝒢𝒥𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩𝔄𝔅𝔇𝔈𝔉𝔊𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔𝔖𝔗𝔘𝔙𝔚𝔛𝔜𝔸𝔹𝔻𝔼𝔽𝔾𝕀𝕁𝕂𝕃𝕄𝕆𝕊𝕋𝕌𝕍𝕎𝕏𝕐𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹𝚺𝚻𝚼𝚽𝚾𝚿𝛀𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹𝛺𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨𝟊𞤀𞤁𞤂𞤃𞤄𞤅𞤆𞤇𞤈𞤉𞤊𞤋𞤌𞤍𞤎𞤏𞤐𞤑𞤒𞤓𞤔𞤕𞤖𞤗𞤘𞤙𞤚𞤛𞤜𞤝𞤞𞤟𞤠𞤡🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃🆄🆅🆆🆇🆈🆉ABCDEFGHIJKLMNOPQRSTUVWXYZ diff --git a/gradle.properties b/gradle.properties index bea178eb4..db3189ac7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,6 @@ # # You should have received a copy of the GNU General Public License along # with this program. If not, see <http://www.gnu.org/licenses/>. - # Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* @@ -30,8 +29,6 @@ org.gradle.jvmargs=-Xmx2048m org.gradle.parallel=true # Enable new Android D8 Dexer android.enableD8=true -# Enable new Android R8 Optimizer -android.enableR8=true # Enable gradle build cache org.gradle.caching=true # Enable android build cache diff --git a/invokergenerator/build.gradle.kts b/invokergenerator/build.gradle.kts index f261b90d3..dd24a0629 100644 --- a/invokergenerator/build.gradle.kts +++ b/invokergenerator/build.gradle.kts @@ -33,6 +33,5 @@ dependencies { implementation(project(":invokerannotations")) implementation("org.jetbrains.kotlin", "kotlin-compiler-embeddable", "1.3.61") implementation("com.squareup", "kotlinpoet", "1.3.0") - implementation("com.google.auto.service:auto-service:1.0-rc6") kapt("com.google.auto.service:auto-service:1.0-rc6") } diff --git a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/CompatibilityUtils.kt b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/CompatibilityUtils.kt index 65fd28d29..d02507a4c 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/CompatibilityUtils.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/CompatibilityUtils.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -19,7 +19,6 @@ package de.kuschku.libquassel.util.compatibility -import de.kuschku.libquassel.util.compatibility.backport.BackportedSyncFlushDeflaterOutputStream import de.kuschku.libquassel.util.compatibility.backport.ProperlyClosingSyncFlushDeflaterOutputStream import java.io.OutputStream import java.util.zip.DeflaterOutputStream @@ -36,10 +35,6 @@ object CompatibilityUtils { * @return The wrapping output stream */ fun createDeflaterOutputStream(rawOut: OutputStream?): DeflaterOutputStream { - return if (supportsCompression) { - ProperlyClosingSyncFlushDeflaterOutputStream(rawOut) - } else { - BackportedSyncFlushDeflaterOutputStream(rawOut) - } + return ProperlyClosingSyncFlushDeflaterOutputStream(rawOut) } } diff --git a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt deleted file mode 100644 index 8dd110d0c..000000000 --- a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Quasseldroid - Quassel client for Android - * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -package de.kuschku.libquassel.util.compatibility.backport - -import java.io.OutputStream -import java.util.zip.Deflater -import java.util.zip.DeflaterOutputStream - -class BackportedSyncFlushDeflaterOutputStream( - rawOut: OutputStream?, - private val deflater: Deflater? = createSyncFlushDeflater() -) : DeflaterOutputStream(rawOut, deflater) { - override fun close() { - deflater?.end() - super.close() - } - - companion object { - /** - * Creates a SyncFlush Deflater for use on pre-KitKat Android - * - * @return The modified Deflater, or null if the creation failed - */ - private fun createSyncFlushDeflater(): Deflater? { - val def = Deflater() - try { - def.javaClass.getDeclaredField("flushParm").apply { - isAccessible = true - setInt(def, 2) // Z_SYNC_FLUSH - } - } catch (e: Exception) { - return null - } - - return def - } - } -} diff --git a/malheur/build.gradle.kts b/malheur/build.gradle.kts index 70914cadc..f023e3fce 100644 --- a/malheur/build.gradle.kts +++ b/malheur/build.gradle.kts @@ -23,11 +23,11 @@ plugins { } android { - compileSdkVersion(28) + compileSdkVersion(29) defaultConfig { minSdkVersion(20) - targetSdkVersion(28) + targetSdkVersion(29) consumerProguardFiles("proguard-rules.pro") diff --git a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt index 3fa85119d..a6f5f21d3 100644 --- a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt +++ b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -20,7 +20,6 @@ package de.kuschku.malheur import android.app.Application -import android.os.Build import android.os.Handler import android.os.HandlerThread import android.util.Log @@ -90,9 +89,7 @@ object CrashHandler { } } catch (e: Throwable) { e.printStackTrace() - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - throwable.addSuppressed(e) - } + throwable.addSuppressed(e) } } diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt index a16f92c99..7eb37e44c 100644 --- a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt +++ b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt @@ -1,8 +1,8 @@ /* * Quasseldroid - Quassel client for Android * - * Copyright (c) 2019 Janne Mareike Koschinski - * Copyright (c) 2019 The Quassel Project + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3 as published @@ -49,11 +49,7 @@ class DisplayCollector(application: Application) : } val size = Point().also { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - display.getRealSize(it) - } else { - display.getSize(it) - } + display.getRealSize(it) } return DisplayInfo( diff --git a/persistence/build.gradle.kts b/persistence/build.gradle.kts index 43dd728e2..35a830c72 100644 --- a/persistence/build.gradle.kts +++ b/persistence/build.gradle.kts @@ -24,11 +24,11 @@ plugins { } android { - compileSdkVersion(28) + compileSdkVersion(29) defaultConfig { minSdkVersion(20) - targetSdkVersion(28) + targetSdkVersion(29) consumerProguardFiles("proguard-rules.pro") diff --git a/ui_spinner/build.gradle.kts b/ui_spinner/build.gradle.kts index d44f61b85..c1603b3f8 100644 --- a/ui_spinner/build.gradle.kts +++ b/ui_spinner/build.gradle.kts @@ -23,11 +23,11 @@ plugins { } android { - compileSdkVersion(28) + compileSdkVersion(29) defaultConfig { minSdkVersion(20) - targetSdkVersion(28) + targetSdkVersion(29) consumerProguardFiles("proguard-rules.pro") diff --git a/ui_spinner/src/main/res/values/shape_attrs.xml b/ui_spinner/src/main/res/values/shape_attrs.xml index d503d5fe8..a9719a2ad 100644 --- a/ui_spinner/src/main/res/values/shape_attrs.xml +++ b/ui_spinner/src/main/res/values/shape_attrs.xml @@ -16,13 +16,13 @@ <resources> - <declare-styleable name="MaterialShape"> - <!-- Shape appearance style reference to be used to construct a ShapeAppearanceModel. --> - <attr name="md_shapeAppearance" format="reference" /> - <!-- Shape appearance overlay style reference to be used to modify the shapeAppearance. --> - <attr name="md_shapeAppearanceOverlay" format="reference" /> - </declare-styleable> + <attr name="md_shapeAppearanceSmallComponent" format="reference" /> + + <attr name="md_shapeAppearanceMediumComponent" format="reference" /> + <!-- Shape appearance style reference for small components. --> + <attr name="md_shapeAppearanceLargeComponent" format="reference" /> + <!-- Shape appearance style reference for medium components. --> <declare-styleable name="ShapeAppearance"> <!-- Corner size to be used in the ShapeAppearance. All corners default to this value --> <attr name="md_cornerSize" format="dimension" /> @@ -61,12 +61,12 @@ <enum name="md_cut" value="1" /> </attr> </declare-styleable> - - <!-- Shape appearance style reference for small components. --> - <attr name="md_shapeAppearanceSmallComponent" format="reference" /> - <!-- Shape appearance style reference for medium components. --> - <attr name="md_shapeAppearanceMediumComponent" format="reference" /> <!-- Shape appearance style reference for large components. --> - <attr name="md_shapeAppearanceLargeComponent" format="reference" /> + <declare-styleable name="MaterialShape"> + <!-- Shape appearance style reference to be used to construct a ShapeAppearanceModel. --> + <attr name="md_shapeAppearance" format="reference" /> + <!-- Shape appearance overlay style reference to be used to modify the shapeAppearance. --> + <attr name="md_shapeAppearanceOverlay" format="reference" /> + </declare-styleable> </resources> diff --git a/viewmodel/build.gradle.kts b/viewmodel/build.gradle.kts index 7ae12ace9..eb9a7db46 100644 --- a/viewmodel/build.gradle.kts +++ b/viewmodel/build.gradle.kts @@ -23,11 +23,11 @@ plugins { } android { - compileSdkVersion(28) + compileSdkVersion(29) defaultConfig { minSdkVersion(20) - targetSdkVersion(28) + targetSdkVersion(29) consumerProguardFiles("proguard-rules.pro") -- GitLab