/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.quicksearchbox.preferences; import com.android.quicksearchbox.QsbApplication; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; /** * System search settings fragment. */ public abstract class SettingsFragmentBase extends PreferenceFragment { // Name of the preferences file used to store search preference public static final String PREFERENCES_NAME = "SearchSettings"; private PreferenceController mController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mController = createController(); getPreferenceManager().setSharedPreferencesName(getPreferencesName()); addPreferencesFromResource(getPreferencesResourceId()); handlePreferenceGroup(getPreferenceScreen()); mController.onCreateComplete(); } protected PreferenceController getController() { return mController; } protected PreferenceControllerFactory createController() { QsbApplication app = QsbApplication.get(getActivity()); return app.createPreferenceControllerFactory(getActivity()); } protected String getPreferencesName() { return PREFERENCES_NAME; } protected abstract int getPreferencesResourceId(); protected void handlePreferenceGroup(PreferenceGroup group) { for (int i = 0; i < group.getPreferenceCount(); ++i) { Preference p = group.getPreference(i); if (p instanceof PreferenceCategory) { handlePreferenceGroup((PreferenceCategory) p); } else { mController.handlePreference(group.getPreference(i)); } } } @Override public void onResume() { super.onResume(); mController.onResume(); } @Override public void onStop() { mController.onStop(); super.onStop(); } @Override public void onDestroy() { mController.onDestroy(); super.onDestroy(); } }