fix UI bug when opening read-only databases (checkmarks were visible in Group list)

This commit is contained in:
Philipp Crocoll
2018-06-11 07:15:54 +02:00
parent 2bc12c510b
commit 0d6c9b468e
5 changed files with 24 additions and 8 deletions

View File

@@ -1108,16 +1108,22 @@ namespace keepass2android
public override void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
ListView.SetMultiChoiceModeListener(this);
if (App.Kp2a.GetDb().CanWrite)
{
ListView.ChoiceMode = ChoiceMode.MultipleModal;
ListView.SetMultiChoiceModeListener(this);
ListView.ItemLongClick += delegate (object sender, AdapterView.ItemLongClickEventArgs args)
ListView.ItemLongClick += delegate(object sender, AdapterView.ItemLongClickEventArgs args)
{
ListView.SetItemChecked(args.Position, true);
};
}
else
{
ListView.ChoiceMode = ChoiceMode.None;
}
ListView.ItemClick += (sender, args) => ((GroupListItemView)args.View).OnClick();

View File

@@ -111,7 +111,7 @@ namespace keepass2android
// If the service is killed, then lock the database immediately
if (App.Kp2a.DatabaseIsUnlocked)
{
App.Kp2a.LockDatabase();
App.Kp2a.LockDatabase(false);
}
UnregisterReceiver(_screenOffReceiver);

View File

@@ -20,6 +20,7 @@ namespace keepass2android.view
: base(context)
{
_groupBaseActivity = context;
}
public GroupListItemView(Context context, IAttributeSet attrs)

View File

@@ -103,8 +103,11 @@ namespace keepass2android.view
{
_entry = pw;
_pos = pos;
ImageView iv = (ImageView)ev.FindViewById(Resource.Id.icon);
ev.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible;
ev.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible;
ImageView iv = (ImageView)ev.FindViewById(Resource.Id.icon);
bool isExpired = pw.Expires && pw.ExpiryTime < DateTime.Now;
if (isExpired)
{

View File

@@ -65,7 +65,10 @@ namespace keepass2android.view
gv.FindViewById(Resource.Id.group_icon_bkg).Visibility = App.Kp2a.GetDb().DrawableFactory.IsWhiteIconSet ? ViewStates.Visible : ViewStates.Gone;
PopulateView(gv, pw);
gv.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible;
gv.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible;
PopulateView(gv, pw);
LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.WrapContent);
@@ -77,8 +80,11 @@ namespace keepass2android.view
ImageView iv = (ImageView) gv.FindViewById(Resource.Id.icon);
App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, _groupBaseActivity, App.Kp2a.GetDb().KpDatabase, pw.IconId, pw.CustomIconUuid, true);
_textview.Text = pw.Name;
gv.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible;
gv.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible;
_textview.Text = pw.Name;
if (_defaultTextColor == null)
_defaultTextColor = _textview.TextColors.DefaultColor;