/*
** Copyright 2012, Joel Pedraza
**
** 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 net.saik0.android.unifiedpreference;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
import java.util.List;
/**
* A {@link PreferenceActivity} that presents a set of application settings. On
* handset devices, settings are presented as a single list. On tablets,
* settings are split by category, with category headers shown to the left of
* the list of settings.
* <p>
* See <a href="http://developer.android.com/design/patterns/settings.html">
* Android Design: Settings</a> for design guidelines and the <a
* href="http://developer.android.com/guide/topics/ui/settings.html">Settings
* API Guide</a> for more information on developing a Settings UI.
*/
public abstract class UnifiedSherlockPreferenceActivity extends SherlockPreferenceActivity
implements UnifiedPreferenceContainer {
private UnifiedPreferenceHelper mHelper = new UnifiedPreferenceHelper(this);
/**
* Determines whether the simplified settings UI should be shown. This is
* true if device doesn't have newer APIs like {@link PreferenceFragment},
* or if forced via {@link onIsHidingHeaders}, or the device doesn't have an
* extra-large screen. In these cases, a single-pane "simplified" settings
* UI should be shown.
*/
public boolean isSinglePane() {
return mHelper.isSinglePane();
}
/**
* Returns the header resource to be used when building headers.
*
* @return The id of the header resource
*/
@Override
public int getHeaderRes() {
return mHelper.getHeaderRes();
}
/**
* Sets the header resource to be used when building headers.
* This must be called before super.onCreate unless overriding both
* {@link #onBuildHeaders(List)} and {@link #onBuildLegacyHeaders(List)}
*
* @param headerRes The id of the header resource
*/
@Override
public void setHeaderRes(int headerRes) {
mHelper.setHeaderRes(headerRes);
}
/**
* Returns the current name of the SharedPreferences file that preferences
* managed by this will use.
*
* @return The name that can be passed to {@link Context#getSharedPreferences(String, int)}
* @see UnifiedPreferenceHelper#getSharedPreferencesName()
*/
@Override
public String getSharedPreferencesName() {
return mHelper.getSharedPreferencesName();
}
/**
* Sets the name of the SharedPreferences file that preferences managed by
* this will use.
*
* @param sharedPreferencesName The name of the SharedPreferences file.
* @see UnifiedPreferenceHelper#setSharedPreferencesName()
*/
@Override
public void setSharedPreferencesName(String sharedPreferencesName) {
mHelper.setSharedPreferencesName(sharedPreferencesName);
}
/**
* Returns the current mode of the SharedPreferences file that preferences
* managed by this will use.
*
* @return The mode that can be passed to {@link Context#getSharedPreferences(String, int)}
* @see UnifiedPreferenceHelper#getSharedPreferencesMode()
*/
@Override
public int getSharedPreferencesMode() {
return mHelper.getSharedPreferencesMode();
}
/**
* Sets the mode of the SharedPreferences file that preferences managed by
* this will use.
*
* @param sharedPreferencesMode The mode of the SharedPreferences file.
* @see UnifiedPreferenceHelper#setSharedPreferencesMode()
*/
@Override
public void setSharedPreferencesMode(int sharedPreferencesMode) {
mHelper.setSharedPreferencesMode(sharedPreferencesMode);
}
/** {@inheritDoc} */
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mHelper.onPostCreate(savedInstanceState);
}
/**
* Called when the activity needs its list of headers built. By implementing
* this and adding at least one item to the list, you will cause the
* activity to run in its modern fragment mode. Note that this function may
* not always be called; for example, if the activity has been asked to
* display a particular fragment without the header list, there is no need
* to build the headers.
*
* <p>
* Typical implementations will use {@link #loadHeadersFromResource} to fill
* in the list from a resource. For convenience this is done if a header
* resource has been set with {@link #setHeaderRes(int)}.
*
* @param target The list in which to place the headers.
*/
public void onBuildHeaders(List<Header> target) {
mHelper.onBuildHeaders(target);
}
/**
* Called when the activity needs its list of legacy headers built.
*
* <p>
* Typical implementations will use {@link #loadLegacyHeadersFromResource}
* to fill in the list from a resource. For convenience this is done if a
* header resource has been set with {@link #setHeaderRes(int)}.
*
* @param target The list in which to place the legacy headers.
*/
public void onBuildLegacyHeaders(List<LegacyHeader> target) {
mHelper.onBuildLegacyHeaders(target);
}
/**
* Bind the summaries of EditText/List/Dialog/Ringtone preferences
* to their values. When their values change, their summaries are
* updated to reflect the new value, per the Android Design
* guidelines.
*/
public void onBindPreferenceSummariesToValues() {
mHelper.onBindPreferenceSummariesToValues();
}
/** {@inheritDoc} */
@Override
public void loadHeadersFromResource(int resid, List<Header> target) {
mHelper.loadHeadersFromResource(resid, target);
}
/**
* Parse the given XML file as a header description, adding each parsed
* LegacyHeader into the target list.
*
* @param resid The XML resource to load and parse.
* @param target The list in which the parsed headers should be placed.
*/
public void loadLegacyHeadersFromResource(int resid, List<LegacyHeader> target) {
mHelper.loadLegacyHeadersFromResource(resid, target);
}
}