package com.aptoide.amethyst.dialogs; import android.annotation.SuppressLint; import android.app.Dialog; import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TableLayout; import android.widget.TextView; import com.aptoide.amethyst.R; import com.aptoide.amethyst.utils.AptoideUtils; import com.aptoide.dataprovider.webservices.models.v7.GetApp; import com.aptoide.models.ApkPermission; import com.aptoide.models.ApkPermissionGroup; import com.bumptech.glide.Glide; import java.util.ArrayList; import java.util.List; /** * Created by hsousa on 18/11/15. * * TODO: fix size of scrollview to shrink when not enough permissions on screen * <p/> */ public class DialogPermissions extends DialogFragment { private GetApp getApp; private String appName; private String versionName; private String icon; private String size; @Override public void onPause() { dismiss(); super.onPause(); } public static DialogPermissions newInstance(GetApp getApp, String appName, String versionName, String icon, String size) { DialogPermissions dialog = new DialogPermissions(); dialog.getApp = getApp; dialog.appName = appName; dialog.versionName = versionName; dialog.icon = icon; dialog.size = size; return dialog; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Material_Light_Dialog_Alert); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Holo_Light); } else { setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Dialog); } } @Override public void onStart() { super.onStart(); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.transparent))); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @SuppressLint("InflateParams") final View v = LayoutInflater.from(getActivity()).inflate(R.layout.layout_dialog_permissions, null); AlertDialog builder = new AlertDialog.Builder(getActivity()).setView(v).create(); v.findViewById(R.id.dialog_ok_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); TextView tvAppInfo = (TextView) v.findViewById(R.id.dialog_app_info); tvAppInfo.setText(getString(R.string.dialog_version_size, versionName, size)); TextView tvAppName = (TextView) v.findViewById(R.id.dialog_app_name); tvAppName.setText(appName); Glide.with(this).load(icon).into((ImageView) v.findViewById(R.id.dialog_appview_icon)); final TableLayout tableLayout = (TableLayout) v.findViewById(R.id.dialog_table_permissions); final List<String> usedPermissions = getApp.nodes.meta.data.file.usedPermissions; List<ApkPermission> apkPermissions = AptoideUtils.AppUtils.parsePermissions(getContext(), usedPermissions); final ArrayList<ApkPermissionGroup> apkPermissionsGroup = AptoideUtils.AppUtils.fillPermissionsGroups(apkPermissions); if (apkPermissionsGroup.size() == 0) { TextView noPermissions = new TextView(getContext()); noPermissions.setText(getString(R.string.no_permissions_required)); noPermissions.setPadding(5, 5, 5, 5); } else { AptoideUtils.AppUtils.fillPermissionsForTableLayout(getContext(), tableLayout, apkPermissionsGroup); } return builder; } }