// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.browser.preferences; import android.content.Context; import android.content.res.TypedArray; import android.preference.Preference; import android.preference.PreferenceGroup; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; import org.chromium.chrome.R; /** * Used to group {@link Preference} objects and provide a disabled * title above the group with an icon inline with the title. Clicking on the icon starts * the PreferenceFragment associated with the Preference. */ public class PreferenceCategoryWithButton extends PreferenceGroup implements OnClickListener { private String mContentDescription; public PreferenceCategoryWithButton(Context context, AttributeSet attrs) { super(context, attrs); setLayoutResource(R.layout.preference_category); setSelectable(false); TypedArray a = context.obtainStyledAttributes(attrs, new int[] {android.R.attr.contentDescription}); mContentDescription = a.getString(0); a.recycle(); } @Override protected void onBindView(final View view) { super.onBindView(view); // On pre-L devices, PreferenceCategoryWithButtonStyle is reused for PreferenceCategory, // which needs a top padding of 16dp; we don't want this top padding for // PreferenceCategoryWithButton views. view.setPadding(view.getPaddingLeft(), 0, view.getPaddingRight(), view.getPaddingBottom()); View button = view.findViewById(android.R.id.icon); button.setOnClickListener(this); if (!TextUtils.isEmpty(mContentDescription)) { button.setContentDescription(mContentDescription); } } @Override public void onClick(View v) { ((Preferences) getContext()).startFragment(getFragment(), null); } }