package com.cundong.izhihu.activity;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceManager;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
import com.cundong.izhihu.Constants;
import com.cundong.izhihu.R;
import com.cundong.izhihu.util.PhoneUtils;
/**
* 类说明: 用于兼容Android2.3的设置页
*
* by:http://stackoverflow.com/questions/10186697/preferenceactivity-android-4-0-and-earlier
*
* @date 2014-9-20
* @version 1.0
*/
@SuppressWarnings("deprecation")
public class PrefsActivity extends SherlockPreferenceActivity implements
OnPreferenceClickListener, OnPreferenceChangeListener {
private static final String PREFERENCES_ABOUT = "about";
private static final String PREFERENCE_VERSION = "version";
private static final String PREFERENCE_NOIMAGE_NOWIFI = "noimage_nowifi?";
private static final String PREFERENCE_DARK_THEME = "dark_theme?";
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences mPerferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean isDarkTheme = mPerferences.getBoolean("dark_theme?", false);
if (isDarkTheme) {
setTheme(R.style.Theme_Daily_AppTheme_Dark);
} else {
setTheme(R.style.Theme_Daily_AppTheme_Light);
}
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
findPreference(PREFERENCES_ABOUT).setOnPreferenceClickListener(this);
findPreference(PREFERENCE_VERSION).setOnPreferenceClickListener(this);
findPreference(PREFERENCE_NOIMAGE_NOWIFI)
.setOnPreferenceChangeListener(this);
findPreference(PREFERENCE_DARK_THEME)
.setOnPreferenceChangeListener(this);
boolean noImgnoWifi = PreferenceManager.getDefaultSharedPreferences(
this).getBoolean(PREFERENCE_NOIMAGE_NOWIFI, false);
findPreference(PREFERENCE_NOIMAGE_NOWIFI).setDefaultValue(noImgnoWifi);
boolean darkTheme = PreferenceManager.getDefaultSharedPreferences(
this).getBoolean(PREFERENCE_DARK_THEME, false);
findPreference(PREFERENCE_DARK_THEME).setDefaultValue(darkTheme);
}
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference.getKey().equals(PREFERENCES_ABOUT)) {
showDialog(false);
} else if (preference.getKey().equals(PREFERENCE_VERSION)) {
showDialog(true);
}
return false;
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference.getKey().equals(PREFERENCE_NOIMAGE_NOWIFI)) {
if (newValue instanceof Boolean) {
Boolean boolVal = (Boolean) newValue;
SharedPreferences mPerferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor mEditor = mPerferences.edit();
mEditor.putBoolean(PREFERENCE_NOIMAGE_NOWIFI, boolVal);
mEditor.commit();
}
return true;
} else if (preference.getKey().equals(PREFERENCE_DARK_THEME)) {
if (newValue instanceof Boolean) {
Boolean boolVal = (Boolean) newValue;
SharedPreferences mPerferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor mEditor = mPerferences.edit();
mEditor.putBoolean(PREFERENCE_DARK_THEME, boolVal);
mEditor.commit();
recreateActivity();
}
return true;
}
return false;
}
private void showDialog( boolean isVersion ) {
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(true);
dialog.setContentView(R.layout.dialog_version);
TextView textView = (TextView) dialog.findViewById(R.id.dialog_text);
textView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
dialog.dismiss();
}
});
if (isVersion) {
String data = getResources().getString(R.string.setting_aboutme_version);
data = String.format(data,
PhoneUtils.getApplicationName(this),
PhoneUtils.getPackageInfo(this).versionName);
textView.setText(data);
} else {
String title = new StringBuilder().append(PhoneUtils.getApplicationName(this) ).append("<br/>").toString();
String subTitle = new StringBuilder().append(getResources().getString(R.string.app_sub_name)).append("<br/>").toString();
String author = new StringBuilder().append("@").append(getResources().getString(R.string.app_author)).toString();
String githubUrl = new StringBuilder().append("<a href='")
.append(Constants.GITGUB_PROJECT)
.append("'>")
.append(Constants.GITGUB_PROJECT)
.append("</a>")
.append("<br/>")
.toString();
String data = getResources().getString(R.string.setting_aboutme_text);
data = String.format(data,
title,
subTitle,
githubUrl,
author);
CharSequence charSequence = Html.fromHtml(data);
textView.setText(charSequence);
}
textView.setMovementMethod(LinkMovementMethod.getInstance());
dialog.show();
}
@SuppressLint("NewApi")
public void recreateActivity() {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
finish();
startActivity(getIntent());
} else {
recreate();
}
}
}, 1);
}
}