diff options
author | Heemin Seog <hseog@google.com> | 2019-05-10 08:27:52 -0700 |
---|---|---|
committer | Heemin Seog <hseog@google.com> | 2019-05-17 13:18:32 -0700 |
commit | 1a028cddc31cca340708847310b2cf52a97579b2 (patch) | |
tree | 9df1a2fc191c6d8b3d1a527543a20522ef1c516d /src/com/android/packageinstaller/auto | |
parent | bb0d5d0ced1bab08a0d7be23a1ed0953d57413ea (diff) | |
download | android_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.java | 121 |
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); + } + } +} |