package com.thankcreate.care.preference;
import com.hp.hpl.sparta.xpath.BooleanExpr;
import com.markupartist.android.widget.ActionBar;
import com.thankcreate.care.App;
import com.thankcreate.care.AppConstants;
import com.thankcreate.care.BaseActivity;
import com.thankcreate.care.R;
import com.thankcreate.care.R.layout;
import com.thankcreate.care.R.menu;
import com.thankcreate.care.account.AccountActivity;
import com.thankcreate.care.password.PasswordActivity;
import com.thankcreate.care.password.PasswordSetActivity;
import com.thankcreate.care.rss.RssSetActivity;
import com.thankcreate.care.service.NewsPollingService;
import com.thankcreate.care.tool.misc.MathTool;
import com.thankcreate.care.tool.misc.PreferenceHelper;
import com.umeng.fb.UMFeedbackService;
import android.net.Uri;
import android.os.Bundle;
import android.os.SystemClock;
import android.R.integer;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.ToggleButton;
public class PreferenceActivity extends BaseActivity {
private ActionBar actionBar;
private ToggleButton toggleUsePassword;
private ToggleButton toggleUseSharedPicture;
private ToggleButton toggleUsePolling;
private ToggleButton toggleUseBlessingPage;
private RelativeLayout layoutUsePolling;
private RelativeLayout layoutGotoSiteLayout;
private RelativeLayout layoutFeedback;
private RelativeLayout layoutAboutLayout;
private int pollingSettingSelected = 0;
private long miliArray[] = { 10 * 60 * 1000, 20 * 60 * 1000, 30 * 60 * 1000, 60 * 60 * 1000, 0};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preference_preference);
initActionBar();
initControl();
}
private void initPollingSettingSelected() {
SharedPreferences pref = App.getAppContext().getSharedPreferences(
AppConstants.PREFERENCES_NAME, Context.MODE_APPEND);
long savedPollingTime = pref.getLong("Global_PollingTime", 30 * 60 * 1000);
for(int i = 0; i < miliArray.length; i++)
{
if(miliArray[i] == savedPollingTime)
{
pollingSettingSelected = i;
return;
}
}
// 如果全都不匹配,设为不轮询
pollingSettingSelected = miliArray.length - 1;
}
@Override
protected void onResume() {
super.onResume();
initControlContent();
}
private void initActionBar() {
actionBar = (ActionBar) findViewById(R.id.actionbar);
actionBar.setTitle("设置");
actionBar.SetTitleLogo(R.drawable.tab_settings);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_preference, menu);
return false;
}
private void initControl() {
// 启动密码
SharedPreferences pref = App.getAppContext().getSharedPreferences(
AppConstants.PREFERENCES_NAME, Context.MODE_APPEND);
final Editor edit = pref.edit();
toggleUsePassword = (ToggleButton) findViewById(R.id.preference_user_password_toggle);
toggleUsePassword.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ToggleButton btn = (ToggleButton) v;
boolean isChecked = btn.isChecked();
if (isChecked) {
// 这里不能直接设为true,要等真正把密码设置正确了,才能置为true
// edit.putString("Global_UsePassword", "True");
Intent intent = new Intent();
intent.setClass(PreferenceActivity.this,
PasswordSetActivity.class);
startActivity(intent);
} else
edit.putString("Global_UsePassword", "False");
edit.commit();
}
});
// 是否显示转发图
toggleUseSharedPicture = (ToggleButton) findViewById(R.id.preference_show_forward_pic_toggle);
toggleUseSharedPicture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ToggleButton btn = (ToggleButton) v;
boolean isChecked = btn.isChecked();
if (isChecked)
edit.putString("Global_NeedFetchImageInRetweet", "True");
else
edit.putString("Global_NeedFetchImageInRetweet", "False");
edit.commit();
}
});
// 是否在启动时显示祝福心语
toggleUseBlessingPage = (ToggleButton) findViewById(R.id.preference_show_blessing_when_startup);
toggleUseBlessingPage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ToggleButton btn = (ToggleButton) v;
boolean isChecked = btn.isChecked();
if (isChecked)
edit.putString("Global_UseBlessingPage", "True");
else
edit.putString("Global_UseBlessingPage", "False");
edit.commit();
}
});
// 推送
layoutUsePolling = (RelativeLayout) findViewById(R.id.preference_use_polling_layout);
layoutUsePolling.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
usePollingLayoutClicked();
}
});
toggleUsePolling = (ToggleButton) findViewById(R.id.preference_use_polling_toggle);
toggleUsePolling.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ToggleButton btn = (ToggleButton) v;
boolean isChecked = btn.isChecked();
setPolling(isChecked);
}
});
// 访问网站
layoutGotoSiteLayout = (RelativeLayout) findViewById(R.id.preference_goto_site);
layoutGotoSiteLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri
.parse("http://www.care4only1.com");
intent.setData(content_url);
startActivity(intent);
}
});
// 意见反馈
layoutFeedback = (RelativeLayout) findViewById(R.id.preference_feedback);
layoutFeedback.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
UMFeedbackService.openUmengFeedbackSDK(PreferenceActivity.this);
}
});
// 关于
layoutAboutLayout = (RelativeLayout) findViewById(R.id.preference_about);
layoutAboutLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(PreferenceActivity.this,
PreferenceAboutActivity.class);
startActivity(intent);
}
});
}
private void initControlContent() {
SharedPreferences pref = App.getAppContext().getSharedPreferences(
AppConstants.PREFERENCES_NAME, Context.MODE_APPEND);
String userPassword = pref.getString("Global_UsePassword", "False");
if (userPassword.equalsIgnoreCase("True")) {
toggleUsePassword.setChecked(true);
} else {
toggleUsePassword.setChecked(false);
}
String usePolling = pref.getString("Global_UsePolling", "True");
if(usePolling.equalsIgnoreCase("True")) {
toggleUsePolling.setChecked(true);
} else {
toggleUsePolling.setChecked(false);
}
String useBlessingPageString = pref.getString("Global_UseBlessingPage", "True");
if(useBlessingPageString.equalsIgnoreCase("True")) {
toggleUseBlessingPage.setChecked(true);
} else {
toggleUseBlessingPage.setChecked(false);
}
String useSharedPicture = pref.getString(
"Global_NeedFetchImageInRetweet", "True");
if (useSharedPicture.equalsIgnoreCase("True")) {
toggleUseSharedPicture.setChecked(true);
} else {
toggleUseSharedPicture.setChecked(false);
}
}
// 这个函数是从用户点击toggle的事件中进来的
private void setPolling(boolean needPolling) {
PendingIntent alarmSender;
alarmSender = PendingIntent.getService(this, 0, new Intent(this,
NewsPollingService.class), 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
SharedPreferences pref = App.getAppContext().getSharedPreferences(
AppConstants.PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
if (needPolling) {
editor.putString("Global_UsePolling", "True");
editor.putLong("Global_PollingTime", AppConstants.DEFAULT_POLLING_INTERVAL);
editor.commit();
long interval = AppConstants.DEFAULT_POLLING_INTERVAL;
long firstTime = SystemClock.elapsedRealtime() + interval;
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime , interval, alarmSender);
} else {
editor.putString("Global_UsePolling", "False");
editor.putLong("Global_PollingTime", 0);
editor.commit();
am.cancel(alarmSender);
}
}
private void usePollingLayoutClicked()
{
initPollingSettingSelected();
new AlertDialog.Builder(this)
.setIcon(R.drawable.thumb_clock)
.setTitle("设置查询间隔")
.setSingleChoiceItems(R.array.array_polling_time,
pollingSettingSelected, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
pollingSettingSelected = whichButton;
}
})
.setPositiveButton(R.string.dialog_confirm,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
setPollingTime(miliArray[pollingSettingSelected]);
}
})
.setNegativeButton(R.string.dialog_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
}
}).create().show();
}
/**
* 0 说明是不轮询
*/
private void setPollingTime(Long time)
{
PendingIntent alarmSender;
alarmSender = PendingIntent.getService(this, 0, new Intent(this,
NewsPollingService.class), 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
SharedPreferences pref = App.getAppContext().getSharedPreferences(
AppConstants.PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
if(time == 0)
{
editor.putString("Global_UsePolling", "False");
editor.putLong("Global_PollingTime", 0);
toggleUsePolling.setChecked(false);
am.cancel(alarmSender);
}
else
{
editor.putString("Global_UsePolling", "True");
editor.putLong("Global_PollingTime", time);
toggleUsePolling.setChecked(true);
long firstTime = SystemClock.elapsedRealtime() + time;
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime, time, alarmSender);
}
editor.commit();
}
}