61 lines
1.8 KiB
Java
61 lines
1.8 KiB
Java
package com.android.settings;
|
|
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.support.v7.preference.PreferenceViewHolder;
|
|
import android.util.AttributeSet;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
/**
|
|
* An AppListPreference with optional settings button.
|
|
*/
|
|
public class AppListPreferenceWithSettings extends AppListPreference {
|
|
|
|
private View mSettingsIcon;
|
|
private ComponentName mSettingsComponent;
|
|
|
|
public AppListPreferenceWithSettings(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
setWidgetLayoutResource(R.layout.preference_widget_settings);
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(PreferenceViewHolder view) {
|
|
super.onBindViewHolder(view);
|
|
|
|
mSettingsIcon = view.findViewById(R.id.settings_button);
|
|
mSettingsIcon.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
intent.setComponent(mSettingsComponent);
|
|
getContext().startActivity(new Intent(intent));
|
|
}
|
|
});
|
|
|
|
ViewGroup container = (ViewGroup) mSettingsIcon.getParent();
|
|
container.setPaddingRelative(0, 0, 0, 0);
|
|
|
|
updateSettingsVisibility();
|
|
}
|
|
|
|
private void updateSettingsVisibility() {
|
|
if (mSettingsIcon == null) {
|
|
return;
|
|
}
|
|
|
|
if (mSettingsComponent == null) {
|
|
mSettingsIcon.setVisibility(View.GONE);
|
|
} else {
|
|
mSettingsIcon.setVisibility(View.VISIBLE);
|
|
}
|
|
}
|
|
|
|
protected void setSettingsComponent(ComponentName settings) {
|
|
mSettingsComponent = settings;
|
|
updateSettingsVisibility();
|
|
}
|
|
}
|