keepass2android/src/PluginHostTest/PluginArrayAdapter.cs

127 lines
2.7 KiB
C#

using Android.Content.PM;
using Android.Content.Res;
using Android.Graphics.Drawables;
using Android.Widget;
using Android.Content;
using Android.Views;
using System.Collections.Generic;
using Android.App;
using PluginHostTest;
namespace keepass2android
{
/// <summary>
/// Represents information about a plugin for display in the plugin list activity
/// </summary>
public class PluginItem
{
private readonly string _package;
private readonly Context _ctx;
private readonly Resources _pluginRes;
public PluginItem(string package, string enabledStatus, Context ctx)
{
_package = package;
_ctx = ctx;
EnabledStatus = enabledStatus;
_pluginRes = _ctx.PackageManager.GetResourcesForApplication(_package);
}
public string Label
{
get
{
return PluginDetailsActivity.GetStringFromPlugin(_pluginRes, _package, "kp2aplugin_title");
}
}
public string Version
{
get
{
return _ctx.PackageManager.GetPackageInfo(_package, 0).VersionName;
}
}
public string EnabledStatus
{
get;
set;
}
public Drawable Icon
{
get
{
return _ctx.PackageManager.GetApplicationIcon(_package);
}
}
public string Package
{
get { return _package; }
}
}
public class PluginArrayAdapter : ArrayAdapter<PluginItem>
{
class PluginViewHolder : Java.Lang.Object
{
public ImageView imgIcon;
public TextView txtTitle;
public TextView txtVersion;
public TextView txtEnabledStatus;
}
Context context;
int layoutResourceId;
IList<PluginItem> data = null;
public PluginArrayAdapter(Context context, int layoutResourceId, IList<PluginItem> data) :
base(context, layoutResourceId, data)
{
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
PluginViewHolder holder = null;
if (row == null)
{
LayoutInflater inflater = ((Activity)context).LayoutInflater;
row = inflater.Inflate(layoutResourceId, parent, false);
holder = new PluginViewHolder();
holder.imgIcon = (ImageView)row.FindViewById(Resource.Id.imgIcon);
holder.txtTitle = (TextView)row.FindViewById(Resource.Id.txtLabel);
holder.txtVersion = (TextView)row.FindViewById(Resource.Id.txtVersion);
holder.txtEnabledStatus = (TextView)row.FindViewById(Resource.Id.txtStatus);
row.Tag = holder;
}
else
{
holder = (PluginViewHolder)row.Tag;
}
var item = data[position];
holder.txtTitle.Text = item.Label;
holder.txtVersion.Text = item.Version;
holder.txtEnabledStatus.Text = item.EnabledStatus;
holder.imgIcon.SetImageDrawable(item.Icon);
return row;
}
}
}