diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj index 4d7449248..80a87797c 100644 --- a/src/Android/Android.csproj +++ b/src/Android/Android.csproj @@ -972,6 +972,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs index 8852e9f31..37f7fc606 100644 --- a/src/Android/MainActivity.cs +++ b/src/Android/MainActivity.cs @@ -145,7 +145,7 @@ namespace Bit.Android _deviceActionService.CopyToClipboard(App.Utilities.Crypto.Totp(cipher.LoginTotp.Value)); } - data.PutExtra("uri", cipher.LoginUri.Value); + data.PutExtra("uri", cipher.LoginUri); data.PutExtra("username", cipher.LoginUsername); data.PutExtra("password", cipher.LoginPassword.Value); } diff --git a/src/Android/Resources/Resource.Designer.cs b/src/Android/Resources/Resource.Designer.cs index ab8c11390..b6eae7d99 100644 --- a/src/Android/Resources/Resource.Designer.cs +++ b/src/Android/Resources/Resource.Designer.cs @@ -2311,526 +2311,544 @@ namespace Bit.Android public const int accessibility_step2 = 2130837582; // aapt resource value: 0x7f02004f - public const int camera = 2130837583; + public const int android = 2130837583; // aapt resource value: 0x7f020050 - public const int clipboard = 2130837584; + public const int apple = 2130837584; // aapt resource value: 0x7f020051 - public const int cloudup = 2130837585; + public const int camera = 2130837585; // aapt resource value: 0x7f020052 - public const int cog = 2130837586; + public const int card = 2130837586; // aapt resource value: 0x7f020053 - public const int cogs = 2130837587; + public const int clipboard = 2130837587; // aapt resource value: 0x7f020054 - public const int cogs_selected = 2130837588; + public const int cloudup = 2130837588; // aapt resource value: 0x7f020055 - public const int common_full_open_on_phone = 2130837589; + public const int cog = 2130837589; // aapt resource value: 0x7f020056 - public const int common_google_signin_btn_icon_dark = 2130837590; + public const int cogs = 2130837590; // aapt resource value: 0x7f020057 - public const int common_google_signin_btn_icon_dark_disabled = 2130837591; + public const int cogs_selected = 2130837591; // aapt resource value: 0x7f020058 - public const int common_google_signin_btn_icon_dark_focused = 2130837592; + public const int common_full_open_on_phone = 2130837592; // aapt resource value: 0x7f020059 - public const int common_google_signin_btn_icon_dark_normal = 2130837593; + public const int common_google_signin_btn_icon_dark = 2130837593; // aapt resource value: 0x7f02005a - public const int common_google_signin_btn_icon_dark_pressed = 2130837594; + public const int common_google_signin_btn_icon_dark_disabled = 2130837594; // aapt resource value: 0x7f02005b - public const int common_google_signin_btn_icon_light = 2130837595; + public const int common_google_signin_btn_icon_dark_focused = 2130837595; // aapt resource value: 0x7f02005c - public const int common_google_signin_btn_icon_light_disabled = 2130837596; + public const int common_google_signin_btn_icon_dark_normal = 2130837596; // aapt resource value: 0x7f02005d - public const int common_google_signin_btn_icon_light_focused = 2130837597; + public const int common_google_signin_btn_icon_dark_pressed = 2130837597; // aapt resource value: 0x7f02005e - public const int common_google_signin_btn_icon_light_normal = 2130837598; + public const int common_google_signin_btn_icon_light = 2130837598; // aapt resource value: 0x7f02005f - public const int common_google_signin_btn_icon_light_pressed = 2130837599; + public const int common_google_signin_btn_icon_light_disabled = 2130837599; // aapt resource value: 0x7f020060 - public const int common_google_signin_btn_text_dark = 2130837600; + public const int common_google_signin_btn_icon_light_focused = 2130837600; // aapt resource value: 0x7f020061 - public const int common_google_signin_btn_text_dark_disabled = 2130837601; + public const int common_google_signin_btn_icon_light_normal = 2130837601; // aapt resource value: 0x7f020062 - public const int common_google_signin_btn_text_dark_focused = 2130837602; + public const int common_google_signin_btn_icon_light_pressed = 2130837602; // aapt resource value: 0x7f020063 - public const int common_google_signin_btn_text_dark_normal = 2130837603; + public const int common_google_signin_btn_text_dark = 2130837603; // aapt resource value: 0x7f020064 - public const int common_google_signin_btn_text_dark_pressed = 2130837604; + public const int common_google_signin_btn_text_dark_disabled = 2130837604; // aapt resource value: 0x7f020065 - public const int common_google_signin_btn_text_light = 2130837605; + public const int common_google_signin_btn_text_dark_focused = 2130837605; // aapt resource value: 0x7f020066 - public const int common_google_signin_btn_text_light_disabled = 2130837606; + public const int common_google_signin_btn_text_dark_normal = 2130837606; // aapt resource value: 0x7f020067 - public const int common_google_signin_btn_text_light_focused = 2130837607; + public const int common_google_signin_btn_text_dark_pressed = 2130837607; // aapt resource value: 0x7f020068 - public const int common_google_signin_btn_text_light_normal = 2130837608; + public const int common_google_signin_btn_text_light = 2130837608; // aapt resource value: 0x7f020069 - public const int common_google_signin_btn_text_light_pressed = 2130837609; + public const int common_google_signin_btn_text_light_disabled = 2130837609; // aapt resource value: 0x7f02006a - public const int common_ic_googleplayservices = 2130837610; + public const int common_google_signin_btn_text_light_focused = 2130837610; // aapt resource value: 0x7f02006b - public const int common_plus_signin_btn_icon_dark = 2130837611; + public const int common_google_signin_btn_text_light_normal = 2130837611; // aapt resource value: 0x7f02006c - public const int common_plus_signin_btn_icon_dark_disabled = 2130837612; + public const int common_google_signin_btn_text_light_pressed = 2130837612; // aapt resource value: 0x7f02006d - public const int common_plus_signin_btn_icon_dark_focused = 2130837613; + public const int common_ic_googleplayservices = 2130837613; // aapt resource value: 0x7f02006e - public const int common_plus_signin_btn_icon_dark_normal = 2130837614; + public const int common_plus_signin_btn_icon_dark = 2130837614; // aapt resource value: 0x7f02006f - public const int common_plus_signin_btn_icon_dark_pressed = 2130837615; + public const int common_plus_signin_btn_icon_dark_disabled = 2130837615; // aapt resource value: 0x7f020070 - public const int common_plus_signin_btn_icon_light = 2130837616; + public const int common_plus_signin_btn_icon_dark_focused = 2130837616; // aapt resource value: 0x7f020071 - public const int common_plus_signin_btn_icon_light_disabled = 2130837617; + public const int common_plus_signin_btn_icon_dark_normal = 2130837617; // aapt resource value: 0x7f020072 - public const int common_plus_signin_btn_icon_light_focused = 2130837618; + public const int common_plus_signin_btn_icon_dark_pressed = 2130837618; // aapt resource value: 0x7f020073 - public const int common_plus_signin_btn_icon_light_normal = 2130837619; + public const int common_plus_signin_btn_icon_light = 2130837619; // aapt resource value: 0x7f020074 - public const int common_plus_signin_btn_icon_light_pressed = 2130837620; + public const int common_plus_signin_btn_icon_light_disabled = 2130837620; // aapt resource value: 0x7f020075 - public const int common_plus_signin_btn_text_dark = 2130837621; + public const int common_plus_signin_btn_icon_light_focused = 2130837621; // aapt resource value: 0x7f020076 - public const int common_plus_signin_btn_text_dark_disabled = 2130837622; + public const int common_plus_signin_btn_icon_light_normal = 2130837622; // aapt resource value: 0x7f020077 - public const int common_plus_signin_btn_text_dark_focused = 2130837623; + public const int common_plus_signin_btn_icon_light_pressed = 2130837623; // aapt resource value: 0x7f020078 - public const int common_plus_signin_btn_text_dark_normal = 2130837624; + public const int common_plus_signin_btn_text_dark = 2130837624; // aapt resource value: 0x7f020079 - public const int common_plus_signin_btn_text_dark_pressed = 2130837625; + public const int common_plus_signin_btn_text_dark_disabled = 2130837625; // aapt resource value: 0x7f02007a - public const int common_plus_signin_btn_text_light = 2130837626; + public const int common_plus_signin_btn_text_dark_focused = 2130837626; // aapt resource value: 0x7f02007b - public const int common_plus_signin_btn_text_light_disabled = 2130837627; + public const int common_plus_signin_btn_text_dark_normal = 2130837627; // aapt resource value: 0x7f02007c - public const int common_plus_signin_btn_text_light_focused = 2130837628; + public const int common_plus_signin_btn_text_dark_pressed = 2130837628; // aapt resource value: 0x7f02007d - public const int common_plus_signin_btn_text_light_normal = 2130837629; + public const int common_plus_signin_btn_text_light = 2130837629; // aapt resource value: 0x7f02007e - public const int common_plus_signin_btn_text_light_pressed = 2130837630; + public const int common_plus_signin_btn_text_light_disabled = 2130837630; // aapt resource value: 0x7f02007f - public const int design_fab_background = 2130837631; + public const int common_plus_signin_btn_text_light_focused = 2130837631; // aapt resource value: 0x7f020080 - public const int design_snackbar_background = 2130837632; + public const int common_plus_signin_btn_text_light_normal = 2130837632; // aapt resource value: 0x7f020081 - public const int download = 2130837633; + public const int common_plus_signin_btn_text_light_pressed = 2130837633; // aapt resource value: 0x7f020082 - public const int envelope = 2130837634; + public const int design_fab_background = 2130837634; // aapt resource value: 0x7f020083 - public const int eye = 2130837635; + public const int design_snackbar_background = 2130837635; // aapt resource value: 0x7f020084 - public const int eye_slash = 2130837636; + public const int download = 2130837636; // aapt resource value: 0x7f020085 - public const int fa_lock = 2130837637; + public const int envelope = 2130837637; // aapt resource value: 0x7f020086 - public const int fa_lock_selected = 2130837638; + public const int eye = 2130837638; // aapt resource value: 0x7f020087 - public const int fingerprint = 2130837639; + public const int eye_slash = 2130837639; // aapt resource value: 0x7f020088 - public const int fingerprint_white = 2130837640; + public const int fa_lock = 2130837640; // aapt resource value: 0x7f020089 - public const int folder = 2130837641; + public const int fa_lock_selected = 2130837641; // aapt resource value: 0x7f02008a - public const int globe = 2130837642; + public const int fingerprint = 2130837642; // aapt resource value: 0x7f02008b - public const int hockeyapp_btn_background = 2130837643; + public const int fingerprint_white = 2130837643; // aapt resource value: 0x7f02008c - public const int ic_audiotrack = 2130837644; + public const int folder = 2130837644; // aapt resource value: 0x7f02008d - public const int ic_audiotrack_light = 2130837645; + public const int globe = 2130837645; // aapt resource value: 0x7f02008e - public const int ic_bluetooth_grey = 2130837646; + public const int hockeyapp_btn_background = 2130837646; // aapt resource value: 0x7f02008f - public const int ic_bluetooth_white = 2130837647; + public const int ic_audiotrack = 2130837647; // aapt resource value: 0x7f020090 - public const int ic_cast_dark = 2130837648; + public const int ic_audiotrack_light = 2130837648; // aapt resource value: 0x7f020091 - public const int ic_cast_disabled_light = 2130837649; + public const int ic_bluetooth_grey = 2130837649; // aapt resource value: 0x7f020092 - public const int ic_cast_grey = 2130837650; + public const int ic_bluetooth_white = 2130837650; // aapt resource value: 0x7f020093 - public const int ic_cast_light = 2130837651; + public const int ic_cast_dark = 2130837651; // aapt resource value: 0x7f020094 - public const int ic_cast_off_light = 2130837652; + public const int ic_cast_disabled_light = 2130837652; // aapt resource value: 0x7f020095 - public const int ic_cast_on_0_light = 2130837653; + public const int ic_cast_grey = 2130837653; // aapt resource value: 0x7f020096 - public const int ic_cast_on_1_light = 2130837654; + public const int ic_cast_light = 2130837654; // aapt resource value: 0x7f020097 - public const int ic_cast_on_2_light = 2130837655; + public const int ic_cast_off_light = 2130837655; // aapt resource value: 0x7f020098 - public const int ic_cast_on_light = 2130837656; + public const int ic_cast_on_0_light = 2130837656; // aapt resource value: 0x7f020099 - public const int ic_cast_white = 2130837657; + public const int ic_cast_on_1_light = 2130837657; // aapt resource value: 0x7f02009a - public const int ic_close_dark = 2130837658; + public const int ic_cast_on_2_light = 2130837658; // aapt resource value: 0x7f02009b - public const int ic_close_light = 2130837659; + public const int ic_cast_on_light = 2130837659; // aapt resource value: 0x7f02009c - public const int ic_collapse = 2130837660; + public const int ic_cast_white = 2130837660; // aapt resource value: 0x7f02009d - public const int ic_collapse_00000 = 2130837661; + public const int ic_close_dark = 2130837661; // aapt resource value: 0x7f02009e - public const int ic_collapse_00001 = 2130837662; + public const int ic_close_light = 2130837662; // aapt resource value: 0x7f02009f - public const int ic_collapse_00002 = 2130837663; + public const int ic_collapse = 2130837663; // aapt resource value: 0x7f0200a0 - public const int ic_collapse_00003 = 2130837664; + public const int ic_collapse_00000 = 2130837664; // aapt resource value: 0x7f0200a1 - public const int ic_collapse_00004 = 2130837665; + public const int ic_collapse_00001 = 2130837665; // aapt resource value: 0x7f0200a2 - public const int ic_collapse_00005 = 2130837666; + public const int ic_collapse_00002 = 2130837666; // aapt resource value: 0x7f0200a3 - public const int ic_collapse_00006 = 2130837667; + public const int ic_collapse_00003 = 2130837667; // aapt resource value: 0x7f0200a4 - public const int ic_collapse_00007 = 2130837668; + public const int ic_collapse_00004 = 2130837668; // aapt resource value: 0x7f0200a5 - public const int ic_collapse_00008 = 2130837669; + public const int ic_collapse_00005 = 2130837669; // aapt resource value: 0x7f0200a6 - public const int ic_collapse_00009 = 2130837670; + public const int ic_collapse_00006 = 2130837670; // aapt resource value: 0x7f0200a7 - public const int ic_collapse_00010 = 2130837671; + public const int ic_collapse_00007 = 2130837671; // aapt resource value: 0x7f0200a8 - public const int ic_collapse_00011 = 2130837672; + public const int ic_collapse_00008 = 2130837672; // aapt resource value: 0x7f0200a9 - public const int ic_collapse_00012 = 2130837673; + public const int ic_collapse_00009 = 2130837673; // aapt resource value: 0x7f0200aa - public const int ic_collapse_00013 = 2130837674; + public const int ic_collapse_00010 = 2130837674; // aapt resource value: 0x7f0200ab - public const int ic_collapse_00014 = 2130837675; + public const int ic_collapse_00011 = 2130837675; // aapt resource value: 0x7f0200ac - public const int ic_collapse_00015 = 2130837676; + public const int ic_collapse_00012 = 2130837676; // aapt resource value: 0x7f0200ad - public const int ic_errorstatus = 2130837677; + public const int ic_collapse_00013 = 2130837677; // aapt resource value: 0x7f0200ae - public const int ic_expand = 2130837678; + public const int ic_collapse_00014 = 2130837678; // aapt resource value: 0x7f0200af - public const int ic_expand_00000 = 2130837679; + public const int ic_collapse_00015 = 2130837679; // aapt resource value: 0x7f0200b0 - public const int ic_expand_00001 = 2130837680; + public const int ic_errorstatus = 2130837680; // aapt resource value: 0x7f0200b1 - public const int ic_expand_00002 = 2130837681; + public const int ic_expand = 2130837681; // aapt resource value: 0x7f0200b2 - public const int ic_expand_00003 = 2130837682; + public const int ic_expand_00000 = 2130837682; // aapt resource value: 0x7f0200b3 - public const int ic_expand_00004 = 2130837683; + public const int ic_expand_00001 = 2130837683; // aapt resource value: 0x7f0200b4 - public const int ic_expand_00005 = 2130837684; + public const int ic_expand_00002 = 2130837684; // aapt resource value: 0x7f0200b5 - public const int ic_expand_00006 = 2130837685; + public const int ic_expand_00003 = 2130837685; // aapt resource value: 0x7f0200b6 - public const int ic_expand_00007 = 2130837686; + public const int ic_expand_00004 = 2130837686; // aapt resource value: 0x7f0200b7 - public const int ic_expand_00008 = 2130837687; + public const int ic_expand_00005 = 2130837687; // aapt resource value: 0x7f0200b8 - public const int ic_expand_00009 = 2130837688; + public const int ic_expand_00006 = 2130837688; // aapt resource value: 0x7f0200b9 - public const int ic_expand_00010 = 2130837689; + public const int ic_expand_00007 = 2130837689; // aapt resource value: 0x7f0200ba - public const int ic_expand_00011 = 2130837690; + public const int ic_expand_00008 = 2130837690; // aapt resource value: 0x7f0200bb - public const int ic_expand_00012 = 2130837691; + public const int ic_expand_00009 = 2130837691; // aapt resource value: 0x7f0200bc - public const int ic_expand_00013 = 2130837692; + public const int ic_expand_00010 = 2130837692; // aapt resource value: 0x7f0200bd - public const int ic_expand_00014 = 2130837693; + public const int ic_expand_00011 = 2130837693; // aapt resource value: 0x7f0200be - public const int ic_expand_00015 = 2130837694; + public const int ic_expand_00012 = 2130837694; // aapt resource value: 0x7f0200bf - public const int ic_media_pause = 2130837695; + public const int ic_expand_00013 = 2130837695; // aapt resource value: 0x7f0200c0 - public const int ic_media_play = 2130837696; + public const int ic_expand_00014 = 2130837696; // aapt resource value: 0x7f0200c1 - public const int ic_media_route_disabled_mono_dark = 2130837697; + public const int ic_expand_00015 = 2130837697; // aapt resource value: 0x7f0200c2 - public const int ic_media_route_off_mono_dark = 2130837698; + public const int ic_media_pause = 2130837698; // aapt resource value: 0x7f0200c3 - public const int ic_media_route_on_0_mono_dark = 2130837699; + public const int ic_media_play = 2130837699; // aapt resource value: 0x7f0200c4 - public const int ic_media_route_on_1_mono_dark = 2130837700; + public const int ic_media_route_disabled_mono_dark = 2130837700; // aapt resource value: 0x7f0200c5 - public const int ic_media_route_on_2_mono_dark = 2130837701; + public const int ic_media_route_off_mono_dark = 2130837701; // aapt resource value: 0x7f0200c6 - public const int ic_media_route_on_mono_dark = 2130837702; + public const int ic_media_route_on_0_mono_dark = 2130837702; // aapt resource value: 0x7f0200c7 - public const int ic_pause_dark = 2130837703; + public const int ic_media_route_on_1_mono_dark = 2130837703; // aapt resource value: 0x7f0200c8 - public const int ic_pause_light = 2130837704; + public const int ic_media_route_on_2_mono_dark = 2130837704; // aapt resource value: 0x7f0200c9 - public const int ic_play_dark = 2130837705; + public const int ic_media_route_on_mono_dark = 2130837705; // aapt resource value: 0x7f0200ca - public const int ic_play_light = 2130837706; + public const int ic_pause_dark = 2130837706; // aapt resource value: 0x7f0200cb - public const int ic_speaker_dark = 2130837707; + public const int ic_pause_light = 2130837707; // aapt resource value: 0x7f0200cc - public const int ic_speaker_group_dark = 2130837708; + public const int ic_play_dark = 2130837708; // aapt resource value: 0x7f0200cd - public const int ic_speaker_group_light = 2130837709; + public const int ic_play_light = 2130837709; // aapt resource value: 0x7f0200ce - public const int ic_speaker_light = 2130837710; + public const int ic_speaker_dark = 2130837710; // aapt resource value: 0x7f0200cf - public const int ic_successstatus = 2130837711; + public const int ic_speaker_group_dark = 2130837711; // aapt resource value: 0x7f0200d0 - public const int ic_tv_dark = 2130837712; + public const int ic_speaker_group_light = 2130837712; // aapt resource value: 0x7f0200d1 - public const int ic_tv_light = 2130837713; + public const int ic_speaker_light = 2130837713; // aapt resource value: 0x7f0200d2 - public const int icon = 2130837714; + public const int ic_successstatus = 2130837714; // aapt resource value: 0x7f0200d3 - public const int ion_chevron_right = 2130837715; + public const int ic_tv_dark = 2130837715; // aapt resource value: 0x7f0200d4 - public const int launch = 2130837716; + public const int ic_tv_light = 2130837716; // aapt resource value: 0x7f0200d5 - public const int lightbulb = 2130837717; + public const int icon = 2130837717; // aapt resource value: 0x7f0200d6 - public const int list_selector = 2130837718; + public const int id = 2130837718; // aapt resource value: 0x7f0200d7 - public const int @lock = 2130837719; + public const int ion_chevron_right = 2130837719; // aapt resource value: 0x7f0200d8 - public const int logo = 2130837720; + public const int launch = 2130837720; // aapt resource value: 0x7f0200d9 - public const int more = 2130837721; + public const int lightbulb = 2130837721; // aapt resource value: 0x7f0200da - public const int mr_dialog_material_background_dark = 2130837722; + public const int list_selector = 2130837722; // aapt resource value: 0x7f0200db - public const int mr_dialog_material_background_light = 2130837723; + public const int @lock = 2130837723; // aapt resource value: 0x7f0200dc - public const int mr_ic_audiotrack_light = 2130837724; + public const int login = 2130837724; // aapt resource value: 0x7f0200dd - public const int mr_ic_cast_dark = 2130837725; + public const int logo = 2130837725; // aapt resource value: 0x7f0200de - public const int mr_ic_cast_light = 2130837726; + public const int more = 2130837726; // aapt resource value: 0x7f0200df - public const int mr_ic_close_dark = 2130837727; + public const int mr_dialog_material_background_dark = 2130837727; // aapt resource value: 0x7f0200e0 - public const int mr_ic_close_light = 2130837728; + public const int mr_dialog_material_background_light = 2130837728; // aapt resource value: 0x7f0200e1 - public const int mr_ic_media_route_connecting_mono_dark = 2130837729; + public const int mr_ic_audiotrack_light = 2130837729; // aapt resource value: 0x7f0200e2 - public const int mr_ic_media_route_connecting_mono_light = 2130837730; + public const int mr_ic_cast_dark = 2130837730; // aapt resource value: 0x7f0200e3 - public const int mr_ic_media_route_mono_dark = 2130837731; + public const int mr_ic_cast_light = 2130837731; // aapt resource value: 0x7f0200e4 - public const int mr_ic_media_route_mono_light = 2130837732; + public const int mr_ic_close_dark = 2130837732; // aapt resource value: 0x7f0200e5 - public const int mr_ic_pause_dark = 2130837733; + public const int mr_ic_close_light = 2130837733; // aapt resource value: 0x7f0200e6 - public const int mr_ic_pause_light = 2130837734; + public const int mr_ic_media_route_connecting_mono_dark = 2130837734; // aapt resource value: 0x7f0200e7 - public const int mr_ic_play_dark = 2130837735; + public const int mr_ic_media_route_connecting_mono_light = 2130837735; // aapt resource value: 0x7f0200e8 - public const int mr_ic_play_light = 2130837736; + public const int mr_ic_media_route_mono_dark = 2130837736; // aapt resource value: 0x7f0200e9 - public const int notification_sm = 2130837737; - - // aapt resource value: 0x7f0200fc - public const int notification_template_icon_bg = 2130837756; + public const int mr_ic_media_route_mono_light = 2130837737; // aapt resource value: 0x7f0200ea - public const int paperclip = 2130837738; + public const int mr_ic_pause_dark = 2130837738; // aapt resource value: 0x7f0200eb - public const int plus = 2130837739; + public const int mr_ic_pause_light = 2130837739; // aapt resource value: 0x7f0200ec - public const int refresh = 2130837740; + public const int mr_ic_play_dark = 2130837740; // aapt resource value: 0x7f0200ed - public const int roundedbg = 2130837741; + public const int mr_ic_play_light = 2130837741; // aapt resource value: 0x7f0200ee - public const int roundedbgdark = 2130837742; + public const int note = 2130837742; // aapt resource value: 0x7f0200ef - public const int search = 2130837743; + public const int notification_sm = 2130837743; + + // aapt resource value: 0x7f020102 + public const int notification_template_icon_bg = 2130837762; // aapt resource value: 0x7f0200f0 - public const int share = 2130837744; + public const int paperclip = 2130837744; // aapt resource value: 0x7f0200f1 - public const int share_tools = 2130837745; + public const int plus = 2130837745; // aapt resource value: 0x7f0200f2 - public const int shield = 2130837746; + public const int refresh = 2130837746; // aapt resource value: 0x7f0200f3 - public const int splash_screen = 2130837747; + public const int roundedbg = 2130837747; // aapt resource value: 0x7f0200f4 - public const int star = 2130837748; + public const int roundedbgdark = 2130837748; // aapt resource value: 0x7f0200f5 - public const int star_selected = 2130837749; + public const int search = 2130837749; // aapt resource value: 0x7f0200f6 - public const int tools = 2130837750; + public const int share = 2130837750; // aapt resource value: 0x7f0200f7 - public const int tools_selected = 2130837751; + public const int share_tools = 2130837751; // aapt resource value: 0x7f0200f8 - public const int trash = 2130837752; + public const int shield = 2130837752; // aapt resource value: 0x7f0200f9 - public const int upload = 2130837753; + public const int splash_screen = 2130837753; // aapt resource value: 0x7f0200fa - public const int user = 2130837754; + public const int star = 2130837754; // aapt resource value: 0x7f0200fb - public const int yubikey = 2130837755; + public const int star_selected = 2130837755; + + // aapt resource value: 0x7f0200fc + public const int tools = 2130837756; + + // aapt resource value: 0x7f0200fd + public const int tools_selected = 2130837757; + + // aapt resource value: 0x7f0200fe + public const int trash = 2130837758; + + // aapt resource value: 0x7f0200ff + public const int upload = 2130837759; + + // aapt resource value: 0x7f020100 + public const int user = 2130837760; + + // aapt resource value: 0x7f020101 + public const int yubikey = 2130837761; static Drawable() { diff --git a/src/Android/Resources/drawable-hdpi/android.png b/src/Android/Resources/drawable-hdpi/android.png new file mode 100644 index 000000000..b43ee74a1 Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/android.png differ diff --git a/src/Android/Resources/drawable-hdpi/apple.png b/src/Android/Resources/drawable-hdpi/apple.png new file mode 100644 index 000000000..37ab90a0d Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/apple.png differ diff --git a/src/Android/Resources/drawable-hdpi/card.png b/src/Android/Resources/drawable-hdpi/card.png new file mode 100644 index 000000000..9428a9850 Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/card.png differ diff --git a/src/Android/Resources/drawable-hdpi/id.png b/src/Android/Resources/drawable-hdpi/id.png new file mode 100644 index 000000000..17d6bef8b Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/id.png differ diff --git a/src/Android/Resources/drawable-hdpi/login.png b/src/Android/Resources/drawable-hdpi/login.png new file mode 100644 index 000000000..3d55ef007 Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/login.png differ diff --git a/src/Android/Resources/drawable-hdpi/note.png b/src/Android/Resources/drawable-hdpi/note.png new file mode 100644 index 000000000..339fc44da Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/note.png differ diff --git a/src/Android/Resources/drawable-xhdpi/android.png b/src/Android/Resources/drawable-xhdpi/android.png new file mode 100644 index 000000000..0a4bc4e3c Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/android.png differ diff --git a/src/Android/Resources/drawable-xhdpi/apple.png b/src/Android/Resources/drawable-xhdpi/apple.png new file mode 100644 index 000000000..f2a5d604f Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/apple.png differ diff --git a/src/Android/Resources/drawable-xhdpi/card.png b/src/Android/Resources/drawable-xhdpi/card.png new file mode 100644 index 000000000..82b8562ee Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/card.png differ diff --git a/src/Android/Resources/drawable-xhdpi/id.png b/src/Android/Resources/drawable-xhdpi/id.png new file mode 100644 index 000000000..210999141 Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/id.png differ diff --git a/src/Android/Resources/drawable-xhdpi/login.png b/src/Android/Resources/drawable-xhdpi/login.png new file mode 100644 index 000000000..21dd4e395 Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/login.png differ diff --git a/src/Android/Resources/drawable-xhdpi/note.png b/src/Android/Resources/drawable-xhdpi/note.png new file mode 100644 index 000000000..27b917422 Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/note.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/android.png b/src/Android/Resources/drawable-xxhdpi/android.png new file mode 100644 index 000000000..202ada3fd Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/android.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/apple.png b/src/Android/Resources/drawable-xxhdpi/apple.png new file mode 100644 index 000000000..7bf48250b Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/apple.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/card.png b/src/Android/Resources/drawable-xxhdpi/card.png new file mode 100644 index 000000000..beb3a564a Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/card.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/id.png b/src/Android/Resources/drawable-xxhdpi/id.png new file mode 100644 index 000000000..c930f693d Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/id.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/login.png b/src/Android/Resources/drawable-xxhdpi/login.png new file mode 100644 index 000000000..7c733d6e3 Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/login.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/note.png b/src/Android/Resources/drawable-xxhdpi/note.png new file mode 100644 index 000000000..09061b67c Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/note.png differ diff --git a/src/Android/Resources/drawable-xxxhdpi/android.png b/src/Android/Resources/drawable-xxxhdpi/android.png new file mode 100644 index 000000000..a50f283bd Binary files /dev/null and b/src/Android/Resources/drawable-xxxhdpi/android.png differ diff --git a/src/Android/Resources/drawable-xxxhdpi/apple.png b/src/Android/Resources/drawable-xxxhdpi/apple.png new file mode 100644 index 000000000..8bb1fa0ca Binary files /dev/null and b/src/Android/Resources/drawable-xxxhdpi/apple.png differ diff --git a/src/Android/Resources/drawable-xxxhdpi/card.png b/src/Android/Resources/drawable-xxxhdpi/card.png new file mode 100644 index 000000000..8cfa031f6 Binary files /dev/null and b/src/Android/Resources/drawable-xxxhdpi/card.png differ diff --git a/src/Android/Resources/drawable-xxxhdpi/id.png b/src/Android/Resources/drawable-xxxhdpi/id.png new file mode 100644 index 000000000..d05a33229 Binary files /dev/null and b/src/Android/Resources/drawable-xxxhdpi/id.png differ diff --git a/src/Android/Resources/drawable-xxxhdpi/login.png b/src/Android/Resources/drawable-xxxhdpi/login.png new file mode 100644 index 000000000..d2ed61aa8 Binary files /dev/null and b/src/Android/Resources/drawable-xxxhdpi/login.png differ diff --git a/src/Android/Resources/drawable-xxxhdpi/note.png b/src/Android/Resources/drawable-xxxhdpi/note.png new file mode 100644 index 000000000..7cb8b4b92 Binary files /dev/null and b/src/Android/Resources/drawable-xxxhdpi/note.png differ diff --git a/src/Android/Resources/drawable/android.png b/src/Android/Resources/drawable/android.png new file mode 100644 index 000000000..01537fc45 Binary files /dev/null and b/src/Android/Resources/drawable/android.png differ diff --git a/src/Android/Resources/drawable/apple.png b/src/Android/Resources/drawable/apple.png new file mode 100644 index 000000000..65d27b100 Binary files /dev/null and b/src/Android/Resources/drawable/apple.png differ diff --git a/src/Android/Resources/drawable/card.png b/src/Android/Resources/drawable/card.png new file mode 100644 index 000000000..c7f2ecae7 Binary files /dev/null and b/src/Android/Resources/drawable/card.png differ diff --git a/src/Android/Resources/drawable/id.png b/src/Android/Resources/drawable/id.png new file mode 100644 index 000000000..7bdd35a10 Binary files /dev/null and b/src/Android/Resources/drawable/id.png differ diff --git a/src/Android/Resources/drawable/login.png b/src/Android/Resources/drawable/login.png new file mode 100644 index 000000000..f2c39b02e Binary files /dev/null and b/src/Android/Resources/drawable/login.png differ diff --git a/src/Android/Resources/drawable/note.png b/src/Android/Resources/drawable/note.png new file mode 100644 index 000000000..a64ea8b68 Binary files /dev/null and b/src/Android/Resources/drawable/note.png differ diff --git a/src/App/Controls/LabeledDetailCell.cs b/src/App/Controls/LabeledDetailCell.cs index 7aad3a26f..fe86e8b06 100644 --- a/src/App/Controls/LabeledDetailCell.cs +++ b/src/App/Controls/LabeledDetailCell.cs @@ -1,4 +1,5 @@ using FFImageLoading.Forms; +using System; using Xamarin.Forms; namespace Bit.App.Controls @@ -7,6 +8,17 @@ namespace Bit.App.Controls { public LabeledDetailCell() { + Icon = new CachedImage + { + WidthRequest = 20, + HeightRequest = 20, + HorizontalOptions = LayoutOptions.Center, + VerticalOptions = LayoutOptions.Center, + ErrorPlaceholder = "login.png", + CacheDuration = TimeSpan.FromDays(30), + BitmapOptimizations = true + }; + Label = new Label { LineBreakMode = LineBreakMode.TailTruncation, @@ -45,21 +57,24 @@ namespace Bit.App.Controls { ColumnSpacing = 0, RowSpacing = 0, - Padding = new Thickness(15, 3, 0, 3) + Padding = new Thickness(3, 3, 0, 3) }; grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); + grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(40, GridUnitType.Absolute) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(60, GridUnitType.Absolute) }); - grid.Children.Add(Label, 0, 0); - grid.Children.Add(Detail, 0, 1); - grid.Children.Add(LabelIcon, 1, 0); - grid.Children.Add(LabelIcon2, 2, 0); - grid.Children.Add(Button, 3, 0); - Grid.SetColumnSpan(Detail, 3); + grid.Children.Add(Icon, 0, 0); + grid.Children.Add(Label, 1, 0); + grid.Children.Add(Detail, 1, 1); + grid.Children.Add(LabelIcon, 2, 0); + grid.Children.Add(LabelIcon2, 3, 0); + grid.Children.Add(Button, 4, 0); + Grid.SetRowSpan(Icon, 2); Grid.SetRowSpan(Button, 2); + Grid.SetColumnSpan(Detail, 3); if(Device.RuntimePlatform == Device.Android) { @@ -69,6 +84,7 @@ namespace Bit.App.Controls View = grid; } + public CachedImage Icon { get; private set; } public Label Label { get; private set; } public Label Detail { get; private set; } public CachedImage LabelIcon { get; private set; } diff --git a/src/App/Controls/VaultListViewCell.cs b/src/App/Controls/VaultListViewCell.cs index 6a9b5525b..2776344fc 100644 --- a/src/App/Controls/VaultListViewCell.cs +++ b/src/App/Controls/VaultListViewCell.cs @@ -1,4 +1,5 @@ using Bit.App.Models.Page; +using FFImageLoading.Forms; using System; using Xamarin.Forms; @@ -12,6 +13,8 @@ namespace Bit.App.Controls public VaultListViewCell(Action moreClickedAction) { SetBinding(LoginParameterProperty, new Binding(".")); + Icon.SetBinding(CachedImage.SourceProperty, nameof(VaultListPageModel.Cipher.Icon)); + Icon.SetBinding(CachedImage.LoadingPlaceholderProperty, nameof(VaultListPageModel.Cipher.Icon)); Label.SetBinding(Label.TextProperty, nameof(VaultListPageModel.Cipher.Name)); Detail.SetBinding(Label.TextProperty, nameof(VaultListPageModel.Cipher.Subtitle)); LabelIcon.SetBinding(VisualElement.IsVisibleProperty, nameof(VaultListPageModel.Cipher.Shared)); diff --git a/src/App/Models/Page/VaultListPageModel.cs b/src/App/Models/Page/VaultListPageModel.cs index 521e97789..f0edc98d2 100644 --- a/src/App/Models/Page/VaultListPageModel.cs +++ b/src/App/Models/Page/VaultListPageModel.cs @@ -23,13 +23,40 @@ namespace Bit.App.Models.Page { case CipherType.Login: LoginUsername = cipher.Login?.Username?.Decrypt(cipher.OrganizationId) ?? " "; + LoginUri = cipher.Login?.Uri?.Decrypt(cipher.OrganizationId) ?? " "; LoginPassword = new Lazy(() => cipher.Login?.Password?.Decrypt(cipher.OrganizationId)); - LoginUri = new Lazy(() => cipher.Login?.Uri?.Decrypt(cipher.OrganizationId)); LoginTotp = new Lazy(() => cipher.Login?.Totp?.Decrypt(cipher.OrganizationId)); + Icon = "login.png"; + var hostnameUri = LoginUri; + var isWebsite = false; + if(hostnameUri.StartsWith("androidapp://")) + { + Icon = "android.png"; + } + else if(hostnameUri.StartsWith("iosapp://")) + { + Icon = "apple.png"; + } + else if(!hostnameUri.Contains("://") && hostnameUri.Contains(".")) + { + hostnameUri = $"http://{hostnameUri}"; + isWebsite = true; + } + else if(true) + { + isWebsite = hostnameUri.StartsWith("http") && hostnameUri.Contains("."); + } + + if(isWebsite && Uri.TryCreate(LoginUri, UriKind.Absolute, out Uri u)) + { + Icon = "https://icons.bitwarden.com/" + u.Host + "/icon.png"; + } + Subtitle = LoginUsername; break; case CipherType.SecureNote: + Icon = "note.png"; Subtitle = " "; break; case CipherType.Card: @@ -37,6 +64,7 @@ namespace Bit.App.Models.Page var cardBrand = cipher.Card?.Brand?.Decrypt(cipher.OrganizationId) ?? " "; CardCode = new Lazy(() => cipher.Card?.Code?.Decrypt(cipher.OrganizationId)); + Icon = "card.png"; Subtitle = cardBrand; if(!string.IsNullOrWhiteSpace(CardNumber) && CardNumber.Length >= 4) { @@ -51,6 +79,7 @@ namespace Bit.App.Models.Page var firstName = cipher.Identity?.FirstName?.Decrypt(cipher.OrganizationId) ?? " "; var lastName = cipher.Identity?.LastName?.Decrypt(cipher.OrganizationId) ?? " "; + Icon = "id.png"; Subtitle = " "; if(!string.IsNullOrWhiteSpace(firstName)) { @@ -77,11 +106,13 @@ namespace Bit.App.Models.Page public string Name { get; set; } public string Subtitle { get; set; } public CipherType Type { get; set; } + public string Icon { get; set; } + public string Image { get; set; } // Login metadata public string LoginUsername { get; set; } public Lazy LoginPassword { get; set; } - public Lazy LoginUri { get; set; } + public string LoginUri { get; set; } public Lazy LoginTotp { get; set; } // Login metadata diff --git a/src/App/Pages/Vault/VaultListCiphersPage.cs b/src/App/Pages/Vault/VaultListCiphersPage.cs index ca581f250..9748b94cd 100644 --- a/src/App/Pages/Vault/VaultListCiphersPage.cs +++ b/src/App/Pages/Vault/VaultListCiphersPage.cs @@ -434,8 +434,8 @@ namespace Bit.App.Pages { buttons.Add(AppResources.CopyUsername); } - if(!string.IsNullOrWhiteSpace(cipher.LoginUri.Value) && (cipher.LoginUri.Value.StartsWith("http://") - || cipher.LoginUri.Value.StartsWith("https://"))) + if(!string.IsNullOrWhiteSpace(cipher.LoginUri) && (cipher.LoginUri.StartsWith("http://") + || cipher.LoginUri.StartsWith("https://"))) { buttons.Add(AppResources.GoToWebsite); } @@ -474,7 +474,7 @@ namespace Bit.App.Pages } else if(selection == AppResources.GoToWebsite) { - Device.OpenUri(new Uri(cipher.LoginUri.Value)); + Device.OpenUri(new Uri(cipher.LoginUri)); } else if(selection == AppResources.CopyNumber) {