15efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang/*
25efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * Copyright (C) 2016 The Android Open Source Project
35efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang *
45efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * Licensed under the Apache License, Version 2.0 (the "License");
55efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * you may not use this file except in compliance with the License.
65efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * You may obtain a copy of the License at
75efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang *
85efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang *      http://www.apache.org/licenses/LICENSE-2.0
95efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang *
105efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * Unless required by applicable law or agreed to in writing, software
115efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * distributed under the License is distributed on an "AS IS" BASIS,
125efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * See the License for the specific language governing permissions and
145efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * limitations under the License.
155efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang */
165efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
175efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langpackage com.android.settingslib.widget;
185efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
195efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport android.content.Context;
205efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport android.support.v4.content.res.TypedArrayUtils;
215efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport android.support.v7.preference.Preference;
225efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport android.support.v7.preference.PreferenceViewHolder;
235efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport android.text.method.LinkMovementMethod;
245efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport android.util.AttributeSet;
255efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport android.widget.TextView;
265efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
275efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langimport com.android.settingslib.R;
285efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
295efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang/**
305efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * A custom preference acting as "footer" of a page. It has a field for icon and text. It is added
315efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang * to screen as the last preference.
325efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang */
335efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Langpublic class FooterPreference extends Preference {
345efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
355efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    static final int ORDER_FOOTER = Integer.MAX_VALUE - 1;
366e35c6d666d7f58225f46102e7d869d30680011aVictor Chang    public static final String KEY_FOOTER = "footer_preference";
375efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
385efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    public FooterPreference(Context context, AttributeSet attrs) {
395efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        super(context, attrs, TypedArrayUtils.getAttr(
405efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang                context, R.attr.footerPreferenceStyle, android.R.attr.preferenceStyle));
415efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        init();
425efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    }
435efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
445efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    public FooterPreference(Context context) {
455efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        this(context, null);
465efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    }
475efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
485efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    @Override
495efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    public void onBindViewHolder(PreferenceViewHolder holder) {
505efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        super.onBindViewHolder(holder);
515efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        TextView title = holder.itemView.findViewById(android.R.id.title);
525efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        title.setMovementMethod(new LinkMovementMethod());
5329c6f0b916c24cf86a0be612fa34c5c6e5248e35Phil Weaver        title.setClickable(false);
5429c6f0b916c24cf86a0be612fa34c5c6e5248e35Phil Weaver        title.setLongClickable(false);
555efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    }
565efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang
575efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    private void init() {
585efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        setIcon(R.drawable.ic_info_outline_24dp);
595efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        setKey(KEY_FOOTER);
605efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang        setOrder(ORDER_FOOTER);
6129c6f0b916c24cf86a0be612fa34c5c6e5248e35Phil Weaver        setSelectable(false);
625efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang    }
635efe8f0a096fd13d5ecdacf90447e0b4ef132967Juan Lang}
64