/* This file is part of ZamiaDroid. * * ZamiaDroid 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. * * ZamiaDroid 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 ZamiaDroid. If not, see <http://www.gnu.org/licenses/>. */ package uni.projecte.Activities.Miscelaneous; import java.io.File; import java.util.Locale; import uni.projecte.R; import uni.projecte.R.string; import uni.projecte.R.xml; import uni.projecte.dataTypes.Utilities; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.os.Bundle; import android.os.Environment; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.widget.Toast; public class ConfigurationActivity extends PreferenceActivity { private SharedPreferences prefs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Utilities.setLocale(this); prefs = PreferenceManager.getDefaultSharedPreferences(this); addPreferencesFromResource(R.xml.preferences); PreferenceManager.setDefaultValues(this, R.xml.preferences, false); // Get the custom preference Preference customPref = findPreference("customPref"); customPref .setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { Toast.makeText(getBaseContext(), getString(R.string.reset_values), Toast.LENGTH_LONG).show(); SharedPreferences.Editor editor = prefs .edit(); editor.putString("myCustomPref", "The preference has been clicked"); editor.commit(); return true; } }); Preference gpsActivationPred = findPreference("GPSactivationPref"); gpsActivationPred .setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { showGPSConfigWindow(); return true; } }); Preference langPref = findPreference("listPref"); langPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { String localeName=(String)newValue; if(localeName.equals("ca")){ preference.setSummary("CatalĂ "); } else if (localeName.equals("es")){ preference.setSummary("Castellano"); } else if (localeName.equals("en")){ preference.setSummary("English"); } SharedPreferences.Editor editor = prefs.edit(); editor.putString("listPref",(String)newValue); editor.commit(); backActivity(); return true; } }); Preference usernamePref = findPreference("usernamePref"); //usernamePref.setSummary(usernamePref.get); usernamePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary((String)newValue); SharedPreferences.Editor editor = prefs.edit(); editor.putString("usernamePref",(String)newValue); editor.commit(); return false; } }); final Preference geoidGPSPref = findPreference("geoidGPSCorrection"); geoidGPSPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { if(!isNumeric((String)newValue)){ Utilities.showToast("Double value needed", getBaseContext()); } else{ preference.setSummary((String)newValue+" (m)"); SharedPreferences.Editor editor = prefs.edit(); editor.putString("geoidGPSCorrection",(String)newValue); editor.commit(); } return true; } }); Preference geoidResetGeoidPref = findPreference("customPrefGeoid"); geoidResetGeoidPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { geoidGPSPref.setSummary("49 (m)"); SharedPreferences.Editor editor = prefs.edit(); editor.putString("geoidGPSCorrection","49"); editor.commit(); return true; } }); Preference pathThPref = findPreference("urlThPref"); pathThPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary((String)newValue); SharedPreferences.Editor editor = prefs.edit(); editor.putString("urlThPref",(String)newValue); editor.commit(); return false; } }); Preference coordPref = findPreference("listPrefCoord"); coordPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary((String)newValue); SharedPreferences.Editor editor = prefs.edit(); editor.putString("listPrefCoord",(String)newValue); editor.commit(); return false; } }); final CheckBoxPreference pref = (CheckBoxPreference) findPreference("secondaryStorageEnabled"); final Preference prefPath = (Preference) findPreference("secondaryExternalStoragePath"); pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { prefPath.setEnabled(pref.isChecked()); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("secondaryStorageEnabled",pref.isChecked()); editor.commit(); return true; } }); final Preference secPathPref = findPreference("secondaryExternalStoragePath"); secPathPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { String path=(String)newValue; if(pathExists(path)){ secPathPref.setSummary(path); SharedPreferences.Editor editor = prefs.edit(); editor.putString("secondaryExternalStoragePath",path); editor.commit(); return true; } else{ Utilities.showToast(getString(R.string.photoPathWrong), getBaseContext()); return false; } } }); } protected boolean pathExists(String path) { File f=new File(path); return f.exists(); } private void backActivity(){ finishActivity(3); } public static boolean isNumeric(String str) { try{ double d = Double.parseDouble(str); } catch(NumberFormatException nfe){ return false; } return true; } protected void refreshWindow(String localName) { Locale locale = new Locale(localName); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } @Override public void onResume() { super.onResume(); SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this); Preference pathStoragePref = findPreference("secondaryExternalStoragePath"); if(prefs.getBoolean("secondaryStorageEnabled", false)){ pathStoragePref.setSummary(prefs.getString("secondaryExternalStoragePath", Environment.getExternalStorageDirectory().toString())); pathStoragePref.setEnabled(true); } else{ pathStoragePref.setEnabled(false); } if(prefs.getString("listPrefCoord", "UTM") != null){ Preference coordPref = findPreference("listPrefCoord"); coordPref.setSummary(prefs.getString("listPrefCoord", "UTM")); } if(prefs.getString("geoidGPSCorrection", "49") != null){ Preference geoidPref = findPreference("geoidGPSCorrection"); geoidPref.setSummary(prefs.getString("geoidGPSCorrection", "49")+" (m)"); } if(prefs.getString("listPref", "ca")!=null){ String localeName=prefs.getString("listPref", "ca"); Preference listPref = findPreference("listPref"); if(localeName.equals("ca")){ listPref.setSummary("CatalĂ "); } else if (localeName.equals("es")){ listPref.setSummary("Castellano"); } else if (localeName.equals("en")){ listPref.setSummary("English"); } } if(prefs.getString("urlThPref", "zamiaDroid") != null){ Preference pathPref = findPreference("urlThPref"); pathPref.setSummary(prefs.getString("urlThPref", "zamiaDroid")); } if(prefs.getString("usernamePref", "empty") != null){ Preference usernamePref = findPreference("usernamePref"); usernamePref.setSummary(prefs.getString("usernamePref", "default")); } } protected void showGPSConfigWindow() { Intent settingsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); settingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); this.startActivityForResult(settingsIntent, 0); } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Preference pref = findPreference(key); if (pref instanceof ListPreference) { ListPreference listPref = (ListPreference) pref; pref.setSummary(listPref.getEntry()); } } }