package com.android.packageinstaller.permission.ui; import android.content.Context; import android.graphics.PixelFormat; import android.graphics.drawable.Icon; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.android.packageinstaller.R; /** * TV-specific view handler for the grant permissions activity. */ final class GrantPermissionsTvViewHandler implements GrantPermissionsViewHandler, OnClickListener { private static final String ARG_GROUP_NAME = "ARG_GROUP_NAME"; private final Context mContext; private ResultListener mResultListener; private String mGroupName; private LinearLayout mRootView; private TextView mMessageView; private ImageView mIconView; private TextView mCurrentGroupView; private Button mAllowButton; private Button mSoftDenyButton; private Button mHardDenyButton; GrantPermissionsTvViewHandler(Context context) { mContext = context; } @Override public GrantPermissionsTvViewHandler setResultListener(ResultListener listener) { mResultListener = listener; return this; } @Override public View createView() { mRootView = (LinearLayout) LayoutInflater.from(mContext) .inflate(R.layout.grant_permissions, null); mMessageView = (TextView) mRootView.findViewById(R.id.permission_message); mIconView = (ImageView) mRootView.findViewById(R.id.permission_icon); mCurrentGroupView = (TextView) mRootView.findViewById(R.id.current_page_text); mAllowButton = (Button) mRootView.findViewById(R.id.permission_allow_button); mSoftDenyButton = (Button) mRootView.findViewById(R.id.permission_deny_button); mHardDenyButton = (Button) mRootView.findViewById( R.id.permission_deny_dont_ask_again_button); mAllowButton.setOnClickListener(this); mSoftDenyButton.setOnClickListener(this); mHardDenyButton.setOnClickListener(this); return mRootView; } @Override public void updateWindowAttributes(WindowManager.LayoutParams outLayoutParams) { outLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; outLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; outLayoutParams.format = PixelFormat.OPAQUE; outLayoutParams.gravity = Gravity.BOTTOM; outLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; outLayoutParams.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; } @Override public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon, CharSequence message, boolean showDoNotAsk) { mGroupName = groupName; mMessageView.setText(message); mIconView.setImageIcon(icon); mHardDenyButton.setVisibility(showDoNotAsk ? View.VISIBLE : View.GONE); if (groupCount > 1) { mCurrentGroupView.setVisibility(View.VISIBLE); mCurrentGroupView.setText(mContext.getString(R.string.current_permission_template, groupIndex + 1, groupCount)); } else { mCurrentGroupView.setVisibility(View.INVISIBLE); } } @Override public void saveInstanceState(Bundle outState) { outState.putString(ARG_GROUP_NAME, mGroupName); } @Override public void loadInstanceState(Bundle savedInstanceState) { mGroupName = savedInstanceState.getString(ARG_GROUP_NAME); } @Override public void onClick(View view) { boolean granted = false; boolean doNotAskAgain = false; switch (view.getId()) { case R.id.permission_allow_button: granted = true; break; case R.id.permission_deny_dont_ask_again_button: doNotAskAgain = true; break; } if (mResultListener != null) { mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain); } } @Override public void onBackPressed() { if (mResultListener != null) { mResultListener.onPermissionGrantResult(mGroupName, false, false); } } }