12583fc1e069d0a54df46258d360499492d7e86d2Jason Monk/* 22583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * Copyright (C) 2015 The Android Open Source Project 32583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * 42583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); 52583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * you may not use this file except in compliance with the License. 62583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * You may obtain a copy of the License at 72583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * 82583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * http://www.apache.org/licenses/LICENSE-2.0 92583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * 102583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * Unless required by applicable law or agreed to in writing, software 112583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * distributed under the License is distributed on an "AS IS" BASIS, 122583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * See the License for the specific language governing permissions and 142583fc1e069d0a54df46258d360499492d7e86d2Jason Monk * limitations under the License. 152583fc1e069d0a54df46258d360499492d7e86d2Jason Monk */ 162583fc1e069d0a54df46258d360499492d7e86d2Jason Monkpackage com.android.settings; 172583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 182583fc1e069d0a54df46258d360499492d7e86d2Jason Monkimport android.content.Context; 1939b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference; 2039b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.PreferenceViewHolder; 212583fc1e069d0a54df46258d360499492d7e86d2Jason Monkimport android.util.AttributeSet; 222583fc1e069d0a54df46258d360499492d7e86d2Jason Monkimport android.view.View; 232583fc1e069d0a54df46258d360499492d7e86d2Jason Monkimport android.view.View.OnClickListener; 242583fc1e069d0a54df46258d360499492d7e86d2Jason Monkimport android.widget.ImageView; 252583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 262583fc1e069d0a54df46258d360499492d7e86d2Jason Monkpublic class CancellablePreference extends Preference implements OnClickListener { 272583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 282583fc1e069d0a54df46258d360499492d7e86d2Jason Monk private boolean mCancellable; 292583fc1e069d0a54df46258d360499492d7e86d2Jason Monk private OnCancelListener mListener; 302583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 312583fc1e069d0a54df46258d360499492d7e86d2Jason Monk public CancellablePreference(Context context) { 322583fc1e069d0a54df46258d360499492d7e86d2Jason Monk super(context); 332583fc1e069d0a54df46258d360499492d7e86d2Jason Monk setWidgetLayoutResource(R.layout.cancel_pref_widget); 342583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 352583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 362583fc1e069d0a54df46258d360499492d7e86d2Jason Monk public CancellablePreference(Context context, AttributeSet attrs) { 372583fc1e069d0a54df46258d360499492d7e86d2Jason Monk super(context, attrs); 382583fc1e069d0a54df46258d360499492d7e86d2Jason Monk setWidgetLayoutResource(R.layout.cancel_pref_widget); 392583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 402583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 412583fc1e069d0a54df46258d360499492d7e86d2Jason Monk public void setCancellable(boolean isCancellable) { 422583fc1e069d0a54df46258d360499492d7e86d2Jason Monk mCancellable = isCancellable; 432583fc1e069d0a54df46258d360499492d7e86d2Jason Monk notifyChanged(); 442583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 452583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 462583fc1e069d0a54df46258d360499492d7e86d2Jason Monk public void setOnCancelListener(OnCancelListener listener) { 472583fc1e069d0a54df46258d360499492d7e86d2Jason Monk mListener = listener; 482583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 492583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 502583fc1e069d0a54df46258d360499492d7e86d2Jason Monk @Override 5139b467482d1bf256a111c757e9b7621c6f523271Jason Monk public void onBindViewHolder(PreferenceViewHolder view) { 5239b467482d1bf256a111c757e9b7621c6f523271Jason Monk super.onBindViewHolder(view); 532583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 542583fc1e069d0a54df46258d360499492d7e86d2Jason Monk ImageView cancel = (ImageView) view.findViewById(R.id.cancel); 552583fc1e069d0a54df46258d360499492d7e86d2Jason Monk cancel.setVisibility(mCancellable ? View.VISIBLE : View.INVISIBLE); 562583fc1e069d0a54df46258d360499492d7e86d2Jason Monk cancel.setOnClickListener(this); 572583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 582583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 592583fc1e069d0a54df46258d360499492d7e86d2Jason Monk @Override 602583fc1e069d0a54df46258d360499492d7e86d2Jason Monk public void onClick(View v) { 612583fc1e069d0a54df46258d360499492d7e86d2Jason Monk if (mListener != null) { 622583fc1e069d0a54df46258d360499492d7e86d2Jason Monk mListener.onCancel(this); 632583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 642583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 652583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 662583fc1e069d0a54df46258d360499492d7e86d2Jason Monk public interface OnCancelListener { 672583fc1e069d0a54df46258d360499492d7e86d2Jason Monk void onCancel(CancellablePreference preference); 682583fc1e069d0a54df46258d360499492d7e86d2Jason Monk } 692583fc1e069d0a54df46258d360499492d7e86d2Jason Monk 702583fc1e069d0a54df46258d360499492d7e86d2Jason Monk} 71