/*
* Copyright (c) 2013, Will Szumski
* Copyright (c) 2013, Doug Szumski
*
* This file is part of Cyclismo.
*
* Cyclismo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Cyclismo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Cyclismo. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Copyright 2012 Google Inc.
*
* 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 org.cowboycoders.cyclismo.settings;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment;
import org.cowboycoders.cyclismo.R;
import org.cowboycoders.cyclismo.util.PreferencesUtils;
import org.cowboycoders.cyclismo.util.PreferencesUtils.SettingsSelectionSummarizer;
/**
* An abstract activity for all the settings activities.
*
* @author Jimmy Shih
*/
public class AbstractSettingsFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
}
@Override
public void onDestroy() {
super.onDestroy();
}
/**
* Updates a preference when a stored value changes.
*
* @param preference the preference
* @param options the list of displayed options
* @param values the list of stored values
* @param summaryId the summary id
* @param value the stored value
* @param summarizer
*/
private void updatePreferenceSummary(
Preference preference, String[] options, String[] values, int summaryId, Object value, SettingsSelectionSummarizer summarizer) {
String summary = getString(summaryId);
String option;
if (options != null && values != null) {
option = getOption(options, values, value);
if (option == null) {
option = getString(R.string.value_unknown);
}
} else {
if (summarizer != null) {
value = summarizer.summarize(value);
}
option = value != null && value.toString().length() != 0 ? value.toString() : getString(R.string.value_unknown);
}
summary += "\n" + option;
preference.setSummary(summary);
}
/**
* Gets the display option for a stored value.
*
* @param options the list of the display options
* @param values the list of the stored values
* @param value the store value
*/
private String getOption(String[] options, String[] values, Object value) {
for (int i = 0; i < values.length; i++) {
if (value.equals(values[i])) {
return options[i];
}
}
return null;
}
public class UpdateSummaryCaller {
private Preference preference;
private String[] options;
private String[] values;
private int summaryId ;
private SettingsSelectionSummarizer summarizer;
public UpdateSummaryCaller(Preference preference, String[] options, String[] values,
int summaryId, SettingsSelectionSummarizer summarizer) {
this.preference = preference;
this.options = options;
this.values = values;
this.summaryId = summaryId;
this.summarizer = summarizer;
}
public void updateSummary(Object value) {
AbstractSettingsFragment.this.updatePreferenceSummary(preference, options, values, summaryId, value, summarizer);
}
}
}