package com.example.qingyangdemo;

import java.io.File;
import com.example.qingyangdemo.base.AppManager;
import com.example.qingyangdemo.base.BaseApplication;
import com.example.qingyangdemo.common.FileUtil;
import com.example.qingyangdemo.common.UIHelper;
import com.example.qingyangdemo.common.UpdateManager;
import com.example.qingyangdemo.net.Constant;
import com.example.qingyangdemo.ui.IpSetDialog;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

/**
 * 系统设置类
 * 
 * @author 赵庆洋
 * 
 */
public class SettingActivity extends PreferenceActivity {

	private SharedPreferences mPreferences;

	private BaseApplication myApplication;

	// 设置Ip
	private Preference ipset;

	// 账户
	private Preference account;

	// 清除缓存
	private Preference cache;

	// 清除已下载数据
	private Preference down;

	// 是否启动应用检查更新
	private CheckBoxPreference checkup;

	// 是否开启提示声音
	private CheckBoxPreference voice;

	// 检查更新
	private Preference update;

	// 意见反馈
	private Preference feedback;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// 添加Activity到堆栈
		AppManager.getAppManager().addActivity(this);

		myApplication = (BaseApplication) getApplication();

		// 设置显示Preferences
		addPreferencesFromResource(R.xml.preferences);

		// 获得SharedPreferences
		mPreferences = PreferenceManager.getDefaultSharedPreferences(this);

		ListView localListView = getListView();
		localListView.setBackgroundColor(0);
		localListView.setCacheColorHint(0);
		((ViewGroup) localListView.getParent()).removeView(localListView);
		ViewGroup localViewGroup = (ViewGroup) getLayoutInflater().inflate(
				R.layout.setting_activity, null);
		((ViewGroup) localViewGroup.findViewById(R.id.setting_content))
				.addView(localListView, -1, -1);
		setContentView(localViewGroup);

		initView();

	}

	private void initView() {

		// 登陆/注销
		account = findPreference("account");

		if (myApplication.isLogin()) {
			account.setTitle(R.string.main_menu_logout);
		} else {
			account.setTitle(R.string.main_menu_login);
		}
		account.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				UIHelper.loginOrLogout(SettingActivity.this);

				if (myApplication.isLogin()) {
					account.setTitle(R.string.main_menu_logout);
				} else {
					account.setTitle(R.string.main_menu_login);
				}

				return true;
			}
		});

		// 设置Ip
		ipset = findPreference("ipset");

		ipset.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				Intent intent = new Intent(SettingActivity.this,
						IpSetDialog.class);

				intent.putExtra(IpSetDialog.IS_STRAT_MAIN, false);

				startActivity(intent);
				return true;
			}
		});

		// 提示声音
		voice = (CheckBoxPreference) findPreference("voice");

		voice.setChecked(myApplication.isVoice());

		if (myApplication.isVoice()) {
			voice.setSummary("已开启声音提示");
		} else {
			voice.setSummary("已关闭声音提示");
		}

		voice.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				myApplication.setConfigVoice(voice.isChecked());
				if (voice.isChecked()) {
					voice.setSummary("已开启声音提示");
				} else {
					voice.setSummary("已关闭声音提示");
				}
				return true;
			}
		});

		// 启动检查更新
		checkup = (CheckBoxPreference) findPreference("checkup");

		checkup.setChecked(myApplication.isCheckUp());

		checkup.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				myApplication.setConfigCheckUp(checkup.isChecked());
				return true;
			}
		});

		// 计算缓存大小
		long fileSize = 0;
		String cacheSize = "0KB";
		File filesDir = getFilesDir();
		File cacheDir = getCacheDir();

		fileSize += FileUtil.getDirSize(filesDir);
		fileSize += FileUtil.getDirSize(cacheDir);

		// 2.2版本才有将应用转移到sd卡的功能(当前版本大于2.2的版本)
		if (BaseApplication
				.isMethodsCompat(android.os.Build.VERSION_CODES.FROYO)) {
			File externalCache = getExternalCacheDir();
			fileSize += FileUtil.getDirSize(externalCache);
		}
		if (fileSize > 0) {
			cacheSize = FileUtil.formatFileSize(fileSize);
		}

		// 清除缓存
		cache = findPreference("cache");

		cache.setSummary(cacheSize);

		cache.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				UIHelper.clearAppCache(SettingActivity.this);
				cache.setSummary("0KB");
				return true;
			}
		});

		// 计算下载大小
		long downFileSize = 0;

		String downSize = "0KB";

		downFileSize = FileUtil.getDirSize(FileUtil
				.getDirectoryFile(Constant.DOWN_PATH));

		if (downFileSize > 0) {
			downSize = FileUtil.formatFileSize(downFileSize);
		}

		down = findPreference("down");

		down.setSummary(downSize);

		down.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				UIHelper.clearDownCache(SettingActivity.this);
				down.setSummary("0KB");
				return true;
			}
		});

		feedback = findPreference("feedback");

		feedback.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				UIHelper.showFeedBack(SettingActivity.this);
				return true;
			}
		});

		// 版本更新
		update = findPreference("update");

		update.setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				UpdateManager.getUpdateManager().checkAppUpdate(
						SettingActivity.this, true);
				return true;
			}
		});
	}

	public void back(View paramView) {
		finish();
	}

	@Override
	protected void onDestroy() {
		AppManager.getAppManager().finishActivity(this);
		super.onDestroy();
	}

}