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