diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj index 40dbdb301..c12d1e1bf 100644 --- a/src/Android/Android.csproj +++ b/src/Android/Android.csproj @@ -825,6 +825,21 @@ + + + + + + + + + + + + + + + diff --git a/src/Android/Resources/Resource.Designer.cs b/src/Android/Resources/Resource.Designer.cs index cde90eebe..89a9e1e36 100644 --- a/src/Android/Resources/Resource.Designer.cs +++ b/src/Android/Resources/Resource.Designer.cs @@ -2742,8 +2742,8 @@ namespace Bit.Android // aapt resource value: 0x7f0200e4 public const int notification_sm = 2130837732; - // aapt resource value: 0x7f0200f1 - public const int notification_template_icon_bg = 2130837745; + // aapt resource value: 0x7f0200f2 + public const int notification_template_icon_bg = 2130837746; // aapt resource value: 0x7f0200e5 public const int plus = 2130837733; @@ -2761,25 +2761,28 @@ namespace Bit.Android public const int search = 2130837737; // aapt resource value: 0x7f0200ea - public const int splash_screen = 2130837738; + public const int share = 2130837738; // aapt resource value: 0x7f0200eb - public const int star = 2130837739; + public const int splash_screen = 2130837739; // aapt resource value: 0x7f0200ec - public const int star_selected = 2130837740; + public const int star = 2130837740; // aapt resource value: 0x7f0200ed - public const int tools = 2130837741; + public const int star_selected = 2130837741; // aapt resource value: 0x7f0200ee - public const int tools_selected = 2130837742; + public const int tools = 2130837742; // aapt resource value: 0x7f0200ef - public const int upload = 2130837743; + public const int tools_selected = 2130837743; // aapt resource value: 0x7f0200f0 - public const int user = 2130837744; + public const int upload = 2130837744; + + // aapt resource value: 0x7f0200f1 + public const int user = 2130837745; static Drawable() { diff --git a/src/Android/Resources/drawable-hdpi/share.png b/src/Android/Resources/drawable-hdpi/share.png new file mode 100644 index 000000000..9c8bce94d Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/share.png differ diff --git a/src/Android/Resources/drawable-xhdpi/share.png b/src/Android/Resources/drawable-xhdpi/share.png new file mode 100644 index 000000000..d5b736b10 Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/share.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/share.png b/src/Android/Resources/drawable-xxhdpi/share.png new file mode 100644 index 000000000..12f9342fd Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/share.png differ diff --git a/src/Android/Resources/drawable-xxxhdpi/share.png b/src/Android/Resources/drawable-xxxhdpi/share.png new file mode 100644 index 000000000..f268ca7ae Binary files /dev/null and b/src/Android/Resources/drawable-xxxhdpi/share.png differ diff --git a/src/Android/Resources/drawable/share.png b/src/Android/Resources/drawable/share.png new file mode 100644 index 000000000..c0fd8dd02 Binary files /dev/null and b/src/Android/Resources/drawable/share.png differ diff --git a/src/App/Controls/LabeledDetailCell.cs b/src/App/Controls/LabeledDetailCell.cs index 152c9701d..9e6161915 100644 --- a/src/App/Controls/LabeledDetailCell.cs +++ b/src/App/Controls/LabeledDetailCell.cs @@ -1,4 +1,5 @@ -using Xamarin.Forms; +using FFImageLoading.Forms; +using Xamarin.Forms; namespace Bit.App.Controls { @@ -19,6 +20,14 @@ namespace Bit.App.Controls Style = (Style)Application.Current.Resources["text-muted"] }; + LabelIcon = new CachedImage + { + WidthRequest = 16, + HeightRequest = 16, + HorizontalOptions = LayoutOptions.Start, + Margin = new Thickness(5, 0, 0, 0) + }; + Button = new ExtendedButton { WidthRequest = 60 @@ -32,11 +41,14 @@ namespace Bit.App.Controls }; 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(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(Button, 1, 0); + grid.Children.Add(LabelIcon, 1, 0); + grid.Children.Add(Button, 2, 0); + Grid.SetColumnSpan(Detail, 2); Grid.SetRowSpan(Button, 2); if(Device.OS == TargetPlatform.Android) @@ -49,6 +61,7 @@ namespace Bit.App.Controls public Label Label { get; private set; } public Label Detail { get; private set; } + public CachedImage LabelIcon { get; private set; } public Button Button { get; private set; } } } diff --git a/src/App/Controls/VaultListViewCell.cs b/src/App/Controls/VaultListViewCell.cs index 1099d9e7d..37f1d368c 100644 --- a/src/App/Controls/VaultListViewCell.cs +++ b/src/App/Controls/VaultListViewCell.cs @@ -12,13 +12,16 @@ namespace Bit.App.Controls public VaultListViewCell(Action moreClickedAction) { SetBinding(LoginParameterProperty, new Binding(".")); - Label.SetBinding(Label.TextProperty, s => s.Name); - Detail.SetBinding(Label.TextProperty, s => s.Username); + Label.SetBinding(Label.TextProperty, l => l.Name); + Detail.SetBinding(Label.TextProperty, l => l.Username); + LabelIcon.SetBinding(VisualElement.IsVisibleProperty, l => l.Shared); Button.Image = "more"; Button.Command = new Command(() => moreClickedAction?.Invoke(LoginParameter)); Button.BackgroundColor = Color.Transparent; + LabelIcon.Source = "share"; + BackgroundColor = Color.White; } diff --git a/src/App/Models/Page/VaultListPageModel.cs b/src/App/Models/Page/VaultListPageModel.cs index 4f3b986c1..16bd7c826 100644 --- a/src/App/Models/Page/VaultListPageModel.cs +++ b/src/App/Models/Page/VaultListPageModel.cs @@ -11,6 +11,7 @@ namespace Bit.App.Models.Page public Login(Models.Login login) { Id = login.Id; + Shared = !string.IsNullOrWhiteSpace(login.OrganizationId); FolderId = login.FolderId; Name = login.Name?.Decrypt(login.OrganizationId); Username = login.Username?.Decrypt(login.OrganizationId) ?? " "; @@ -19,6 +20,7 @@ namespace Bit.App.Models.Page } public string Id { get; set; } + public bool Shared { get; set; } public string FolderId { get; set; } public string Name { get; set; } public string Username { get; set; }