package com.hipipal.texteditor;
import java.io.File;
import com.hipipal.texteditor.common.Constants;
import com.hipipal.texteditor.common.Settings;
import com.hipipal.texteditor.ui.view.AdvancedEditText;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.util.Log;
import de.neofonie.mobile.app.android.widget.crouton.Crouton;
import de.neofonie.mobile.app.android.widget.crouton.Style;
import fr.xgouchet.androidlib.data.FileUtils;
import com.hipipal.texteditor.BuildConfig;
@SuppressWarnings("deprecation")
public class TedSettingsActivity extends PreferenceActivity implements
Constants, OnSharedPreferenceChangeListener {
/**
* @see android.preference.PreferenceActivity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getPreferenceManager().setSharedPreferencesName(PREFERENCES_NAME);
addPreferencesFromResource(R.xml.ted_prefs);
setContentView(R.layout.layout_prefs);
getPreferenceManager().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
mSampleTED = (AdvancedEditText) findViewById(R.id.sampleEditor);
Settings.updateFromPreferences(getPreferenceManager()
.getSharedPreferences());
mSampleTED.updateFromSettings("");
mSampleTED.setEnabled(false);
mPreviousHP = Settings.USE_HOME_PAGE;
findPreference(PREFERENCE_SELECT_FONT).setOnPreferenceClickListener(
new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent selectFont = new Intent();
selectFont.setClass(getApplicationContext(),
TedFontActivity.class);
try {
startActivityForResult(selectFont, REQUEST_FONT);
} catch (ActivityNotFoundException e) {
Crouton.showText(TedSettingsActivity.this,
R.string.toast_activity_open, Style.ALERT);
}
return true;
}
});
updateSummaries();
}
/**
* @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences,
* java.lang.String)
*/
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
Settings.updateFromPreferences(sharedPreferences);
mSampleTED.updateFromSettings("");
updateSummaries();
//CheckBoxPreference checkBox = (CheckBoxPreference) findPreference(PREFERENCE_USE_HOME_PAGE);
//checkBox.setSummaryOn(Settings.HOME_PAGE_PATH);
if (Settings.USE_HOME_PAGE && !mPreviousHP) {
Intent setHomePage = new Intent();
setHomePage.setClass(this, TedOpenActivity.class);
setHomePage.putExtra(EXTRA_REQUEST_CODE, REQUEST_HOME_PAGE);
try {
startActivityForResult(setHomePage, REQUEST_HOME_PAGE);
} catch (ActivityNotFoundException e) {
Crouton.showText(this, R.string.toast_activity_open,
Style.ALERT);
}
}
mPreviousHP = Settings.USE_HOME_PAGE;
}
/**
* @see android.preference.PreferenceActivity#onActivityResult(int, int,
* android.content.Intent)
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bundle extras;
if (BuildConfig.DEBUG)
Log.d(TAG, "onActivityResult");
if (resultCode == RESULT_CANCELED) {
if (BuildConfig.DEBUG)
Log.d(TAG, "Result canceled");
//((CheckBoxPreference) findPreference(PREFERENCE_USE_HOME_PAGE)).setChecked(false);
return;
}
if ((resultCode != RESULT_OK) || (data == null)) {
if (BuildConfig.DEBUG)
Log.e(TAG, "Result error or null data! / " + resultCode);
//((CheckBoxPreference) findPreference(PREFERENCE_USE_HOME_PAGE)).setChecked(false);
return;
}
switch (requestCode) {
case REQUEST_HOME_PAGE:
extras = data.getExtras();
if (extras != null) {
if (BuildConfig.DEBUG)
Log.d(TAG, "Open : " + extras.getString("path"));
Settings.HOME_PAGE_PATH = extras.getString("path");
Settings.saveHomePage(getSharedPreferences(PREFERENCES_NAME,
Context.MODE_PRIVATE));
updateSummaries();
}
break;
case REQUEST_FONT:
Log.i(TAG, "Selected Font : " + data.getData().getPath());
File src = new File(data.getData().getPath());
FileUtils.copyFile(src, Settings.getFontFile(this));
mSampleTED.updateFromSettings("");
break;
}
}
/**
* Updates the summaries for every list
*/
protected void updateSummaries() {
ListPreference listPref;
//CheckBoxPreference cbPref;
listPref = (ListPreference) findPreference(PREFERENCE_COLOR_THEME);
listPref.setSummary(listPref.getEntry());
listPref = (ListPreference) findPreference(PREFERENCE_TEXT_SIZE);
listPref.setSummary(listPref.getEntry());
listPref = (ListPreference) findPreference(PREFERENCE_END_OF_LINES);
listPref.setSummary(listPref.getEntry());
listPref = (ListPreference) findPreference(PREFERENCE_ENCODING);
listPref.setSummary(listPref.getEntry());
listPref = (ListPreference) findPreference(PREFERENCE_MAX_RECENTS);
listPref.setSummary(listPref.getEntry());
listPref = (ListPreference) findPreference(PREFERENCE_MAX_UNDO_STACK);
listPref.setSummary(listPref.getEntry());
/*cbPref = (CheckBoxPreference) findPreference(PREFERENCE_USE_HOME_PAGE);
if (cbPref.isChecked()) {
cbPref.setSummaryOn(Settings.HOME_PAGE_PATH);
}*/
}
protected AdvancedEditText mSampleTED;
protected boolean mPreviousHP;
}