1d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang/* 2d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * Copyright (C) 2016 The Android Open Source Project 3d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * 4d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * you may not use this file except in compliance with the License. 6d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * You may obtain a copy of the License at 7d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * 8d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 9d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * 10d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * Unless required by applicable law or agreed to in writing, software 11d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * See the License for the specific language governing permissions and 14d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * limitations under the License. 15d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang */ 16d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 17d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangpackage com.android.settings.widget; 18d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 19d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangimport android.content.Context; 20d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangimport android.support.v14.preference.PreferenceFragment; 21d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangimport android.support.v7.preference.PreferenceScreen; 22d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 23d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangimport com.android.settings.core.lifecycle.Lifecycle; 24d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangimport com.android.settings.core.lifecycle.LifecycleObserver; 25d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangimport com.android.settings.core.lifecycle.events.SetPreferenceScreen; 26d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 27d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhangpublic class FooterPreferenceMixin implements LifecycleObserver, SetPreferenceScreen { 28d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 29d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang private final PreferenceFragment mFragment; 30d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang private FooterPreference mFooterPreference; 31d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 32d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang public FooterPreferenceMixin(PreferenceFragment fragment, Lifecycle lifecycle) { 33d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang mFragment = fragment; 34d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang lifecycle.addObserver(this); 35d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 36d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 37d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang @Override 38d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang public void setPreferenceScreen(PreferenceScreen preferenceScreen) { 39d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang if (mFooterPreference != null) { 40d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang preferenceScreen.addPreference(mFooterPreference); 41d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 42d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 43d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 44d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang /** 45d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * Creates a new {@link FooterPreference}. 46d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang */ 47d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang public FooterPreference createFooterPreference() { 48d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang final PreferenceScreen screen = mFragment.getPreferenceScreen(); 49d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang if (mFooterPreference != null && screen != null) { 50d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang screen.removePreference(mFooterPreference); 51d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 52d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang mFooterPreference = new FooterPreference(getPrefContext()); 53d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 54d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang if (screen != null) { 55d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang screen.addPreference(mFooterPreference); 56d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 57d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang return mFooterPreference; 58d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 59d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 60d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang /** 61d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang * Returns an UI context with theme properly set for new Preference objects. 62d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang */ 63d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang private Context getPrefContext() { 64d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang return mFragment.getPreferenceManager().getContext(); 65d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 66d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 67d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang public boolean hasFooter() { 68d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang return mFooterPreference != null; 69d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang } 70d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang} 71d5b48454a38cbc21efce91736ebd2895c6deae58Fan Zhang 72