summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/auto
diff options
context:
space:
mode:
authorHeemin Seog <hseog@google.com>2019-05-10 08:27:52 -0700
committerHeemin Seog <hseog@google.com>2019-05-17 13:18:32 -0700
commit1a028cddc31cca340708847310b2cf52a97579b2 (patch)
tree9df1a2fc191c6d8b3d1a527543a20522ef1c516d /src/com/android/packageinstaller/auto
parentbb0d5d0ced1bab08a0d7be23a1ed0953d57413ea (diff)
downloadandroid_packages_apps_PackageInstaller-1a028cddc31cca340708847310b2cf52a97579b2.tar.gz
android_packages_apps_PackageInstaller-1a028cddc31cca340708847310b2cf52a97579b2.tar.bz2
android_packages_apps_PackageInstaller-1a028cddc31cca340708847310b2cf52a97579b2.zip
New permissions page for app specific permissions
This does not handle All permissions quite yet. This will be handled in a separate CL. This change by itself also affects the full permissions page, so it will not be submitted until other permissions CLs are approved. This CL also tries to unify the base frame for car related settings permission controller. Will need to do a separate cleanup CL for default applications. Bug: 122822231 Test: manual Change-Id: Idf946d4ce0b299e6b3a4b3b094d475a708bdfd13
Diffstat (limited to 'src/com/android/packageinstaller/auto')
-rw-r--r--src/com/android/packageinstaller/auto/AutoSettingsFrameFragment.java121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/auto/AutoSettingsFrameFragment.java b/src/com/android/packageinstaller/auto/AutoSettingsFrameFragment.java
new file mode 100644
index 00000000..ea8987e3
--- /dev/null
+++ b/src/com/android/packageinstaller/auto/AutoSettingsFrameFragment.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.packageinstaller.auto;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.permissioncontroller.R;
+
+/** Common settings frame for car related settings in permission controller. */
+public abstract class AutoSettingsFrameFragment extends PreferenceFragmentCompat {
+
+ private TextView mLabelView;
+ private ProgressBar mProgressBar;
+ private Button mAction;
+
+ private CharSequence mLabel;
+ private boolean mIsLoading;
+ private CharSequence mActionLabel;
+ private View.OnClickListener mActionOnClickListener;
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View rootView = super.onCreateView(inflater, container, savedInstanceState);
+
+ View backButton = rootView.findViewById(R.id.back_button);
+ backButton.setOnClickListener(v -> getActivity().onBackPressed());
+
+ mLabelView = rootView.findViewById(R.id.label);
+ updateHeaderLabel();
+
+ mProgressBar = rootView.findViewById(R.id.progress_bar);
+ updateLoading();
+
+ mAction = rootView.findViewById(R.id.action);
+ updateAction();
+
+ return rootView;
+ }
+
+ /** Sets the header text of this fragment. */
+ public void setHeaderLabel(CharSequence label) {
+ mLabel = label;
+ updateHeaderLabel();
+ }
+
+ /** Gets the header text of this fragment. */
+ public CharSequence getHeaderLabel() {
+ return mLabel;
+ }
+
+ private void updateHeaderLabel() {
+ if (mLabelView != null) {
+ mLabelView.setText(mLabel);
+ }
+ }
+
+ /**
+ * Shows a progress view while content is loading.
+ *
+ * @param isLoading {@code true} if the progress view should be visible.
+ */
+ public void setLoading(boolean isLoading) {
+ mIsLoading = isLoading;
+ updateLoading();
+ }
+
+ private void updateLoading() {
+ if (mProgressBar != null) {
+ mProgressBar.setVisibility(mIsLoading ? View.VISIBLE : View.GONE);
+ }
+ }
+
+ /**
+ * Shows a button with the given {@code label} that when clicked will call the given {@code
+ * onClickListener}.
+ */
+ public void setAction(CharSequence label, View.OnClickListener onClickListener) {
+ mActionLabel = label;
+ mActionOnClickListener = onClickListener;
+ updateAction();
+ }
+
+ private void updateAction() {
+ if (mAction == null) {
+ return;
+ }
+ if (!TextUtils.isEmpty(mActionLabel) && mActionOnClickListener != null) {
+ mAction.setText(mActionLabel);
+ mAction.setOnClickListener(mActionOnClickListener);
+ mAction.setVisibility(View.VISIBLE);
+ } else {
+ mAction.setVisibility(View.GONE);
+ }
+ }
+}