package org.namelessrom.devicecontrol.modules.appmanager.permissions;
import android.app.AlertDialog;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import org.namelessrom.devicecontrol.R;
import org.namelessrom.devicecontrol.utils.DrawableHelper;
public class PermissionItemView extends LinearLayout implements View.OnClickListener {
AppSecurityPermissions.MyPermissionGroupInfo mGroup;
AppSecurityPermissions.MyPermissionInfo mPerm;
AlertDialog mDialog;
public PermissionItemView(Context context, AttributeSet attrs) {
super(context, attrs);
setClickable(true);
}
public void setPermission(AppSecurityPermissions.MyPermissionGroupInfo grp,
AppSecurityPermissions.MyPermissionInfo perm, boolean first) {
mGroup = grp;
mPerm = perm;
ImageView permGrpIcon = (ImageView) findViewById(R.id.perm_icon);
TextView permNameView = (TextView) findViewById(R.id.perm_name);
PackageManager pm = getContext().getPackageManager();
Drawable icon = null;
if (first) {
icon = grp.loadGroupIcon(pm);
if (icon != null) {
icon = DrawableHelper.applyAccentColorFilter(icon.mutate());
}
}
CharSequence label = perm.mLabel;
permGrpIcon.setImageDrawable(icon);
permNameView.setText(label);
setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (mGroup != null && mPerm != null) {
if (mDialog != null) {
mDialog.dismiss();
}
PackageManager pm = getContext().getPackageManager();
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(mGroup.mLabel);
if (mPerm.descriptionRes != 0) {
builder.setMessage(mPerm.loadDescription(pm));
} else {
CharSequence appName;
try {
ApplicationInfo app = pm.getApplicationInfo(mPerm.packageName, 0);
appName = app.loadLabel(pm);
} catch (PackageManager.NameNotFoundException e) {
appName = mPerm.packageName;
}
builder.setMessage(getContext().getString(R.string.perms_description_app, appName)
+ "\n\n" + mPerm.name);
}
builder.setCancelable(true);
builder.setIcon(mGroup.loadGroupIcon(pm));
mDialog = builder.show();
mDialog.setCanceledOnTouchOutside(true);
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (mDialog != null) {
mDialog.dismiss();
}
}
}