Merge changes from topic "settings-action-button"
* changes: Remove setButtonPositive method Apply new action button visual design Create a new visual design for action buttons
This commit is contained in:
committed by
Android (Google) Code Review
commit
3704899fc9
@@ -167,10 +167,7 @@ public class AppStorageSettings extends AppInfoWithHeader
|
||||
.setComputingString(R.string.computing_size)
|
||||
.setErrorString(R.string.invalid_size_value)
|
||||
.build();
|
||||
mButtonsPref = ((ActionButtonPreference) findPreference(KEY_HEADER_BUTTONS))
|
||||
.setButton1Positive(false)
|
||||
.setButton2Positive(false);
|
||||
|
||||
mButtonsPref = ((ActionButtonPreference) findPreference(KEY_HEADER_BUTTONS));
|
||||
mStorageUsed = findPreference(KEY_STORAGE_USED);
|
||||
mChangeStorageButton = (Button) ((LayoutPreference) findPreference(KEY_CHANGE_STORAGE))
|
||||
.findViewById(R.id.button);
|
||||
@@ -178,7 +175,9 @@ public class AppStorageSettings extends AppInfoWithHeader
|
||||
mChangeStorageButton.setOnClickListener(this);
|
||||
|
||||
// Cache section
|
||||
mButtonsPref.setButton2Text(R.string.clear_cache_btn_text);
|
||||
mButtonsPref
|
||||
.setButton2Text(R.string.clear_cache_btn_text)
|
||||
.setButton2Icon(R.drawable.ic_settings_delete);
|
||||
|
||||
// URI permissions section
|
||||
mUri = (PreferenceCategory) findPreference(KEY_URI_CATEGORY);
|
||||
@@ -304,16 +303,20 @@ public class AppStorageSettings extends AppInfoWithHeader
|
||||
|| !isManageSpaceActivityAvailable) {
|
||||
mButtonsPref
|
||||
.setButton1Text(R.string.clear_user_data_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete)
|
||||
.setButton1Enabled(false);
|
||||
mCanClearData = false;
|
||||
} else {
|
||||
if (appHasSpaceManagementUI) {
|
||||
mButtonsPref.setButton1Text(R.string.manage_space_text);
|
||||
} else {
|
||||
mButtonsPref.setButton1Text(R.string.clear_user_data_text);
|
||||
mButtonsPref
|
||||
.setButton1Text(R.string.clear_user_data_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete);
|
||||
}
|
||||
mButtonsPref
|
||||
.setButton1Text(R.string.clear_user_data_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete)
|
||||
.setButton1OnClickListener(v -> handleClearDataClick());
|
||||
}
|
||||
|
||||
@@ -384,7 +387,9 @@ public class AppStorageSettings extends AppInfoWithHeader
|
||||
private void processClearMsg(Message msg) {
|
||||
int result = msg.arg1;
|
||||
String packageName = mAppEntry.info.packageName;
|
||||
mButtonsPref.setButton1Text(R.string.clear_user_data_text);
|
||||
mButtonsPref
|
||||
.setButton1Text(R.string.clear_user_data_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete);
|
||||
if (result == OP_SUCCESSFUL) {
|
||||
Log.i(TAG, "Cleared user data for package : " + packageName);
|
||||
updateSize();
|
||||
|
@@ -167,11 +167,11 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
if (isAvailable()) {
|
||||
mButtonsPref = ((ActionButtonPreference) screen.findPreference(KEY_ACTION_BUTTONS))
|
||||
.setButton1Text(R.string.uninstall_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete)
|
||||
.setButton2Text(R.string.force_stop)
|
||||
.setButton2Icon(R.drawable.ic_settings_force_stop)
|
||||
.setButton1OnClickListener(new UninstallAndDisableButtonListener())
|
||||
.setButton2OnClickListener(new ForceStopButtonListener())
|
||||
.setButton1Positive(false)
|
||||
.setButton2Positive(false)
|
||||
.setButton2Enabled(false);
|
||||
}
|
||||
}
|
||||
@@ -547,16 +547,16 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
if (mHomePackages.contains(mAppEntry.info.packageName)
|
||||
|| isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) {
|
||||
// Disable button for core system applications.
|
||||
mButtonsPref.setButton1Text(R.string.disable_text)
|
||||
.setButton1Positive(false);
|
||||
mButtonsPref.setButton1Text(R.string.uninstall_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete);
|
||||
} else if (mAppEntry.info.enabled && !isDisabledUntilUsed()) {
|
||||
mButtonsPref.setButton1Text(R.string.disable_text)
|
||||
.setButton1Positive(false);
|
||||
mButtonsPref.setButton1Text(R.string.uninstall_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete);
|
||||
disableable = !mApplicationFeatureProvider.getKeepEnabledPackages()
|
||||
.contains(mAppEntry.info.packageName);
|
||||
} else {
|
||||
mButtonsPref.setButton1Text(R.string.enable_text)
|
||||
.setButton1Positive(true);
|
||||
mButtonsPref.setButton1Text(R.string.install_text)
|
||||
.setButton1Icon(R.drawable.ic_settings_install);
|
||||
disableable = true;
|
||||
}
|
||||
|
||||
|
@@ -53,8 +53,8 @@ public class BluetoothDetailsButtonsController extends BluetoothDetailsControlle
|
||||
protected void init(PreferenceScreen screen) {
|
||||
mActionButtons = ((ActionButtonPreference) screen.findPreference(getPreferenceKey()))
|
||||
.setButton1Text(R.string.forget)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete)
|
||||
.setButton1OnClickListener((view) -> onForgetButtonPressed())
|
||||
.setButton1Positive(false)
|
||||
.setButton1Enabled(true);
|
||||
}
|
||||
|
||||
@@ -68,17 +68,17 @@ public class BluetoothDetailsButtonsController extends BluetoothDetailsControlle
|
||||
if (!mConnectButtonInitialized || !previouslyConnected) {
|
||||
mActionButtons
|
||||
.setButton2Text(R.string.bluetooth_device_context_disconnect)
|
||||
.setButton2OnClickListener(view -> mCachedDevice.disconnect())
|
||||
.setButton2Positive(false);
|
||||
.setButton2Icon(R.drawable.ic_settings_close)
|
||||
.setButton2OnClickListener(view -> mCachedDevice.disconnect());
|
||||
mConnectButtonInitialized = true;
|
||||
}
|
||||
} else {
|
||||
if (!mConnectButtonInitialized || previouslyConnected) {
|
||||
mActionButtons
|
||||
.setButton2Text(R.string.bluetooth_device_context_connect)
|
||||
// TODO (b/119646923) Icon is not ready.
|
||||
.setButton2OnClickListener(
|
||||
view -> mCachedDevice.connect(true /* connectAllProfiles */))
|
||||
.setButton2Positive(true);
|
||||
view -> mCachedDevice.connect(true /* connectAllProfiles */));
|
||||
mConnectButtonInitialized = true;
|
||||
}
|
||||
}
|
||||
|
@@ -171,11 +171,9 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
|
||||
|
||||
mActionButtons = ((ActionButtonPreference) findPreference(KEY_ACTION_BUTTONS))
|
||||
.setButton1Text(R.string.tts_play)
|
||||
.setButton1Positive(true)
|
||||
.setButton1OnClickListener(v -> speakSampleText())
|
||||
.setButton1Enabled(false)
|
||||
.setButton2Text(R.string.tts_reset)
|
||||
.setButton2Positive(false)
|
||||
.setButton2OnClickListener(v -> resetTts())
|
||||
.setButton1Enabled(true);
|
||||
|
||||
|
@@ -17,11 +17,15 @@
|
||||
package com.android.settings.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
@@ -30,6 +34,7 @@ import com.android.settings.R;
|
||||
|
||||
public class ActionButtonPreference extends Preference {
|
||||
|
||||
private final String TAG = "ActionButtonPreference";
|
||||
private final ButtonInfo mButton1Info = new ButtonInfo();
|
||||
private final ButtonInfo mButton2Info = new ButtonInfo();
|
||||
|
||||
@@ -62,12 +67,11 @@ public class ActionButtonPreference extends Preference {
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
holder.setDividerAllowedAbove(false);
|
||||
holder.setDividerAllowedBelow(false);
|
||||
mButton1Info.mPositiveButton = (Button) holder.findViewById(R.id.button1_positive);
|
||||
mButton1Info.mNegativeButton = (Button) holder.findViewById(R.id.button1_negative);
|
||||
mButton2Info.mPositiveButton = (Button) holder.findViewById(R.id.button2_positive);
|
||||
mButton2Info.mNegativeButton = (Button) holder.findViewById(R.id.button2_negative);
|
||||
holder.setDividerAllowedAbove(true);
|
||||
holder.setDividerAllowedBelow(true);
|
||||
|
||||
mButton1Info.mButton = (Button) holder.findViewById(R.id.button1);
|
||||
mButton2Info.mButton = (Button) holder.findViewById(R.id.button2);
|
||||
|
||||
mButton1Info.setUpButton();
|
||||
mButton2Info.setUpButton();
|
||||
@@ -82,6 +86,22 @@ public class ActionButtonPreference extends Preference {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionButtonPreference setButton1Icon(@DrawableRes int iconResId) {
|
||||
if (iconResId == 0) {
|
||||
return this;
|
||||
}
|
||||
|
||||
final Drawable icon;
|
||||
try {
|
||||
icon = getContext().getDrawable(iconResId);
|
||||
mButton1Info.mIcon = icon;
|
||||
notifyChanged();
|
||||
} catch (Resources.NotFoundException exception) {
|
||||
Log.e(TAG, "Resource does not exist: " + iconResId);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionButtonPreference setButton1Enabled(boolean isEnabled) {
|
||||
if (isEnabled != mButton1Info.mIsEnabled) {
|
||||
mButton1Info.mIsEnabled = isEnabled;
|
||||
@@ -99,6 +119,22 @@ public class ActionButtonPreference extends Preference {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionButtonPreference setButton2Icon(@DrawableRes int iconResId) {
|
||||
if (iconResId == 0) {
|
||||
return this;
|
||||
}
|
||||
|
||||
final Drawable icon;
|
||||
try {
|
||||
icon = getContext().getDrawable(iconResId);
|
||||
mButton2Info.mIcon = icon;
|
||||
notifyChanged();
|
||||
} catch (Resources.NotFoundException exception) {
|
||||
Log.e(TAG, "Resource does not exist: " + iconResId);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionButtonPreference setButton2Enabled(boolean isEnabled) {
|
||||
if (isEnabled != mButton2Info.mIsEnabled) {
|
||||
mButton2Info.mIsEnabled = isEnabled;
|
||||
@@ -123,65 +159,41 @@ public class ActionButtonPreference extends Preference {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionButtonPreference setButton1Positive(boolean isPositive) {
|
||||
if (isPositive != mButton1Info.mIsPositive) {
|
||||
mButton1Info.mIsPositive = isPositive;
|
||||
public ActionButtonPreference setButton1Visible(boolean isVisible) {
|
||||
if (isVisible != mButton1Info.mIsVisible) {
|
||||
mButton1Info.mIsVisible = isVisible;
|
||||
notifyChanged();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionButtonPreference setButton2Positive(boolean isPositive) {
|
||||
if (isPositive != mButton2Info.mIsPositive) {
|
||||
mButton2Info.mIsPositive = isPositive;
|
||||
notifyChanged();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ActionButtonPreference setButton1Visible(boolean isPositive) {
|
||||
if (isPositive != mButton1Info.mIsVisible) {
|
||||
mButton1Info.mIsVisible = isPositive;
|
||||
notifyChanged();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionButtonPreference setButton2Visible(boolean isPositive) {
|
||||
if (isPositive != mButton2Info.mIsVisible) {
|
||||
mButton2Info.mIsVisible = isPositive;
|
||||
public ActionButtonPreference setButton2Visible(boolean isVisible) {
|
||||
if (isVisible != mButton2Info.mIsVisible) {
|
||||
mButton2Info.mIsVisible = isVisible;
|
||||
notifyChanged();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
static class ButtonInfo {
|
||||
private Button mPositiveButton;
|
||||
private Button mNegativeButton;
|
||||
private Button mButton;
|
||||
private CharSequence mText;
|
||||
private Drawable mIcon;
|
||||
private View.OnClickListener mListener;
|
||||
private boolean mIsPositive = true;
|
||||
private boolean mIsEnabled = true;
|
||||
private boolean mIsVisible = true;
|
||||
|
||||
void setUpButton() {
|
||||
setUpButton(mPositiveButton);
|
||||
setUpButton(mNegativeButton);
|
||||
if (!mIsVisible) {
|
||||
mPositiveButton.setVisibility(View.INVISIBLE);
|
||||
mNegativeButton.setVisibility(View.INVISIBLE);
|
||||
} else if (mIsPositive) {
|
||||
mPositiveButton.setVisibility(View.VISIBLE);
|
||||
mNegativeButton.setVisibility(View.INVISIBLE);
|
||||
mButton.setText(mText);
|
||||
mButton.setOnClickListener(mListener);
|
||||
mButton.setEnabled(mIsEnabled);
|
||||
mButton.setCompoundDrawablesWithIntrinsicBounds(
|
||||
null /* left */, mIcon /* top */, null /* right */, null /* bottom */);
|
||||
if (mIsVisible) {
|
||||
mButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mPositiveButton.setVisibility(View.INVISIBLE);
|
||||
mNegativeButton.setVisibility(View.VISIBLE);
|
||||
mButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpButton(Button button) {
|
||||
button.setText(mText);
|
||||
button.setOnClickListener(mListener);
|
||||
button.setEnabled(mIsEnabled);
|
||||
}
|
||||
}
|
||||
}
|
@@ -278,10 +278,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
||||
|
||||
mButtonsPref = ((ActionButtonPreference) screen.findPreference(KEY_BUTTONS_PREF))
|
||||
.setButton1Text(R.string.forget)
|
||||
.setButton1Positive(false)
|
||||
.setButton1Icon(R.drawable.ic_settings_delete)
|
||||
.setButton1OnClickListener(view -> forgetNetwork())
|
||||
.setButton2Text(R.string.wifi_sign_in_button_text)
|
||||
.setButton2Positive(true)
|
||||
.setButton2OnClickListener(view -> signIntoNetwork());
|
||||
|
||||
mSignalStrengthPref =
|
||||
|
Reference in New Issue
Block a user