/*
* This file is part of WhereYouGo.
*
* WhereYouGo 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.
*
* WhereYouGo 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 WhereYouGo. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright (C) 2012 Menion <whereyougo@asamm.cz>
*/
package menion.android.whereyougo.gui.extension;
import menion.android.whereyougo.hardware.location.LocationState;
import menion.android.whereyougo.settings.SettingItems;
import menion.android.whereyougo.utils.A;
import menion.android.whereyougo.utils.Logger;
import android.content.Intent;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
public abstract class CustomPreferenceActivity extends PreferenceActivity {
public boolean needRestart;
public boolean needRestartFactoryReset;
public boolean needGpsRestart;
/**************************************/
/* BASIC INITIALIZATION */
/**************************************/
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
CustomActivity.customOnCreate(this);
} catch (Exception e) {
Logger.e(getLocalClassName(), "onCreate()", e);
}
}
public void onStart() {
try {
super.onStart();
CustomActivity.customOnStart(this);
needRestart = false;
needRestartFactoryReset = false;
needGpsRestart = false;
} catch (Exception e) {
Logger.e(getLocalClassName(), "onStart()", e);
}
}
protected void onResume() {
try {
super.onResume();
CustomActivity.customOnResume(this);
} catch (Exception e) {
Logger.e(getLocalClassName(), "onResume()", e);
}
}
protected void onPause() {
try {
super.onPause();
CustomActivity.customOnPause(this);
} catch (Exception e) {
Logger.e(getLocalClassName(), "onPause()", e);
}
}
public void onDestroy() {
try {
super.onDestroy();
if (needRestartFactoryReset) {
A.getMain().showDialogFinish(CustomMain.FINISH_RESTART_FACTORY_RESET);
} else if (needRestart) {
A.getMain().showDialogFinish(CustomMain.FINISH_RESTART);
}
if (needGpsRestart) {
if (LocationState.isActuallyHardwareGpsOn()) {
LocationState.setGpsOff(CustomPreferenceActivity.this);
LocationState.setGpsOn(CustomPreferenceActivity.this);
}
}
} catch (Exception e) {
Logger.e(getLocalClassName(), "onDestroy()", e);
}
}
public void setNeedRestart() {
this.needRestart = true;
}
protected void setNeedFactoryReset() {
this.needRestartFactoryReset = true;
}
/**************************************/
/* SCREEN CREATING */
/**************************************/
protected static PreferenceScreen init(PreferenceScreen preferenceScreen) {
String summary = "";
for (int i = 0; i < preferenceScreen.getPreferenceCount(); i++) {
summary += preferenceScreen.getPreference(i).getTitle();
if (i < preferenceScreen.getPreferenceCount() - 1)
summary += ", ";
}
preferenceScreen.setSummary(summary);
return preferenceScreen;
}
protected static PreferenceCategory addNewPreferenceCategory(CustomPreferenceActivity context,
int title, PreferenceScreen prefScreen) {
PreferenceCategory prefCat = new PreferenceCategory(context);
prefCat.setTitle(title);
prefScreen.addPreference(prefCat);
return prefCat;
}
/**************************************/
/* ADDING PREFERENCES */
/**************************************/
public CheckBoxPreference addCheckBoxPreference(PreferenceCategory category,
int name, int desc, String key, boolean def) {
CheckBoxPreference preference = new CheckBoxPreference(this);
preference.setTitle(name);
preference.setSummary(desc);
preference.setKey(key);
preference.setDefaultValue(def);
category.addPreference(preference);
return preference;
}
public void addCheckBoxPreference(PreferenceCategory category,
int name, int desc, String key, boolean def, Preference.OnPreferenceChangeListener lis) {
CheckBoxPreference preference = new CheckBoxPreference(this);
preference.setTitle(name);
preference.setSummary(desc);
preference.setKey(key);
preference.setDefaultValue(def);
if (lis != null)
preference.setOnPreferenceChangeListener(lis);
category.addPreference(preference);
}
public EditTextPreference addEditTextPreference(PreferenceCategory category,
int name, int desc, String key, String def, int inputType,
OnPreferenceChangeListener preferenceChangeLis) {
EditTextPreference preference = new EditTextPreference(this);
preference.setTitle(name);
preference.setSummary(desc);
preference.setDialogTitle(name);
preference.setKey(key);
preference.setDefaultValue(def);
preference.getEditText().setInputType(inputType);
if (preferenceChangeLis != null)
preference.setOnPreferenceChangeListener(preferenceChangeLis);
category.addPreference(preference);
return preference;
}
public ListPreference addListPreference(PreferenceCategory category,
int name, int desc, String key, String def, CharSequence[] entries,
CharSequence[] entryValues, OnPreferenceChangeListener preferenceChangeLis) {
ListPreference preference = new ListPreference(this);
preference.setTitle(name);
preference.setSummary(desc);
preference.setDialogTitle(name);
preference.setKey(key);
preference.setDefaultValue(def);
preference.setEntries(entries);
preference.setEntryValues(entryValues);
if (preferenceChangeLis != null)
preference.setOnPreferenceChangeListener(preferenceChangeLis);
category.addPreference(preference);
return preference;
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
SettingItems.handleResponse(this, requestCode, resultCode, data);
}
}