New app theming (#913)

* feat: start new app theming feature

* feat: add some theming colours

* refactor: start refactoring themes and colours to use dynamic attributes

* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific

* refactor: take a look at ocean light and logo colour

* feat: global search colours for light and dark ocean

* feat: more styling

* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc

* feat: add dynamic accent color

* docs: add todo for changing how accent colour is applied

* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts

* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items

* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button

* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes

* refactor: add context theme wrapper to bottom sheet dialog that references accent color

* fix: input bar bug fix and preference activity themes

* refactor: new settings menu options

* fix: crash for PNModeActivity.kt

refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu

* feat: add new appearance settings activity

* refactor: title and VM changes

* fix: correct override

* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration

* fix: compile errors and missing themes from emoji features

* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr

* feat: appearance screen wired up, just need to refresh theme

* feat: add theme state recreation and fix match system settings option

* refactor: add bottom margin

* feat: explore custom preference category

* feat: add the customized session theme for CorrectedPreferenceFragment

* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment

* refactor: change drawable style and remove explicit dividers

* refactor: remove divider in CorrectedPreferenceFragment

* feat: add theme state check on resume, might be jarring currently

* feat: add preference divider elements for settings menu

* refactor: settings menu redesigns

* refactor: change led preference to integer and refactor TextSecurePreferences.kt

* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes

* feat: add the conversations blocked contacts and refactor preference order and copy

* feat: add blocked contacts activity, basic layout and vm

* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener

* feat: add blocked contacts and notif recipient listeners

* feat: add recipient db reader

* feat: add blocked contact interactions and fix a theming crash for notifications

* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison

* feat: add settings menu vectors

* fix: preview compile error

* refactor: migrating settings menu to new designs

* feat: help menu

* refactor: simplify link opening

* refactor: remove space

* feat: refactor preferences and start theming for light mode options

* refactor: fixing dark and light modes with dialogs

* refactor: popup dialogs use proper themes now

* refactor: alert dialogs and media edit fragments use attribute references

* refactor: use input bar button attribute instead color control normal in vector tint

* refactor: transparency, dialog fixes, notification fix

* refactor: attrs and styles for buttons

* fix: use prominent button color on the outline button's border

* fix: fix the trash

* refactor: remove the appearance

* refactor: avatar placeholder generation, chips and element border styles

* refactor: use colors instead of style references

* refactor: theming changes to match designs and feedback

* refactor: the titles are bold and the categories are tertiary coloured now

* fix: appearance settings match preferences, search bottom bar uses themed attributes

* refactor: increase setting button height

* Update clear all data dialog

* Update seed dialog

* refactor: more qa feedback changes

* feat: add new TLs and fa-rIR TLs

* Update notification content dialog

* Fix message requests clear all button text color

* feat: re-add screenshot observer

* refactor: make send tint accent color

* feat: add unread background differences

* fix: change unread count indicator

* build: upgrade build numbers

* Fix message requests popupmenu background color

* fix: crash from attr reference in color attribute

* build: upgrade build number

* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons

* fix: tertiary text for keyboard page search view

* fix: emoji overflow colour differences

* fix: reaction pill dialog background is now correct colour

* Add style to reactions tab layout

* fix: appearance activity reverting primary color at correct time

* fix: show call privacy warning every time instead of just once

* fix: gradient background(?) and audio autoplay disable

* fix: crash in all media containing documents

* fix: reaction dialog heading fixes

* Add style to reactions tab layout

* fix: remove gradient backgrounds

* fix: adding new reaction normal text attribute to try correct the tab layout

* fix: ocean dark unread/read colours

* build; update build number

* build: update build number

Co-authored-by: charles <charles@oxen.io>
This commit is contained in:
Harris
2022-10-12 17:05:55 +11:00
committed by GitHub
parent 92075aed32
commit 7a773016da
378 changed files with 4305 additions and 3062 deletions

View File

@@ -2,7 +2,9 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/preferences_app_protection__app_access">
<PreferenceCategory
android:title="@string/preferences_app_protection__screen_security"
>
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:key="pref_android_screen_lock"
@@ -10,80 +12,41 @@
android:title="@string/preferences_app_protection__screen_lock"
android:summary="@string/preferences_app_protection__lock_signal_access_with_android_screen_lock_or_fingerprint" />
<Preference
android:title="@string/preferences_app_protection__screen_lock_inactivity_timeout"
android:key="pref_android_screen_lock_timeout"
android:dependency="pref_android_screen_lock" />
<!-- <org.thoughtcrime.securesms.components.SwitchPreferenceCompat-->
<!-- android:key="pref_enable_passphrase_temporary"-->
<!-- android:defaultValue="true"-->
<!-- android:title="@string/preferences__enable_passphrase"-->
<!-- android:summary="@string/preferences__lock_signal_and_message_notifications_with_a_passphrase" />-->
<!-- <Preference-->
<!-- android:key="pref_change_passphrase"-->
<!-- android:title="@string/preferences__change_passphrase"-->
<!-- android:summary="@string/preferences__change_your_passphrase"-->
<!-- android:dependency="pref_enable_passphrase_temporary" />-->
<!-- <org.thoughtcrime.securesms.components.SwitchPreferenceCompat-->
<!-- android:defaultValue="false"-->
<!-- android:key="pref_timeout_passphrase"-->
<!-- android:title="@string/preferences__inactivity_timeout_passphrase"-->
<!-- android:summary="@string/preferences__auto_lock_signal_after_a_specified_time_interval_of_inactivity"-->
<!-- android:dependency="pref_enable_passphrase_temporary" />-->
<!-- <Preference-->
<!-- android:title="@string/preferences__inactivity_timeout_interval"-->
<!-- android:key="pref_timeout_interval"-->
<!-- android:dependency="pref_timeout_passphrase" />-->
<!-- TODO: check figure out what is needed for this -->
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="true"
android:key="pref_screen_security"
android:title="@string/preferences__screen_security"
android:summary="@string/preferences__disable_screen_security_to_allow_screen_shots" />
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="true"
android:key="pref_incognito_keyboard"
android:title="@string/preferences__incognito_keyboard"
android:summary="@string/preferences__request_keyboard_to_disable_personalized_learning"/>
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider" />
<PreferenceCategory android:title="@string/preferences_app_protection__communication">
<!-- <org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_turn_only"
android:title="@string/preferences_advanced__always_relay_calls"
android:summary="@string/preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address"/> -->
<PreferenceCategory android:title="@string/preferences__read_receipts">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_read_receipts"
android:title="@string/preferences__read_receipts"
android:summary="@string/preferences__if_read_receipts_are_disabled_you_wont_be_able_to_see_read_receipts"/>
android:summary="@string/preferences__read_receipts_summary"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/preferences__typing_indicators">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_typing_indicators"
android:title="@string/preferences__typing_indicators"
android:summary="@string/preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators"/>
android:summary="@string/preferences__typing_indicators_summary"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/preferences__link_previews">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="true"
android:key="pref_link_previews"
android:summary="@string/preferences__previews_are_supported_for"
android:summary="@string/preferences__link_previews_summary"
android:title="@string/preferences__send_link_previews"/>
</PreferenceCategory>
<!-- <Preference android:key="preference_category_blocked"
android:title="@string/preferences_app_protection__blocked_contacts" /> -->
<PreferenceCategory android:title="@string/preferences__calls_beta">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_call_notifications_enabled"
@@ -125,4 +88,12 @@
</PreferenceCategory> -->
<PreferenceCategory android:title="@string/preferences__incognito_keyboard">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="true"
android:key="pref_incognito_keyboard"
android:title="@string/preferences__incognito_keyboard"
android:summary="@string/preferences__request_keyboard_to_disable_personalized_learning"/>
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -2,94 +2,33 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <PreferenceCategory android:key="media_download" android:title="@string/preferences_chats__media_auto_download">
<MultiSelectListPreference
android:title="@string/preferences_chats__when_using_mobile_data"
android:key="pref_media_download_mobile"
android:defaultValue="@array/pref_media_download_mobile_data_default"
android:persistent="true"
android:entries="@array/pref_media_download_values"
android:entryValues="@array/pref_media_download_entries" />
<MultiSelectListPreference
android:title="@string/preferences_chats__when_using_wifi"
android:key="pref_media_download_wifi"
android:defaultValue="@array/pref_media_download_wifi_default"
android:persistent="true"
android:entries="@array/pref_media_download_values"
android:entryValues="@array/pref_media_download_entries" />
<MultiSelectListPreference
android:title="@string/preferences_chats__when_roaming"
android:key="pref_media_download_roaming"
android:defaultValue="@array/pref_media_download_roaming_default"
android:persistent="true"
android:entries="@array/pref_media_download_values"
android:entryValues="@array/pref_media_download_entries" />
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider"/> -->
<PreferenceCategory android:title="@string/preferences_chats__chats">
<!-- <org.thoughtcrime.securesms.preferences.widgets.SignalListPreference
android:key="pref_message_body_text_size"
android:title="@string/preferences_chats__message_text_size"
android:entries="@array/pref_message_font_size_entries"
android:entryValues="@array/pref_message_font_size_values"
android:defaultValue="16" /> -->
<!-- <org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="true"
android:key="pref_show_invite_reminder"
android:title="@string/preferences_chats__show_invitation_prompts"
android:summary="@string/preferences_chats__display_invitation_prompts_for_contacts_without_signal" /> -->
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_system_emoji"
android:title="@string/preferences_advanced__use_system_emoji"
android:summary="@string/preferences_advanced__disable_signal_built_in_emoji_support" />
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_enter_sends"
android:summary="@string/preferences__pressing_the_enter_key_will_send_text_messages"
android:title="@string/preferences__pref_enter_sends_title" />
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider"/>
<PreferenceCategory android:key="message_trimming" android:title="@string/preferences_chats__message_trimming">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_trim_threads"
android:summary="@string/preferences__automatically_delete_older_messages_once_a_conversation_exceeds_a_specified_length"
android:title="@string/preferences__delete_old_messages" />
android:summary="@string/preferences_chats__message_trimming_summary"
android:title="@string/preferences_chats__message_trimming_title" />
</PreferenceCategory>
<!-- <PreferenceCategory android:layout="@layout/preference_divider" />
<PreferenceCategory android:key="backup_category" android:title="@string/preferences_chats__backups">
<PreferenceCategory android:title="@string/preferences__pref_enter_sends_title">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_backup_enabled_v3"
android:title="@string/preferences_chats__chat_backups"
android:summary="@string/preferences_chats__backup_chats_to_external_storage" />
android:key="pref_enter_sends"
android:summary="@string/preferences__pref_enter_sends_summary"
android:title="@string/preferences__pref_enter_sends_title" />
</PreferenceCategory>
<org.thoughtcrime.securesms.preferences.widgets.ProgressPreference
android:key="pref_backup_create"
android:title="@string/preferences_chats__create_backup"
android:persistent="false"
android:dependency="pref_backup_enabled_v3"
tools:summary="Last backup: 3 days ago" />
<PreferenceCategory android:title="@string/preferences__pref_autoplay_audio_title">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_autoplay_audio"
android:summary="@string/preferences__pref_autoplay_audio_summary"
android:title="@string/preferences__pref_autoplay_audio_title"/>
</PreferenceCategory>
</PreferenceCategory> -->
<org.thoughtcrime.securesms.preferences.BlockedContactsPreference
android:key="blocked_contacts"
android:layout="@layout/blocked_contacts_preference"
/>
</PreferenceScreen>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory>
<Preference
android:key="export_logs"
android:title="@string/activity_help_settings__report_bug_title"
android:summary="@string/activity_help_settings__report_bug_summary"
android:widgetLayout="@layout/export_logs_widget"/>
</PreferenceCategory>
<PreferenceCategory>
<Preference
android:key="translate_session"
android:title="@string/activity_help_settings__translate_session"
android:widgetLayout="@layout/preference_external_link"
/>
</PreferenceCategory>
<PreferenceCategory>
<Preference
android:key="feedback"
android:title="@string/activity_help_settings__feedback"
android:widgetLayout="@layout/preference_external_link"
/>
</PreferenceCategory>
<PreferenceCategory>
<Preference
android:key="faq"
android:title="@string/activity_help_settings__faq"
android:widgetLayout="@layout/preference_external_link"
/>
</PreferenceCategory>
<PreferenceCategory>
<Preference
android:key="support"
android:title="@string/activity_help_settings__support"
android:widgetLayout="@layout/preference_external_link"
/>
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -2,132 +2,49 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/preferences_notifications__messages">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:key="pref_key_enable_notifications"
android:title="@string/preferences__notifications"
android:defaultValue="true" />
<org.thoughtcrime.securesms.preferences.widgets.SignalListPreference
android:key="pref_notification_priority"
android:title="@string/preferences_notifications__priority"
android:dependency="pref_key_enable_notifications"
android:defaultValue="1"
android:entries="@array/pref_notification_priority_entries"
android:entryValues="@array/pref_notification_priority_values" />
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider" />
<PreferenceCategory android:title="@string/preferences_notifications_strategy_category_title">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:dependency="pref_key_enable_notifications"
android:key="pref_key_use_fcm"
android:title="@string/preferences_notifications_strategy_category_fast_mode_title"
android:summary="@string/preferences_notifications_strategy_category_fast_mode_summary"
android:defaultValue="false" />
</PreferenceCategory>
<Preference android:layout="@layout/go_to_device_settings"
android:key="pref_notification_priority" />
<PreferenceCategory android:layout="@layout/preference_divider" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/activity_notification_settings_style_section_title">
<org.thoughtcrime.securesms.preferences.widgets.SignalPreference
android:dependency="pref_key_enable_notifications"
android:key="pref_key_ringtone"
android:title="@string/preferences__sound"
android:persistent="false"
android:defaultValue="content://settings/system/notification_sound" />
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:dependency="pref_key_enable_notifications"
android:key="pref_sound_when_app_open"
android:defaultValue="false"
android:title="@string/preferences__in_app_sounds"
/>
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:key="pref_key_vibrate"
android:defaultValue="true"
android:title="@string/preferences__vibrate" />
<org.thoughtcrime.securesms.preferences.widgets.LEDColorListPreference
android:key="pref_led_color"
android:defaultValue="blue"
android:title="@string/preferences__led_color"
android:dependency="pref_key_enable_notifications"
android:entries="@array/pref_led_color_entries"
android:entryValues="@array/pref_led_color_values" />
<org.thoughtcrime.securesms.preferences.widgets.SignalListPreference
android:key="pref_led_blink"
android:defaultValue="500,2000"
android:title="@string/preferences__pref_led_blink_title"
android:dependency="pref_led_color"
android:entries="@array/pref_led_blink_pattern_entries"
android:entryValues="@array/pref_led_blink_pattern_values" />
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:key="pref_key_inthread_notifications"
android:title="@string/preferences_notifications__in_chat_sounds"
android:dependency="pref_key_enable_notifications"
android:defaultValue="true" />
<org.thoughtcrime.securesms.preferences.widgets.SignalListPreference
android:key="pref_repeat_alerts"
android:defaultValue="0"
android:title="@string/preferences__repeat_alerts"
android:dependency="pref_key_enable_notifications"
android:entries="@array/pref_repeat_alerts_entries"
android:entryValues="@array/pref_repeat_alerts_values" />
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider" />
<PreferenceCategory android:title="@string/activity_notification_settings_content_section_title">
<org.thoughtcrime.securesms.preferences.widgets.SignalListPreference
android:key="pref_notification_privacy"
android:title="@string/preferences_notifications__show"
android:dependency="pref_key_enable_notifications"
android:title="@string/preferences_notifications__content"
android:defaultValue="all"
android:entries="@array/pref_notification_privacy_entries"
android:entryValues="@array/pref_notification_privacy_values" />
</PreferenceCategory>
<!-- </PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider"/>
<PreferenceCategory android:title="@string/preferences_notifications__calls">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:key="pref_call_notifications"
android:title="@string/preferences__notifications"
android:defaultValue="true" />
<org.thoughtcrime.securesms.preferences.widgets.SignalPreference
android:dependency="pref_call_notifications"
android:key="pref_call_ringtone"
android:title="@string/preferences_notifications__ringtone"
android:persistent="false"
android:defaultValue="content://settings/system/ringtone" />
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:dependency="pref_call_notifications"
android:key="pref_call_vibrate"
android:defaultValue="true"
android:title="@string/preferences__vibrate"/>
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider"/>
<PreferenceCategory android:title="@string/preferences_notifications__events">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:key="pref_enable_new_contacts_notifications"
android:title="@string/preferences_events__contact_joined_signal"
android:defaultValue="true" />
</PreferenceCategory> -->
</PreferenceScreen>