• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.packageinstaller.permission.ui.television;
2 
3 import android.content.Context;
4 import android.graphics.PixelFormat;
5 import android.graphics.drawable.Icon;
6 import android.os.Bundle;
7 import android.view.Gravity;
8 import android.view.LayoutInflater;
9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.view.WindowManager;
12 import android.widget.Button;
13 import android.widget.ImageView;
14 import android.widget.LinearLayout;
15 import android.widget.TextView;
16 
17 import com.android.packageinstaller.R;
18 import com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler;
19 
20 /**
21  * TV-specific view handler for the grant permissions activity.
22  */
23 public final class GrantPermissionsViewHandlerImpl implements GrantPermissionsViewHandler, OnClickListener {
24 
25     private static final String ARG_GROUP_NAME = "ARG_GROUP_NAME";
26 
27     private final Context mContext;
28 
29     private ResultListener mResultListener;
30 
31     private String mGroupName;
32 
33     private LinearLayout mRootView;
34     private TextView mMessageView;
35     private ImageView mIconView;
36     private TextView mCurrentGroupView;
37     private Button mAllowButton;
38     private Button mSoftDenyButton;
39     private Button mHardDenyButton;
40 
GrantPermissionsViewHandlerImpl(Context context, String appPackageName)41     public GrantPermissionsViewHandlerImpl(Context context, String appPackageName) {
42         mContext = context;
43     }
44 
45     @Override
setResultListener(ResultListener listener)46     public GrantPermissionsViewHandlerImpl setResultListener(ResultListener listener) {
47         mResultListener = listener;
48         return this;
49     }
50 
51     @Override
createView()52     public View createView() {
53         mRootView = (LinearLayout) LayoutInflater.from(mContext)
54                 .inflate(R.layout.grant_permissions, null);
55 
56         mMessageView = (TextView) mRootView.findViewById(R.id.permission_message);
57         mIconView = (ImageView) mRootView.findViewById(R.id.permission_icon);
58         mCurrentGroupView = (TextView) mRootView.findViewById(R.id.current_page_text);
59         mAllowButton = (Button) mRootView.findViewById(R.id.permission_allow_button);
60         mSoftDenyButton = (Button) mRootView.findViewById(R.id.permission_deny_button);
61         mHardDenyButton = (Button) mRootView.findViewById(
62                 R.id.permission_deny_dont_ask_again_button);
63 
64         mAllowButton.setOnClickListener(this);
65         mSoftDenyButton.setOnClickListener(this);
66         mHardDenyButton.setOnClickListener(this);
67 
68         return mRootView;
69     }
70 
71     @Override
updateWindowAttributes(WindowManager.LayoutParams outLayoutParams)72     public void updateWindowAttributes(WindowManager.LayoutParams outLayoutParams) {
73         outLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
74         outLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
75         outLayoutParams.format = PixelFormat.OPAQUE;
76         outLayoutParams.gravity = Gravity.BOTTOM;
77         outLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
78         outLayoutParams.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
79     }
80 
81     @Override
updateUi(String groupName, int groupCount, int groupIndex, Icon icon, CharSequence message, boolean showDoNotAsk)82     public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
83             CharSequence message, boolean showDoNotAsk) {
84         mGroupName = groupName;
85 
86         mMessageView.setText(message);
87 
88         if (icon != null) {
89             mIconView.setImageIcon(icon);
90         }
91 
92         mHardDenyButton.setVisibility(showDoNotAsk ? View.VISIBLE : View.GONE);
93         if (groupCount > 1) {
94             mCurrentGroupView.setVisibility(View.VISIBLE);
95             mCurrentGroupView.setText(mContext.getString(R.string.current_permission_template,
96                     groupIndex + 1, groupCount));
97         } else {
98             mCurrentGroupView.setVisibility(View.INVISIBLE);
99         }
100     }
101 
102     @Override
saveInstanceState(Bundle outState)103     public void saveInstanceState(Bundle outState) {
104         outState.putString(ARG_GROUP_NAME, mGroupName);
105     }
106 
107     @Override
loadInstanceState(Bundle savedInstanceState)108     public void loadInstanceState(Bundle savedInstanceState) {
109         mGroupName = savedInstanceState.getString(ARG_GROUP_NAME);
110     }
111 
112     @Override
onClick(View view)113     public void onClick(View view) {
114         boolean granted = false;
115         boolean doNotAskAgain = false;
116         switch (view.getId()) {
117             case R.id.permission_allow_button:
118                 granted = true;
119                 break;
120             case R.id.permission_deny_dont_ask_again_button:
121                 doNotAskAgain = true;
122                 break;
123         }
124         if (mResultListener != null) {
125             mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain);
126         }
127     }
128 
129     @Override
onBackPressed()130     public void onBackPressed() {
131         if (mResultListener != null) {
132             mResultListener.onPermissionGrantResult(mGroupName, false, false);
133         }
134     }
135 }
136