1
0
mirror of https://github.com/bitwarden/mobile synced 2025-12-16 00:03:22 +00:00

wiring up cipher view cell elements

This commit is contained in:
Kyle Spearrin
2019-06-07 15:52:47 -04:00
parent d7bfc64840
commit 6cdf84dcb7
3 changed files with 388 additions and 315 deletions

View File

@@ -1,5 +1,7 @@
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.Views;
using Android.Views.InputMethods;
using Android.Widget;
using Bit.App.Controls;
@@ -13,13 +15,25 @@ namespace Bit.Droid.Renderers
{
public class CipherViewCellRenderer : ViewCellRenderer
{
private static Typeface _faTypeface;
private static Typeface _miTypeface;
protected override Android.Views.View GetCellCore(Cell item, Android.Views.View convertView,
Android.Views.ViewGroup parent, Context context)
ViewGroup parent, Context context)
{
if(_faTypeface == null)
{
_faTypeface = Typeface.CreateFromAsset(context.Assets, "FontAwesome.ttf");
}
if(_miTypeface == null)
{
_miTypeface = Typeface.CreateFromAsset(context.Assets, "MaterialIcons_Regular.ttf");
}
var cipherCell = item as CipherViewCell;
if(!(convertView is AndroidCipherCell cell))
{
cell = new AndroidCipherCell(context, cipherCell);
cell = new AndroidCipherCell(context, cipherCell, _faTypeface, _miTypeface);
}
cell.CipherViewCell.PropertyChanged += CellPropertyChanged;
cell.CipherViewCell = cipherCell;
@@ -40,22 +54,53 @@ namespace Bit.Droid.Renderers
public class AndroidCipherCell : LinearLayout, INativeElementView
{
public AndroidCipherCell(Context context, CipherViewCell cipherCell)
private readonly Typeface _faTypeface;
private readonly Typeface _miTypeface;
public AndroidCipherCell(Context context, CipherViewCell cipherCell, Typeface faTypeface, Typeface miTypeface)
: base(context)
{
var view = (context as Activity).LayoutInflater.Inflate(Resource.Layout.CipherViewCell, null);
CipherViewCell = cipherCell;
Title = view.FindViewById<TextView>(Resource.Id.CipherCellTitle);
_faTypeface = faTypeface;
_miTypeface = miTypeface;
Name = view.FindViewById<TextView>(Resource.Id.CipherCellName);
SubTitle = view.FindViewById<TextView>(Resource.Id.CipherCellSubTitle);
SharedIcon = view.FindViewById<TextView>(Resource.Id.CipherCellSharedIcon);
AttachmentsIcon = view.FindViewById<TextView>(Resource.Id.CipherCellAttachmentsIcon);
MoreButton = view.FindViewById<Android.Widget.Button>(Resource.Id.CipherCellButton);
SharedIcon.Typeface = _faTypeface;
AttachmentsIcon.Typeface = _faTypeface;
MoreButton.Typeface = _miTypeface;
AddView(view);
}
public CipherViewCell CipherViewCell { get; set; }
public Element Element => CipherViewCell;
public TextView Title { get; set; }
public TextView Name { get; set; }
public TextView SubTitle { get; set; }
public TextView SharedIcon { get; set; }
public TextView AttachmentsIcon { get; set; }
public Android.Widget.Button MoreButton { get; set; }
public void UpdateCell()
{
Title.Text = CipherViewCell.Cipher.Name;
var cipher = CipherViewCell.Cipher;
Name.Text = cipher.Name;
if(!string.IsNullOrWhiteSpace(cipher.SubTitle))
{
SubTitle.Text = cipher.SubTitle;
SubTitle.Visibility = ViewStates.Visible;
}
else
{
SubTitle.Visibility = ViewStates.Gone;
}
SharedIcon.Visibility = cipher.Shared ? ViewStates.Visible : ViewStates.Gone;
AttachmentsIcon.Visibility = cipher.HasAttachments ? ViewStates.Visible : ViewStates.Gone;
}
}
}