From f698b7fa9f990ec5926afee193e1ad13792a5a93 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Mon, 24 Apr 2023 20:51:21 +0300 Subject: [PATCH] android: new icons (#2231) * android: new icons * different size * all icons were changed * sizes * account icon was returned * icon * two icons * bolt icon * fix change avatar * more vert button * changes in icons * icon size * deleted unneeded icon * icons * spacer and padding * no comments * height of item --------- Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- .../java/chat/simplex/app/MainActivity.kt | 5 +- .../java/chat/simplex/app/model/ChatModel.kt | 15 +- .../java/chat/simplex/app/model/SimpleXAPI.kt | 69 +++---- .../chat/simplex/app/views/WelcomeView.kt | 8 +- .../chat/simplex/app/views/call/CallView.kt | 26 ++- .../app/views/call/IncomingCallActivity.kt | 14 +- .../app/views/call/IncomingCallAlertView.kt | 19 +- .../simplex/app/views/chat/ChatInfoView.kt | 26 ++- .../chat/simplex/app/views/chat/ChatView.kt | 22 +- .../simplex/app/views/chat/ComposeFileView.kt | 8 +- .../app/views/chat/ComposeImageView.kt | 8 +- .../simplex/app/views/chat/ComposeView.kt | 11 +- .../app/views/chat/ComposeVoiceView.kt | 8 +- .../app/views/chat/ContactPreferences.kt | 4 +- .../simplex/app/views/chat/ContextItemView.kt | 15 +- .../simplex/app/views/chat/SendMsgView.kt | 26 ++- .../simplex/app/views/chat/VerifyCodeView.kt | 14 +- .../views/chat/group/AddGroupMembersView.kt | 24 +-- .../app/views/chat/group/GroupChatInfoView.kt | 26 +-- .../app/views/chat/group/GroupLinkView.kt | 15 +- .../views/chat/group/GroupMemberInfoView.kt | 9 +- .../app/views/chat/group/GroupPreferences.kt | 2 +- .../app/views/chat/group/GroupProfileView.kt | 2 +- .../app/views/chat/item/CICallItemView.kt | 20 +- .../app/views/chat/item/CIChatFeatureView.kt | 6 +- .../simplex/app/views/chat/item/CIFileView.kt | 27 ++- .../views/chat/item/CIGroupInvitationView.kt | 6 +- .../app/views/chat/item/CIImageView.kt | 21 +- .../app/views/chat/item/CIInvalidJSONView.kt | 5 +- .../simplex/app/views/chat/item/CIMetaView.kt | 18 +- .../app/views/chat/item/CIVideoView.kt | 27 ++- .../app/views/chat/item/CIVoiceView.kt | 8 +- .../app/views/chat/item/ChatItemView.kt | 45 ++-- .../app/views/chat/item/FramedItemView.kt | 15 +- .../app/views/chatlist/ChatHelpView.kt | 5 +- .../app/views/chatlist/ChatListNavLinkView.kt | 30 ++- .../app/views/chatlist/ChatListView.kt | 12 +- .../app/views/chatlist/ChatPreviewView.kt | 25 +-- .../views/chatlist/ContactConnectionView.kt | 6 +- .../app/views/chatlist/ShareListView.kt | 10 +- .../simplex/app/views/chatlist/UserPicker.kt | 15 +- .../app/views/database/ChatArchiveView.kt | 7 +- .../views/database/DatabaseEncryptionView.kt | 10 +- .../app/views/database/DatabaseView.kt | 37 ++-- .../app/views/helpers/ChatInfoImage.kt | 42 ++-- .../app/views/helpers/ChooseAttachmentView.kt | 2 - .../simplex/app/views/helpers/CustomIcons.kt | 194 ++++++++++++++++++ .../views/helpers/DefaultBasicTextField.kt | 10 +- .../app/views/helpers/DefaultTopAppBar.kt | 9 +- .../helpers/ExposedDropDownSettingRow.kt | 10 +- .../simplex/app/views/helpers/GetImageView.kt | 7 +- .../simplex/app/views/helpers/LinkPreviews.kt | 5 +- .../app/views/helpers/SearchTextField.kt | 5 +- .../chat/simplex/app/views/helpers/Section.kt | 14 +- .../simplex/app/views/helpers/SimpleButton.kt | 16 +- .../app/views/localauth/PasscodeView.kt | 12 +- .../app/views/localauth/PasswordEntry.kt | 18 +- .../app/views/newchat/AddContactView.kt | 11 +- .../simplex/app/views/newchat/AddGroupView.kt | 5 +- .../app/views/newchat/ConnectViaLinkView.kt | 5 +- .../newchat/ContactConnectionInfoView.kt | 7 +- .../app/views/newchat/CreateLinkView.kt | 5 +- .../simplex/app/views/newchat/NewChatSheet.kt | 16 +- .../app/views/newchat/PasteToConnect.kt | 9 +- .../app/views/onboarding/SimpleXInfo.kt | 7 +- .../app/views/onboarding/WhatsNewView.kt | 70 +++---- .../views/usersettings/AcceptRequestsView.kt | 12 +- .../usersettings/AdvancedNetworkSettings.kt | 16 +- .../app/views/usersettings/Appearance.kt | 5 +- .../app/views/usersettings/CallSettings.kt | 8 +- .../app/views/usersettings/DeveloperView.kt | 8 +- .../views/usersettings/NetworkAndServers.kt | 22 +- .../app/views/usersettings/PrivacySettings.kt | 10 +- .../views/usersettings/ProtocolServerView.kt | 12 +- .../views/usersettings/ProtocolServersView.kt | 11 +- .../app/views/usersettings/RTCServers.kt | 5 +- .../app/views/usersettings/SettingsView.kt | 61 +++--- .../app/views/usersettings/UserAddressView.kt | 11 +- .../app/views/usersettings/UserProfileView.kt | 9 +- .../views/usersettings/UserProfilesView.kt | 17 +- .../res/drawable/ic_account_circle_filled.xml | 9 + .../app/src/main/res/drawable/ic_add.xml | 9 + .../app/src/main/res/drawable/ic_add_link.xml | 9 + .../src/main/res/drawable/ic_add_photo.xml | 4 +- .../main/res/drawable/ic_all_inclusive.xml | 9 + .../res/drawable/ic_arrow_back_ios_new.xml | 9 + .../main/res/drawable/ic_arrow_downward.xml | 9 + .../res/drawable/ic_arrow_forward_ios.xml | 9 + .../src/main/res/drawable/ic_arrow_upward.xml | 9 + .../app/src/main/res/drawable/ic_article.xml | 9 + .../drawable/ic_attach_file_filled_500.xml | 9 + .../src/main/res/drawable/ic_backspace.xml | 9 + .../app/src/main/res/drawable/ic_backup.xml | 9 + .../main/res/drawable/ic_battery_2_bar.xml | 9 + .../main/res/drawable/ic_battery_3_bar.xml | 9 + .../app/src/main/res/drawable/ic_bolt.xml | 9 + .../src/main/res/drawable/ic_bolt_filled.xml | 9 + .../app/src/main/res/drawable/ic_cable.xml | 9 + .../app/src/main/res/drawable/ic_call.xml | 9 + .../app/src/main/res/drawable/ic_call_500.xml | 9 + .../app/src/main/res/drawable/ic_call_end.xml | 9 + .../main/res/drawable/ic_call_end_filled.xml | 9 + .../src/main/res/drawable/ic_call_filled.xml | 9 + .../main/res/drawable/ic_camera_enhance.xml | 4 +- .../main/res/drawable/ic_cancel_filled.xml | 9 + .../app/src/main/res/drawable/ic_chat.xml | 9 + .../app/src/main/res/drawable/ic_check.xml | 9 + .../res/drawable/ic_check_circle_filled.xml | 9 + .../src/main/res/drawable/ic_check_fill.xml | 9 + .../src/main/res/drawable/ic_check_filled.xml | 9 + .../main/res/drawable/ic_chevron_right.xml | 9 + .../app/src/main/res/drawable/ic_circle.xml | 9 + .../main/res/drawable/ic_circle_filled.xml | 9 + .../app/src/main/res/drawable/ic_close.xml | 9 + .../app/src/main/res/drawable/ic_code.xml | 9 + .../src/main/res/drawable/ic_content_copy.xml | 9 + .../main/res/drawable/ic_content_paste.xml | 9 + .../app/src/main/res/drawable/ic_database.xml | 9 + .../app/src/main/res/drawable/ic_delete.xml | 9 + .../main/res/drawable/ic_delete_forever.xml | 9 + .../res/drawable/ic_delete_forever_filled.xml | 9 + .../app/src/main/res/drawable/ic_dns.xml | 9 + .../res/drawable/ic_do_not_disturb_on.xml | 9 + .../src/main/res/drawable/ic_done_filled.xml | 9 + .../app/src/main/res/drawable/ic_download.xml | 9 + .../app/src/main/res/drawable/ic_draft.xml | 4 +- .../src/main/res/drawable/ic_draft_filled.xml | 9 + .../res/drawable/ic_drive_folder_upload.xml | 9 + .../app/src/main/res/drawable/ic_edit.xml | 9 + .../src/main/res/drawable/ic_edit_filled.xml | 9 + .../src/main/res/drawable/ic_edit_note.xml | 9 + .../res/drawable/ic_electrical_services.xml | 9 + .../app/src/main/res/drawable/ic_error.xml | 9 + .../src/main/res/drawable/ic_error_filled.xml | 9 + .../src/main/res/drawable/ic_expand_less.xml | 9 + .../src/main/res/drawable/ic_expand_more.xml | 9 + .../app/src/main/res/drawable/ic_flag.xml | 9 + .../ic_flip_camera_android_filled.xml | 9 + .../app/src/main/res/drawable/ic_group.xml | 9 + .../app/src/main/res/drawable/ic_help.xml | 9 + .../app/src/main/res/drawable/ic_image.xml | 9 + .../app/src/main/res/drawable/ic_info.xml | 9 + .../src/main/res/drawable/ic_inventory_2.xml | 9 + .../src/main/res/drawable/ic_ios_share.xml | 9 + .../app/src/main/res/drawable/ic_keyboard.xml | 9 + .../res/drawable/ic_keyboard_arrow_down.xml | 9 + .../main/res/drawable/ic_keyboard_voice.xml | 9 + .../res/drawable/ic_keyboard_voice_filled.xml | 9 + .../src/main/res/drawable/ic_light_mode.xml | 9 + .../app/src/main/res/drawable/ic_link.xml | 9 + .../app/src/main/res/drawable/ic_lock.xml | 9 + .../src/main/res/drawable/ic_lock_filled.xml | 9 + .../src/main/res/drawable/ic_lock_open.xml | 9 + .../app/src/main/res/drawable/ic_login.xml | 9 + .../app/src/main/res/drawable/ic_logout.xml | 9 + .../app/src/main/res/drawable/ic_mail.xml | 9 + .../main/res/drawable/ic_manage_accounts.xml | 9 + .../app/src/main/res/drawable/ic_maps_ugc.xml | 9 + .../main/res/drawable/ic_mark_chat_unread.xml | 9 + .../app/src/main/res/drawable/ic_menu.xml | 9 + .../app/src/main/res/drawable/ic_mic.xml | 9 + .../src/main/res/drawable/ic_mic_filled.xml | 9 + .../app/src/main/res/drawable/ic_mic_off.xml | 9 + .../src/main/res/drawable/ic_more_horiz.xml | 9 + .../app/src/main/res/drawable/ic_note_add.xml | 4 +- .../main/res/drawable/ic_notifications.xml | 9 + .../res/drawable/ic_notifications_off.xml | 9 + .../drawable/ic_notifications_off_filled.xml | 9 + .../src/main/res/drawable/ic_open_in_new.xml | 9 + .../src/main/res/drawable/ic_pause_filled.xml | 9 + .../app/src/main/res/drawable/ic_pending.xml | 9 + .../main/res/drawable/ic_pending_filled.xml | 9 + .../src/main/res/drawable/ic_person_add.xml | 9 + .../main/res/drawable/ic_person_add_500.xml | 9 + .../res/drawable/ic_phone_in_talk_filled.xml | 9 + .../src/main/res/drawable/ic_photo_camera.xml | 9 + .../res/drawable/ic_play_arrow_filled.xml | 9 + .../main/res/drawable/ic_priority_high.xml | 9 + .../app/src/main/res/drawable/ic_qr_code.xml | 9 + .../src/main/res/drawable/ic_repeat_one.xml | 9 + .../app/src/main/res/drawable/ic_replay.xml | 9 + .../app/src/main/res/drawable/ic_reply.xml | 9 + .../main/res/drawable/ic_report_filled.xml | 9 + .../src/main/res/drawable/ic_ring_volume.xml | 9 + .../main/res/drawable/ic_safety_divider.xml | 9 + .../app/src/main/res/drawable/ic_search.xml | 9 + .../src/main/res/drawable/ic_search_500.xml | 9 + .../app/src/main/res/drawable/ic_security.xml | 9 + .../app/src/main/res/drawable/ic_settings.xml | 9 + .../drawable/ic_settings_backup_restore.xml | 9 + .../res/drawable/ic_settings_ethernet.xml | 9 + .../main/res/drawable/ic_settings_phone.xml | 9 + .../app/src/main/res/drawable/ic_share.xml | 9 + .../src/main/res/drawable/ic_share_filled.xml | 9 + .../app/src/main/res/drawable/ic_shield.xml | 9 + .../main/res/drawable/ic_smart_display.xml | 4 +- .../app/src/main/res/drawable/ic_star.xml | 9 + .../src/main/res/drawable/ic_stop_filled.xml | 9 + .../ic_supervised_user_circle_filled.xml | 9 + .../drawable/ic_swap_horizontal_circle.xml | 9 + .../ic_swap_horizontal_circle_filled.xml | 9 + .../app/src/main/res/drawable/ic_tag.xml | 9 + .../app/src/main/res/drawable/ic_task.xml | 9 + .../main/res/drawable/ic_theater_comedy.xml | 9 + .../res/drawable/ic_theater_comedy_filled.xml | 9 + .../app/src/main/res/drawable/ic_timer.xml | 9 + .../src/main/res/drawable/ic_timer_filled.xml | 9 + .../src/main/res/drawable/ic_toggle_on.xml | 9 + .../src/main/res/drawable/ic_translate.xml | 9 + .../main/res/drawable/ic_travel_explore.xml | 9 + .../src/main/res/drawable/ic_upload_file.xml | 9 + .../main/res/drawable/ic_verified_user.xml | 9 + .../app/src/main/res/drawable/ic_videocam.xml | 9 + .../main/res/drawable/ic_videocam_filled.xml | 9 + .../src/main/res/drawable/ic_videocam_off.xml | 9 + .../src/main/res/drawable/ic_visibility.xml | 9 + .../res/drawable/ic_visibility_filled.xml | 9 + .../main/res/drawable/ic_visibility_off.xml | 9 + .../res/drawable/ic_visibility_off_filled.xml | 9 + .../src/main/res/drawable/ic_volume_down.xml | 9 + .../src/main/res/drawable/ic_volume_up.xml | 9 + .../main/res/drawable/ic_vpn_key_filled.xml | 9 + .../res/drawable/ic_vpn_key_off_filled.xml | 9 + .../main/res/drawable/ic_warning_filled.xml | 9 + .../main/res/drawable/ic_wifi_tethering.xml | 9 + 225 files changed, 2027 insertions(+), 670 deletions(-) create mode 100644 apps/android/app/src/main/java/chat/simplex/app/views/helpers/CustomIcons.kt create mode 100644 apps/android/app/src/main/res/drawable/ic_account_circle_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_add.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_add_link.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_all_inclusive.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_arrow_back_ios_new.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_arrow_downward.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_arrow_forward_ios.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_arrow_upward.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_article.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_attach_file_filled_500.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_backspace.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_backup.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_battery_2_bar.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_battery_3_bar.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_bolt.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_bolt_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_cable.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_call.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_call_500.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_call_end.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_call_end_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_call_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_cancel_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_chat.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_check.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_check_circle_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_check_fill.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_check_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_chevron_right.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_circle.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_circle_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_close.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_code.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_content_copy.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_content_paste.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_database.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_delete.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_delete_forever.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_delete_forever_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_dns.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_do_not_disturb_on.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_done_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_download.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_draft_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_drive_folder_upload.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_edit.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_edit_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_edit_note.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_electrical_services.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_error.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_error_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_expand_less.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_expand_more.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_flag.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_flip_camera_android_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_group.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_help.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_image.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_info.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_inventory_2.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_ios_share.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_keyboard.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_keyboard_arrow_down.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_keyboard_voice.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_keyboard_voice_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_light_mode.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_link.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_lock.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_lock_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_lock_open.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_login.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_logout.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_mail.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_manage_accounts.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_maps_ugc.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_mark_chat_unread.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_menu.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_mic.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_mic_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_mic_off.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_more_horiz.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_notifications.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_notifications_off.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_notifications_off_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_open_in_new.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_pause_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_pending.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_pending_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_person_add.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_person_add_500.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_phone_in_talk_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_photo_camera.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_play_arrow_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_priority_high.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_qr_code.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_repeat_one.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_replay.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_reply.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_report_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_ring_volume.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_safety_divider.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_search.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_search_500.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_security.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_settings.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_settings_backup_restore.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_settings_ethernet.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_settings_phone.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_share.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_share_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_shield.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_star.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_stop_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_supervised_user_circle_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_tag.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_task.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_theater_comedy.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_theater_comedy_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_timer.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_timer_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_toggle_on.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_translate.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_travel_explore.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_upload_file.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_verified_user.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_videocam.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_videocam_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_videocam_off.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_visibility.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_visibility_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_visibility_off.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_visibility_off_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_volume_down.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_volume_up.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_vpn_key_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_vpn_key_off_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_warning_filled.xml create mode 100644 apps/android/app/src/main/res/drawable/ic_wifi_tethering.xml diff --git a/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt b/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt index 1e7641df3c..953b598630 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt @@ -13,13 +13,12 @@ import androidx.compose.animation.core.* import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Lock import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.fragment.app.FragmentActivity @@ -426,7 +425,7 @@ fun MainPage( ) { SimpleButton( stringResource(R.string.auth_unlock), - icon = Icons.Outlined.Lock, + icon = painterResource(R.drawable.ic_lock), click = { laFailed.value = false runAuthenticate() diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt index adda558d29..0f54b42d8c 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt @@ -2,11 +2,10 @@ package chat.simplex.app.model import android.net.Uri import androidx.compose.material.MaterialTheme -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* import androidx.compose.runtime.* import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.font.* import androidx.compose.ui.text.style.TextDecoration @@ -1517,12 +1516,12 @@ data class CIMeta ( val isRcvNew: Boolean get() = itemStatus is CIStatus.RcvNew - fun statusIcon(primaryColor: Color, metaColor: Color = HighOrLowlight): Pair? = + fun statusIcon(primaryColor: Color, metaColor: Color = HighOrLowlight): Pair? = when (itemStatus) { - is CIStatus.SndSent -> Icons.Filled.Check to metaColor - is CIStatus.SndErrorAuth -> Icons.Filled.Close to Color.Red - is CIStatus.SndError -> Icons.Filled.WarningAmber to WarningYellow - is CIStatus.RcvNew -> Icons.Filled.Circle to primaryColor + is CIStatus.SndSent -> R.drawable.ic_check_filled to metaColor + is CIStatus.SndErrorAuth -> R.drawable.ic_close to Color.Red + is CIStatus.SndError -> R.drawable.ic_warning_filled to WarningYellow + is CIStatus.RcvNew -> R.drawable.ic_circle_filled to primaryColor else -> null } diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index 6937cc7f1e..1fe7e1aa1a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -9,14 +9,13 @@ import android.provider.Settings import android.util.Log import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* +import chat.simplex.app.views.helpers.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp @@ -24,7 +23,6 @@ import chat.simplex.app.* import chat.simplex.app.R import chat.simplex.app.ui.theme.* import chat.simplex.app.views.call.* -import chat.simplex.app.views.helpers.* import chat.simplex.app.views.newchat.ConnectViaLinkTab import chat.simplex.app.views.onboarding.OnboardingStage import chat.simplex.app.views.usersettings.* @@ -1633,7 +1631,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a title = { Row { Icon( - Icons.Outlined.Bolt, + painterResource(R.drawable.ic_bolt), contentDescription = if (mode == NotificationsMode.SERVICE) stringResource(R.string.icon_descr_instant_notifications) else stringResource(R.string.periodic_notifications), ) @@ -1670,7 +1668,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a title = { Row { Icon( - Icons.Outlined.Bolt, + painterResource(R.drawable.ic_bolt), contentDescription = if (mode == NotificationsMode.SERVICE) stringResource(R.string.icon_descr_instant_notifications) else stringResource(R.string.periodic_notifications), ) @@ -1701,7 +1699,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a title = { Row { Icon( - Icons.Outlined.Bolt, + painterResource(R.drawable.ic_bolt), contentDescription = if (mode == NotificationsMode.SERVICE) stringResource(R.string.icon_descr_instant_notifications) else stringResource(R.string.periodic_notifications), ) @@ -2628,7 +2626,8 @@ sealed class ContactUserPrefTimed { interface Feature { // val icon: ImageVector val text: String - val iconFilled: ImageVector + @Composable + fun iconFilled(): Painter val hasParam: Boolean } @@ -2657,21 +2656,21 @@ enum class ChatFeature: Feature { Calls -> generalGetString(R.string.audio_video_calls) } - val icon: ImageVector - get() = when(this) { - TimedMessages -> Icons.Outlined.Timer - FullDelete -> Icons.Outlined.DeleteForever - Voice -> Icons.Outlined.KeyboardVoice - Calls -> Icons.Outlined.Phone + val icon: Painter + @Composable get() = when(this) { + TimedMessages -> painterResource(R.drawable.ic_timer) + FullDelete -> painterResource(R.drawable.ic_delete_forever) + Voice -> painterResource(R.drawable.ic_keyboard_voice) + Calls -> painterResource(R.drawable.ic_call) } - override val iconFilled: ImageVector - get() = when(this) { - TimedMessages -> Icons.Filled.Timer - FullDelete -> Icons.Filled.DeleteForever - Voice -> Icons.Filled.KeyboardVoice - Calls -> Icons.Filled.Phone - } + @Composable + override fun iconFilled(): Painter = when(this) { + TimedMessages -> painterResource(R.drawable.ic_timer_filled) + FullDelete -> painterResource(R.drawable.ic_delete_forever_filled) + Voice -> painterResource(R.drawable.ic_keyboard_voice_filled) + Calls -> painterResource(R.drawable.ic_call_filled) + } fun allowDescription(allowed: FeatureAllowed): String = when (this) { @@ -2746,21 +2745,21 @@ enum class GroupFeature: Feature { Voice -> generalGetString(R.string.voice_messages) } - val icon: ImageVector - get() = when(this) { - TimedMessages -> Icons.Outlined.Timer - DirectMessages -> Icons.Outlined.SwapHorizontalCircle - FullDelete -> Icons.Outlined.DeleteForever - Voice -> Icons.Outlined.KeyboardVoice + val icon: Painter + @Composable get() = when(this) { + TimedMessages -> painterResource(R.drawable.ic_timer) + DirectMessages -> painterResource(R.drawable.ic_swap_horizontal_circle) + FullDelete -> painterResource(R.drawable.ic_delete_forever) + Voice -> painterResource(R.drawable.ic_keyboard_voice) } - override val iconFilled: ImageVector - get() = when(this) { - TimedMessages -> Icons.Filled.Timer - DirectMessages -> Icons.Filled.SwapHorizontalCircle - FullDelete -> Icons.Filled.DeleteForever - Voice -> Icons.Filled.KeyboardVoice - } + @Composable + override fun iconFilled(): Painter = when(this) { + TimedMessages -> painterResource(R.drawable.ic_timer_filled) + DirectMessages -> painterResource(R.drawable.ic_swap_horizontal_circle_filled) + FullDelete -> painterResource(R.drawable.ic_delete_forever_filled) + Voice -> painterResource(R.drawable.ic_keyboard_voice_filled) + } fun enableDescription(enabled: GroupFeatureEnabled, canEdit: Boolean): String = if (canEdit) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt index 623b77fd8f..cf9084ea1b 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt @@ -7,9 +7,6 @@ import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.* import androidx.compose.material.MaterialTheme.colors -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ArrowBackIosNew -import androidx.compose.material.icons.outlined.ArrowForwardIos import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment @@ -17,6 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.* import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -89,7 +87,7 @@ fun CreateProfilePanel(chatModel: ChatModel, close: () -> Unit) { if (chatModel.users.isEmpty()) { SimpleButtonDecorated( text = stringResource(R.string.about_simplex), - icon = Icons.Outlined.ArrowBackIosNew, + icon = painterResource(R.drawable.ic_arrow_back_ios_new), textDecoration = TextDecoration.None, fontWeight = FontWeight.Medium ) { chatModel.onboardingStage.value = OnboardingStage.Step1_SimpleXInfo } @@ -108,7 +106,7 @@ fun CreateProfilePanel(chatModel: ChatModel, close: () -> Unit) { Surface(shape = RoundedCornerShape(20.dp)) { Row(verticalAlignment = Alignment.CenterVertically, modifier = createModifier) { Text(stringResource(R.string.create_profile_button), style = MaterialTheme.typography.caption, color = createColor, fontWeight = FontWeight.Medium) - Icon(Icons.Outlined.ArrowForwardIos, stringResource(R.string.create_profile_button), tint = createColor) + Icon(painterResource(R.drawable.ic_arrow_forward_ios), stringResource(R.string.create_profile_button), tint = createColor) } } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/call/CallView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/call/CallView.kt index 015f926631..9025ba32db 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/call/CallView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/call/CallView.kt @@ -16,17 +16,15 @@ import androidx.activity.compose.BackHandler import androidx.annotation.StringRes import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview @@ -272,14 +270,14 @@ private fun ActiveCallOverlayLayout( ToggleAudioButton(call, toggleAudio) Spacer(Modifier.size(40.dp)) IconButton(onClick = dismiss) { - Icon(Icons.Filled.CallEnd, stringResource(R.string.icon_descr_hang_up), tint = Color.Red, modifier = Modifier.size(64.dp)) + Icon(painterResource(R.drawable.ic_call_end_filled), stringResource(R.string.icon_descr_hang_up), tint = Color.Red, modifier = Modifier.size(64.dp)) } if (call.videoEnabled) { - ControlButton(call, Icons.Filled.FlipCameraAndroid, R.string.icon_descr_flip_camera, flipCamera) - ControlButton(call, Icons.Filled.Videocam, R.string.icon_descr_video_off, toggleVideo) + ControlButton(call, painterResource(R.drawable.ic_flip_camera_android_filled), R.string.icon_descr_flip_camera, flipCamera) + ControlButton(call, painterResource(R.drawable.ic_videocam_filled), R.string.icon_descr_video_off, toggleVideo) } else { Spacer(Modifier.size(48.dp)) - ControlButton(call, Icons.Outlined.VideocamOff, R.string.icon_descr_video_on, toggleVideo) + ControlButton(call, painterResource(R.drawable.ic_videocam_off), R.string.icon_descr_video_on, toggleVideo) } } } @@ -297,7 +295,7 @@ private fun ActiveCallOverlayLayout( Box(Modifier.fillMaxWidth().padding(bottom = DEFAULT_BOTTOM_PADDING), contentAlignment = Alignment.CenterStart) { Box(Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) { IconButton(onClick = dismiss) { - Icon(Icons.Filled.CallEnd, stringResource(R.string.icon_descr_hang_up), tint = Color.Red, modifier = Modifier.size(64.dp)) + Icon(painterResource(R.drawable.ic_call_end_filled), stringResource(R.string.icon_descr_hang_up), tint = Color.Red, modifier = Modifier.size(64.dp)) } } Box(Modifier.padding(start = 32.dp)) { @@ -315,7 +313,7 @@ private fun ActiveCallOverlayLayout( } @Composable -private fun ControlButton(call: Call, icon: ImageVector, @StringRes iconText: Int, action: () -> Unit, enabled: Boolean = true) { +private fun ControlButton(call: Call, icon: Painter, @StringRes iconText: Int, action: () -> Unit, enabled: Boolean = true) { if (call.hasMedia) { IconButton(onClick = action, enabled = enabled) { Icon(icon, stringResource(iconText), tint = if (enabled) Color(0xFFFFFFD8) else HighOrLowlight, modifier = Modifier.size(40.dp)) @@ -328,18 +326,18 @@ private fun ControlButton(call: Call, icon: ImageVector, @StringRes iconText: In @Composable private fun ToggleAudioButton(call: Call, toggleAudio: () -> Unit) { if (call.audioEnabled) { - ControlButton(call, Icons.Outlined.Mic, R.string.icon_descr_audio_off, toggleAudio) + ControlButton(call, painterResource(R.drawable.ic_mic), R.string.icon_descr_audio_off, toggleAudio) } else { - ControlButton(call, Icons.Outlined.MicOff, R.string.icon_descr_audio_on, toggleAudio) + ControlButton(call, painterResource(R.drawable.ic_mic_off), R.string.icon_descr_audio_on, toggleAudio) } } @Composable private fun ToggleSoundButton(call: Call, enabled: Boolean, toggleSound: () -> Unit) { if (call.soundSpeaker) { - ControlButton(call, Icons.Outlined.VolumeUp, R.string.icon_descr_speaker_off, toggleSound, enabled) + ControlButton(call, painterResource(R.drawable.ic_volume_up), R.string.icon_descr_speaker_off, toggleSound, enabled) } else { - ControlButton(call, Icons.Outlined.VolumeDown, R.string.icon_descr_speaker_on, toggleSound, enabled) + ControlButton(call, painterResource(R.drawable.ic_volume_down), R.string.icon_descr_speaker_on, toggleSound, enabled) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallActivity.kt b/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallActivity.kt index dee29273ac..55abc1a941 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallActivity.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallActivity.kt @@ -17,14 +17,12 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -171,18 +169,18 @@ fun IncomingCallLockScreenAlertLayout( Text(invitation.contact.chatViewName, style = MaterialTheme.typography.h2) Spacer(Modifier.fillMaxHeight().weight(1f)) Row { - LockScreenCallButton(stringResource(R.string.reject), Icons.Filled.CallEnd, Color.Red, rejectCall) + LockScreenCallButton(stringResource(R.string.reject), painterResource(R.drawable.ic_call_end_filled), Color.Red, rejectCall) Spacer(Modifier.size(48.dp)) - LockScreenCallButton(stringResource(R.string.ignore), Icons.Filled.Close, MaterialTheme.colors.primary, ignoreCall) + LockScreenCallButton(stringResource(R.string.ignore), painterResource(R.drawable.ic_close), MaterialTheme.colors.primary, ignoreCall) Spacer(Modifier.size(48.dp)) - LockScreenCallButton(stringResource(R.string.accept), Icons.Filled.Check, SimplexGreen, acceptCall) + LockScreenCallButton(stringResource(R.string.accept), painterResource(R.drawable.ic_check_filled), SimplexGreen, acceptCall) } } else if (callOnLockScreen == CallOnLockScreen.SHOW) { SimpleXLogo() Text(stringResource(R.string.open_simplex_chat_to_accept_call), textAlign = TextAlign.Center, lineHeight = 22.sp) Text(stringResource(R.string.allow_accepting_calls_from_lock_screen), textAlign = TextAlign.Center, style = MaterialTheme.typography.body2, lineHeight = 22.sp) Spacer(Modifier.fillMaxHeight().weight(1f)) - SimpleButton(text = stringResource(R.string.open_verb), icon = Icons.Filled.Check, click = openApp) + SimpleButton(text = stringResource(R.string.open_verb), icon = painterResource(R.drawable.ic_check_filled), click = openApp) } } } @@ -199,7 +197,7 @@ private fun SimpleXLogo() { } @Composable -private fun LockScreenCallButton(text: String, icon: ImageVector, color: Color, action: () -> Unit) { +private fun LockScreenCallButton(text: String, icon: Painter, color: Color, action: () -> Unit) { Surface( shape = RoundedCornerShape(10.dp), color = Color.Transparent diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallAlertView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallAlertView.kt index a869186be9..56d57e1443 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallAlertView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/call/IncomingCallAlertView.kt @@ -4,15 +4,14 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -60,9 +59,9 @@ fun IncomingCallAlertLayout( ProfilePreview(profileOf = invitation.contact, size = 64.dp, color = Color.White) } Row(verticalAlignment = Alignment.CenterVertically) { - CallButton(stringResource(R.string.reject), Icons.Filled.CallEnd, Color.Red, rejectCall) - CallButton(stringResource(R.string.ignore), Icons.Filled.Close, MaterialTheme.colors.primary, ignoreCall) - CallButton(stringResource(R.string.accept), Icons.Filled.Check, SimplexGreen, acceptCall) + CallButton(stringResource(R.string.reject), painterResource(R.drawable.ic_call_end_filled), Color.Red, rejectCall) + CallButton(stringResource(R.string.ignore), painterResource(R.drawable.ic_close), MaterialTheme.colors.primary, ignoreCall) + CallButton(stringResource(R.string.accept), painterResource(R.drawable.ic_check_filled), SimplexGreen, acceptCall) } } } @@ -70,21 +69,21 @@ fun IncomingCallAlertLayout( @Composable fun IncomingCallInfo(invitation: RcvCallInvitation, chatModel: ChatModel) { - @Composable fun CallIcon(icon: ImageVector, descr: String) = Icon(icon, descr, tint = SimplexGreen) + @Composable fun CallIcon(icon: Painter, descr: String) = Icon(icon, descr, tint = SimplexGreen) Row(verticalAlignment = Alignment.CenterVertically) { if (chatModel.users.size > 1) { ProfileImage(size = 32.dp, image = invitation.user.profile.image, color = MaterialTheme.colors.secondary) Spacer(Modifier.width(4.dp)) } - if (invitation.callType.media == CallMediaType.Video) CallIcon(Icons.Filled.Videocam, stringResource(R.string.icon_descr_video_call)) - else CallIcon(Icons.Filled.Phone, stringResource(R.string.icon_descr_audio_call)) + if (invitation.callType.media == CallMediaType.Video) CallIcon(painterResource(R.drawable.ic_videocam_filled), stringResource(R.string.icon_descr_video_call)) + else CallIcon(painterResource(R.drawable.ic_call_filled), stringResource(R.string.icon_descr_audio_call)) Spacer(Modifier.width(4.dp)) Text(invitation.callTypeText) } } @Composable -private fun CallButton(text: String, icon: ImageVector, color: Color, action: () -> Unit) { +private fun CallButton(text: String, icon: Painter, color: Color, action: () -> Unit) { Surface( shape = RoundedCornerShape(10.dp), color = Color.Transparent diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt index 5102b92020..c74b579f08 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt @@ -13,9 +13,6 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardActions import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment @@ -23,6 +20,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.ClipboardManager import androidx.compose.ui.platform.LocalClipboardManager +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.TextStyle @@ -242,7 +240,7 @@ fun ChatInfoHeader(cInfo: ChatInfo, contact: Contact) { ChatInfoImage(cInfo, size = 192.dp, iconColor = if (isInDarkTheme()) GroupDark else SettingsSecondaryLight) Row(Modifier.padding(bottom = 8.dp), verticalAlignment = Alignment.CenterVertically) { if (contact.verified) { - Icon(Icons.Outlined.VerifiedUser, null, Modifier.padding(end = 6.dp, top = 4.dp).size(24.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_verified_user), null, Modifier.padding(end = 6.dp, top = 4.dp).size(24.dp), tint = HighOrLowlight) } Text( contact.profile.displayName, style = MaterialTheme.typography.h1.copy(fontWeight = FontWeight.Normal), @@ -287,7 +285,7 @@ fun LocalAliasEditor( ) }, leadingIcon = if (leadingIcon) { - { Icon(Icons.Default.Edit, null, Modifier.padding(start = 7.dp)) } + { Icon(painterResource(R.drawable.ic_edit_filled), null, Modifier.padding(start = 7.dp)) } } else null, color = HighOrLowlight, focus = focus, @@ -324,7 +322,7 @@ private fun NetworkStatusRow(networkStatus: NetworkStatus) { ) { Text(stringResource(R.string.network_status)) Icon( - Icons.Outlined.Info, + painterResource(R.drawable.ic_info), stringResource(R.string.network_status), tint = MaterialTheme.colors.primary ) @@ -348,12 +346,12 @@ private fun ServerImage(networkStatus: NetworkStatus) { Box(Modifier.size(18.dp)) { when (networkStatus) { is NetworkStatus.Connected -> - Icon(Icons.Filled.Circle, stringResource(R.string.icon_descr_server_status_connected), tint = MaterialTheme.colors.primaryVariant) + Icon(painterResource(R.drawable.ic_circle_filled), stringResource(R.string.icon_descr_server_status_connected), tint = MaterialTheme.colors.primaryVariant) is NetworkStatus.Disconnected -> - Icon(Icons.Filled.Pending, stringResource(R.string.icon_descr_server_status_disconnected), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_pending_filled), stringResource(R.string.icon_descr_server_status_disconnected), tint = HighOrLowlight) is NetworkStatus.Error -> - Icon(Icons.Filled.Error, stringResource(R.string.icon_descr_server_status_error), tint = HighOrLowlight) - else -> Icon(Icons.Outlined.Circle, stringResource(R.string.icon_descr_server_status_pending), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_error_filled), stringResource(R.string.icon_descr_server_status_error), tint = HighOrLowlight) + else -> Icon(painterResource(R.drawable.ic_circle), stringResource(R.string.icon_descr_server_status_pending), tint = HighOrLowlight) } } } @@ -378,7 +376,7 @@ fun SwitchAddressButton(onClick: () -> Unit) { @Composable fun VerifyCodeButton(contactVerified: Boolean, onClick: () -> Unit) { SettingsActionItem( - if (contactVerified) Icons.Outlined.VerifiedUser else Icons.Outlined.Shield, + if (contactVerified) painterResource(R.drawable.ic_verified_user) else painterResource(R.drawable.ic_shield), stringResource(if (contactVerified) R.string.view_security_code else R.string.verify_security_code), click = onClick, iconColor = HighOrLowlight, @@ -388,7 +386,7 @@ fun VerifyCodeButton(contactVerified: Boolean, onClick: () -> Unit) { @Composable private fun ContactPreferencesButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.ToggleOn, + painterResource(R.drawable.ic_toggle_on), stringResource(R.string.contact_preferences), click = onClick ) @@ -397,7 +395,7 @@ private fun ContactPreferencesButton(onClick: () -> Unit) { @Composable fun ClearChatButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Restore, + painterResource(R.drawable.ic_settings_backup_restore), stringResource(R.string.clear_chat_button), click = onClick, textColor = WarningOrange, @@ -408,7 +406,7 @@ fun ClearChatButton(onClick: () -> Unit) { @Composable private fun DeleteContactButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), stringResource(R.string.button_delete_contact), click = onClick, textColor = Color.Red, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt index e18ba990bb..1731ba49a6 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt @@ -12,9 +12,6 @@ import androidx.compose.foundation.lazy.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.mapSaver import androidx.compose.runtime.saveable.rememberSaveable @@ -23,6 +20,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.* +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.font.FontWeight @@ -392,7 +390,7 @@ fun ChatInfoToolbar( val barButtons = arrayListOf<@Composable RowScope.() -> Unit>() val menuItems = arrayListOf<@Composable () -> Unit>() menuItems.add { - ItemAction(stringResource(android.R.string.search_go).capitalize(Locale.current), Icons.Outlined.Search, onClick = { + ItemAction(stringResource(android.R.string.search_go).capitalize(Locale.current), painterResource(R.drawable.ic_search), onClick = { showMenu.value = false showSearch = true }) @@ -404,11 +402,11 @@ fun ChatInfoToolbar( showMenu.value = false startCall(CallMediaType.Audio) }) { - Icon(Icons.Outlined.Phone, stringResource(R.string.icon_descr_more_button), tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_call_500), stringResource(R.string.icon_descr_more_button), tint = MaterialTheme.colors.primary) } } menuItems.add { - ItemAction(stringResource(R.string.icon_descr_video_call).capitalize(Locale.current), Icons.Outlined.Videocam, onClick = { + ItemAction(stringResource(R.string.icon_descr_video_call).capitalize(Locale.current), painterResource(R.drawable.ic_videocam), onClick = { showMenu.value = false startCall(CallMediaType.Video) }) @@ -419,7 +417,7 @@ fun ChatInfoToolbar( showMenu.value = false addMembers(chat.chatInfo.groupInfo) }) { - Icon(Icons.Outlined.PersonAdd, stringResource(R.string.icon_descr_add_members), tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_person_add_500), stringResource(R.string.icon_descr_add_members), tint = MaterialTheme.colors.primary) } } } @@ -427,7 +425,7 @@ fun ChatInfoToolbar( menuItems.add { ItemAction( if (ntfsEnabled.value) stringResource(R.string.mute_chat) else stringResource(R.string.unmute_chat), - if (ntfsEnabled.value) Icons.Outlined.NotificationsOff else Icons.Outlined.Notifications, + if (ntfsEnabled.value) painterResource(R.drawable.ic_notifications_off) else painterResource(R.drawable.ic_notifications), onClick = { showMenu.value = false // Just to make a delay before changing state of ntfsEnabled, otherwise it will redraw menu item with new value before closing the menu @@ -441,7 +439,7 @@ fun ChatInfoToolbar( barButtons.add { IconButton({ showMenu.value = true }) { - Icon(Icons.Default.MoreVert, stringResource(R.string.icon_descr_more_button), tint = MaterialTheme.colors.primary) + Icon(MoreVertFilled, stringResource(R.string.icon_descr_more_button), tint = MaterialTheme.colors.primary) } } @@ -498,7 +496,7 @@ fun ChatInfoToolbarTitle(cInfo: ChatInfo, imageSize: Dp = 40.dp, iconColor: Colo @Composable private fun ContactVerifiedShield() { - Icon(Icons.Outlined.VerifiedUser, null, Modifier.size(18.dp).padding(end = 3.dp, top = 1.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_verified_user), null, Modifier.size(18.dp).padding(end = 3.dp, top = 1.dp), tint = HighOrLowlight) } data class CIListState(val scrolled: Boolean, val itemCount: Int, val keyboardState: KeyboardState) @@ -797,7 +795,7 @@ fun BoxWithConstraintsScope.FloatingButtons( DefaultDropdownMenu(showDropDown, offset = DpOffset(maxWidth - DEFAULT_PADDING, 24.dp + fabSize)) { ItemAction( generalGetString(R.string.mark_read), - Icons.Outlined.Check, + painterResource(R.drawable.ic_check), onClick = { markRead( CC.ItemRange(minUnreadItemId, chatItems[chatItems.size - listState.layoutInfo.visibleItemsInfo.lastIndex - 1].id - 1), @@ -901,7 +899,7 @@ private fun bottomEndFloatingButton( modifier = Modifier.size(48.dp) ) { Icon( - imageVector = Icons.Default.KeyboardArrowDown, + painter = painterResource(R.drawable.ic_keyboard_arrow_down), contentDescription = null, tint = MaterialTheme.colors.primary ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeFileView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeFileView.kt index dd7b628e1e..a36b09a169 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeFileView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeFileView.kt @@ -1,12 +1,10 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.InsertDriveFile -import androidx.compose.material.icons.outlined.Close import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -25,7 +23,7 @@ fun ComposeFileView(fileName: String, cancelFile: () -> Unit, cancelEnabled: Boo verticalAlignment = Alignment.CenterVertically ) { Icon( - Icons.Filled.InsertDriveFile, + painterResource(R.drawable.ic_draft_filled), stringResource(R.string.icon_descr_file), Modifier .padding(start = 4.dp, end = 2.dp) @@ -37,7 +35,7 @@ fun ComposeFileView(fileName: String, cancelFile: () -> Unit, cancelEnabled: Boo if (cancelEnabled) { IconButton(onClick = cancelFile, modifier = Modifier.padding(0.dp)) { Icon( - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), contentDescription = stringResource(R.string.icon_descr_cancel_file_preview), tint = MaterialTheme.colors.primary, modifier = Modifier.padding(10.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeImageView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeImageView.kt index f22c04bd98..6823f29ce8 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeImageView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeImageView.kt @@ -6,14 +6,12 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Videocam -import androidx.compose.material.icons.outlined.Close import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -49,7 +47,7 @@ fun ComposeImageView(media: ComposePreview.MediaPreview, cancelImages: () -> Uni modifier = Modifier.widthIn(max = 80.dp).height(60.dp) ) Icon( - Icons.Default.Videocam, + painterResource(R.drawable.ic_videocam_filled), "preview video", Modifier .size(20.dp), @@ -69,7 +67,7 @@ fun ComposeImageView(media: ComposePreview.MediaPreview, cancelImages: () -> Uni if (cancelEnabled) { IconButton(onClick = cancelImages) { Icon( - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), contentDescription = stringResource(R.string.icon_descr_cancel_image_preview), tint = MaterialTheme.colors.primary, ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt index 19b8042a99..1840600666 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt @@ -19,10 +19,6 @@ import androidx.activity.result.contract.ActivityResultContract import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AttachFile -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.outlined.Reply import androidx.compose.runtime.* import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable @@ -30,6 +26,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.core.content.ContextCompat @@ -652,10 +649,10 @@ fun ComposeView( fun contextItemView() { when (val contextItem = composeState.value.contextItem) { ComposeContextItem.NoContextItem -> {} - is ComposeContextItem.QuotedItem -> ContextItemView(contextItem.chatItem, Icons.Outlined.Reply) { + is ComposeContextItem.QuotedItem -> ContextItemView(contextItem.chatItem, painterResource(R.drawable.ic_reply)) { composeState.value = composeState.value.copy(contextItem = ComposeContextItem.NoContextItem) } - is ComposeContextItem.EditingItem -> ContextItemView(contextItem.chatItem, Icons.Filled.Edit) { + is ComposeContextItem.EditingItem -> ContextItemView(contextItem.chatItem, painterResource(R.drawable.ic_edit_filled)) { clearState() } } @@ -690,7 +687,7 @@ fun ComposeView( ) { IconButton(showChooseAttachment, enabled = !composeState.value.attachmentDisabled && rememberUpdatedState(chat.userCanSend).value) { Icon( - Icons.Filled.AttachFile, + painterResource(R.drawable.ic_attach_file_filled_500), contentDescription = stringResource(R.string.attach), tint = if (!composeState.value.attachmentDisabled && userCanSend.value) MaterialTheme.colors.primary else HighOrLowlight, modifier = Modifier diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeVoiceView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeVoiceView.kt index 64bd3f43bb..f0994b870e 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeVoiceView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeVoiceView.kt @@ -2,13 +2,11 @@ import androidx.compose.animation.core.Animatable import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.Close import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -77,7 +75,7 @@ fun ComposeVoiceView( }, enabled = finishedRecording) { Icon( - if (audioPlaying.value) Icons.Filled.Pause else Icons.Filled.PlayArrow, + if (audioPlaying.value) painterResource(R.drawable.ic_pause_filled) else painterResource(R.drawable.ic_play_arrow_filled), stringResource(R.string.icon_descr_file), Modifier .padding(start = 4.dp, end = 2.dp) @@ -109,7 +107,7 @@ fun ComposeVoiceView( modifier = Modifier.padding(0.dp) ) { Icon( - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), contentDescription = stringResource(R.string.icon_descr_cancel_file_preview), tint = MaterialTheme.colors.primary, modifier = Modifier.padding(10.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContactPreferences.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContactPreferences.kt index ada642a26d..46c96e47af 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContactPreferences.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContactPreferences.kt @@ -130,7 +130,7 @@ private fun FeatureSection( SectionView( feature.text.uppercase(), - icon = feature.iconFilled, + icon = feature.iconFilled(), iconTint = if (enabled.forUser) SimplexGreen else if (enabled.forContact) WarningYellow else Color.Red, leadingIcon = true, ) { @@ -166,7 +166,7 @@ private fun TimedMessagesFeatureSection( SectionView( ChatFeature.TimedMessages.text.uppercase(), - icon = ChatFeature.TimedMessages.iconFilled, + icon = ChatFeature.TimedMessages.iconFilled(), iconTint = if (enabled.forUser) SimplexGreen else if (enabled.forContact) WarningYellow else Color.Red, leadingIcon = true, ) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt index c07ff70aa1..c030fb86d2 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt @@ -3,13 +3,11 @@ package chat.simplex.app.views.chat import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.outlined.Close +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -23,7 +21,7 @@ import kotlinx.datetime.Clock @Composable fun ContextItemView( contextItem: ChatItem, - contextIcon: ImageVector, + contextIcon: Painter, cancelContextItem: () -> Unit ) { val sent = contextItem.chatDir.sent @@ -58,7 +56,7 @@ fun ContextItemView( } IconButton(onClick = cancelContextItem) { Icon( - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), contentDescription = stringResource(R.string.cancel_verb), tint = MaterialTheme.colors.primary, modifier = Modifier.padding(10.dp) @@ -73,8 +71,7 @@ fun PreviewContextItemView() { SimpleXTheme { ContextItemView( contextItem = ChatItem.getSampleData(1, CIDirection.DirectRcv(), Clock.System.now(), "hello"), - contextIcon = Icons.Filled.Edit, - cancelContextItem = {} - ) + contextIcon = painterResource(R.drawable.ic_edit_filled) + ) {} } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt index 9df27148f0..7b9b323cb6 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt @@ -20,9 +20,6 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.material.ripple.rememberRipple import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable @@ -30,8 +27,9 @@ import androidx.compose.ui.* import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.* -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.* +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.text.TextStyle @@ -146,7 +144,7 @@ fun SendMsgView( } else -> { val cs = composeState.value - val icon = if (cs.editing || cs.liveMessage != null) Icons.Filled.Check else Icons.Outlined.ArrowUpward + val icon = if (cs.editing || cs.liveMessage != null) painterResource(R.drawable.ic_check_filled) else painterResource(R.drawable.ic_arrow_upward) val disabled = !cs.sendEnabled() || (!allowedVoiceByPrefs && cs.preview is ComposePreview.VoicePreview) || cs.endLiveDisabled @@ -163,7 +161,7 @@ fun SendMsgView( ) { ItemAction( generalGetString(R.string.send_live_message), - Icons.Filled.Bolt, + BoltFilled, onClick = { startLiveMessage(scope, sendLiveMessage, updateLiveMessage, sendButtonSize, sendButtonAlpha, composeState, liveMessageAlertShown) showDropdown.value = false @@ -297,7 +295,7 @@ private fun BoxScope.DeleteTextButton(composeState: MutableState) { composeState.value = composeState.value.copy(message = "") }, Modifier.align(Alignment.TopEnd).size(36.dp) ) { - Icon(Icons.Filled.Close, null, Modifier.padding(7.dp).size(36.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_close), null, Modifier.padding(7.dp).size(36.dp), tint = HighOrLowlight) } } @@ -354,7 +352,7 @@ private fun RecordVoiceView(recState: MutableState, stopRecOnNex private fun DisallowedVoiceButton(enabled: Boolean, onClick: () -> Unit) { IconButton(onClick, Modifier.size(36.dp), enabled = enabled) { Icon( - Icons.Outlined.KeyboardVoice, + painterResource(R.drawable.ic_keyboard_voice), stringResource(R.string.icon_descr_record_voice_message), tint = HighOrLowlight, modifier = Modifier @@ -368,7 +366,7 @@ private fun DisallowedVoiceButton(enabled: Boolean, onClick: () -> Unit) { private fun VoiceButtonWithoutPermission(onClick: () -> Unit) { IconButton(onClick, Modifier.size(36.dp)) { Icon( - Icons.Filled.KeyboardVoice, + painterResource(R.drawable.ic_keyboard_voice_filled), stringResource(R.string.icon_descr_record_voice_message), tint = MaterialTheme.colors.primary, modifier = Modifier @@ -400,7 +398,7 @@ private fun LockToCurrentOrientationUntilDispose() { private fun StopRecordButton(onClick: () -> Unit) { IconButton(onClick, Modifier.size(36.dp)) { Icon( - Icons.Filled.Stop, + painterResource(R.drawable.ic_stop_filled), stringResource(R.string.icon_descr_record_voice_message), tint = MaterialTheme.colors.primary, modifier = Modifier @@ -414,7 +412,7 @@ private fun StopRecordButton(onClick: () -> Unit) { private fun RecordVoiceButton(interactionSource: MutableInteractionSource) { IconButton({}, Modifier.size(36.dp), interactionSource = interactionSource) { Icon( - Icons.Filled.KeyboardVoice, + painterResource(R.drawable.ic_keyboard_voice_filled), stringResource(R.string.icon_descr_record_voice_message), tint = MaterialTheme.colors.primary, modifier = Modifier @@ -435,7 +433,7 @@ private fun CancelLiveMessageButton( ) { IconButton(onClick, Modifier.size(36.dp)) { Icon( - Icons.Filled.Close, + painterResource(R.drawable.ic_close), stringResource(R.string.icon_descr_cancel_live_message), tint = MaterialTheme.colors.primary, modifier = Modifier @@ -447,7 +445,7 @@ private fun CancelLiveMessageButton( @Composable private fun SendMsgButton( - icon: ImageVector, + icon: Painter, sizeDp: Animatable, alpha: Animatable, enabled: Boolean, @@ -497,7 +495,7 @@ private fun StartLiveMessageButton(enabled: Boolean, onClick: () -> Unit) { contentAlignment = Alignment.Center ) { Icon( - Icons.Filled.Bolt, + BoltFilled, stringResource(R.string.icon_descr_send_message), tint = if (enabled) MaterialTheme.colors.primary else HighOrLowlight, modifier = Modifier diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/VerifyCodeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/VerifyCodeView.kt index 34afdb8a2d..81d20e8444 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/VerifyCodeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/VerifyCodeView.kt @@ -7,13 +7,11 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.verticalScroll import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Share -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp @@ -67,7 +65,7 @@ private fun VerifyCodeLayout( val splitCode = splitToParts(connectionCode, 24) Row(Modifier.fillMaxWidth().padding(bottom = DEFAULT_PADDING_HALF), horizontalArrangement = Arrangement.Center) { if (connectionVerified) { - Icon(Icons.Outlined.VerifiedUser, null, Modifier.padding(end = 4.dp).size(22.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_verified_user), null, Modifier.padding(end = 4.dp).size(22.dp), tint = HighOrLowlight) Text(String.format(stringResource(R.string.is_verified), displayName)) } else { Text(String.format(stringResource(R.string.is_not_verified), displayName)) @@ -91,7 +89,7 @@ private fun VerifyCodeLayout( val context = LocalContext.current Box(Modifier.weight(1f)) { IconButton({ shareText(context, connectionCode) }, Modifier.size(20.dp).align(Alignment.CenterStart)) { - Icon(Icons.Filled.Share, null, tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_share_filled), null, tint = MaterialTheme.colors.primary) } } Spacer(Modifier.weight(1f)) @@ -107,16 +105,16 @@ private fun VerifyCodeLayout( horizontalArrangement = Arrangement.spacedBy(10.dp) ) { if (connectionVerified) { - SimpleButton(generalGetString(R.string.clear_verification), Icons.Outlined.Shield) { + SimpleButton(generalGetString(R.string.clear_verification), painterResource(R.drawable.ic_shield)) { verifyCode(null) {} } } else { - SimpleButton(generalGetString(R.string.scan_code), Icons.Outlined.QrCode) { + SimpleButton(generalGetString(R.string.scan_code), painterResource(R.drawable.ic_qr_code)) { ModalManager.shared.showModal { ScanCodeView(verifyCode) { } } } - SimpleButton(generalGetString(R.string.mark_code_verified), Icons.Outlined.VerifiedUser) { + SimpleButton(generalGetString(R.string.mark_code_verified), painterResource(R.drawable.ic_verified_user)) { verifyCode(connectionCode) { verified -> if (!verified) { AlertManager.shared.showAlertMsg( diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/AddGroupMembersView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/AddGroupMembersView.kt index 706b681ca3..a57f563250 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/AddGroupMembersView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/AddGroupMembersView.kt @@ -10,15 +10,12 @@ import androidx.activity.compose.BackHandler import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.TheaterComedy -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview @@ -179,16 +176,15 @@ private fun RoleSelectionRow(groupInfo: GroupInfo, selectedRole: MutableState Unit, disabled: Boolean) { SettingsActionItem( - Icons.Outlined.Check, + painterResource(R.drawable.ic_check), stringResource(R.string.invite_to_group_button), click = onClick, textColor = MaterialTheme.colors.primary, @@ -200,7 +196,7 @@ fun InviteMembersButton(onClick: () -> Unit, disabled: Boolean) { @Composable fun SkipInvitingButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Check, + painterResource(R.drawable.ic_check), stringResource(R.string.skip_inviting_button), click = onClick, textColor = MaterialTheme.colors.primary, @@ -270,16 +266,16 @@ fun ContactCheckRow( enabled: Boolean, ) { val prohibitedToInviteIncognito = !groupInfo.membership.memberIncognito && contact.contactConnIncognito - val icon: ImageVector + val icon: Painter val iconColor: Color if (prohibitedToInviteIncognito) { - icon = Icons.Filled.TheaterComedy + icon = painterResource(R.drawable.ic_theater_comedy_filled) iconColor = HighOrLowlight } else if (checked) { - icon = Icons.Filled.CheckCircle + icon = painterResource(R.drawable.ic_check_circle_filled) iconColor = if (enabled) MaterialTheme.colors.primary else HighOrLowlight } else { - icon = Icons.Outlined.Circle + icon = painterResource(R.drawable.ic_circle) iconColor = HighOrLowlight } SectionItemView( diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupChatInfoView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupChatInfoView.kt index 1b5bd4a2d5..89c9d1b1dc 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupChatInfoView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupChatInfoView.kt @@ -12,12 +12,11 @@ import androidx.activity.compose.BackHandler import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow @@ -193,7 +192,7 @@ fun GroupChatInfoLayout( val tint = if (chat.chatInfo.incognito) HighOrLowlight else MaterialTheme.colors.primary AddMembersButton(tint, onAddMembersClick) } - SectionItemView(minHeight = 50.dp) { + SectionItemView(minHeight = 54.dp) { MemberRow(groupInfo.membership, user = true) } MembersList(members, showMemberInfo) @@ -247,7 +246,7 @@ private fun GroupChatInfoHeader(cInfo: ChatInfo) { @Composable private fun GroupPreferencesButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.ToggleOn, + painterResource(R.drawable.ic_toggle_on), stringResource(R.string.group_preferences), click = onClick ) @@ -256,7 +255,7 @@ private fun GroupPreferencesButton(onClick: () -> Unit) { @Composable private fun AddMembersButton(tint: Color = MaterialTheme.colors.primary, onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Add, + painterResource(R.drawable.ic_add), stringResource(R.string.button_add_members), onClick, iconColor = tint, @@ -268,7 +267,8 @@ private fun AddMembersButton(tint: Color = MaterialTheme.colors.primary, onClick private fun MembersList(members: List, showMemberInfo: (GroupMember) -> Unit) { Column { members.forEachIndexed { index, member -> - SectionItemView({ showMemberInfo(member) }, minHeight = 50.dp) { + Divider() + SectionItemView({ showMemberInfo(member) }, minHeight = 54.dp) { MemberRow(member) } } @@ -319,13 +319,13 @@ private fun MemberRow(member: GroupMember, user: Boolean = false) { @Composable private fun MemberVerifiedShield() { - Icon(Icons.Outlined.VerifiedUser, null, Modifier.padding(end = 3.dp).size(16.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_verified_user), null, Modifier.padding(end = 3.dp).size(16.dp), tint = HighOrLowlight) } @Composable private fun GroupLinkButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Link, + painterResource(R.drawable.ic_link), stringResource(R.string.group_link), onClick, iconColor = HighOrLowlight @@ -335,7 +335,7 @@ private fun GroupLinkButton(onClick: () -> Unit) { @Composable private fun CreateGroupLinkButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.AddLink, + painterResource(R.drawable.ic_add_link), stringResource(R.string.create_group_link), onClick, iconColor = HighOrLowlight @@ -345,7 +345,7 @@ private fun CreateGroupLinkButton(onClick: () -> Unit) { @Composable fun EditGroupProfileButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Edit, + painterResource(R.drawable.ic_edit), stringResource(R.string.button_edit_group_profile), onClick, iconColor = HighOrLowlight @@ -360,7 +360,7 @@ private fun AddOrEditWelcomeMessage(welcomeMessage: String?, onClick: () -> Unit stringResource(R.string.button_welcome_message) } SettingsActionItem( - Icons.Outlined.MapsUgc, + painterResource(R.drawable.ic_maps_ugc), text, onClick, iconColor = HighOrLowlight @@ -370,7 +370,7 @@ private fun AddOrEditWelcomeMessage(welcomeMessage: String?, onClick: () -> Unit @Composable private fun LeaveGroupButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Logout, + painterResource(R.drawable.ic_logout), stringResource(R.string.button_leave_group), onClick, iconColor = Color.Red, @@ -381,7 +381,7 @@ private fun LeaveGroupButton(onClick: () -> Unit) { @Composable private fun DeleteGroupButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), stringResource(R.string.button_delete_group), onClick, iconColor = Color.Red, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupLinkView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupLinkView.kt index 0a804d2e97..a044e9cc1b 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupLinkView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupLinkView.kt @@ -1,20 +1,18 @@ package chat.simplex.app.views.chat.group import SectionBottomSpacer -import SectionItemView import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.CircularProgressIndicator import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -116,7 +114,7 @@ fun GroupLinkLayout( verticalArrangement = Arrangement.SpaceEvenly ) { if (groupLink == null) { - SimpleButton(stringResource(R.string.button_create_group_link), icon = Icons.Outlined.AddLink, disabled = creatingLink, click = createLink) + SimpleButton(stringResource(R.string.button_create_group_link), icon = painterResource(R.drawable.ic_add_link), disabled = creatingLink, click = createLink) } else { RoleSelectionRow(groupInfo, groupLinkMemberRole) var initialLaunch by remember { mutableStateOf(true) } @@ -134,12 +132,12 @@ fun GroupLinkLayout( ) { SimpleButton( stringResource(R.string.share_link), - icon = Icons.Outlined.Share, + icon = painterResource(R.drawable.ic_share), click = share ) SimpleButton( stringResource(R.string.delete_link), - icon = Icons.Outlined.Delete, + icon = painterResource(R.drawable.ic_delete), color = Color.Red, click = deleteLink ) @@ -163,9 +161,8 @@ private fun RoleSelectionRow(groupInfo: GroupInfo, selectedRole: MutableState Unit) { SettingsActionItem( - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), stringResource(R.string.button_remove_member), click = onClick, textColor = Color.Red, @@ -273,7 +272,7 @@ fun RemoveMemberButton(onClick: () -> Unit) { @Composable fun OpenChatButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Message, + painterResource(R.drawable.ic_chat), stringResource(R.string.button_send_direct_message), click = onClick, textColor = MaterialTheme.colors.primary, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupPreferences.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupPreferences.kt index 5446d6fe85..aa9715cf1a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupPreferences.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupPreferences.kt @@ -122,7 +122,7 @@ private fun FeatureSection( ) { SectionView { val on = enableFeature.value == GroupFeatureEnabled.ON - val icon = if (on) feature.iconFilled else feature.icon + val icon = if (on) feature.iconFilled() else feature.icon val iconTint = if (on) SimplexGreen else HighOrLowlight val timedOn = feature == GroupFeature.TimedMessages && enableFeature.value == GroupFeatureEnabled.ON if (groupInfo.canEdit) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupProfileView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupProfileView.kt index 42958d061a..844c0f149e 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupProfileView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupProfileView.kt @@ -65,7 +65,7 @@ fun GroupProfileLayout( val dataUnchanged = displayName.value == groupProfile.displayName && fullName.value == groupProfile.fullName && - chosenImage.value == null + groupProfile.image == profileImage.value val closeWithAlert = { if (dataUnchanged || !(displayName.value.isNotEmpty() && isValidDisplayName(displayName.value))) { close() diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CICallItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CICallItemView.kt index 4c9bbae077..06224d1cc0 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CICallItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CICallItemView.kt @@ -3,13 +3,11 @@ package chat.simplex.app.views.chat.item import androidx.compose.foundation.layout.* import androidx.compose.material.Icon import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PhoneInTalk -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -24,20 +22,20 @@ fun CICallItemView(cInfo: ChatInfo, cItem: ChatItem, status: CICallStatus, durat Modifier .padding(horizontal = 4.dp) .padding(bottom = 8.dp), horizontalAlignment = Alignment.CenterHorizontally) { - @Composable fun ConnectingCallIcon() = Icon(Icons.Outlined.SettingsPhone, stringResource(R.string.icon_descr_call_connecting), tint = SimplexGreen) + @Composable fun ConnectingCallIcon() = Icon(painterResource(R.drawable.ic_settings_phone), stringResource(R.string.icon_descr_call_connecting), tint = SimplexGreen) when (status) { CICallStatus.Pending -> if (sent) { - Icon(Icons.Outlined.Call, stringResource(R.string.icon_descr_call_pending_sent)) + Icon(painterResource(R.drawable.ic_call), stringResource(R.string.icon_descr_call_pending_sent)) } else { AcceptCallButton(cInfo, acceptCall) } - CICallStatus.Missed -> Icon(Icons.Outlined.Call, stringResource(R.string.icon_descr_call_missed), tint = Color.Red) - CICallStatus.Rejected -> Icon(Icons.Outlined.CallEnd, stringResource(R.string.icon_descr_call_rejected), tint = Color.Red) + CICallStatus.Missed -> Icon(painterResource(R.drawable.ic_call), stringResource(R.string.icon_descr_call_missed), tint = Color.Red) + CICallStatus.Rejected -> Icon(painterResource(R.drawable.ic_call_end), stringResource(R.string.icon_descr_call_rejected), tint = Color.Red) CICallStatus.Accepted -> ConnectingCallIcon() CICallStatus.Negotiated -> ConnectingCallIcon() - CICallStatus.Progress -> Icon(Icons.Filled.PhoneInTalk, stringResource(R.string.icon_descr_call_progress), tint = SimplexGreen) + CICallStatus.Progress -> Icon(painterResource(R.drawable.ic_phone_in_talk_filled), stringResource(R.string.icon_descr_call_progress), tint = SimplexGreen) CICallStatus.Ended -> Row { - Icon(Icons.Outlined.CallEnd, stringResource(R.string.icon_descr_call_ended), tint = HighOrLowlight, modifier = Modifier.padding(end = 4.dp)) + Icon(painterResource(R.drawable.ic_call_end), stringResource(R.string.icon_descr_call_ended), tint = HighOrLowlight, modifier = Modifier.padding(end = 4.dp)) Text(durationText(duration), color = HighOrLowlight) } CICallStatus.Error -> {} @@ -55,9 +53,9 @@ fun CICallItemView(cInfo: ChatInfo, cItem: ChatItem, status: CICallStatus, durat @Composable fun AcceptCallButton(cInfo: ChatInfo, acceptCall: (Contact) -> Unit) { if (cInfo is ChatInfo.Direct) { - SimpleButton(stringResource(R.string.answer_call), Icons.Outlined.RingVolume) { acceptCall(cInfo.contact) } + SimpleButton(stringResource(R.string.answer_call), painterResource(R.drawable.ic_ring_volume)) { acceptCall(cInfo.contact) } } else { - Icon(Icons.Outlined.RingVolume, stringResource(R.string.answer_call), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_ring_volume), stringResource(R.string.answer_call), tint = HighOrLowlight) } // if case let .direct(contact) = chatInfo { // Button { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt index 347dde80fc..752cf8681b 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.app.model.* @@ -16,14 +16,14 @@ fun CIChatFeatureView( chatItem: ChatItem, feature: Feature, iconColor: Color, - icon: ImageVector? = null + icon: Painter? = null ) { Row( Modifier.padding(horizontal = 6.dp, vertical = 6.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { - Icon(icon ?: feature.iconFilled, feature.text, Modifier.size(18.dp), tint = iconColor) + Icon(icon ?: feature.iconFilled(), feature.text, Modifier.size(18.dp), tint = iconColor) Text( chatEventText(chatItem), Modifier, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt index fde5b2148e..0194da14d8 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt @@ -6,18 +6,15 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.InsertDriveFile -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.* import androidx.compose.ui.unit.dp @@ -39,14 +36,14 @@ fun CIFileView( @Composable fun fileIcon( - innerIcon: ImageVector? = null, + innerIcon: Painter? = null, color: Color = if (isInDarkTheme()) FileDark else FileLight ) { Box( contentAlignment = Alignment.Center ) { Icon( - Icons.Filled.InsertDriveFile, + painterResource(R.drawable.ic_draft_filled), stringResource(R.string.icon_descr_file), Modifier.fillMaxSize(), tint = color @@ -154,15 +151,15 @@ fun CIFileView( FileProtocol.XFTP -> progressCircle(file.fileStatus.sndProgress, file.fileStatus.sndTotal) FileProtocol.SMP -> progressIndicator() } - is CIFileStatus.SndComplete -> fileIcon(innerIcon = Icons.Filled.Check) - is CIFileStatus.SndCancelled -> fileIcon(innerIcon = Icons.Outlined.Close) - is CIFileStatus.SndError -> fileIcon(innerIcon = Icons.Outlined.Close) + is CIFileStatus.SndComplete -> fileIcon(innerIcon = painterResource(R.drawable.ic_check_filled)) + is CIFileStatus.SndCancelled -> fileIcon(innerIcon = painterResource(R.drawable.ic_close)) + is CIFileStatus.SndError -> fileIcon(innerIcon = painterResource(R.drawable.ic_close)) is CIFileStatus.RcvInvitation -> if (fileSizeValid()) - fileIcon(innerIcon = Icons.Outlined.ArrowDownward, color = MaterialTheme.colors.primary) + fileIcon(innerIcon = painterResource(R.drawable.ic_arrow_downward), color = MaterialTheme.colors.primary) else - fileIcon(innerIcon = Icons.Outlined.PriorityHigh, color = WarningOrange) - is CIFileStatus.RcvAccepted -> fileIcon(innerIcon = Icons.Outlined.MoreHoriz) + fileIcon(innerIcon = painterResource(R.drawable.ic_priority_high), color = WarningOrange) + is CIFileStatus.RcvAccepted -> fileIcon(innerIcon = painterResource(R.drawable.ic_more_horiz)) is CIFileStatus.RcvTransfer -> if (file.fileProtocol == FileProtocol.XFTP && file.fileStatus.rcvProgress < file.fileStatus.rcvTotal) { progressCircle(file.fileStatus.rcvProgress, file.fileStatus.rcvTotal) @@ -170,8 +167,8 @@ fun CIFileView( progressIndicator() } is CIFileStatus.RcvComplete -> fileIcon() - is CIFileStatus.RcvCancelled -> fileIcon(innerIcon = Icons.Outlined.Close) - is CIFileStatus.RcvError -> fileIcon(innerIcon = Icons.Outlined.Close) + is CIFileStatus.RcvCancelled -> fileIcon(innerIcon = painterResource(R.drawable.ic_close)) + is CIFileStatus.RcvError -> fileIcon(innerIcon = painterResource(R.drawable.ic_close)) } } else { fileIcon() diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIGroupInvitationView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIGroupInvitationView.kt index 40c21aa412..d55c4ee8ba 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIGroupInvitationView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIGroupInvitationView.kt @@ -1,16 +1,14 @@ package chat.simplex.app.views.chat.item import android.content.res.Configuration -import android.util.Log import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.SupervisedUserCircle import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow @@ -46,7 +44,7 @@ fun CIGroupInvitationView( .padding(vertical = 4.dp) .padding(end = 2.dp) ) { - ProfileImage(size = 60.dp, image = groupInvitation.groupProfile.image, icon = Icons.Filled.SupervisedUserCircle, color = iconColor) + ProfileImage(size = 60.dp, image = groupInvitation.groupProfile.image, icon = R.drawable.ic_supervised_user_circle_filled, color = iconColor) Spacer(Modifier.padding(horizontal = 3.dp)) Column( Modifier.defaultMinSize(minHeight = 60.dp), diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt index 70cc608d61..c4368e1b7a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt @@ -8,9 +8,6 @@ import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.* import androidx.compose.material.CircularProgressIndicator import androidx.compose.material.Icon -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -18,10 +15,10 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.layoutId import androidx.compose.ui.platform.* +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp @@ -55,7 +52,7 @@ fun CIImageView( } @Composable - fun fileIcon(icon: ImageVector, @StringRes stringId: Int) { + fun fileIcon(icon: Painter, @StringRes stringId: Int) { Icon( icon, stringResource(stringId), @@ -80,14 +77,14 @@ fun CIImageView( FileProtocol.SMP -> {} } is CIFileStatus.SndTransfer -> progressIndicator() - is CIFileStatus.SndComplete -> fileIcon(Icons.Filled.Check, R.string.icon_descr_image_snd_complete) - is CIFileStatus.SndCancelled -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) - is CIFileStatus.SndError -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) - is CIFileStatus.RcvInvitation -> fileIcon(Icons.Outlined.ArrowDownward, R.string.icon_descr_asked_to_receive) - is CIFileStatus.RcvAccepted -> fileIcon(Icons.Outlined.MoreHoriz, R.string.icon_descr_waiting_for_image) + is CIFileStatus.SndComplete -> fileIcon(painterResource(R.drawable.ic_check_filled), R.string.icon_descr_image_snd_complete) + is CIFileStatus.SndCancelled -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) + is CIFileStatus.SndError -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) + is CIFileStatus.RcvInvitation -> fileIcon(painterResource(R.drawable.ic_arrow_downward), R.string.icon_descr_asked_to_receive) + is CIFileStatus.RcvAccepted -> fileIcon(painterResource(R.drawable.ic_more_horiz), R.string.icon_descr_waiting_for_image) is CIFileStatus.RcvTransfer -> progressIndicator() - is CIFileStatus.RcvCancelled -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) - is CIFileStatus.RcvError -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) + is CIFileStatus.RcvCancelled -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) + is CIFileStatus.RcvError -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) else -> {} } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIInvalidJSONView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIInvalidJSONView.kt index 51a6d92bce..f22fcf46a2 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIInvalidJSONView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIInvalidJSONView.kt @@ -5,12 +5,11 @@ import SectionView import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Share import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.dp @@ -35,7 +34,7 @@ fun InvalidJSONView(json: String) { Spacer(Modifier.height(DEFAULT_PADDING)) SectionView { val context = LocalContext.current - SettingsActionItem(Icons.Outlined.Share, generalGetString(R.string.share_verb), click = { + SettingsActionItem(painterResource(R.drawable.ic_share), generalGetString(R.string.share_verb), click = { shareText(context, json) }) } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIMetaView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIMetaView.kt index 67b4f54a4d..81afbc10e4 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIMetaView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIMetaView.kt @@ -2,15 +2,13 @@ package chat.simplex.app.views.chat.item import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Circle -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.Timer +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.res.painterResource +import chat.simplex.app.R import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -39,11 +37,11 @@ fun CIMetaView(chatItem: ChatItem, timedMessagesTTL: Int?, metaColor: Color = Hi // changing this function requires updating reserveSpaceForMeta private fun CIMetaText(meta: CIMeta, chatTTL: Int?, color: Color) { if (meta.itemEdited) { - StatusIconText(Icons.Outlined.Edit, color) + StatusIconText(painterResource(R.drawable.ic_edit), color) Spacer(Modifier.width(3.dp)) } if (meta.disappearing) { - StatusIconText(Icons.Outlined.Timer, color) + StatusIconText(painterResource(R.drawable.ic_timer), color) val ttl = meta.itemTimed?.ttl if (ttl != chatTTL) { Text(TimedMessagesPreference.shortTtlText(ttl), color = color, fontSize = 13.sp) @@ -53,10 +51,10 @@ private fun CIMetaText(meta: CIMeta, chatTTL: Int?, color: Color) { val statusIcon = meta.statusIcon(MaterialTheme.colors.primary, color) if (statusIcon != null) { val (icon, statusColor) = statusIcon - StatusIconText(icon, statusColor) + StatusIconText(painterResource(icon), statusColor) Spacer(Modifier.width(4.dp)) } else if (!meta.disappearing) { - StatusIconText(Icons.Filled.Circle, Color.Transparent) + StatusIconText(painterResource(R.drawable.ic_circle_filled), Color.Transparent) Spacer(Modifier.width(4.dp)) } Text(meta.timestampText, color = color, fontSize = 13.sp, maxLines = 1, overflow = TextOverflow.Ellipsis) @@ -81,7 +79,7 @@ fun reserveSpaceForMeta(meta: CIMeta, chatTTL: Int?): String { } @Composable -private fun StatusIconText(icon: ImageVector, color: Color) { +private fun StatusIconText(icon: Painter, color: Color) { Icon(icon, null, Modifier.height(12.dp), tint = color) } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt index cc976e242e..63d554b9bb 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt @@ -9,17 +9,15 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.* import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.* import androidx.compose.ui.platform.* +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.* import androidx.compose.ui.viewinterop.AndroidView @@ -163,9 +161,8 @@ private fun BoxScope.PlayButton(error: Boolean = false, onLongClick: () -> Unit, contentAlignment = Alignment.Center ) { Icon( - imageVector = Icons.Filled.PlayArrow, + painterResource(R.drawable.ic_play_arrow_filled), contentDescription = null, - Modifier.size(25.dp), tint = if (error) WarningOrange else Color.White ) } @@ -192,7 +189,7 @@ private fun DurationProgress(file: CIFile, playing: MutableState, durat color = Color.White ) /*if (!soundEnabled.value) { - Icon(Icons.Outlined.VolumeOff, null, + Icon(painterResource(R.drawable.ic_volume_off_filled), null, Modifier.padding(start = 5.dp).size(10.dp), tint = Color.White ) @@ -255,7 +252,7 @@ private fun progressIndicator() { } @Composable -private fun fileIcon(icon: ImageVector, @StringRes stringId: Int) { +private fun fileIcon(icon: Painter, @StringRes stringId: Int) { Icon( icon, stringResource(stringId), @@ -298,19 +295,19 @@ private fun loadingIndicator(file: CIFile?) { FileProtocol.XFTP -> progressCircle(file.fileStatus.sndProgress, file.fileStatus.sndTotal) FileProtocol.SMP -> progressIndicator() } - is CIFileStatus.SndComplete -> fileIcon(Icons.Filled.Check, R.string.icon_descr_video_snd_complete) - is CIFileStatus.SndCancelled -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) - is CIFileStatus.SndError -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) - is CIFileStatus.RcvInvitation -> fileIcon(Icons.Outlined.ArrowDownward, R.string.icon_descr_video_asked_to_receive) - is CIFileStatus.RcvAccepted -> fileIcon(Icons.Outlined.MoreHoriz, R.string.icon_descr_waiting_for_video) + is CIFileStatus.SndComplete -> fileIcon(painterResource(R.drawable.ic_check_filled), R.string.icon_descr_video_snd_complete) + is CIFileStatus.SndCancelled -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) + is CIFileStatus.SndError -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) + is CIFileStatus.RcvInvitation -> fileIcon(painterResource(R.drawable.ic_arrow_downward), R.string.icon_descr_video_asked_to_receive) + is CIFileStatus.RcvAccepted -> fileIcon(painterResource(R.drawable.ic_more_horiz), R.string.icon_descr_waiting_for_video) is CIFileStatus.RcvTransfer -> if (file.fileProtocol == FileProtocol.XFTP && file.fileStatus.rcvProgress < file.fileStatus.rcvTotal) { progressCircle(file.fileStatus.rcvProgress, file.fileStatus.rcvTotal) } else { progressIndicator() } - is CIFileStatus.RcvCancelled -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) - is CIFileStatus.RcvError -> fileIcon(Icons.Outlined.Close, R.string.icon_descr_file) + is CIFileStatus.RcvCancelled -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) + is CIFileStatus.RcvError -> fileIcon(painterResource(R.drawable.ic_close), R.string.icon_descr_file) else -> {} } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVoiceView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVoiceView.kt index cc873ac6ec..8d6bd2c8cc 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVoiceView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIVoiceView.kt @@ -5,8 +5,6 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment @@ -19,7 +17,9 @@ import androidx.compose.ui.graphics.* import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.* +import chat.simplex.app.R import chat.simplex.app.model.* import chat.simplex.app.ui.theme.* import chat.simplex.app.views.helpers.* @@ -171,7 +171,7 @@ private fun PlayPauseButton( contentAlignment = Alignment.Center ) { Icon( - imageVector = if (audioPlaying) Icons.Filled.Pause else Icons.Filled.PlayArrow, + if (audioPlaying) painterResource(R.drawable.ic_pause_filled) else painterResource(R.drawable.ic_play_arrow_filled), contentDescription = null, Modifier.size(36.dp), tint = if (error) WarningOrange else if (!enabled) HighOrLowlight else MaterialTheme.colors.primary @@ -200,7 +200,7 @@ private fun VoiceMsgIndicator( if (hasText) { IconButton({ if (!audioPlaying) play() else pause() }, Modifier.size(56.dp).drawRingModifier(angle, strokeColor, strokeWidth)) { Icon( - imageVector = if (audioPlaying) Icons.Filled.Pause else Icons.Filled.PlayArrow, + if (audioPlaying) painterResource(R.drawable.ic_pause_filled) else painterResource(R.drawable.ic_play_arrow_filled), contentDescription = null, Modifier.size(36.dp), tint = MaterialTheme.colors.primary diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt index d1b87aae6b..5e64d13e8d 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt @@ -6,16 +6,15 @@ import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.* +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -106,7 +105,7 @@ fun ChatItemView( fun MsgContentItemDropdownMenu() { DefaultDropdownMenu(showMenu) { if (cItem.meta.itemDeleted == null && !live) { - ItemAction(stringResource(R.string.reply_verb), Icons.Outlined.Reply, onClick = { + ItemAction(stringResource(R.string.reply_verb), painterResource(R.drawable.ic_reply), onClick = { if (composeState.value.editing) { composeState.value = ComposeState(contextItem = ComposeContextItem.QuotedItem(cItem), useLinkPreviews = useLinkPreviews) } else { @@ -115,7 +114,7 @@ fun ChatItemView( showMenu.value = false }) } - ItemAction(stringResource(R.string.share_verb), Icons.Outlined.Share, onClick = { + ItemAction(stringResource(R.string.share_verb), painterResource(R.drawable.ic_share), onClick = { val filePath = getLoadedFilePath(SimplexApp.context, cItem.file) when { filePath != null -> shareFile(context, cItem.text, filePath) @@ -123,7 +122,7 @@ fun ChatItemView( } showMenu.value = false }) - ItemAction(stringResource(R.string.copy_verb), Icons.Outlined.ContentCopy, onClick = { + ItemAction(stringResource(R.string.copy_verb), painterResource(R.drawable.ic_content_copy), onClick = { copyText(context, cItem.content.text) showMenu.value = false }) @@ -131,7 +130,7 @@ fun ChatItemView( val filePath = getLoadedFilePath(context, cItem.file) if (filePath != null) { val writePermissionState = rememberPermissionState(permission = Manifest.permission.WRITE_EXTERNAL_STORAGE) - ItemAction(stringResource(R.string.save_verb), Icons.Outlined.SaveAlt, onClick = { + ItemAction(stringResource(R.string.save_verb), painterResource(R.drawable.ic_download), onClick = { when (cItem.content.msgContent) { is MsgContent.MCImage -> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R || writePermissionState.hasPermission) { @@ -148,7 +147,7 @@ fun ChatItemView( } } if (cItem.meta.editable && cItem.content.msgContent !is MsgContent.MCVoice && !live) { - ItemAction(stringResource(R.string.edit_verb), Icons.Filled.Edit, onClick = { + ItemAction(stringResource(R.string.edit_verb), painterResource(R.drawable.ic_edit_filled), onClick = { composeState.value = ComposeState(editingItem = cItem, useLinkPreviews = useLinkPreviews) showMenu.value = false }) @@ -156,7 +155,7 @@ fun ChatItemView( if (cItem.meta.itemDeleted != null && revealed.value) { ItemAction( stringResource(R.string.hide_verb), - Icons.Outlined.VisibilityOff, + painterResource(R.drawable.ic_visibility_off), onClick = { revealed.value = false showMenu.value = false @@ -182,7 +181,7 @@ fun ChatItemView( if (!cItem.isDeletedContent) { ItemAction( stringResource(R.string.reveal_verb), - Icons.Outlined.Visibility, + painterResource(R.drawable.ic_visibility), onClick = { revealed.value = true showMenu.value = false @@ -270,7 +269,7 @@ fun CancelFileItemAction( ) { ItemAction( stringResource(cancelAction.uiActionId), - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), onClick = { showMenu.value = false cancelFileAlertDialog(fileId, cancelFile = cancelFile, cancelAction = cancelAction) @@ -288,7 +287,7 @@ fun DeleteItemAction( ) { ItemAction( stringResource(R.string.delete_verb), - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), onClick = { showMenu.value = false deleteMessageAlertDialog(cItem, questionText, deleteMessage = deleteMessage) @@ -306,7 +305,7 @@ fun ModerateItemAction( ) { ItemAction( stringResource(R.string.moderate_verb), - Icons.Outlined.Flag, + painterResource(R.drawable.ic_flag), onClick = { showMenu.value = false moderateMessageAlertDialog(cItem, questionText, deleteMessage = deleteMessage) @@ -315,6 +314,26 @@ fun ModerateItemAction( ) } +@Composable +fun ItemAction(text: String, icon: Painter, onClick: () -> Unit, color: Color = Color.Unspecified) { + val finalColor = if (color == Color.Unspecified) { + if (isInDarkTheme()) MenuTextColorDark else Color.Black + } else color + DropdownMenuItem(onClick, contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f)) { + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text, + modifier = Modifier + .fillMaxWidth() + .weight(1F) + .padding(end = 15.dp), + color = finalColor + ) + Icon(icon, text, tint = finalColor) + } + } +} + @Composable fun ItemAction(text: String, icon: ImageVector, onClick: () -> Unit, color: Color = Color.Unspecified) { val finalColor = if (color == Color.Unspecified) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt index 4717ae2c4d..fe80af7bc5 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt @@ -4,10 +4,6 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Flag import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -15,9 +11,10 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.* import androidx.compose.ui.platform.UriHandler +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontStyle @@ -72,7 +69,7 @@ fun FramedItemView( } @Composable - fun FramedItemHeader(caption: String, italic: Boolean, icon: ImageVector? = null) { + fun FramedItemHeader(caption: String, italic: Boolean, icon: Painter? = null) { Row( Modifier .background(if (sent) SentQuoteColorLight else ReceivedQuoteColorLight) @@ -142,7 +139,7 @@ fun FramedItemView( ciQuotedMsgView(qi) } Icon( - if (qi.content is MsgContent.MCFile) Icons.Filled.InsertDriveFile else Icons.Filled.Mic, + if (qi.content is MsgContent.MCFile) painterResource(R.drawable.ic_draft_filled) else painterResource(R.drawable.ic_mic_filled), if (qi.content is MsgContent.MCFile) stringResource(R.string.icon_descr_file) else stringResource(R.string.voice_message), Modifier .padding(top = 6.dp, end = 4.dp) @@ -181,9 +178,9 @@ fun FramedItemView( PriorityLayout(Modifier, CHAT_IMAGE_LAYOUT_ID) { if (ci.meta.itemDeleted != null) { if (ci.meta.itemDeleted is CIDeleted.Moderated) { - FramedItemHeader(String.format(stringResource(R.string.moderated_item_description), ci.meta.itemDeleted.byGroupMember.chatViewName), true, Icons.Outlined.Flag) + FramedItemHeader(String.format(stringResource(R.string.moderated_item_description), ci.meta.itemDeleted.byGroupMember.chatViewName), true, painterResource(R.drawable.ic_flag)) } else { - FramedItemHeader(stringResource(R.string.marked_deleted_description), true, Icons.Outlined.Delete) + FramedItemHeader(stringResource(R.string.marked_deleted_description), true, painterResource(R.drawable.ic_delete)) } } else if (ci.meta.isLive) { FramedItemHeader(stringResource(R.string.live), false) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatHelpView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatHelpView.kt index 082573b7af..6fd7212b8e 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatHelpView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatHelpView.kt @@ -4,8 +4,7 @@ import android.content.res.Configuration import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.PersonAdd +import androidx.compose.ui.res.painterResource import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -56,7 +55,7 @@ fun ChatHelpView(addContact: (() -> Unit)? = null) { ) { Text(stringResource(R.string.chat_help_tap_button)) Icon( - Icons.Outlined.PersonAdd, + painterResource(R.drawable.ic_person_add), stringResource(R.string.add_contact), modifier = if (addContact != null) Modifier.clickable(onClick = addContact) else Modifier, ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt index 1e8ed4a62f..921197a6f7 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt @@ -4,14 +4,12 @@ import android.content.res.Configuration import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow @@ -183,7 +181,7 @@ fun GroupMenuItems(chat: Chat, groupInfo: GroupInfo, chatModel: ChatModel, showM fun MarkReadChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState) { ItemAction( stringResource(R.string.mark_read), - Icons.Outlined.Check, + painterResource(R.drawable.ic_check), onClick = { markChatRead(chat, chatModel) chatModel.controller.ntfManager.cancelNotificationsForChat(chat.id) @@ -196,7 +194,7 @@ fun MarkReadChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState< fun MarkUnreadChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState) { ItemAction( stringResource(R.string.mark_unread), - Icons.Outlined.MarkChatUnread, + painterResource(R.drawable.ic_mark_chat_unread), onClick = { markChatUnread(chat, chatModel) showMenu.value = false @@ -208,7 +206,7 @@ fun MarkUnreadChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableStat fun ToggleNotificationsChatAction(chat: Chat, chatModel: ChatModel, ntfsEnabled: Boolean, showMenu: MutableState) { ItemAction( if (ntfsEnabled) stringResource(R.string.mute_chat) else stringResource(R.string.unmute_chat), - if (ntfsEnabled) Icons.Outlined.NotificationsOff else Icons.Outlined.Notifications, + if (ntfsEnabled) painterResource(R.drawable.ic_notifications_off) else painterResource(R.drawable.ic_notifications), onClick = { changeNtfsStatePerChat(!ntfsEnabled, mutableStateOf(ntfsEnabled), chat, chatModel) showMenu.value = false @@ -220,7 +218,7 @@ fun ToggleNotificationsChatAction(chat: Chat, chatModel: ChatModel, ntfsEnabled: fun ClearChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState) { ItemAction( stringResource(R.string.clear_chat_menu_action), - Icons.Outlined.Restore, + painterResource(R.drawable.ic_settings_backup_restore), onClick = { clearChatDialog(chat.chatInfo, chatModel) showMenu.value = false @@ -233,7 +231,7 @@ fun ClearChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState) { ItemAction( stringResource(R.string.delete_contact_menu_action), - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), onClick = { deleteContactDialog(chat.chatInfo, chatModel) showMenu.value = false @@ -246,7 +244,7 @@ fun DeleteContactAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState fun DeleteGroupAction(chat: Chat, groupInfo: GroupInfo, chatModel: ChatModel, showMenu: MutableState) { ItemAction( stringResource(R.string.delete_group_menu_action), - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), onClick = { deleteGroupDialog(chat.chatInfo, groupInfo, chatModel) showMenu.value = false @@ -260,7 +258,7 @@ fun JoinGroupAction(chat: Chat, groupInfo: GroupInfo, chatModel: ChatModel, show val joinGroup: () -> Unit = { withApi { chatModel.controller.apiJoinGroup(groupInfo.groupId) } } ItemAction( if (chat.chatInfo.incognito) stringResource(R.string.join_group_incognito_button) else stringResource(R.string.join_group_button), - if (chat.chatInfo.incognito) Icons.Filled.TheaterComedy else Icons.Outlined.Login, + if (chat.chatInfo.incognito) painterResource(R.drawable.ic_theater_comedy_filled) else painterResource(R.drawable.ic_login), color = if (chat.chatInfo.incognito) Indigo else MaterialTheme.colors.onBackground, onClick = { joinGroup() @@ -273,7 +271,7 @@ fun JoinGroupAction(chat: Chat, groupInfo: GroupInfo, chatModel: ChatModel, show fun LeaveGroupAction(groupInfo: GroupInfo, chatModel: ChatModel, showMenu: MutableState) { ItemAction( stringResource(R.string.leave_group_button), - Icons.Outlined.Logout, + painterResource(R.drawable.ic_logout), onClick = { leaveGroupDialog(groupInfo, chatModel) showMenu.value = false @@ -286,7 +284,7 @@ fun LeaveGroupAction(groupInfo: GroupInfo, chatModel: ChatModel, showMenu: Mutab fun ContactRequestMenuItems(chatInfo: ChatInfo.ContactRequest, chatModel: ChatModel, showMenu: MutableState) { ItemAction( if (chatModel.incognito.value) stringResource(R.string.accept_contact_incognito_button) else stringResource(R.string.accept_contact_button), - if (chatModel.incognito.value) Icons.Filled.TheaterComedy else Icons.Outlined.Check, + if (chatModel.incognito.value) painterResource(R.drawable.ic_theater_comedy_filled) else painterResource(R.drawable.ic_check), color = if (chatModel.incognito.value) Indigo else MaterialTheme.colors.onBackground, onClick = { acceptContactRequest(chatInfo.apiId, chatInfo, true, chatModel) @@ -295,7 +293,7 @@ fun ContactRequestMenuItems(chatInfo: ChatInfo.ContactRequest, chatModel: ChatMo ) ItemAction( stringResource(R.string.reject_contact_button), - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), onClick = { rejectContactRequest(chatInfo, chatModel) showMenu.value = false @@ -308,7 +306,7 @@ fun ContactRequestMenuItems(chatInfo: ChatInfo.ContactRequest, chatModel: ChatMo fun ContactConnectionMenuItems(chatInfo: ChatInfo.ContactConnection, chatModel: ChatModel, showMenu: MutableState) { ItemAction( stringResource(R.string.set_contact_name), - Icons.Outlined.Edit, + painterResource(R.drawable.ic_edit), onClick = { ModalManager.shared.showModalCloseable(true) { close -> ContactConnectionInfoView(chatModel, chatInfo.contactConnection.connReqInv, chatInfo.contactConnection, true, close) @@ -318,7 +316,7 @@ fun ContactConnectionMenuItems(chatInfo: ChatInfo.ContactConnection, chatModel: ) ItemAction( stringResource(R.string.delete_verb), - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), onClick = { deleteContactConnectionAlert(chatInfo.contactConnection, chatModel) {} showMenu.value = false @@ -330,7 +328,7 @@ fun ContactConnectionMenuItems(chatInfo: ChatInfo.ContactConnection, chatModel: @Composable private fun InvalidDataView() { Row { - ProfileImage(72.dp, null, Icons.Filled.AccountCircle, HighOrLowlight) + ProfileImage(72.dp, null, R.drawable.ic_account_circle_filled, HighOrLowlight) Column( modifier = Modifier .padding(horizontal = 8.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListView.kt index 37d32c0ad8..1580a265d2 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListView.kt @@ -7,15 +7,13 @@ import androidx.compose.foundation.lazy.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.* import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.font.FontWeight @@ -89,7 +87,7 @@ fun ChatListView(chatModel: ChatModel, setPerformLA: (Boolean, FragmentActivity) backgroundColor = if (!stopped) MaterialTheme.colors.primary else HighOrLowlight, contentColor = Color.White ) { - Icon(if (!newChatSheetState.collectAsState().value.isVisible()) Icons.Default.Edit else Icons.Default.Close, stringResource(R.string.add_contact_or_create_group)) + Icon(if (!newChatSheetState.collectAsState().value.isVisible()) painterResource(R.drawable.ic_edit_filled) else painterResource(R.drawable.ic_close), stringResource(R.string.add_contact_or_create_group)) } } } @@ -182,7 +180,7 @@ private fun ChatListToolbar(chatModel: ChatModel, drawerState: DrawerState, user if (chatModel.chats.size >= 8) { barButtons.add { IconButton({ showSearch = true }) { - Icon(Icons.Outlined.Search, stringResource(android.R.string.search_go).capitalize(Locale.current), tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_search_500), stringResource(android.R.string.search_go).capitalize(Locale.current), tint = MaterialTheme.colors.primary) } } } @@ -195,7 +193,7 @@ private fun ChatListToolbar(chatModel: ChatModel, drawerState: DrawerState, user ) }) { Icon( - Icons.Filled.Report, + painterResource(R.drawable.ic_report_filled), generalGetString(R.string.chat_is_stopped_indication), tint = Color.Red, ) @@ -232,7 +230,7 @@ private fun ChatListToolbar(chatModel: ChatModel, drawerState: DrawerState, user ) if (chatModel.incognito.value) { Icon( - Icons.Filled.TheaterComedy, + painterResource(R.drawable.ic_theater_comedy_filled), stringResource(R.string.incognito), tint = Indigo, modifier = Modifier.padding(10.dp).size(26.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatPreviewView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatPreviewView.kt index 30c4a360c3..1c641f696a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatPreviewView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatPreviewView.kt @@ -7,15 +7,12 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.text.InlineTextContent import androidx.compose.foundation.text.appendInlineContent import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight @@ -46,7 +43,7 @@ fun ChatPreviewView( @Composable fun groupInactiveIcon() { Icon( - Icons.Filled.Cancel, + painterResource(R.drawable.ic_cancel_filled), stringResource(R.string.icon_descr_group_inactive), Modifier.size(18.dp).background(MaterialTheme.colors.background, CircleShape), tint = HighOrLowlight @@ -79,15 +76,15 @@ fun ChatPreviewView( @Composable fun VerifiedIcon() { - Icon(Icons.Outlined.VerifiedUser, null, Modifier.size(19.dp).padding(end = 3.dp, top = 1.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_verified_user), null, Modifier.size(19.dp).padding(end = 3.dp, top = 1.dp), tint = HighOrLowlight) } fun messageDraft(draft: ComposeState): Pair> { - fun attachment(): Pair? = + fun attachment(): Pair? = when (draft.preview) { - is ComposePreview.FilePreview -> Icons.Filled.InsertDriveFile to draft.preview.fileName - is ComposePreview.MediaPreview -> Icons.Outlined.Image to null - is ComposePreview.VoicePreview -> Icons.Filled.PlayArrow to durationText(draft.preview.durationMs / 1000) + is ComposePreview.FilePreview -> R.drawable.ic_draft_filled to draft.preview.fileName + is ComposePreview.MediaPreview -> R.drawable.ic_image to null + is ComposePreview.VoicePreview -> R.drawable.ic_play_arrow_filled to durationText(draft.preview.durationMs / 1000) else -> null } @@ -108,12 +105,12 @@ fun ChatPreviewView( "editIcon" to InlineTextContent( Placeholder(20.sp, 20.sp, PlaceholderVerticalAlign.TextCenter) ) { - Icon(Icons.Outlined.EditNote, null, tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_edit_note), null, tint = MaterialTheme.colors.primary) }, "attachmentIcon" to InlineTextContent( Placeholder(20.sp, 20.sp, PlaceholderVerticalAlign.TextCenter) ) { - Icon(attachment?.first ?: Icons.Outlined.EditNote, null, tint = HighOrLowlight) + Icon(if (attachment?.first != null) painterResource(attachment.first) else painterResource(R.drawable.ic_edit_note), null, tint = HighOrLowlight) } ) return text to inlineContent @@ -239,7 +236,7 @@ fun ChatPreviewView( contentAlignment = Alignment.Center ) { Icon( - Icons.Filled.NotificationsOff, + painterResource(R.drawable.ic_notifications_off_filled), contentDescription = generalGetString(R.string.notifications), tint = HighOrLowlight, modifier = Modifier @@ -281,7 +278,7 @@ fun ChatStatusImage(s: NetworkStatus?) { val descr = s?.statusString if (s is NetworkStatus.Error) { Icon( - Icons.Outlined.ErrorOutline, + painterResource(R.drawable.ic_error), contentDescription = descr, tint = HighOrLowlight, modifier = Modifier diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ContactConnectionView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ContactConnectionView.kt index a1b6db80d9..9e4cd20cad 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ContactConnectionView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ContactConnectionView.kt @@ -3,16 +3,16 @@ package chat.simplex.app.views.chatlist import androidx.compose.foundation.layout.* import androidx.compose.material.MaterialTheme import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import chat.simplex.app.R import chat.simplex.app.model.* import chat.simplex.app.ui.theme.* import chat.simplex.app.views.helpers.ProfileImage @@ -21,7 +21,7 @@ import chat.simplex.app.views.helpers.ProfileImage fun ContactConnectionView(contactConnection: PendingContactConnection) { Row { Box(Modifier.size(72.dp), contentAlignment = Alignment.Center) { - ProfileImage(size = 54.dp, null, if (contactConnection.initiated) Icons.Outlined.AddLink else Icons.Outlined.Link) + ProfileImage(size = 54.dp, null, if (contactConnection.initiated) R.drawable.ic_add_link else R.drawable.ic_link) } Column( modifier = Modifier diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ShareListView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ShareListView.kt index c99c4c4055..f601e65378 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ShareListView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ShareListView.kt @@ -6,14 +6,12 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.font.FontWeight @@ -86,7 +84,7 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState if (chatModel.chats.size >= 8) { barButtons.add { IconButton({ showSearch = true }) { - Icon(Icons.Outlined.Search, stringResource(android.R.string.search_go).capitalize(Locale.current), tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_search_500), stringResource(android.R.string.search_go).capitalize(Locale.current), tint = MaterialTheme.colors.primary) } } } @@ -99,7 +97,7 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState ) }) { Icon( - Icons.Filled.Report, + painterResource(R.drawable.ic_report_filled), generalGetString(R.string.chat_is_stopped_indication), tint = Color.Red, ) @@ -123,7 +121,7 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState ) if (chatModel.incognito.value) { Icon( - Icons.Filled.TheaterComedy, + painterResource(R.drawable.ic_theater_comedy_filled), stringResource(R.string.incognito), tint = Indigo, modifier = Modifier.padding(10.dp).size(26.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt index 417a9a667a..d073d2d2de 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt @@ -1,7 +1,6 @@ package chat.simplex.app.views.chatlist import SectionItemView -import SectionItemViewSpaceBetween import android.util.Log import androidx.compose.animation.core.* import androidx.compose.foundation.* @@ -9,9 +8,6 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.* import androidx.compose.ui.draw.* @@ -19,6 +15,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.intl.Locale @@ -170,9 +167,9 @@ fun UserProfilePickerItem(u: User, unreadCount: Int = 0, padding: PaddingValues ) { UserProfileRow(u) if (u.activeUser) { - Icon(Icons.Filled.Done, null, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) + Icon(painterResource(R.drawable.ic_done_filled), null, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) } else if (u.hidden) { - Icon(Icons.Outlined.Lock, null, Modifier.size(20.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_lock), null, Modifier.size(20.dp), tint = HighOrLowlight) } else if (unreadCount > 0) { Box( contentAlignment = Alignment.Center @@ -188,7 +185,7 @@ fun UserProfilePickerItem(u: User, unreadCount: Int = 0, padding: PaddingValues ) } } else if (!u.showNtfs) { - Icon(Icons.Outlined.NotificationsOff, null, Modifier.size(20.dp), tint = HighOrLowlight) + Icon(painterResource(R.drawable.ic_notifications_off), null, Modifier.size(20.dp), tint = HighOrLowlight) } else { Box(Modifier.size(20.dp)) } @@ -221,7 +218,7 @@ fun UserProfileRow(u: User) { private fun SettingsPickerItem(onClick: () -> Unit) { SectionItemView(onClick, padding = PaddingValues(start = DEFAULT_PADDING + 7.dp, end = DEFAULT_PADDING), minHeight = 68.dp) { val text = generalGetString(R.string.settings_section_title_settings).lowercase().capitalize(Locale.current) - Icon(Icons.Outlined.Settings, text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) + Icon(painterResource(R.drawable.ic_settings), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) Spacer(Modifier.width(DEFAULT_PADDING + 6.dp)) Text( text, @@ -234,7 +231,7 @@ private fun SettingsPickerItem(onClick: () -> Unit) { private fun CancelPickerItem(onClick: () -> Unit) { SectionItemView(onClick, padding = PaddingValues(start = DEFAULT_PADDING + 7.dp, end = DEFAULT_PADDING), minHeight = 68.dp) { val text = generalGetString(R.string.cancel_verb) - Icon(Icons.Outlined.Close, text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) + Icon(painterResource(R.drawable.ic_close), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) Spacer(Modifier.width(DEFAULT_PADDING + 6.dp)) Text( text, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/database/ChatArchiveView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/database/ChatArchiveView.kt index c8a367097c..5dc5b55faf 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/database/ChatArchiveView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/database/ChatArchiveView.kt @@ -13,13 +13,12 @@ import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import chat.simplex.app.R @@ -60,14 +59,14 @@ fun ChatArchiveLayout( AppBarTitle(title) SectionView(stringResource(R.string.chat_archive_section)) { SettingsActionItem( - Icons.Outlined.IosShare, + painterResource(R.drawable.ic_ios_share), stringResource(R.string.save_archive), saveArchive, textColor = MaterialTheme.colors.primary, iconColor = MaterialTheme.colors.primary, ) SettingsActionItem( - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), stringResource(R.string.delete_archive), deleteArchiveAlert, textColor = Color.Red, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseEncryptionView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseEncryptionView.kt index 2f26648910..a2e5993e07 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseEncryptionView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseEncryptionView.kt @@ -12,15 +12,13 @@ import androidx.compose.foundation.shape.ZeroCornerSize import androidx.compose.foundation.text.* import androidx.compose.material.* import androidx.compose.material.TextFieldDefaults.indicatorLine -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.* import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight @@ -292,7 +290,7 @@ fun SavePassphraseSetting( SectionItemView(minHeight = minHeight) { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - if (storedKey) Icons.Filled.VpnKey else Icons.Filled.VpnKeyOff, + if (storedKey) painterResource(R.drawable.ic_vpn_key_filled) else painterResource(R.drawable.ic_vpn_key_off_filled), stringResource(R.string.save_passphrase_in_keychain), tint = if (storedKey) SimplexGreen else HighOrLowlight ) @@ -359,8 +357,8 @@ fun PassphraseField( var valid by remember { mutableStateOf(validKey(key.value)) } var showKey by remember { mutableStateOf(false) } val icon = if (valid) { - if (showKey) Icons.Filled.VisibilityOff else Icons.Filled.Visibility - } else Icons.Outlined.Error + if (showKey) painterResource(R.drawable.ic_visibility_off_filled) else painterResource(R.drawable.ic_visibility_filled) + } else painterResource(R.drawable.ic_error) val iconColor = if (valid) { if (showStrength && key.value.isNotEmpty()) PassphraseStrength.check(key.value).color else HighOrLowlight } else Color.Red diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt index 305db4d71b..8ac6f8cb40 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt @@ -17,14 +17,12 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight @@ -182,7 +180,9 @@ fun DatabaseLayout( SectionView(stringResource(R.string.chat_database_section)) { val unencrypted = chatDbEncrypted == false SettingsActionItem( - if (unencrypted) Icons.Outlined.LockOpen else if (useKeyChain) Icons.Filled.VpnKey else Icons.Outlined.Lock, + if (unencrypted) painterResource(R.drawable.ic_lock_open) else if (useKeyChain) painterResource(R.drawable.ic_vpn_key_filled) + else painterResource(R + .drawable.ic_lock), stringResource(R.string.database_passphrase), click = showSettingsModal() { DatabaseEncryptionView(it) }, iconColor = if (unencrypted) WarningOrange else HighOrLowlight, @@ -191,7 +191,7 @@ fun DatabaseLayout( AppDataBackupPreference(privacyFullBackup, initialRandomDBPassphrase) SectionDividerSpaced(maxBottomPadding = false) SettingsActionItem( - Icons.Outlined.IosShare, + painterResource(R.drawable.ic_ios_share), stringResource(R.string.export_database), click = { if (initialRandomDBPassphrase.get()) { @@ -205,7 +205,7 @@ fun DatabaseLayout( disabled = operationsDisabled ) SettingsActionItem( - Icons.Outlined.FileDownload, + painterResource(R.drawable.ic_download), stringResource(R.string.import_database), { importArchiveLauncher.launch("application/zip") }, textColor = Color.Red, @@ -218,14 +218,14 @@ fun DatabaseLayout( if (chatArchiveNameVal != null && chatArchiveTimeVal != null && chatLastStartVal != null) { val title = chatArchiveTitle(chatArchiveTimeVal, chatLastStartVal) SettingsActionItem( - Icons.Outlined.Inventory2, + painterResource(R.drawable.ic_inventory_2), title, click = showSettingsModal { ChatArchiveView(it, title, chatArchiveNameVal, chatArchiveTimeVal) }, disabled = operationsDisabled ) } SettingsActionItem( - Icons.Outlined.DeleteForever, + painterResource(R.drawable.ic_delete_forever), stringResource(R.string.delete_database), deleteChatAlert, textColor = Color.Red, @@ -269,19 +269,18 @@ fun DatabaseLayout( @Composable private fun AppDataBackupPreference(privacyFullBackup: SharedPreference, initialRandomDBPassphrase: SharedPreference) { SettingsPreferenceItem( - Icons.Outlined.Backup, + painterResource(R.drawable.ic_backup), iconColor = HighOrLowlight, pref = privacyFullBackup, - text = stringResource(R.string.full_backup), - onChange = { - if (initialRandomDBPassphrase.get()) { - exportProhibitedAlert() - privacyFullBackup.set(false) - } else { - privacyFullBackup.set(it) - } + text = stringResource(R.string.full_backup) + ) { + if (initialRandomDBPassphrase.get()) { + exportProhibitedAlert() + privacyFullBackup.set(false) + } else { + privacyFullBackup.set(it) } - ) + } } private fun setChatItemTTLAlert( @@ -336,7 +335,7 @@ fun RunChatSetting( ) { val chatRunningText = if (stopped) stringResource(R.string.chat_is_stopped) else stringResource(R.string.chat_is_running) SettingsActionItemWithContent( - icon = if (stopped) Icons.Filled.Report else Icons.Filled.PlayArrow, + icon = if (stopped) painterResource(R.drawable.ic_report_filled) else painterResource(R.drawable.ic_play_arrow_filled), text = chatRunningText, iconColor = if (stopped) Color.Red else MaterialTheme.colors.primary, ) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChatInfoImage.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChatInfoImage.kt index f1d6fa9caa..04d2744484 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChatInfoImage.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChatInfoImage.kt @@ -5,15 +5,12 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.asImageBitmap -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.* import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp @@ -25,8 +22,8 @@ import chat.simplex.app.ui.theme.SimpleXTheme @Composable fun ChatInfoImage(chatInfo: ChatInfo, size: Dp, iconColor: Color = MaterialTheme.colors.secondary) { val icon = - if (chatInfo is ChatInfo.Group) Icons.Filled.SupervisedUserCircle - else Icons.Filled.AccountCircle + if (chatInfo is ChatInfo.Group) R.drawable.ic_supervised_user_circle_filled + else R.drawable.ic_account_circle_filled ProfileImage(size, chatInfo.image, icon, iconColor) } @@ -34,7 +31,7 @@ fun ChatInfoImage(chatInfo: ChatInfo, size: Dp, iconColor: Color = MaterialTheme fun IncognitoImage(size: Dp, iconColor: Color = MaterialTheme.colors.secondary) { Box(Modifier.size(size)) { Icon( - Icons.Filled.TheaterComedy, stringResource(R.string.incognito), + painterResource(R.drawable.ic_theater_comedy_filled), stringResource(R.string.incognito), modifier = Modifier.size(size).padding(size / 12), iconColor ) @@ -45,17 +42,31 @@ fun IncognitoImage(size: Dp, iconColor: Color = MaterialTheme.colors.secondary) fun ProfileImage( size: Dp, image: String? = null, - icon: ImageVector = Icons.Filled.AccountCircle, + icon: Int = R.drawable.ic_account_circle_filled, color: Color = MaterialTheme.colors.secondary ) { Box(Modifier.size(size)) { if (image == null) { - Icon( - icon, - contentDescription = stringResource(R.string.icon_descr_profile_image_placeholder), - tint = color, - modifier = Modifier.fillMaxSize() - ) + val iconToReplace = when (icon) { + R.drawable.ic_account_circle_filled -> AccountCircleFilled + R.drawable.ic_supervised_user_circle_filled -> SupervisedUserCircleFilled + else -> null + } + if (iconToReplace != null) { + Icon( + iconToReplace, + contentDescription = stringResource(R.string.icon_descr_profile_image_placeholder), + tint = color, + modifier = Modifier.fillMaxSize() + ) + } else { + Icon( + painterResource(icon), + contentDescription = stringResource(R.string.icon_descr_profile_image_placeholder), + tint = color, + modifier = Modifier.fillMaxSize() + ) + } } else { val imageBitmap = base64ToBitmap(image).asImageBitmap() Image( @@ -68,6 +79,7 @@ fun ProfileImage( } } + @Preview @Composable fun PreviewChatInfoImage() { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt index 9c4e6ad5d6..5ca600a0b3 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt @@ -2,8 +2,6 @@ package chat.simplex.app.views.helpers import androidx.compose.foundation.layout.* import androidx.compose.material.MaterialTheme -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState import androidx.compose.ui.Alignment diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/CustomIcons.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/CustomIcons.kt new file mode 100644 index 0000000000..8a3458b89c --- /dev/null +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/CustomIcons.kt @@ -0,0 +1,194 @@ +package chat.simplex.app.views.helpers + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.* +import androidx.compose.material.icons.materialPath +import androidx.compose.material.icons.outlined.PersonAdd +import androidx.compose.ui.graphics.* +import androidx.compose.ui.graphics.vector.* +import androidx.compose.ui.unit.dp + +private inline fun materialIcon( + name: String, + block: ImageVector.Builder.() -> ImageVector.Builder +): ImageVector = ImageVector.Builder( + name = name, + defaultWidth = MaterialIconDimension.dp, + defaultHeight = MaterialIconDimension.dp, + viewportWidth = MaterialIconDimension, + viewportHeight = MaterialIconDimension +).block().build() + +/** + * Adds a vector path to this icon with Material defaults. + * + * @param fillAlpha fill alpha for this path + * @param strokeAlpha stroke alpha for this path + * @param pathFillType [PathFillType] for this path + * @param pathBuilder builder lambda to add commands to this path + */ +private inline fun ImageVector.Builder.materialPath( + fillAlpha: Float = 1f, + strokeAlpha: Float = 1f, + pathFillType: PathFillType = DefaultFillType, + pathBuilder: PathBuilder.() -> Unit +) = +// TODO: b/146213225 +// Some of these defaults are already set when parsing from XML, but do not currently exist + // when added programmatically. We should unify these and simplify them where possible. + path( + fill = SolidColor(Color.Black), + fillAlpha = fillAlpha, + stroke = null, + strokeAlpha = strokeAlpha, + strokeLineWidth = 1f, + strokeLineCap = StrokeCap.Butt, + strokeLineJoin = StrokeJoin.Bevel, + strokeLineMiter = 1f, + pathFillType = pathFillType, + pathBuilder = pathBuilder + ) + +// All Material icons (currently) are 24dp by 24dp, with a viewport size of 24 by 24. +@PublishedApi +internal const val MaterialIconDimension = 24f + + +val AccountCircleFilled: ImageVector + get() { + Icons.Filled.Bolt + if (_accountCircleFilled != null) { + return _accountCircleFilled!! + } + _accountCircleFilled = materialIcon(name = "Filled.AccountCircle") { + materialPath { + moveTo(12.0f, 2.0f) + curveTo(6.48f, 2.0f, 2.0f, 6.48f, 2.0f, 12.0f) + reflectiveCurveToRelative(4.48f, 10.0f, 10.0f, 10.0f) + reflectiveCurveToRelative(10.0f, -4.48f, 10.0f, -10.0f) + reflectiveCurveTo(17.52f, 2.0f, 12.0f, 2.0f) + close() + moveTo(12.0f, 5.0f) + curveToRelative(1.66f, 0.0f, 3.0f, 1.34f, 3.0f, 3.0f) + reflectiveCurveToRelative(-1.34f, 3.0f, -3.0f, 3.0f) + reflectiveCurveToRelative(-3.0f, -1.34f, -3.0f, -3.0f) + reflectiveCurveToRelative(1.34f, -3.0f, 3.0f, -3.0f) + close() + moveTo(12.0f, 19.2f) + curveToRelative(-2.5f, 0.0f, -4.71f, -1.28f, -6.0f, -3.22f) + curveToRelative(0.03f, -1.99f, 4.0f, -3.08f, 6.0f, -3.08f) + curveToRelative(1.99f, 0.0f, 5.97f, 1.09f, 6.0f, 3.08f) + curveToRelative(-1.29f, 1.94f, -3.5f, 3.22f, -6.0f, 3.22f) + close() + } + } + return _accountCircleFilled!! + } + +private var _accountCircleFilled: ImageVector? = null + +val SupervisedUserCircleFilled: ImageVector + get() { + if (_supervisedUserCircleFilled != null) { + return _supervisedUserCircleFilled!! + } + _supervisedUserCircleFilled = materialIcon(name = "Filled.SupervisedUserCircle") { + materialPath { + moveTo(11.99f, 2.0f) + curveToRelative(-5.52f, 0.0f, -10.0f, 4.48f, -10.0f, 10.0f) + reflectiveCurveToRelative(4.48f, 10.0f, 10.0f, 10.0f) + reflectiveCurveToRelative(10.0f, -4.48f, 10.0f, -10.0f) + reflectiveCurveToRelative(-4.48f, -10.0f, -10.0f, -10.0f) + close() + moveTo(15.6f, 8.34f) + curveToRelative(1.07f, 0.0f, 1.93f, 0.86f, 1.93f, 1.93f) + curveToRelative(0.0f, 1.07f, -0.86f, 1.93f, -1.93f, 1.93f) + curveToRelative(-1.07f, 0.0f, -1.93f, -0.86f, -1.93f, -1.93f) + curveToRelative(-0.01f, -1.07f, 0.86f, -1.93f, 1.93f, -1.93f) + close() + moveTo(9.6f, 6.76f) + curveToRelative(1.3f, 0.0f, 2.36f, 1.06f, 2.36f, 2.36f) + curveToRelative(0.0f, 1.3f, -1.06f, 2.36f, -2.36f, 2.36f) + reflectiveCurveToRelative(-2.36f, -1.06f, -2.36f, -2.36f) + curveToRelative(0.0f, -1.31f, 1.05f, -2.36f, 2.36f, -2.36f) + close() + moveTo(9.6f, 15.89f) + verticalLineToRelative(3.75f) + curveToRelative(-2.4f, -0.75f, -4.3f, -2.6f, -5.14f, -4.96f) + curveToRelative(1.05f, -1.12f, 3.67f, -1.69f, 5.14f, -1.69f) + curveToRelative(0.53f, 0.0f, 1.2f, 0.08f, 1.9f, 0.22f) + curveToRelative(-1.64f, 0.87f, -1.9f, 2.02f, -1.9f, 2.68f) + close() + moveTo(11.99f, 20.0f) + curveToRelative(-0.27f, 0.0f, -0.53f, -0.01f, -0.79f, -0.04f) + verticalLineToRelative(-4.07f) + curveToRelative(0.0f, -1.42f, 2.94f, -2.13f, 4.4f, -2.13f) + curveToRelative(1.07f, 0.0f, 2.92f, 0.39f, 3.84f, 1.15f) + curveToRelative(-1.17f, 2.97f, -4.06f, 5.09f, -7.45f, 5.09f) + close() + } + } + return _supervisedUserCircleFilled!! + } + +private var _supervisedUserCircleFilled: ImageVector? = null + +val BoltFilled: ImageVector + get() { + if (_boltFilled != null) { + return _boltFilled!! + } + _boltFilled = materialIcon(name = "Filled.Bolt") { + materialPath { + moveTo(11.0f, 21.0f) + horizontalLineToRelative(-1.0f) + lineToRelative(1.0f, -7.0f) + horizontalLineTo(7.5f) + curveToRelative(-0.58f, 0.0f, -0.57f, -0.32f, -0.38f, -0.66f) + curveToRelative(0.19f, -0.34f, 0.05f, -0.08f, 0.07f, -0.12f) + curveTo(8.48f, 10.94f, 10.42f, 7.54f, 13.0f, 3.0f) + horizontalLineToRelative(1.0f) + lineToRelative(-1.0f, 7.0f) + horizontalLineToRelative(3.5f) + curveToRelative(0.49f, 0.0f, 0.56f, 0.33f, 0.47f, 0.51f) + lineToRelative(-0.07f, 0.15f) + curveTo(12.96f, 17.55f, 11.0f, 21.0f, 11.0f, 21.0f) + close() + } + } + return _boltFilled!! + } + +private var _boltFilled: ImageVector? = null + +val MoreVertFilled: ImageVector + get() { + if (_moreVertFilled != null) { + return _moreVertFilled!! + } + _moreVertFilled = materialIcon(name = "Filled.MoreVert") { + materialPath { + moveTo(12.0f, 8.0f) + curveToRelative(1.1f, 0.0f, 2.0f, -0.9f, 2.0f, -2.0f) + reflectiveCurveToRelative(-0.9f, -2.0f, -2.0f, -2.0f) + reflectiveCurveToRelative(-2.0f, 0.9f, -2.0f, 2.0f) + reflectiveCurveToRelative(0.9f, 2.0f, 2.0f, 2.0f) + close() + moveTo(12.0f, 10.0f) + curveToRelative(-1.1f, 0.0f, -2.0f, 0.9f, -2.0f, 2.0f) + reflectiveCurveToRelative(0.9f, 2.0f, 2.0f, 2.0f) + reflectiveCurveToRelative(2.0f, -0.9f, 2.0f, -2.0f) + reflectiveCurveToRelative(-0.9f, -2.0f, -2.0f, -2.0f) + close() + moveTo(12.0f, 16.0f) + curveToRelative(-1.1f, 0.0f, -2.0f, 0.9f, -2.0f, 2.0f) + reflectiveCurveToRelative(0.9f, 2.0f, 2.0f, 2.0f) + reflectiveCurveToRelative(2.0f, -0.9f, 2.0f, -2.0f) + reflectiveCurveToRelative(-0.9f, -2.0f, -2.0f, -2.0f) + close() + } + } + return _moreVertFilled!! + } + +private var _moreVertFilled: ImageVector? = null diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultBasicTextField.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultBasicTextField.kt index 18253a3a69..e3d4048cfa 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultBasicTextField.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultBasicTextField.kt @@ -8,10 +8,6 @@ import androidx.compose.foundation.shape.ZeroCornerSize import androidx.compose.foundation.text.* import androidx.compose.material.* import androidx.compose.material.TextFieldDefaults.indicatorLine -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Visibility -import androidx.compose.material.icons.filled.VisibilityOff -import androidx.compose.material.icons.outlined.Error import androidx.compose.runtime.* import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier @@ -19,11 +15,13 @@ import androidx.compose.ui.focus.* import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.* import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import chat.simplex.app.R import chat.simplex.app.ui.theme.HighOrLowlight import chat.simplex.app.views.database.PassphraseStrength import chat.simplex.app.views.database.validKey @@ -136,8 +134,8 @@ fun DefaultConfigurableTextField( var valid by remember { mutableStateOf(validKey(state.value.text)) } var showKey by remember { mutableStateOf(false) } val icon = if (valid) { - if (showKey) Icons.Filled.VisibilityOff else Icons.Filled.Visibility - } else Icons.Outlined.Error + if (showKey) painterResource(R.drawable.ic_visibility_off_filled) else painterResource(R.drawable.ic_visibility_filled) + } else painterResource(R.drawable.ic_error) val iconColor = if (valid) { if (showPasswordStrength && state.value.text.isNotEmpty()) PassphraseStrength.check(state.value.text).color else HighOrLowlight } else Color.Red diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt index 6dfe6f3408..225dd393ba 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt @@ -4,12 +4,11 @@ import chat.simplex.app.R import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.* +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import chat.simplex.app.ui.theme.* @@ -48,7 +47,7 @@ fun DefaultTopAppBar( fun NavigationButtonBack(onButtonClicked: (() -> Unit)?) { IconButton(onButtonClicked ?: {}, enabled = onButtonClicked != null) { Icon( - Icons.Outlined.ArrowBackIos, stringResource(R.string.back), tint = if (onButtonClicked != null) MaterialTheme.colors.primary else HighOrLowlight + painterResource(R.drawable.ic_arrow_back_ios_new), stringResource(R.string.back), tint = if (onButtonClicked != null) MaterialTheme.colors.primary else HighOrLowlight ) } } @@ -57,7 +56,7 @@ fun NavigationButtonBack(onButtonClicked: (() -> Unit)?) { fun ShareButton(onButtonClicked: () -> Unit) { IconButton(onButtonClicked) { Icon( - Icons.Outlined.Share, stringResource(R.string.share_verb), tint = MaterialTheme.colors.primary + painterResource(R.drawable.ic_share), stringResource(R.string.share_verb), tint = MaterialTheme.colors.primary ) } } @@ -66,7 +65,7 @@ fun ShareButton(onButtonClicked: () -> Unit) { fun NavigationButtonMenu(onButtonClicked: () -> Unit) { IconButton(onClick = onButtonClicked) { Icon( - Icons.Outlined.Menu, + painterResource(R.drawable.ic_menu), stringResource(R.string.icon_descr_settings), tint = MaterialTheme.colors.primary, ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt index 8c081a83ce..7fa87a482c 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt @@ -2,14 +2,12 @@ package chat.simplex.app.views.helpers import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ExpandLess -import androidx.compose.material.icons.outlined.ExpandMore +import androidx.compose.ui.res.painterResource import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp @@ -24,7 +22,7 @@ fun ExposedDropDownSettingRow( values: List>, selection: State, label: String? = null, - icon: ImageVector? = null, + icon: Painter? = null, iconTint: Color = HighOrLowlight, enabled: State = mutableStateOf(true), onSelected: (T) -> Unit @@ -52,7 +50,7 @@ fun ExposedDropDownSettingRow( ) Spacer(Modifier.size(12.dp)) Icon( - if (!expanded.value) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, + if (!expanded.value) painterResource(R.drawable.ic_expand_more) else painterResource(R.drawable.ic_expand_less), generalGetString(R.string.icon_descr_more_button), tint = HighOrLowlight ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt index c50d434178..9ad3180ae5 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt @@ -17,14 +17,13 @@ import androidx.activity.result.contract.ActivityResultContract import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.CallSuper import androidx.compose.foundation.layout.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.core.content.ContextCompat @@ -247,7 +246,7 @@ fun GetImageBottomSheet( .padding(horizontal = 8.dp, vertical = 30.dp), horizontalArrangement = Arrangement.SpaceEvenly ) { - ActionButton(null, stringResource(R.string.use_camera_button), icon = Icons.Outlined.PhotoCamera) { + ActionButton(null, stringResource(R.string.use_camera_button), icon = painterResource(R.drawable.ic_photo_camera)) { when (PackageManager.PERMISSION_GRANTED) { ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) -> { cameraLauncher.launchWithFallback() @@ -258,7 +257,7 @@ fun GetImageBottomSheet( } } } - ActionButton(null, stringResource(R.string.from_gallery_button), icon = Icons.Outlined.Image) { + ActionButton(null, stringResource(R.string.from_gallery_button), icon = painterResource(R.drawable.ic_image)) { try { galleryLauncher.launch(0) } catch (e: ActivityNotFoundException) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/LinkPreviews.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/LinkPreviews.kt index 47b06b42d1..7624665036 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/LinkPreviews.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/LinkPreviews.kt @@ -6,13 +6,12 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Close import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview @@ -112,7 +111,7 @@ fun ComposeLinkView(linkPreview: LinkPreview?, cancelPreview: () -> Unit) { } IconButton(onClick = cancelPreview, modifier = Modifier.padding(0.dp)) { Icon( - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), contentDescription = stringResource(R.string.icon_descr_cancel_link_preview), tint = MaterialTheme.colors.primary, modifier = Modifier.padding(10.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt index 38c6a2647b..2655f75e31 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt @@ -8,8 +8,6 @@ import androidx.compose.foundation.text.* import androidx.compose.material.* import androidx.compose.material.TextFieldDefaults.indicatorLine import androidx.compose.material.TextFieldDefaults.textFieldWithLabelPadding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.ExperimentalComposeUiApi @@ -19,6 +17,7 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.* import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -99,7 +98,7 @@ fun SearchTextField(modifier: Modifier, placeholder: String, alwaysVisible: Bool searchText = TextFieldValue(""); onValueChange("") }) { - Icon(Icons.Default.Close, stringResource(R.string.icon_descr_close_button), tint = MaterialTheme.colors.primary,) + Icon(painterResource(R.drawable.ic_close), stringResource(R.string.icon_descr_close_button), tint = MaterialTheme.colors.primary,) } }} else null, singleLine = true, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt index a80c4920ad..2a50888e8e 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt @@ -3,18 +3,18 @@ import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Check import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.* +import chat.simplex.app.R import chat.simplex.app.ui.theme.* import chat.simplex.app.views.helpers.ValueTitleDesc import chat.simplex.app.views.helpers.ValueTitle @@ -36,7 +36,7 @@ fun SectionView(title: String? = null, padding: PaddingValues = PaddingValues(), @Composable fun SectionView( title: String, - icon: ImageVector, + icon: Painter, iconTint: Color = HighOrLowlight, leadingIcon: Boolean = false, padding: PaddingValues = PaddingValues(), @@ -67,7 +67,7 @@ fun SectionViewSelectable( SectionItemViewSpaceBetween({ onSelected(item.value) }) { Text(item.title) if (currentValue.value == item.value) { - Icon(Icons.Outlined.Check, item.title, tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_check), item.title, tint = MaterialTheme.colors.primary) } } Spacer(Modifier.padding(horizontal = 4.dp)) @@ -146,7 +146,7 @@ fun SectionItemWithValue( currentValue: State, values: List>, label: String? = null, - icon: ImageVector? = null, + icon: Painter? = null, iconTint: Color = HighOrLowlight, enabled: State = mutableStateOf(true), onSelected: () -> Unit @@ -224,7 +224,7 @@ fun TextIconSpaced(extraPadding: Boolean = false) { } @Composable -fun InfoRow(title: String, value: String, icon: ImageVector? = null, iconTint: Color? = null) { +fun InfoRow(title: String, value: String, icon: Painter? = null, iconTint: Color? = null) { SectionItemViewSpaceBetween { Row { val iconSize = with(LocalDensity.current) { 21.sp.toDp() } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SimpleButton.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SimpleButton.kt index ba8176edda..9f32850e95 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SimpleButton.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SimpleButton.kt @@ -5,20 +5,20 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Share +import androidx.compose.ui.res.painterResource import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import chat.simplex.app.R @Composable -fun SimpleButton(text: String, icon: ImageVector, +fun SimpleButton(text: String, icon: Painter, color: Color = MaterialTheme.colors.primary, click: () -> Unit) { SimpleButtonFrame(click) { @@ -31,7 +31,7 @@ fun SimpleButton(text: String, icon: ImageVector, } @Composable -fun SimpleButtonDecorated(text: String, icon: ImageVector, +fun SimpleButtonDecorated(text: String, icon: Painter, color: Color = MaterialTheme.colors.primary, textDecoration: TextDecoration = TextDecoration.Underline, fontWeight: FontWeight = FontWeight.Normal, @@ -47,7 +47,7 @@ fun SimpleButtonDecorated(text: String, icon: ImageVector, @Composable fun SimpleButton( - text: String, icon: ImageVector, + text: String, icon: Painter, color: Color = MaterialTheme.colors.primary, disabled: Boolean, click: () -> Unit @@ -64,7 +64,7 @@ fun SimpleButton( @Composable fun SimpleButtonIconEnded( text: String, - icon: ImageVector, + icon: Painter, color: Color = MaterialTheme.colors.primary, click: () -> Unit ) { @@ -92,6 +92,6 @@ fun SimpleButtonFrame(click: () -> Unit, modifier: Modifier = Modifier, disabled @Composable fun PreviewCloseSheetBar() { SimpleXTheme { - SimpleButton(text = "Share", icon = Icons.Outlined.Share, click = {}) + SimpleButton(text = "Share", icon = painterResource(R.drawable.ic_share), click = {}) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasscodeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasscodeView.kt index e6ef8de892..0aec5dc344 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasscodeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasscodeView.kt @@ -4,13 +4,11 @@ import android.content.res.Configuration import androidx.compose.foundation.layout.* import androidx.compose.material.MaterialTheme import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Done import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import chat.simplex.app.R import chat.simplex.app.ui.theme.DEFAULT_PADDING @@ -41,9 +39,9 @@ fun PasscodeView( } PasscodeEntry(passcode, true) Row { - SimpleButton(generalGetString(R.string.cancel_verb), icon = Icons.Default.Close, click = cancel) + SimpleButton(generalGetString(R.string.cancel_verb), icon = painterResource(R.drawable.ic_close), click = cancel) Spacer(Modifier.size(20.dp)) - SimpleButton(submitLabel, icon = Icons.Default.Done, disabled = submitEnabled?.invoke(passcode.value) == false || passcode.value.length < 4, click = submit) + SimpleButton(submitLabel, icon = painterResource(R.drawable.ic_done_filled), disabled = submitEnabled?.invoke(passcode.value) == false || passcode.value.length < 4, click = submit) } } } @@ -84,8 +82,8 @@ fun PasscodeView( Modifier.padding(start = 30.dp).height(s * 3), verticalArrangement = Arrangement.SpaceEvenly ) { - SimpleButton(generalGetString(R.string.cancel_verb), icon = Icons.Default.Close, click = cancel) - SimpleButton(submitLabel, icon = Icons.Default.Done, disabled = submitEnabled?.invoke(passcode.value) == false || passcode.value.length < 4, click = submit) + SimpleButton(generalGetString(R.string.cancel_verb), icon = painterResource(R.drawable.ic_close), click = cancel) + SimpleButton(submitLabel, icon = painterResource(R.drawable.ic_done_filled), disabled = submitEnabled?.invoke(passcode.value) == false || passcode.value.length < 4, click = submit) } } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasswordEntry.kt b/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasswordEntry.kt index d42264e301..20ee2fbcde 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasswordEntry.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/localauth/PasswordEntry.kt @@ -5,20 +5,18 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.outlined.Backspace +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.res.painterResource +import chat.simplex.app.R import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.* -import chat.simplex.app.model.ChatModel import chat.simplex.app.ui.theme.HighOrLowlight @Composable @@ -59,13 +57,13 @@ private fun BoxWithConstraintsScope.VerticalPasswordGrid(password: MutableState< DigitsRow(s, 7, 8, 9, password) Divider() Row(Modifier.requiredHeight(s)) { - PasswordEdit(s, Icons.Default.Close) { + PasswordEdit(s, painterResource(R.drawable.ic_close)) { password.value = "" } VerticalDivider() PasswordDigit(s, 0, password) VerticalDivider() - PasswordEdit(s, Icons.Outlined.Backspace) { + PasswordEdit(s, painterResource(R.drawable.ic_backspace)) { password.value = password.value.dropLast(1) } } @@ -79,7 +77,7 @@ private fun BoxWithConstraintsScope.HorizontalPasswordGrid(password: MutableStat Row(Modifier.height(IntrinsicSize.Min)) { DigitsRow(s, 1, 2, 3, password); VerticalDivider() - PasswordEdit(s, Icons.Default.Close) { + PasswordEdit(s, painterResource(R.drawable.ic_close)) { password.value = "" } } @@ -93,7 +91,7 @@ private fun BoxWithConstraintsScope.HorizontalPasswordGrid(password: MutableStat Row(Modifier.height(IntrinsicSize.Min)) { DigitsRow(s, 7, 8, 9, password) VerticalDivider() - PasswordEdit(s, Icons.Outlined.Backspace) { + PasswordEdit(s, painterResource(R.drawable.ic_backspace)) { password.value = password.value.dropLast(1) } } @@ -137,7 +135,7 @@ private fun PasswordDigit(size: Dp, d: Int, password: MutableState) { } @Composable -private fun PasswordEdit(size: Dp, image: ImageVector, action: () -> Unit) { +private fun PasswordEdit(size: Dp, image: Painter, action: () -> Unit) { PasswordButton(size, action) { Icon(image, null, tint = HighOrLowlight) } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddContactView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddContactView.kt index 6dad4bc5ef..b307ea62d9 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddContactView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddContactView.kt @@ -6,10 +6,7 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.TheaterComedy -import androidx.compose.material.icons.outlined.Info -import androidx.compose.material.icons.outlined.Share +import androidx.compose.ui.res.painterResource import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -80,7 +77,7 @@ fun AddContactLayout(connReq: String, connIncognito: Boolean, share: () -> Unit) Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center ) { - SimpleButton(stringResource(R.string.share_invitation_link), icon = Icons.Outlined.Share, click = share) + SimpleButton(stringResource(R.string.share_invitation_link), icon = painterResource(R.drawable.ic_share), click = share) } SectionBottomSpacer() } @@ -98,7 +95,7 @@ fun InfoAboutIncognito(chatModelIncognito: Boolean, supportedIncognito: Boolean horizontalArrangement = if (centered) Arrangement.Center else Arrangement.Start ) { Icon( - if (supportedIncognito) Icons.Filled.TheaterComedy else Icons.Outlined.Info, + if (supportedIncognito) painterResource(R.drawable.ic_theater_comedy_filled) else painterResource(R.drawable.ic_info), stringResource(R.string.incognito), tint = if (supportedIncognito) Indigo else WarningOrange, modifier = Modifier.padding(end = 10.dp).size(20.dp) @@ -114,7 +111,7 @@ fun InfoAboutIncognito(chatModelIncognito: Boolean, supportedIncognito: Boolean horizontalArrangement = if (centered) Arrangement.Center else Arrangement.Start ) { Icon( - Icons.Outlined.Info, + painterResource(R.drawable.ic_info), stringResource(R.string.incognito), tint = HighOrLowlight, modifier = Modifier.padding(end = 10.dp).size(20.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddGroupView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddGroupView.kt index c0bb4d35ae..d8acc440bf 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddGroupView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/AddGroupView.kt @@ -5,14 +5,13 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ArrowForwardIos import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -163,7 +162,7 @@ fun CreateGroupButton(color: Color, modifier: Modifier) { Surface(shape = RoundedCornerShape(20.dp)) { Row(modifier, verticalAlignment = Alignment.CenterVertically) { Text(stringResource(R.string.create_profile_button), style = MaterialTheme.typography.caption, color = color, fontWeight = FontWeight.Bold) - Icon(Icons.Outlined.ArrowForwardIos, stringResource(R.string.create_profile_button), tint = color) + Icon(painterResource(R.drawable.ic_arrow_forward_ios), stringResource(R.string.create_profile_button), tint = color) } } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ConnectViaLinkView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ConnectViaLinkView.kt index 0919d234f4..ba9c8fc25d 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ConnectViaLinkView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ConnectViaLinkView.kt @@ -2,10 +2,9 @@ package chat.simplex.app.views.newchat import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.sp import chat.simplex.app.R @@ -58,7 +57,7 @@ fun ConnectViaLinkView(m: ChatModel, close: () -> Unit) { text = { Text(it, fontSize = 13.sp) }, icon = { Icon( - if (ConnectViaLinkTab.SCAN.ordinal == index) Icons.Outlined.QrCode else Icons.Outlined.Article, + if (ConnectViaLinkTab.SCAN.ordinal == index) painterResource(R.drawable.ic_qr_code) else painterResource(R.drawable.ic_article), it ) }, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ContactConnectionInfoView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ContactConnectionInfoView.kt index 9d0d724de3..12aa97cc12 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ContactConnectionInfoView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/ContactConnectionInfoView.kt @@ -7,11 +7,10 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import chat.simplex.app.R @@ -111,7 +110,7 @@ private fun ContactConnectionInfoLayout( @Composable fun ShowQrButton(incognito: Boolean, onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.QrCode, + painterResource(R.drawable.ic_qr_code), stringResource(R.string.show_QR_code), click = onClick, textColor = if (incognito) Indigo else MaterialTheme.colors.primary, @@ -122,7 +121,7 @@ fun ShowQrButton(incognito: Boolean, onClick: () -> Unit) { @Composable fun DeleteButton(onClick: () -> Unit) { SettingsActionItem( - Icons.Outlined.Delete, + painterResource(R.drawable.ic_delete), stringResource(R.string.delete_verb), click = onClick, textColor = Color.Red, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/CreateLinkView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/CreateLinkView.kt index 5326e38bd5..6e4c6849d4 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/CreateLinkView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/CreateLinkView.kt @@ -2,11 +2,10 @@ package chat.simplex.app.views.newchat import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.sp import chat.simplex.app.R @@ -80,7 +79,7 @@ fun CreateLinkView(m: ChatModel, initialSelection: CreateLinkTab) { text = { Text(it, fontSize = 13.sp) }, icon = { Icon( - if (CreateLinkTab.ONE_TIME.ordinal == index) Icons.Outlined.RepeatOne else Icons.Outlined.AllInclusive, + if (CreateLinkTab.ONE_TIME.ordinal == index) painterResource(R.drawable.ic_repeat_one) else painterResource(R.drawable.ic_all_inclusive), it ) }, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/NewChatSheet.kt b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/NewChatSheet.kt index c4ced3efac..c0214eb3cb 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/NewChatSheet.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/NewChatSheet.kt @@ -9,18 +9,14 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.graphics.* import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.* +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -60,7 +56,7 @@ fun NewChatSheet(chatModel: ChatModel, newChatSheetState: StateFlow Unit = {} ) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/PasteToConnect.kt b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/PasteToConnect.kt index 4c4eb4243e..c69f9c18fb 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/newchat/PasteToConnect.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/newchat/PasteToConnect.kt @@ -9,11 +9,10 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -94,16 +93,16 @@ fun PasteToConnectLayout( horizontalArrangement = Arrangement.Start, ) { if (connectionLink.value == "") { - SimpleButton(text = stringResource(R.string.paste_button), icon = Icons.Outlined.ContentPaste) { + SimpleButton(text = stringResource(R.string.paste_button), icon = painterResource(R.drawable.ic_content_paste)) { pasteFromClipboard() } } else { - SimpleButton(text = stringResource(R.string.clear_verb), icon = Icons.Outlined.Clear) { + SimpleButton(text = stringResource(R.string.clear_verb), icon = painterResource(R.drawable.ic_close)) { connectionLink.value = "" } } Spacer(Modifier.weight(1f).fillMaxWidth()) - SimpleButton(text = stringResource(R.string.connect_button), icon = Icons.Outlined.Link) { + SimpleButton(text = stringResource(R.string.connect_button), icon = painterResource(R.drawable.ic_link)) { connectViaLink(connectionLink.value) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt index a20a83e7a0..0efcdcdc90 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt @@ -6,9 +6,6 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ArrowForwardIos -import androidx.compose.material.icons.outlined.Info import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState import androidx.compose.ui.Alignment @@ -71,7 +68,7 @@ fun SimpleXInfoLayout( .fillMaxWidth() .padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING), contentAlignment = Alignment.Center ) { - SimpleButtonDecorated(text = stringResource(R.string.how_it_works), icon = Icons.Outlined.Info, + SimpleButtonDecorated(text = stringResource(R.string.how_it_works), icon = painterResource(R.drawable.ic_info), click = showModal { HowItWorks(user, onboardingStage) }) } Spacer(Modifier.weight(1f)) @@ -136,7 +133,7 @@ fun OnboardingActionButton( }, modifier) { Text(stringResource(labelId), style = MaterialTheme.typography.h2, color = MaterialTheme.colors.primary, fontSize = 20.sp) Icon( - Icons.Outlined.ArrowForwardIos, "next stage", tint = MaterialTheme.colors.primary, + painterResource(R.drawable.ic_arrow_forward_ios), "next stage", tint = MaterialTheme.colors.primary, modifier = Modifier .padding(start = DEFAULT_PADDING, top = 5.dp) .size(15.dp) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/WhatsNewView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/WhatsNewView.kt index cdc5b3545c..a3acb2e34b 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/WhatsNewView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/WhatsNewView.kt @@ -1,17 +1,17 @@ package chat.simplex.app.views.onboarding import android.content.res.Configuration +import androidx.annotation.IntegerRes import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -28,12 +28,12 @@ fun WhatsNewView(viaSettings: Boolean = false, close: () -> Unit) { val currentVersion = remember { mutableStateOf(versionDescriptions.lastIndex) } @Composable - fun featureDescription(icon: ImageVector, titleId: Int, descrId: Int, link: String?) { + fun featureDescription(icon: Painter, titleId: Int, descrId: Int, link: String?) { @Composable fun linkButton(link: String) { val uriHandler = LocalUriHandler.current Icon( - Icons.Outlined.OpenInNew, stringResource(titleId), tint = MaterialTheme.colors.primary, + painterResource(R.drawable.ic_open_in_new), stringResource(titleId), tint = MaterialTheme.colors.primary, modifier = Modifier .clickable { uriHandler.openUriCatching(link) } ) @@ -79,7 +79,7 @@ fun WhatsNewView(viaSettings: Boolean = false, close: () -> Unit) { .clickable { currentVersion.value = prev } .padding(8.dp) ) { - Icon(Icons.Outlined.ArrowBackIosNew, "previous", tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_arrow_back_ios_new), "previous", tint = MaterialTheme.colors.primary) Text(versionDescriptions[prev].version, color = MaterialTheme.colors.primary) } } @@ -96,7 +96,7 @@ fun WhatsNewView(viaSettings: Boolean = false, close: () -> Unit) { .padding(8.dp) ) { Text(versionDescriptions[next].version, color = MaterialTheme.colors.primary) - Icon(Icons.Outlined.ArrowForwardIos, "next", tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_arrow_forward_ios), "next", tint = MaterialTheme.colors.primary) } } } @@ -126,7 +126,7 @@ fun WhatsNewView(viaSettings: Boolean = false, close: () -> Unit) { ) v.features.forEach { feature -> - featureDescription(feature.icon, feature.titleId, feature.descrId, feature.link) + featureDescription(painterResource(feature.icon), feature.titleId, feature.descrId, feature.link) } if (!viaSettings) { @@ -152,7 +152,7 @@ fun WhatsNewView(viaSettings: Boolean = false, close: () -> Unit) { } private data class FeatureDescription( - val icon: ImageVector, + val icon: Int, val titleId: Int, val descrId: Int, val link: String? = null @@ -168,18 +168,18 @@ private val versionDescriptions: List = listOf( version = "v4.2", features = listOf( FeatureDescription( - icon = Icons.Outlined.VerifiedUser, + icon = R.drawable.ic_verified_user, titleId = R.string.v4_2_security_assessment, descrId = R.string.v4_2_security_assessment_desc, link = "https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html" ), FeatureDescription( - icon = Icons.Outlined.Group, + icon = R.drawable.ic_group, titleId = R.string.v4_2_group_links, descrId = R.string.v4_2_group_links_desc ), FeatureDescription( - icon = Icons.Outlined.Check, + icon = R.drawable.ic_check, titleId = R.string.v4_2_auto_accept_contact_requests, descrId = R.string.v4_2_auto_accept_contact_requests_desc ), @@ -189,22 +189,22 @@ private val versionDescriptions: List = listOf( version = "v4.3", features = listOf( FeatureDescription( - icon = Icons.Outlined.Mic, + icon = R.drawable.ic_mic, titleId = R.string.v4_3_voice_messages, descrId = R.string.v4_3_voice_messages_desc ), FeatureDescription( - icon = Icons.Outlined.DeleteForever, + icon = R.drawable.ic_delete_forever, titleId = R.string.v4_3_irreversible_message_deletion, descrId = R.string.v4_3_irreversible_message_deletion_desc ), FeatureDescription( - icon = Icons.Outlined.WifiTethering, + icon = R.drawable.ic_wifi_tethering, titleId = R.string.v4_3_improved_server_configuration, descrId = R.string.v4_3_improved_server_configuration_desc ), FeatureDescription( - icon = Icons.Outlined.VisibilityOff, + icon = R.drawable.ic_visibility_off, titleId = R.string.v4_3_improved_privacy_and_security, descrId = R.string.v4_3_improved_privacy_and_security_desc ), @@ -214,22 +214,22 @@ private val versionDescriptions: List = listOf( version = "v4.4", features = listOf( FeatureDescription( - icon = Icons.Outlined.Timer, + icon = R.drawable.ic_timer, titleId = R.string.v4_4_disappearing_messages, descrId = R.string.v4_4_disappearing_messages_desc ), FeatureDescription( - icon = Icons.Outlined.Pending, + icon = R.drawable.ic_pending, titleId = R.string.v4_4_live_messages, descrId = R.string.v4_4_live_messages_desc ), FeatureDescription( - icon = Icons.Outlined.VerifiedUser, + icon = R.drawable.ic_verified_user, titleId = R.string.v4_4_verify_connection_security, descrId = R.string.v4_4_verify_connection_security_desc ), FeatureDescription( - icon = Icons.Outlined.Translate, + icon = R.drawable.ic_translate, titleId = R.string.v4_4_french_interface, descrId = R.string.v4_4_french_interface_descr ) @@ -239,33 +239,33 @@ private val versionDescriptions: List = listOf( version = "v4.5", features = listOf( FeatureDescription( - icon = Icons.Outlined.ManageAccounts, + icon = R.drawable.ic_manage_accounts, titleId = R.string.v4_5_multiple_chat_profiles, descrId = R.string.v4_5_multiple_chat_profiles_descr ), FeatureDescription( - icon = Icons.Outlined.EditNote, + icon = R.drawable.ic_edit_note, titleId = R.string.v4_5_message_draft, descrId = R.string.v4_5_message_draft_descr ), FeatureDescription( - icon = Icons.Outlined.SafetyDivider, + icon = R.drawable.ic_safety_divider, titleId = R.string.v4_5_transport_isolation, descrId = R.string.v4_5_transport_isolation_descr, link = "https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation" ), FeatureDescription( - icon = Icons.Outlined.Task, + icon = R.drawable.ic_task, titleId = R.string.v4_5_private_filenames, descrId = R.string.v4_5_private_filenames_descr ), FeatureDescription( - icon = Icons.Outlined.Battery2Bar, + icon = R.drawable.ic_battery_2_bar, titleId = R.string.v4_5_reduced_battery_usage, descrId = R.string.v4_5_reduced_battery_usage_descr ), FeatureDescription( - icon = Icons.Outlined.Translate, + icon = R.drawable.ic_translate, titleId = R.string.v4_5_italian_interface, descrId = R.string.v4_5_italian_interface_descr, link = "https://github.com/simplex-chat/simplex-chat/tree/stable#translate-the-apps" @@ -276,32 +276,32 @@ private val versionDescriptions: List = listOf( version = "v4.6", features = listOf( FeatureDescription( - icon = Icons.Outlined.Lock, + icon = R.drawable.ic_lock, titleId = R.string.v4_6_hidden_chat_profiles, descrId = R.string.v4_6_hidden_chat_profiles_descr ), FeatureDescription( - icon = Icons.Outlined.Flag, + icon = R.drawable.ic_flag, titleId = R.string.v4_6_group_moderation, descrId = R.string.v4_6_group_moderation_descr ), FeatureDescription( - icon = Icons.Outlined.MapsUgc, + icon = R.drawable.ic_maps_ugc, titleId = R.string.v4_6_group_welcome_message, descrId = R.string.v4_6_group_welcome_message_descr ), FeatureDescription( - icon = Icons.Outlined.Call, + icon = R.drawable.ic_call, titleId = R.string.v4_6_audio_video_calls, descrId = R.string.v4_6_audio_video_calls_descr ), FeatureDescription( - icon = Icons.Outlined.Battery3Bar, + icon = R.drawable.ic_battery_3_bar, titleId = R.string.v4_6_reduced_battery_usage, descrId = R.string.v4_6_reduced_battery_usage_descr ), FeatureDescription( - icon = Icons.Outlined.Translate, + icon = R.drawable.ic_translate, titleId = R.string.v4_6_chinese_spanish_interface, descrId = R.string.v4_6_chinese_spanish_interface_descr, link = "https://github.com/simplex-chat/simplex-chat/tree/stable#translate-the-apps" @@ -312,17 +312,17 @@ private val versionDescriptions: List = listOf( version = "v5.0", features = listOf( FeatureDescription( - icon = Icons.Outlined.UploadFile, + icon = R.drawable.ic_upload_file, titleId = R.string.v5_0_large_files_support, descrId = R.string.v5_0_large_files_support_descr ), FeatureDescription( - icon = Icons.Outlined.Lock, + icon = R.drawable.ic_lock, titleId = R.string.v5_0_app_passcode, descrId = R.string.v5_0_app_passcode_descr ), FeatureDescription( - icon = Icons.Outlined.Translate, + icon = R.drawable.ic_translate, titleId = R.string.v5_0_polish_interface, descrId = R.string.v5_0_polish_interface_descr, link = "https://github.com/simplex-chat/simplex-chat/tree/stable#translate-the-apps" diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AcceptRequestsView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AcceptRequestsView.kt index 52c87c6c3b..4c5ff2fd85 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AcceptRequestsView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AcceptRequestsView.kt @@ -8,9 +8,7 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.MaterialTheme import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.TheaterComedy -import androidx.compose.material.icons.outlined.* +import androidx.compose.ui.res.painterResource import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -52,7 +50,7 @@ private fun AcceptRequestsLayout( val autoAcceptState = remember { mutableStateOf(AutoAcceptState(contactLink)) } val autoAcceptStateSaved = remember { mutableStateOf(autoAcceptState.value) } SectionView(stringResource(R.string.accept_requests).uppercase()) { - PreferenceToggleWithIcon(stringResource(R.string.accept_automatically), Icons.Outlined.Check, checked = autoAcceptState.value.enable) { + PreferenceToggleWithIcon(stringResource(R.string.accept_automatically), painterResource(R.drawable.ic_check), checked = autoAcceptState.value.enable) { autoAcceptState.value = if (!it) AutoAcceptState() else @@ -61,7 +59,7 @@ private fun AcceptRequestsLayout( if (autoAcceptState.value.enable) { PreferenceToggleWithIcon( stringResource(R.string.incognito), - if (autoAcceptState.value.incognito) Icons.Filled.TheaterComedy else Icons.Outlined.TheaterComedy, + if (autoAcceptState.value.incognito) painterResource(R.drawable.ic_theater_comedy_filled) else painterResource(R.drawable.ic_theater_comedy), if (autoAcceptState.value.incognito) Indigo else HighOrLowlight, autoAcceptState.value.incognito, ) { @@ -104,8 +102,8 @@ private fun ButtonsFooter(cancel: () -> Unit, save: () -> Unit, disabled: Boolea horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { - FooterButton(Icons.Outlined.Replay, stringResource(R.string.cancel_verb), cancel, disabled) - FooterButton(Icons.Outlined.Check, stringResource(R.string.save_verb), save, disabled) + FooterButton(painterResource(R.drawable.ic_replay), stringResource(R.string.cancel_verb), cancel, disabled) + FooterButton(painterResource(R.drawable.ic_check), stringResource(R.string.save_verb), save, disabled) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt index 9d6c3accfa..a8841e824c 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt @@ -3,20 +3,18 @@ package chat.simplex.app.views.usersettings import SectionBottomSpacer import SectionCustomFooter import SectionItemView -import SectionSpacer import SectionView import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview @@ -262,7 +260,7 @@ fun IntSettingRow(title: String, selection: MutableState, values: List ) Spacer(Modifier.size(4.dp)) Icon( - if (!expanded.value) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, + if (!expanded.value) painterResource(R.drawable.ic_expand_more) else painterResource(R.drawable.ic_expand_less), generalGetString(R.string.invite_to_group_button), modifier = Modifier.padding(start = 8.dp), tint = HighOrLowlight @@ -323,7 +321,7 @@ fun TimeoutSettingRow(title: String, selection: MutableState, values: List ) Spacer(Modifier.size(4.dp)) Icon( - if (!expanded.value) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, + if (!expanded.value) painterResource(R.drawable.ic_expand_more) else painterResource(R.drawable.ic_expand_less), generalGetString(R.string.invite_to_group_button), modifier = Modifier.padding(start = 8.dp), tint = HighOrLowlight @@ -359,13 +357,13 @@ fun SettingsSectionFooter(revert: () -> Unit, save: () -> Unit, disabled: Boolea horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { - FooterButton(Icons.Outlined.Replay, stringResource(R.string.network_options_revert), revert, disabled) - FooterButton(Icons.Outlined.Check, stringResource(R.string.network_options_save), save, disabled) + FooterButton(painterResource(R.drawable.ic_replay), stringResource(R.string.network_options_revert), revert, disabled) + FooterButton(painterResource(R.drawable.ic_check), stringResource(R.string.network_options_save), save, disabled) } } @Composable -fun FooterButton(icon: ImageVector, title: String, action: () -> Unit, disabled: Boolean) { +fun FooterButton(icon: Painter, title: String, action: () -> Unit, disabled: Boolean) { Surface( shape = RoundedCornerShape(20.dp), color = Color.Black.copy(alpha = 0f) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Appearance.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Appearance.kt index 84ce9b8848..ae84518bfd 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Appearance.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Appearance.kt @@ -16,8 +16,6 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow import androidx.compose.material.* import androidx.compose.material.MaterialTheme.colors -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Circle import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment @@ -26,6 +24,7 @@ import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.* import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -152,7 +151,7 @@ fun AppearanceView(m: ChatModel) { SectionItemViewSpaceBetween({ editPrimaryColor(currentTheme.first.primary) }) { val title = generalGetString(R.string.color_primary) Text(title) - Icon(Icons.Filled.Circle, title, tint = colors.primary) + Icon(painterResource(R.drawable.ic_circle_filled), title, tint = colors.primary) } } if (currentTheme.first.primary != LightColorPalette.primary) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/CallSettings.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/CallSettings.kt index be9354646d..e487276231 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/CallSettings.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/CallSettings.kt @@ -6,16 +6,12 @@ import SectionTextFooter import SectionView import androidx.compose.foundation.* import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.drawBehind -import androidx.compose.ui.geometry.* import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import chat.simplex.app.R @@ -104,7 +100,7 @@ fun SharedPreferenceToggle( @Composable fun SharedPreferenceToggleWithIcon( text: String, - icon: ImageVector, + icon: Painter, stopped: Boolean = false, onClickInfo: () -> Unit, preference: SharedPreference, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt index 29b00b544b..ca7180ffff 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt @@ -1,18 +1,16 @@ package chat.simplex.app.views.usersettings import SectionBottomSpacer -import SectionSpacer import SectionTextFooter import SectionView import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import chat.simplex.app.R import chat.simplex.app.model.ChatModel @@ -33,8 +31,8 @@ fun DeveloperView( SectionView() { InstallTerminalAppItem(uriHandler) ChatConsoleItem { withAuth(showCustomModal { it, close -> TerminalView(it, close) }) } - SettingsPreferenceItem(Icons.Outlined.DriveFolderUpload, stringResource(R.string.confirm_database_upgrades), m.controller.appPrefs.confirmDBUpgrades) - SettingsPreferenceItem(Icons.Outlined.Code, stringResource(R.string.show_developer_options), developerTools) + SettingsPreferenceItem(painterResource(R.drawable.ic_drive_folder_upload), stringResource(R.string.confirm_database_upgrades), m.controller.appPrefs.confirmDBUpgrades) + SettingsPreferenceItem(painterResource(R.drawable.ic_code), stringResource(R.string.show_developer_options), developerTools) } SectionTextFooter( generalGetString(if (devTools.value) R.string.show_dev_options else R.string.hide_dev_options) + " " + diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt index 585cd1dcc5..fce9aa3894 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt @@ -2,7 +2,6 @@ package chat.simplex.app.views.usersettings import SectionBottomSpacer import SectionCustomFooter -import SectionDividerSpaced import SectionItemView import SectionItemWithValue import SectionView @@ -12,12 +11,11 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardActions import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.Font @@ -165,16 +163,16 @@ fun NetworkAndServersView( ) { AppBarTitle(stringResource(R.string.network_and_servers)) SectionView(generalGetString(R.string.settings_section_title_messages)) { - SettingsActionItem(Icons.Outlined.Dns, stringResource(R.string.smp_servers), showCustomModal { m, close -> ProtocolServersView(m, ServerProtocol.SMP, close) }) + SettingsActionItem(painterResource(R.drawable.ic_dns), stringResource(R.string.smp_servers), showCustomModal { m, close -> ProtocolServersView(m, ServerProtocol.SMP, close) }) - SettingsActionItem(Icons.Outlined.Dns, stringResource(R.string.xftp_servers), showCustomModal { m, close -> ProtocolServersView(m, ServerProtocol.XFTP, close) }) + SettingsActionItem(painterResource(R.drawable.ic_dns), stringResource(R.string.xftp_servers), showCustomModal { m, close -> ProtocolServersView(m, ServerProtocol.XFTP, close) }) UseSocksProxySwitch(networkUseSocksProxy, proxyPort, toggleSocksProxy, showSettingsModal) UseOnionHosts(onionHosts, networkUseSocksProxy, showSettingsModal, useOnion) if (developerTools) { SessionModePicker(sessionMode, showSettingsModal, updateSessionMode) } - SettingsActionItem(Icons.Outlined.Cable, stringResource(R.string.network_settings), showSettingsModal { AdvancedNetworkSettingsView(it) }) + SettingsActionItem(painterResource(R.drawable.ic_cable), stringResource(R.string.network_settings), showSettingsModal { AdvancedNetworkSettingsView(it) }) } if (networkUseSocksProxy.value) { SectionCustomFooter { Text(annotatedStringResource(R.string.disable_onion_hosts_when_not_supported)) } @@ -184,7 +182,7 @@ fun NetworkAndServersView( } SectionView(generalGetString(R.string.settings_section_title_calls)) { - SettingsActionItem(Icons.Outlined.ElectricalServices, stringResource(R.string.webrtc_ice_servers), showModal { RTCServersView(it) }) + SettingsActionItem(painterResource(R.drawable.ic_electrical_services), stringResource(R.string.webrtc_ice_servers), showModal { RTCServersView(it) }) } SectionBottomSpacer() } @@ -207,7 +205,7 @@ fun UseSocksProxySwitch( verticalAlignment = Alignment.CenterVertically ) { Icon( - Icons.Outlined.SettingsEthernet, + painterResource(R.drawable.ic_settings_ethernet), stringResource(R.string.network_socks_toggle), tint = HighOrLowlight ) @@ -349,7 +347,7 @@ private fun UseOnionHosts( generalGetString(R.string.network_use_onion_hosts), onionHosts, values, - icon = Icons.Outlined.Security, + icon = painterResource(R.drawable.ic_security), enabled = enabled, onSelected = onSelected ) @@ -374,7 +372,7 @@ private fun SessionModePicker( generalGetString(R.string.network_session_mode_transport_isolation), sessionMode, values, - icon = Icons.Outlined.SafetyDivider, + icon = painterResource(R.drawable.ic_safety_divider), onSelected = showModal { Column( Modifier.fillMaxWidth(), @@ -393,8 +391,8 @@ private fun NetworkSectionFooter(revert: () -> Unit, save: () -> Unit, revertDis horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { - FooterButton(Icons.Outlined.Replay, stringResource(R.string.network_options_revert), revert, revertDisabled) - FooterButton(Icons.Outlined.Check, stringResource(R.string.network_options_save), save, saveDisabled) + FooterButton(painterResource(R.drawable.ic_replay), stringResource(R.string.network_options_revert), revert, revertDisabled) + FooterButton(painterResource(R.drawable.ic_check), stringResource(R.string.network_options_save), save, saveDisabled) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt index da83185eb4..d2efb8416e 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt @@ -10,18 +10,16 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.fragment.app.FragmentActivity import chat.simplex.app.R import chat.simplex.app.model.* -import chat.simplex.app.ui.theme.HighOrLowlight import chat.simplex.app.views.helpers.* import chat.simplex.app.views.helpers.DatabaseUtils.ksAppPassword import chat.simplex.app.views.localauth.SetAppPasscodeView @@ -51,7 +49,7 @@ fun PrivacySettingsView( SectionView(stringResource(R.string.settings_section_title_device)) { ChatLockItem(chatModel, showSettingsModal, setPerformLA) val context = LocalContext.current - SettingsPreferenceItem(Icons.Outlined.VisibilityOff, stringResource(R.string.protect_app_screen), chatModel.controller.appPrefs.privacyProtectScreen) { on -> + SettingsPreferenceItem(painterResource(R.drawable.ic_visibility_off), stringResource(R.string.protect_app_screen), chatModel.controller.appPrefs.privacyProtectScreen) { on -> if (on) { (context as? FragmentActivity)?.window?.setFlags( WindowManager.LayoutParams.FLAG_SECURE, @@ -65,8 +63,8 @@ fun PrivacySettingsView( SectionDividerSpaced() SectionView(stringResource(R.string.settings_section_title_chats)) { - SettingsPreferenceItem(Icons.Outlined.Image, stringResource(R.string.auto_accept_images), chatModel.controller.appPrefs.privacyAcceptImages) - SettingsPreferenceItem(Icons.Outlined.TravelExplore, stringResource(R.string.send_link_previews), chatModel.controller.appPrefs.privacyLinkPreviews) + SettingsPreferenceItem(painterResource(R.drawable.ic_image), stringResource(R.string.auto_accept_images), chatModel.controller.appPrefs.privacyAcceptImages) + SettingsPreferenceItem(painterResource(R.drawable.ic_travel_explore), stringResource(R.string.send_link_previews), chatModel.controller.appPrefs.privacyLinkPreviews) SimpleXLinkOptions(chatModel.simplexLinkMode, onSelected = { simplexLinkMode.set(it) chatModel.simplexLinkMode.value = it diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServerView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServerView.kt index 6a4d0927af..9611e6d900 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServerView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServerView.kt @@ -4,19 +4,17 @@ import SectionBottomSpacer import SectionDividerSpaced import SectionItemView import SectionItemViewSpaceBetween -import SectionSpacer import SectionView import android.util.Log import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily @@ -137,7 +135,7 @@ private fun CustomServer( } SectionView( stringResource(R.string.smp_servers_your_server_address).uppercase(), - icon = Icons.Outlined.ErrorOutline, + icon = painterResource(R.drawable.ic_error), iconTint = if (!valid.value) MaterialTheme.colors.error else Color.Transparent, ) { val testedPreviously = remember { mutableMapOf() } @@ -188,9 +186,9 @@ private fun UseServerSection( @Composable fun ShowTestStatus(server: ServerCfg, modifier: Modifier = Modifier) = when (server.tested) { - true -> Icon(Icons.Outlined.Check, null, modifier, tint = SimplexGreen) - false -> Icon(Icons.Outlined.Clear, null, modifier, tint = MaterialTheme.colors.error) - else -> Icon(Icons.Outlined.Check, null, modifier, tint = Color.Transparent) + true -> Icon(painterResource(R.drawable.ic_check), null, modifier, tint = SimplexGreen) + false -> Icon(painterResource(R.drawable.ic_close), null, modifier, tint = MaterialTheme.colors.error) + else -> Icon(painterResource(R.drawable.ic_check), null, modifier, tint = Color.Transparent) } suspend fun testServerConnection(server: ServerCfg, m: ChatModel): Pair = diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt index 562e830923..173f25c5c0 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt @@ -8,13 +8,12 @@ import SectionView import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight @@ -204,7 +203,7 @@ private fun ProtocolServersLayout( } } SettingsActionItem( - Icons.Outlined.Add, + painterResource(R.drawable.ic_add), stringResource(R.string.smp_servers_add), addServer, disabled = testing, @@ -249,7 +248,7 @@ private fun ProtocolServerView(serverProtocol: ServerProtocol, srv: ServerCfg, s val address = parseServerAddress(srv.server) when { address == null || !address.valid || address.serverProtocol != serverProtocol || !uniqueAddress(srv, address, servers) -> InvalidServer() - !srv.enabled -> Icon(Icons.Outlined.DoNotDisturb, null, tint = HighOrLowlight) + !srv.enabled -> Icon(painterResource(R.drawable.ic_do_not_disturb_on), null, tint = HighOrLowlight) else -> ShowTestStatus(srv) } Spacer(Modifier.padding(horizontal = 4.dp)) @@ -265,7 +264,7 @@ private fun ProtocolServerView(serverProtocol: ServerProtocol, srv: ServerCfg, s private fun HowToButton() { val uriHandler = LocalUriHandler.current SettingsActionItem( - Icons.Outlined.OpenInNew, + painterResource(R.drawable.ic_open_in_new), stringResource(R.string.how_to_use_your_servers), { uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat/blob/stable/docs/SERVER.md") }, textColor = MaterialTheme.colors.primary, @@ -275,7 +274,7 @@ private fun HowToButton() { @Composable fun InvalidServer() { - Icon(Icons.Outlined.ErrorOutline, null, tint = MaterialTheme.colors.error) + Icon(painterResource(R.drawable.ic_error), null, tint = MaterialTheme.colors.error) } private fun uniqueAddress(s: ServerCfg, address: ServerAddress, servers: List): Boolean = servers.all { srv -> diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/RTCServers.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/RTCServers.kt index 32b03d5200..c37d2a95bb 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/RTCServers.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/RTCServers.kt @@ -8,12 +8,11 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.OpenInNew import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily @@ -201,7 +200,7 @@ private fun howToButton() { ) { Text(stringResource(R.string.how_to), color = MaterialTheme.colors.primary) Icon( - Icons.Outlined.OpenInNew, stringResource(R.string.how_to), tint = MaterialTheme.colors.primary, + painterResource(R.drawable.ic_open_in_new), stringResource(R.string.how_to), tint = MaterialTheme.colors.primary, modifier = Modifier.padding(horizontal = 5.dp) ) } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt index c33117d9b0..78ed4eb452 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt @@ -11,15 +11,12 @@ import android.content.res.Configuration import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.* import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -99,7 +96,7 @@ fun SettingsView(chatModel: ChatModel, setPerformLA: (Boolean, FragmentActivity) ) { SimpleButton( stringResource(R.string.auth_unlock), - icon = Icons.Outlined.Lock, + icon = painterResource(R.drawable.ic_lock), click = { runAuth(context, onFinishAuth) } @@ -145,29 +142,29 @@ fun SettingsLayout( ProfilePreview(profile, stopped = stopped) } val profileHidden = rememberSaveable { mutableStateOf(false) } - SettingsActionItem(Icons.Outlined.ManageAccounts, stringResource(R.string.your_chat_profiles), { withAuth { showSettingsModalWithSearch { it, search -> UserProfilesView(it, search, profileHidden) } } }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_manage_accounts), stringResource(R.string.your_chat_profiles), { withAuth { showSettingsModalWithSearch { it, search -> UserProfilesView(it, search, profileHidden) } } }, disabled = stopped, extraPadding = true) SettingsIncognitoActionItem(incognitoPref, incognito, stopped) { showModal { IncognitoView() }() } - SettingsActionItem(Icons.Outlined.QrCode, stringResource(R.string.your_simplex_contact_address), showModal { CreateLinkView(it, CreateLinkTab.LONG_TERM) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_qr_code), stringResource(R.string.your_simplex_contact_address), showModal { CreateLinkView(it, CreateLinkTab.LONG_TERM) }, disabled = stopped, extraPadding = true) ChatPreferencesItem(showCustomModal, stopped = stopped) } SectionDividerSpaced() SectionView(stringResource(R.string.settings_section_title_settings)) { - SettingsActionItem(Icons.Outlined.Bolt, stringResource(R.string.notifications), showSettingsModal { NotificationsSettingsView(it) }, disabled = stopped, extraPadding = true) - SettingsActionItem(Icons.Outlined.WifiTethering, stringResource(R.string.network_and_servers), showSettingsModal { NetworkAndServersView(it, showModal, showSettingsModal, showCustomModal) }, disabled = stopped, extraPadding = true) - SettingsActionItem(Icons.Outlined.Videocam, stringResource(R.string.settings_audio_video_calls), showSettingsModal { CallSettingsView(it, showModal) }, disabled = stopped, extraPadding = true) - SettingsActionItem(Icons.Outlined.Lock, stringResource(R.string.privacy_and_security), showSettingsModal { PrivacySettingsView(it, showSettingsModal, setPerformLA) }, disabled = stopped, extraPadding = true) - SettingsActionItem(Icons.Outlined.LightMode, stringResource(R.string.appearance_settings), showSettingsModal { AppearanceView(it) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_bolt), stringResource(R.string.notifications), showSettingsModal { NotificationsSettingsView(it) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_wifi_tethering), stringResource(R.string.network_and_servers), showSettingsModal { NetworkAndServersView(it, showModal, showSettingsModal, showCustomModal) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_videocam), stringResource(R.string.settings_audio_video_calls), showSettingsModal { CallSettingsView(it, showModal) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_lock), stringResource(R.string.privacy_and_security), showSettingsModal { PrivacySettingsView(it, showSettingsModal, setPerformLA) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_light_mode), stringResource(R.string.appearance_settings), showSettingsModal { AppearanceView(it) }, disabled = stopped, extraPadding = true) DatabaseItem(encrypted, showSettingsModal { DatabaseView(it, showSettingsModal) }, stopped) } SectionDividerSpaced() SectionView(stringResource(R.string.settings_section_title_help)) { - SettingsActionItem(Icons.Outlined.HelpOutline, stringResource(R.string.how_to_use_simplex_chat), showModal { HelpView(userDisplayName) }, disabled = stopped, extraPadding = true) - SettingsActionItem(Icons.Outlined.Add, stringResource(R.string.whats_new), showCustomModal { _, close -> WhatsNewView(viaSettings = true, close) }, disabled = stopped, extraPadding = true) - SettingsActionItem(Icons.Outlined.Info, stringResource(R.string.about_simplex_chat), showModal { SimpleXInfo(it, onboarding = false) }, extraPadding = true) - SettingsActionItem(Icons.Outlined.Tag, stringResource(R.string.chat_with_the_founder), { uriHandler.openUriCatching(simplexTeamUri) }, textColor = MaterialTheme.colors.primary, disabled = stopped, extraPadding = true) - SettingsActionItem(Icons.Outlined.Email, stringResource(R.string.send_us_an_email), { uriHandler.openUriCatching("mailto:chat@simplex.chat") }, textColor = MaterialTheme.colors.primary, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_help), stringResource(R.string.how_to_use_simplex_chat), showModal { HelpView(userDisplayName) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_add), stringResource(R.string.whats_new), showCustomModal { _, close -> WhatsNewView(viaSettings = true, close) }, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_info), stringResource(R.string.about_simplex_chat), showModal { SimpleXInfo(it, onboarding = false) }, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_tag), stringResource(R.string.chat_with_the_founder), { uriHandler.openUriCatching(simplexTeamUri) }, textColor = MaterialTheme.colors.primary, disabled = stopped, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_mail), stringResource(R.string.send_us_an_email), { uriHandler.openUriCatching("mailto:chat@simplex.chat") }, textColor = MaterialTheme.colors.primary, extraPadding = true) } SectionDividerSpaced() @@ -179,7 +176,7 @@ fun SettingsLayout( SectionDividerSpaced() SectionView(stringResource(R.string.settings_section_title_develop)) { - SettingsActionItem(Icons.Outlined.Code, stringResource(R.string.settings_developer_tools), showSettingsModal { DeveloperView(it, showCustomModal, withAuth) }, extraPadding = true) + SettingsActionItem(painterResource(R.drawable.ic_code), stringResource(R.string.settings_developer_tools), showSettingsModal { DeveloperView(it, showCustomModal, withAuth) }, extraPadding = true) AppVersionItem(showVersion) } SectionBottomSpacer() @@ -195,7 +192,7 @@ fun SettingsIncognitoActionItem( onClickInfo: () -> Unit, ) { SettingsPreferenceItemWithInfo( - if (incognito.value) Icons.Filled.TheaterComedy else Icons.Outlined.TheaterComedy, + if (incognito.value) painterResource(R.drawable.ic_theater_comedy_filled) else painterResource(R.drawable.ic_theater_comedy), if (incognito.value) Indigo else HighOrLowlight, stringResource(R.string.incognito), stopped, @@ -232,7 +229,7 @@ fun MaintainIncognitoState(chatModel: ChatModel) { ) { Row(Modifier.weight(1f)) { Icon( - Icons.Outlined.FolderOpen, + painterResource(R.drawable.ic_database), contentDescription = stringResource(R.string.database_passphrase_and_export), tint = if (encrypted) HighOrLowlight else WarningOrange, ) @@ -241,7 +238,7 @@ fun MaintainIncognitoState(chatModel: ChatModel) { } if (stopped) { Icon( - Icons.Filled.Report, + painterResource(R.drawable.ic_report_filled), contentDescription = stringResource(R.string.chat_is_stopped), tint = Color.Red, modifier = Modifier.padding(end = 6.dp) @@ -253,7 +250,7 @@ fun MaintainIncognitoState(chatModel: ChatModel) { @Composable fun ChatPreferencesItem(showCustomModal: ((@Composable (ChatModel, () -> Unit) -> Unit) -> (() -> Unit)), stopped: Boolean) { SettingsActionItem( - Icons.Outlined.ToggleOn, + painterResource(R.drawable.ic_toggle_on), stringResource(R.string.chat_preferences), click = if (stopped) null else ({ withApi { @@ -277,7 +274,7 @@ fun ChatLockItem( val currentLAMode = remember { chatModel.controller.appPrefs.laMode } SettingsActionItemWithContent( click = showSettingsModal { SimplexLockView(chatModel, currentLAMode, setPerformLA) }, - icon = if (performLA.value) Icons.Filled.Lock else Icons.Outlined.Lock, + icon = if (performLA.value) painterResource(R.drawable.ic_lock_filled) else painterResource(R.drawable.ic_lock), text = stringResource(R.string.chat_lock), iconColor = if (performLA.value) SimplexGreen else HighOrLowlight, extraPadding = false, @@ -289,7 +286,7 @@ fun ChatLockItem( @Composable private fun ContributeItem(uriHandler: UriHandler) { SectionItemViewWithIcon({ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat#contribute") }) { Icon( - Icons.Outlined.Keyboard, + painterResource(R.drawable.ic_keyboard), contentDescription = "GitHub", tint = HighOrLowlight, ) @@ -305,7 +302,7 @@ fun ChatLockItem( } ) { Icon( - Icons.Outlined.StarOutline, + painterResource(R.drawable.ic_star), contentDescription = "Google Play", tint = HighOrLowlight, ) @@ -383,7 +380,7 @@ fun ChatLockItem( } @Composable -fun SettingsActionItem(icon: ImageVector, text: String, click: (() -> Unit)? = null, textColor: Color = Color.Unspecified, iconColor: Color = HighOrLowlight, disabled: Boolean = false, extraPadding: Boolean = false) { +fun SettingsActionItem(icon: Painter, text: String, click: (() -> Unit)? = null, textColor: Color = Color.Unspecified, iconColor: Color = HighOrLowlight, disabled: Boolean = false, extraPadding: Boolean = false) { SectionItemView(click, disabled = disabled, extraPadding = extraPadding) { Icon(icon, text, tint = if (disabled) HighOrLowlight else iconColor) TextIconSpaced(extraPadding) @@ -392,7 +389,7 @@ fun SettingsActionItem(icon: ImageVector, text: String, click: (() -> Unit)? = n } @Composable -fun SettingsActionItemWithContent(icon: ImageVector?, text: String? = null, click: (() -> Unit)? = null, iconColor: Color = HighOrLowlight, disabled: Boolean = false, extraPadding: Boolean = false, content: @Composable RowScope.() -> Unit) { +fun SettingsActionItemWithContent(icon: Painter?, text: String? = null, click: (() -> Unit)? = null, iconColor: Color = HighOrLowlight, disabled: Boolean = false, extraPadding: Boolean = false, content: @Composable RowScope.() -> Unit) { SectionItemView( click, extraPadding = extraPadding, @@ -403,7 +400,7 @@ fun SettingsActionItemWithContent(icon: ImageVector?, text: String? = null, clic disabled = disabled ) { if (icon != null) { - Icon(icon, text, tint = if (disabled) HighOrLowlight else iconColor) + Icon(icon, text, Modifier, tint = if (disabled) HighOrLowlight else iconColor) TextIconSpaced(extraPadding) } if (text != null) { @@ -416,7 +413,7 @@ fun SettingsActionItemWithContent(icon: ImageVector?, text: String? = null, clic @Composable fun SettingsPreferenceItem( - icon: ImageVector?, + icon: Painter?, text: String, pref: SharedPreference, iconColor: Color = HighOrLowlight, @@ -430,7 +427,7 @@ fun SettingsPreferenceItem( @Composable fun SettingsPreferenceItemWithInfo( - icon: ImageVector, + icon: Painter, iconTint: Color, text: String, stopped: Boolean, @@ -439,7 +436,7 @@ fun SettingsPreferenceItemWithInfo( prefState: MutableState? = null ) { SettingsActionItemWithContent(icon, null, click = if (stopped) null else onClickInfo, iconColor = iconTint, extraPadding = true,) { - SharedPreferenceToggleWithIcon(text, Icons.Outlined.Info, stopped, onClickInfo, pref, prefState) + SharedPreferenceToggleWithIcon(text, painterResource(R.drawable.ic_info), stopped, onClickInfo, pref, prefState) } } @@ -460,7 +457,7 @@ fun PreferenceToggle( @Composable fun PreferenceToggleWithIcon( text: String, - icon: ImageVector? = null, + icon: Painter? = null, iconColor: Color? = HighOrLowlight, checked: Boolean, extraPadding: Boolean = false, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserAddressView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserAddressView.kt index e848b5ecbf..574cc158a3 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserAddressView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserAddressView.kt @@ -6,14 +6,13 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -83,7 +82,7 @@ fun UserAddressLayout( verticalArrangement = Arrangement.SpaceEvenly ) { if (userAddress == null) { - SimpleButton(stringResource(R.string.create_address), icon = Icons.Outlined.QrCode, click = createAddress) + SimpleButton(stringResource(R.string.create_address), icon = painterResource(R.drawable.ic_qr_code), click = createAddress) } else { QRCode(userAddress.connReqContact, Modifier.aspectRatio(1f)) Row( @@ -93,17 +92,17 @@ fun UserAddressLayout( ) { SimpleButton( stringResource(R.string.share_link), - icon = Icons.Outlined.Share, + icon = painterResource(R.drawable.ic_share), click = { share(userAddress.connReqContact) }) SimpleButtonIconEnded( stringResource(R.string.contact_requests), - icon = Icons.Outlined.ChevronRight, + icon = painterResource(R.drawable.ic_chevron_right), click = acceptRequests ) } SimpleButton( stringResource(R.string.delete_address), - icon = Icons.Outlined.Delete, + icon = painterResource(R.drawable.ic_delete), color = Color.Red, click = deleteAddress ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfileView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfileView.kt index d480b194e1..5e70e268db 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfileView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfileView.kt @@ -7,14 +7,13 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -87,7 +86,7 @@ fun UserProfileLayout( val dataUnchanged = displayName.value == profile.displayName && fullName.value == profile.fullName && - chosenImage.value == null + profile.image == profileImage.value val closeWithAlert = { if (dataUnchanged || !(displayName.value.isNotEmpty() && isValidDisplayName(displayName.value))) { @@ -188,7 +187,7 @@ fun EditImageButton(click: () -> Unit) { modifier = Modifier.size(30.dp) ) { Icon( - Icons.Outlined.PhotoCamera, + painterResource(R.drawable.ic_photo_camera), contentDescription = stringResource(R.string.edit_image), tint = MaterialTheme.colors.primary, modifier = Modifier.size(30.dp) @@ -200,7 +199,7 @@ fun EditImageButton(click: () -> Unit) { fun DeleteImageButton(click: () -> Unit) { IconButton(onClick = click) { Icon( - Icons.Outlined.Close, + painterResource(R.drawable.ic_close), contentDescription = stringResource(R.string.delete_image), tint = MaterialTheme.colors.primary, ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt index 2f3b606913..780d9292f9 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt @@ -11,12 +11,11 @@ import androidx.annotation.StringRes import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight @@ -161,7 +160,7 @@ private fun UserProfilesView( ) { if (profileHidden.value) { SectionView { - SettingsActionItem(Icons.Outlined.LockOpen, stringResource(R.string.enter_password_to_show), click = { + SettingsActionItem(painterResource(R.drawable.ic_lock_open), stringResource(R.string.enter_password_to_show), click = { profileHidden.value = false } ) @@ -177,7 +176,7 @@ private fun UserProfilesView( } if (searchTextOrPassword.value.trim().isEmpty()) { SectionItemView(addUser, minHeight = 68.dp) { - Icon(Icons.Outlined.Add, stringResource(R.string.users_add), tint = MaterialTheme.colors.primary) + Icon(painterResource(R.drawable.ic_add), stringResource(R.string.users_add), tint = MaterialTheme.colors.primary) Spacer(Modifier.padding(horizontal = 4.dp)) Text(stringResource(R.string.users_add), color = MaterialTheme.colors.primary) } @@ -221,30 +220,30 @@ private fun UserView( Box(Modifier.padding(horizontal = DEFAULT_PADDING)) { DefaultDropdownMenu(showMenu) { if (user.hidden) { - ItemAction(stringResource(R.string.user_unhide), Icons.Outlined.LockOpen, onClick = { + ItemAction(stringResource(R.string.user_unhide), painterResource(R.drawable.ic_lock_open), onClick = { showMenu.value = false unhideUser(user) }) } else { if (visibleUsersCount > 1 && prefPerformLA) { - ItemAction(stringResource(R.string.user_hide), Icons.Outlined.Lock, onClick = { + ItemAction(stringResource(R.string.user_hide), painterResource(R.drawable.ic_lock), onClick = { showMenu.value = false showHiddenProfile(user) }) } if (user.showNtfs) { - ItemAction(stringResource(R.string.user_mute), Icons.Outlined.NotificationsOff, onClick = { + ItemAction(stringResource(R.string.user_mute), painterResource(R.drawable.ic_notifications_off), onClick = { showMenu.value = false muteUser(user) }) } else { - ItemAction(stringResource(R.string.user_unmute), Icons.Outlined.Notifications, onClick = { + ItemAction(stringResource(R.string.user_unmute), painterResource(R.drawable.ic_notifications), onClick = { showMenu.value = false unmuteUser(user) }) } } - ItemAction(stringResource(R.string.delete_verb), Icons.Outlined.Delete, color = Color.Red, onClick = { + ItemAction(stringResource(R.string.delete_verb), painterResource(R.drawable.ic_delete), color = Color.Red, onClick = { removeUser(user) showMenu.value = false }) diff --git a/apps/android/app/src/main/res/drawable/ic_account_circle_filled.xml b/apps/android/app/src/main/res/drawable/ic_account_circle_filled.xml new file mode 100644 index 0000000000..3af5db1b74 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_account_circle_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_add.xml b/apps/android/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 0000000000..4f306c05ae --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_add_link.xml b/apps/android/app/src/main/res/drawable/ic_add_link.xml new file mode 100644 index 0000000000..0da3e849c2 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_add_link.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_add_photo.xml b/apps/android/app/src/main/res/drawable/ic_add_photo.xml index 2a81fda0af..acbab9da1c 100644 --- a/apps/android/app/src/main/res/drawable/ic_add_photo.xml +++ b/apps/android/app/src/main/res/drawable/ic_add_photo.xml @@ -1,6 +1,6 @@ + + diff --git a/apps/android/app/src/main/res/drawable/ic_arrow_back_ios_new.xml b/apps/android/app/src/main/res/drawable/ic_arrow_back_ios_new.xml new file mode 100644 index 0000000000..8d3135bf15 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_arrow_back_ios_new.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_arrow_downward.xml b/apps/android/app/src/main/res/drawable/ic_arrow_downward.xml new file mode 100644 index 0000000000..d2cef9fe2d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_arrow_downward.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_arrow_forward_ios.xml b/apps/android/app/src/main/res/drawable/ic_arrow_forward_ios.xml new file mode 100644 index 0000000000..1eb5f7a9fb --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_arrow_forward_ios.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_arrow_upward.xml b/apps/android/app/src/main/res/drawable/ic_arrow_upward.xml new file mode 100644 index 0000000000..3a52b50248 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_arrow_upward.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_article.xml b/apps/android/app/src/main/res/drawable/ic_article.xml new file mode 100644 index 0000000000..607c3d78ec --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_article.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_attach_file_filled_500.xml b/apps/android/app/src/main/res/drawable/ic_attach_file_filled_500.xml new file mode 100644 index 0000000000..f2f923b6d6 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_attach_file_filled_500.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_backspace.xml b/apps/android/app/src/main/res/drawable/ic_backspace.xml new file mode 100644 index 0000000000..b9837296dd --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_backspace.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_backup.xml b/apps/android/app/src/main/res/drawable/ic_backup.xml new file mode 100644 index 0000000000..248404d464 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_backup.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_battery_2_bar.xml b/apps/android/app/src/main/res/drawable/ic_battery_2_bar.xml new file mode 100644 index 0000000000..cbbe134adf --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_battery_2_bar.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_battery_3_bar.xml b/apps/android/app/src/main/res/drawable/ic_battery_3_bar.xml new file mode 100644 index 0000000000..1e60f37eb1 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_battery_3_bar.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_bolt.xml b/apps/android/app/src/main/res/drawable/ic_bolt.xml new file mode 100644 index 0000000000..4ced77dc1d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_bolt.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_bolt_filled.xml b/apps/android/app/src/main/res/drawable/ic_bolt_filled.xml new file mode 100644 index 0000000000..64fa349468 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_bolt_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_cable.xml b/apps/android/app/src/main/res/drawable/ic_cable.xml new file mode 100644 index 0000000000..b801b36d83 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_cable.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_call.xml b/apps/android/app/src/main/res/drawable/ic_call.xml new file mode 100644 index 0000000000..c38c3fe70a --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_call.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_call_500.xml b/apps/android/app/src/main/res/drawable/ic_call_500.xml new file mode 100644 index 0000000000..c53c2e6594 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_call_500.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_call_end.xml b/apps/android/app/src/main/res/drawable/ic_call_end.xml new file mode 100644 index 0000000000..f71577fa09 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_call_end.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_call_end_filled.xml b/apps/android/app/src/main/res/drawable/ic_call_end_filled.xml new file mode 100644 index 0000000000..c8def6117e --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_call_end_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_call_filled.xml b/apps/android/app/src/main/res/drawable/ic_call_filled.xml new file mode 100644 index 0000000000..873cc021e5 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_call_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_camera_enhance.xml b/apps/android/app/src/main/res/drawable/ic_camera_enhance.xml index d3812657c4..126527f211 100644 --- a/apps/android/app/src/main/res/drawable/ic_camera_enhance.xml +++ b/apps/android/app/src/main/res/drawable/ic_camera_enhance.xml @@ -1,6 +1,6 @@ + + diff --git a/apps/android/app/src/main/res/drawable/ic_chat.xml b/apps/android/app/src/main/res/drawable/ic_chat.xml new file mode 100644 index 0000000000..726b53ab7b --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_chat.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_check.xml b/apps/android/app/src/main/res/drawable/ic_check.xml new file mode 100644 index 0000000000..cb47d7db19 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_check.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_check_circle_filled.xml b/apps/android/app/src/main/res/drawable/ic_check_circle_filled.xml new file mode 100644 index 0000000000..a1f32800fe --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_check_circle_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_check_fill.xml b/apps/android/app/src/main/res/drawable/ic_check_fill.xml new file mode 100644 index 0000000000..da2028b14a --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_check_fill.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_check_filled.xml b/apps/android/app/src/main/res/drawable/ic_check_filled.xml new file mode 100644 index 0000000000..da2028b14a --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_check_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_chevron_right.xml b/apps/android/app/src/main/res/drawable/ic_chevron_right.xml new file mode 100644 index 0000000000..622e1984ac --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_chevron_right.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_circle.xml b/apps/android/app/src/main/res/drawable/ic_circle.xml new file mode 100644 index 0000000000..129ad17b01 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_circle.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_circle_filled.xml b/apps/android/app/src/main/res/drawable/ic_circle_filled.xml new file mode 100644 index 0000000000..fa62888802 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_circle_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_close.xml b/apps/android/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 0000000000..fc0f4d3fd6 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_code.xml b/apps/android/app/src/main/res/drawable/ic_code.xml new file mode 100644 index 0000000000..a20431beb1 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_code.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_content_copy.xml b/apps/android/app/src/main/res/drawable/ic_content_copy.xml new file mode 100644 index 0000000000..b8952b0299 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_content_copy.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_content_paste.xml b/apps/android/app/src/main/res/drawable/ic_content_paste.xml new file mode 100644 index 0000000000..4e586dab46 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_content_paste.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_database.xml b/apps/android/app/src/main/res/drawable/ic_database.xml new file mode 100644 index 0000000000..f56547850a --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_database.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_delete.xml b/apps/android/app/src/main/res/drawable/ic_delete.xml new file mode 100644 index 0000000000..5be76620e4 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_delete.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_delete_forever.xml b/apps/android/app/src/main/res/drawable/ic_delete_forever.xml new file mode 100644 index 0000000000..a82d8de833 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_delete_forever.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_delete_forever_filled.xml b/apps/android/app/src/main/res/drawable/ic_delete_forever_filled.xml new file mode 100644 index 0000000000..476b04c7bd --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_delete_forever_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_dns.xml b/apps/android/app/src/main/res/drawable/ic_dns.xml new file mode 100644 index 0000000000..60a762908c --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_dns.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_do_not_disturb_on.xml b/apps/android/app/src/main/res/drawable/ic_do_not_disturb_on.xml new file mode 100644 index 0000000000..6ffd006109 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_do_not_disturb_on.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_done_filled.xml b/apps/android/app/src/main/res/drawable/ic_done_filled.xml new file mode 100644 index 0000000000..da2028b14a --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_done_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_download.xml b/apps/android/app/src/main/res/drawable/ic_download.xml new file mode 100644 index 0000000000..92d2447b67 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_download.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_draft.xml b/apps/android/app/src/main/res/drawable/ic_draft.xml index f0a09b5e62..7ec25c71a9 100644 --- a/apps/android/app/src/main/res/drawable/ic_draft.xml +++ b/apps/android/app/src/main/res/drawable/ic_draft.xml @@ -1,6 +1,6 @@ + + diff --git a/apps/android/app/src/main/res/drawable/ic_drive_folder_upload.xml b/apps/android/app/src/main/res/drawable/ic_drive_folder_upload.xml new file mode 100644 index 0000000000..e2f302cbc9 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_drive_folder_upload.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_edit.xml b/apps/android/app/src/main/res/drawable/ic_edit.xml new file mode 100644 index 0000000000..4584f093bf --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_edit.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_edit_filled.xml b/apps/android/app/src/main/res/drawable/ic_edit_filled.xml new file mode 100644 index 0000000000..7041946226 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_edit_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_edit_note.xml b/apps/android/app/src/main/res/drawable/ic_edit_note.xml new file mode 100644 index 0000000000..4c45579a89 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_edit_note.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_electrical_services.xml b/apps/android/app/src/main/res/drawable/ic_electrical_services.xml new file mode 100644 index 0000000000..0c9da67ae6 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_electrical_services.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_error.xml b/apps/android/app/src/main/res/drawable/ic_error.xml new file mode 100644 index 0000000000..78bb603a3b --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_error.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_error_filled.xml b/apps/android/app/src/main/res/drawable/ic_error_filled.xml new file mode 100644 index 0000000000..377c6e25e4 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_error_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_expand_less.xml b/apps/android/app/src/main/res/drawable/ic_expand_less.xml new file mode 100644 index 0000000000..cd7865710f --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_expand_less.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_expand_more.xml b/apps/android/app/src/main/res/drawable/ic_expand_more.xml new file mode 100644 index 0000000000..2033d51bfe --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_expand_more.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_flag.xml b/apps/android/app/src/main/res/drawable/ic_flag.xml new file mode 100644 index 0000000000..794d8944a1 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_flag.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_flip_camera_android_filled.xml b/apps/android/app/src/main/res/drawable/ic_flip_camera_android_filled.xml new file mode 100644 index 0000000000..7325087c95 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_flip_camera_android_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_group.xml b/apps/android/app/src/main/res/drawable/ic_group.xml new file mode 100644 index 0000000000..3023eaac7d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_group.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_help.xml b/apps/android/app/src/main/res/drawable/ic_help.xml new file mode 100644 index 0000000000..7811daed24 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_help.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_image.xml b/apps/android/app/src/main/res/drawable/ic_image.xml new file mode 100644 index 0000000000..0319f37153 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_image.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_info.xml b/apps/android/app/src/main/res/drawable/ic_info.xml new file mode 100644 index 0000000000..49d73a35ef --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_info.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_inventory_2.xml b/apps/android/app/src/main/res/drawable/ic_inventory_2.xml new file mode 100644 index 0000000000..c76a375f2e --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_inventory_2.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_ios_share.xml b/apps/android/app/src/main/res/drawable/ic_ios_share.xml new file mode 100644 index 0000000000..e7658452c0 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_ios_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_keyboard.xml b/apps/android/app/src/main/res/drawable/ic_keyboard.xml new file mode 100644 index 0000000000..1b181cd9b3 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_keyboard.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_keyboard_arrow_down.xml b/apps/android/app/src/main/res/drawable/ic_keyboard_arrow_down.xml new file mode 100644 index 0000000000..64d16805e8 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_keyboard_arrow_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_keyboard_voice.xml b/apps/android/app/src/main/res/drawable/ic_keyboard_voice.xml new file mode 100644 index 0000000000..6abc105438 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_keyboard_voice.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_keyboard_voice_filled.xml b/apps/android/app/src/main/res/drawable/ic_keyboard_voice_filled.xml new file mode 100644 index 0000000000..7b68c1c490 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_keyboard_voice_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_light_mode.xml b/apps/android/app/src/main/res/drawable/ic_light_mode.xml new file mode 100644 index 0000000000..3ec23acc6e --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_light_mode.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_link.xml b/apps/android/app/src/main/res/drawable/ic_link.xml new file mode 100644 index 0000000000..0654256956 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_link.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_lock.xml b/apps/android/app/src/main/res/drawable/ic_lock.xml new file mode 100644 index 0000000000..f0db0e4f43 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_lock.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_lock_filled.xml b/apps/android/app/src/main/res/drawable/ic_lock_filled.xml new file mode 100644 index 0000000000..426350d6be --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_lock_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_lock_open.xml b/apps/android/app/src/main/res/drawable/ic_lock_open.xml new file mode 100644 index 0000000000..2188d06927 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_lock_open.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_login.xml b/apps/android/app/src/main/res/drawable/ic_login.xml new file mode 100644 index 0000000000..6cd2179c08 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_login.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_logout.xml b/apps/android/app/src/main/res/drawable/ic_logout.xml new file mode 100644 index 0000000000..39eb443215 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_logout.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_mail.xml b/apps/android/app/src/main/res/drawable/ic_mail.xml new file mode 100644 index 0000000000..3a063bd429 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_mail.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_manage_accounts.xml b/apps/android/app/src/main/res/drawable/ic_manage_accounts.xml new file mode 100644 index 0000000000..0d1cc9bf77 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_manage_accounts.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_maps_ugc.xml b/apps/android/app/src/main/res/drawable/ic_maps_ugc.xml new file mode 100644 index 0000000000..6450dd487b --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_maps_ugc.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_mark_chat_unread.xml b/apps/android/app/src/main/res/drawable/ic_mark_chat_unread.xml new file mode 100644 index 0000000000..7d41d7ef1d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_mark_chat_unread.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_menu.xml b/apps/android/app/src/main/res/drawable/ic_menu.xml new file mode 100644 index 0000000000..81e2bfba4a --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_menu.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_mic.xml b/apps/android/app/src/main/res/drawable/ic_mic.xml new file mode 100644 index 0000000000..6abc105438 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_mic.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_mic_filled.xml b/apps/android/app/src/main/res/drawable/ic_mic_filled.xml new file mode 100644 index 0000000000..7b68c1c490 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_mic_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_mic_off.xml b/apps/android/app/src/main/res/drawable/ic_mic_off.xml new file mode 100644 index 0000000000..1c4870f5fe --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_mic_off.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_more_horiz.xml b/apps/android/app/src/main/res/drawable/ic_more_horiz.xml new file mode 100644 index 0000000000..db2892846d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_more_horiz.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_note_add.xml b/apps/android/app/src/main/res/drawable/ic_note_add.xml index 9cc342453d..38cc20d3df 100644 --- a/apps/android/app/src/main/res/drawable/ic_note_add.xml +++ b/apps/android/app/src/main/res/drawable/ic_note_add.xml @@ -1,6 +1,6 @@ + + diff --git a/apps/android/app/src/main/res/drawable/ic_notifications_off.xml b/apps/android/app/src/main/res/drawable/ic_notifications_off.xml new file mode 100644 index 0000000000..da9106bff0 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_notifications_off.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_notifications_off_filled.xml b/apps/android/app/src/main/res/drawable/ic_notifications_off_filled.xml new file mode 100644 index 0000000000..6f0b0b768b --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_notifications_off_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_open_in_new.xml b/apps/android/app/src/main/res/drawable/ic_open_in_new.xml new file mode 100644 index 0000000000..a9a964d5cc --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_open_in_new.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_pause_filled.xml b/apps/android/app/src/main/res/drawable/ic_pause_filled.xml new file mode 100644 index 0000000000..3e985d21f4 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_pause_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_pending.xml b/apps/android/app/src/main/res/drawable/ic_pending.xml new file mode 100644 index 0000000000..9cb97c8b19 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_pending.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_pending_filled.xml b/apps/android/app/src/main/res/drawable/ic_pending_filled.xml new file mode 100644 index 0000000000..bf17063321 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_pending_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_person_add.xml b/apps/android/app/src/main/res/drawable/ic_person_add.xml new file mode 100644 index 0000000000..f16ef30b2d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_person_add.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_person_add_500.xml b/apps/android/app/src/main/res/drawable/ic_person_add_500.xml new file mode 100644 index 0000000000..9406a99761 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_person_add_500.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_phone_in_talk_filled.xml b/apps/android/app/src/main/res/drawable/ic_phone_in_talk_filled.xml new file mode 100644 index 0000000000..624d6e04a3 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_phone_in_talk_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_photo_camera.xml b/apps/android/app/src/main/res/drawable/ic_photo_camera.xml new file mode 100644 index 0000000000..e6c55dbba7 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_photo_camera.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_play_arrow_filled.xml b/apps/android/app/src/main/res/drawable/ic_play_arrow_filled.xml new file mode 100644 index 0000000000..bcd917b7da --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_play_arrow_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_priority_high.xml b/apps/android/app/src/main/res/drawable/ic_priority_high.xml new file mode 100644 index 0000000000..b7ddf72318 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_priority_high.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_qr_code.xml b/apps/android/app/src/main/res/drawable/ic_qr_code.xml new file mode 100644 index 0000000000..1eb7cfb059 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_qr_code.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_repeat_one.xml b/apps/android/app/src/main/res/drawable/ic_repeat_one.xml new file mode 100644 index 0000000000..0987aadbf6 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_repeat_one.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_replay.xml b/apps/android/app/src/main/res/drawable/ic_replay.xml new file mode 100644 index 0000000000..7a9c7d7589 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_replay.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_reply.xml b/apps/android/app/src/main/res/drawable/ic_reply.xml new file mode 100644 index 0000000000..4a2dec582d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_reply.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_report_filled.xml b/apps/android/app/src/main/res/drawable/ic_report_filled.xml new file mode 100644 index 0000000000..f1be1d2e41 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_report_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_ring_volume.xml b/apps/android/app/src/main/res/drawable/ic_ring_volume.xml new file mode 100644 index 0000000000..a60020f3ea --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_ring_volume.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_safety_divider.xml b/apps/android/app/src/main/res/drawable/ic_safety_divider.xml new file mode 100644 index 0000000000..8b49b2ac03 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_safety_divider.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_search.xml b/apps/android/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000000..a1c7c1f894 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_search_500.xml b/apps/android/app/src/main/res/drawable/ic_search_500.xml new file mode 100644 index 0000000000..2a1d817b85 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_search_500.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_security.xml b/apps/android/app/src/main/res/drawable/ic_security.xml new file mode 100644 index 0000000000..cfe471b2ea --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_security.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_settings.xml b/apps/android/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000000..a59cecf3d5 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_settings_backup_restore.xml b/apps/android/app/src/main/res/drawable/ic_settings_backup_restore.xml new file mode 100644 index 0000000000..42e11a064d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_settings_backup_restore.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_settings_ethernet.xml b/apps/android/app/src/main/res/drawable/ic_settings_ethernet.xml new file mode 100644 index 0000000000..0d049ce4d8 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_settings_ethernet.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_settings_phone.xml b/apps/android/app/src/main/res/drawable/ic_settings_phone.xml new file mode 100644 index 0000000000..d26a6b4e4c --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_settings_phone.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_share.xml b/apps/android/app/src/main/res/drawable/ic_share.xml new file mode 100644 index 0000000000..dd674cd84b --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_share_filled.xml b/apps/android/app/src/main/res/drawable/ic_share_filled.xml new file mode 100644 index 0000000000..475cef6c18 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_share_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_shield.xml b/apps/android/app/src/main/res/drawable/ic_shield.xml new file mode 100644 index 0000000000..27e75aab71 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_shield.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_smart_display.xml b/apps/android/app/src/main/res/drawable/ic_smart_display.xml index 6453cd6ea0..b7c815b66d 100644 --- a/apps/android/app/src/main/res/drawable/ic_smart_display.xml +++ b/apps/android/app/src/main/res/drawable/ic_smart_display.xml @@ -1,6 +1,6 @@ + + diff --git a/apps/android/app/src/main/res/drawable/ic_stop_filled.xml b/apps/android/app/src/main/res/drawable/ic_stop_filled.xml new file mode 100644 index 0000000000..412bcd6429 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_stop_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_supervised_user_circle_filled.xml b/apps/android/app/src/main/res/drawable/ic_supervised_user_circle_filled.xml new file mode 100644 index 0000000000..68545edc1d --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_supervised_user_circle_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle.xml b/apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle.xml new file mode 100644 index 0000000000..9e8b59d8a2 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle_filled.xml b/apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle_filled.xml new file mode 100644 index 0000000000..554f616d6e --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_swap_horizontal_circle_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_tag.xml b/apps/android/app/src/main/res/drawable/ic_tag.xml new file mode 100644 index 0000000000..a3c686ec3c --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_tag.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_task.xml b/apps/android/app/src/main/res/drawable/ic_task.xml new file mode 100644 index 0000000000..8fe57f2ee7 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_task.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_theater_comedy.xml b/apps/android/app/src/main/res/drawable/ic_theater_comedy.xml new file mode 100644 index 0000000000..d139cc2cef --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_theater_comedy.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_theater_comedy_filled.xml b/apps/android/app/src/main/res/drawable/ic_theater_comedy_filled.xml new file mode 100644 index 0000000000..bff47ca72c --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_theater_comedy_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_timer.xml b/apps/android/app/src/main/res/drawable/ic_timer.xml new file mode 100644 index 0000000000..b29ec1a006 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_timer.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_timer_filled.xml b/apps/android/app/src/main/res/drawable/ic_timer_filled.xml new file mode 100644 index 0000000000..d608045bbf --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_timer_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_toggle_on.xml b/apps/android/app/src/main/res/drawable/ic_toggle_on.xml new file mode 100644 index 0000000000..d5cd169318 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_toggle_on.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_translate.xml b/apps/android/app/src/main/res/drawable/ic_translate.xml new file mode 100644 index 0000000000..7bd88bd420 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_translate.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_travel_explore.xml b/apps/android/app/src/main/res/drawable/ic_travel_explore.xml new file mode 100644 index 0000000000..71c264d4be --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_travel_explore.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_upload_file.xml b/apps/android/app/src/main/res/drawable/ic_upload_file.xml new file mode 100644 index 0000000000..bc80a6e1db --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_upload_file.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_verified_user.xml b/apps/android/app/src/main/res/drawable/ic_verified_user.xml new file mode 100644 index 0000000000..02951ba057 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_verified_user.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_videocam.xml b/apps/android/app/src/main/res/drawable/ic_videocam.xml new file mode 100644 index 0000000000..964c287276 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_videocam.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_videocam_filled.xml b/apps/android/app/src/main/res/drawable/ic_videocam_filled.xml new file mode 100644 index 0000000000..e67552c004 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_videocam_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_videocam_off.xml b/apps/android/app/src/main/res/drawable/ic_videocam_off.xml new file mode 100644 index 0000000000..d508eb273f --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_videocam_off.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_visibility.xml b/apps/android/app/src/main/res/drawable/ic_visibility.xml new file mode 100644 index 0000000000..e9f1762303 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_visibility.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_visibility_filled.xml b/apps/android/app/src/main/res/drawable/ic_visibility_filled.xml new file mode 100644 index 0000000000..35958c3a27 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_visibility_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_visibility_off.xml b/apps/android/app/src/main/res/drawable/ic_visibility_off.xml new file mode 100644 index 0000000000..202fd6db1f --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_visibility_off.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_visibility_off_filled.xml b/apps/android/app/src/main/res/drawable/ic_visibility_off_filled.xml new file mode 100644 index 0000000000..9656100328 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_visibility_off_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_volume_down.xml b/apps/android/app/src/main/res/drawable/ic_volume_down.xml new file mode 100644 index 0000000000..6e19f180d4 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_volume_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_volume_up.xml b/apps/android/app/src/main/res/drawable/ic_volume_up.xml new file mode 100644 index 0000000000..2e301273bb --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_volume_up.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_vpn_key_filled.xml b/apps/android/app/src/main/res/drawable/ic_vpn_key_filled.xml new file mode 100644 index 0000000000..f13099ed6f --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_vpn_key_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_vpn_key_off_filled.xml b/apps/android/app/src/main/res/drawable/ic_vpn_key_off_filled.xml new file mode 100644 index 0000000000..c07f49f274 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_vpn_key_off_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_warning_filled.xml b/apps/android/app/src/main/res/drawable/ic_warning_filled.xml new file mode 100644 index 0000000000..e7f71762ef --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_warning_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/apps/android/app/src/main/res/drawable/ic_wifi_tethering.xml b/apps/android/app/src/main/res/drawable/ic_wifi_tethering.xml new file mode 100644 index 0000000000..065c461542 --- /dev/null +++ b/apps/android/app/src/main/res/drawable/ic_wifi_tethering.xml @@ -0,0 +1,9 @@ + + +