1df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh/*
2df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * Copyright (C) 2015 The Android Open Source Project
3df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh *
4df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * Licensed under the Apache License, Version 2.0 (the "License");
5df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * you may not use this file except in compliance with the License.
6df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * You may obtain a copy of the License at
7df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh *
8df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh *      http://www.apache.org/licenses/LICENSE-2.0
9df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh *
10df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * Unless required by applicable law or agreed to in writing, software
11df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * distributed under the License is distributed on an "AS IS" BASIS,
12df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * See the License for the specific language governing permissions and
14df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh * limitations under the License.
15df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh */
16df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
17df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughpackage com.android.packageinstaller.permission.ui.wear.settings;
18df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
19df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport android.content.Context;
20df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport android.content.res.Resources;
21df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport android.support.wearable.view.WearableListView;
22df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport android.view.View;
23df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport android.view.ViewGroup;
24df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport android.widget.TextView;
25df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
26df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport com.android.packageinstaller.R;
27df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughimport com.android.packageinstaller.permission.model.AppPermissionGroup;
28df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
29df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hughpublic final class PermissionsSettingsAdapter extends SettingsAdapter<AppPermissionGroup> {
30df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    private Resources mRes;
31df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
32df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    public PermissionsSettingsAdapter(Context context) {
33df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        super(context, R.layout.permissions_settings_item);
34df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        mRes = context.getResources();
35df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    }
36df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
37df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    @Override
38df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
39736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        return new PermissionsViewHolder(new PermissionsSettingsItem(parent.getContext()));
40df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    }
41df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
42df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    @Override
43df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
44df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        super.onBindViewHolder(holder, position);
45df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        PermissionsViewHolder viewHolder = (PermissionsViewHolder) holder;
46df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        AppPermissionGroup group = get(position).data;
47df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
48df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        if (group.isPolicyFixed()) {
49df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            viewHolder.imageView.setEnabled(false);
50df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            viewHolder.textView.setEnabled(false);
51df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            viewHolder.state.setEnabled(false);
52df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            viewHolder.state.setText(
53df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh                    mRes.getString(R.string.permission_summary_enforced_by_policy));
54df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        } else {
55df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            viewHolder.imageView.setEnabled(true);
56df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            viewHolder.textView.setEnabled(true);
57df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            viewHolder.state.setEnabled(true);
58df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
59df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            if (group.areRuntimePermissionsGranted()) {
60df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh                viewHolder.state.setText(R.string.generic_enabled);
61df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            } else {
62df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh                viewHolder.state.setText(R.string.generic_disabled);
63df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            }
64df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        }
65df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    }
66df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
67df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    private static final class PermissionsViewHolder extends SettingsAdapter.SettingsItemHolder {
68df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        public final TextView state;
69df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
70df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        public PermissionsViewHolder(View view) {
71df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            super(view);
72df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh            state = (TextView) view.findViewById(R.id.state);
73df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh        }
74df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh    }
75736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh
76736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh    private class PermissionsSettingsItem extends SettingsItem {
77736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        private final TextView mState;
78736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        private final float mCenteredAlpha = 1.0f;
79736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        private final float mNonCenteredAlpha = 0.5f;
806161f39f583cf202969125757d78010bdc06457cAnthony Hugh
81736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        public PermissionsSettingsItem (Context context) {
82736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            super(context);
83736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            mState = (TextView) findViewById(R.id.state);
84736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        }
85736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh
86736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        @Override
87736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        public void onCenterPosition(boolean animate) {
88736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            mImage.setAlpha(mImage.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
89736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            mText.setAlpha(mText.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
90736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            mState.setAlpha(mState.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
91736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        }
92736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh
93736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        @Override
94736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        public void onNonCenterPosition(boolean animate) {
95736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            mImage.setAlpha(mNonCenteredAlpha);
96736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            mText.setAlpha(mNonCenteredAlpha);
97736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh            mState.setAlpha(mNonCenteredAlpha);
98736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh        }
99736c82ba577f8f972ea4277357ae440b192dcd13Anthony Hugh    }
100df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh}
101df4d4542c2cf2fa0a7539412af2a99d60b1c2a15Anthony Hugh
102