package com.gnod.geekr.ui.activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.widget.EditText;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.gnod.geekr.R;
import com.gnod.geekr.app.AppConfig;
import com.gnod.geekr.app.AppManager;
import com.gnod.geekr.tool.ImageHelper;
import com.gnod.geekr.tool.StringUtils;
import com.gnod.geekr.tool.ToastHelper;
import com.gnod.geekr.tool.manager.SettingManager;
import com.umeng.fb.UMFeedbackService;
import com.umeng.update.UmengUpdateAgent;
import com.umeng.update.UmengUpdateListener;
import com.umeng.update.UpdateResponse;
public class SettingActivity extends SherlockPreferenceActivity {
private CheckBoxPreference autoFetch;
private AppConfig config;
private Preference imgPath;
private CheckBoxPreference imgFetch;
private Preference notifiedCenter;
private Preference cleanImgCache;
private Preference cleanOtherCache;
private Preference feedback;
private Preference about;
private CheckBoxPreference showSplash;
private CheckBoxPreference menuAnim;
private Preference checkUPdate;
private Preference imgUploadQuality;
private Preference imgShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
addPreferencesFromResource(R.xml.preferences);
AppManager.getInstance().addActivity(this);
setTitle("设置");
config = (AppConfig) getApplication();
//基本设置
//首次进入自动加载
autoFetch = (CheckBoxPreference)findPreference("autofetch");
autoFetch.setChecked(config.isAutoFetch());
autoFetch.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
config.setAutoFetch(autoFetch.isChecked());
return true;
}
});
showSplash = (CheckBoxPreference)findPreference("showsplash");
showSplash.setChecked(config.isShowSplash());
showSplash.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
config.setShowSplash(showSplash.isChecked());
return true;
}
});
//通知中心
notifiedCenter = (Preference)findPreference("notification");
notifiedCenter.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference pref) {
Intent intent = new Intent(pref.getContext(), NotificationActivity.class);
pref.getContext().startActivity(intent);
return true;
}
});
//图片保存路径
imgPath = (Preference)findPreference("imgsavepath");
imgPath.setSummary(config.getImgPath());
imgPath.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Context context = preference.getContext();
final EditText editor = new EditText(context);
editor.setText(config.getImgFolder());
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("图片保存路径");
builder.setView(editor);
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String content = editor.getText().toString().trim();
if(!StringUtils.isNullOrEmpty(content)){
config.setImgFolder(content);
imgPath.setSummary(config.getImgPath());
}
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
return true;
}
});
//图片设置
//加载图片
imgFetch = (CheckBoxPreference)findPreference("imgfetch");
imgFetch.setChecked(config.isImgFetch());
imgFetch.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
config.setImgFetch(imgFetch.isChecked());
return true;
}
});
imgUploadQuality = (Preference)findPreference("uploadquality");
imgUploadQuality.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);
builder.setSingleChoiceItems(R.array.upload_pic_quality,
SettingManager.getUploadQuality(),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SettingManager.setUploadQuality(which);
dialog.dismiss();
}
});
builder.setCancelable(true);
builder.show();
return true;
}
});
//图片显示模式
imgShow = (Preference)findPreference("imgshow");
imgShow.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);
builder.setSingleChoiceItems(R.array.pic_show_model,
SettingManager.getPicShowModel(),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SettingManager.setPicShowModel(which);
dialog.dismiss();
}
});
builder.setCancelable(true);
builder.show();
return true;
}
});
//缓存设置
//清除图片缓存
cleanImgCache = (Preference)findPreference("cleanimgcache");
cleanImgCache.setSummary(ImageHelper.getCacheSize(config));
cleanImgCache.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference pref) {
AlertDialog.Builder builder = new AlertDialog.Builder(pref.getContext());
builder.setMessage("确认清除缓存?");
builder.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.arg1 == 1){
ToastHelper.show("清除缓存成功");
} else {
ToastHelper.show("清除缓存失败");
}
}
};
new Thread() {
@Override
public void run() {
Message msg = new Message();
try {
ImageHelper.clearCache(AppConfig.getAppContext());
msg.arg1 = 1;
} catch (Exception e) {
msg.arg1 = -1;
} finally {
handler.sendMessage(msg);
}
}
}.start();
cleanImgCache.setSummary("0KB");
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
return true;
}
});
//清除其它缓存
cleanOtherCache = (Preference)findPreference("cleanothercache");
cleanOtherCache.setSummary(config.getObjectCacheSize());
cleanOtherCache.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference pref) {
AlertDialog.Builder builder = new AlertDialog.Builder(pref.getContext());
builder.setMessage("确认清除缓存?");
builder.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.arg1 == 1){
ToastHelper.show("清除缓存成功");
} else {
ToastHelper.show("清除缓存失败");
}
}
};
new Thread() {
@Override
public void run() {
Message msg = new Message();
try {
config.clearObjectCache();
msg.arg1 = 1;
} catch (Exception e) {
msg.arg1 = -1;
} finally {
handler.sendMessage(msg);
}
}
}.start();
cleanOtherCache.setSummary("0KB");
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
return true;
}
});
//动画效果
//菜单动画效果
menuAnim = (CheckBoxPreference)findPreference("menuanimation");
menuAnim.setChecked(config.isShowMenuAnim());
menuAnim.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
config.setMenuAnim(menuAnim.isChecked());
return true;
}
});
//其它
checkUPdate = (Preference)findPreference("checkupdate");
checkUPdate.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference pref) {
final Context context = pref.getContext();
UmengUpdateAgent.update(context);
UmengUpdateAgent.setUpdateAutoPopup(false);
UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {
@Override
public void onUpdateReturned(int updateStatus,UpdateResponse updateInfo) {
switch (updateStatus) {
case 0: // has update
UmengUpdateAgent.showUpdateDialog(context, updateInfo);
break;
case 1: // has no update
Toast.makeText(context, "已经是最新版本", Toast.LENGTH_SHORT)
.show();
break;
case 2: // none wifi
Toast.makeText(context, "没有wifi连接, 只在wifi下更新", Toast.LENGTH_SHORT)
.show();
break;
case 3: // time out
Toast.makeText(context, "超时", Toast.LENGTH_SHORT)
.show();
break;
}
}
});
return true;
}
});
//意见反馈
feedback = (Preference)findPreference("feedback");
feedback.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference pref) {
UMFeedbackService.setGoBackButtonVisible();
UMFeedbackService.openUmengFeedbackSDK(pref.getContext());
// Intent intent = new Intent(pref.getContext(), PostStatusActivity.class);
// intent.putExtra("Type", "PostStatus");
// intent.putExtra("Content", "#Geekr Feeback#");
// startActivity(intent);
return true;
}
});
about = (Preference)findPreference("about");
about.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference pref) {
Intent intent = new Intent(pref.getContext(), AboutActivity.class);
startActivity(intent);
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.menu_default, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
AppManager.getInstance().finishActivity(this);
}
}