package org.aisen.weibo.sina.ui.fragment.settings;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.support.bean.ApkInfo;
import org.aisen.weibo.sina.support.biz.BizLogic;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.text.TextUtils;
import com.alibaba.fastjson.JSON;
import com.m.common.context.GlobalContext;
import com.m.common.utils.ActivityHelper;
import com.m.common.utils.SystemUtility;
import com.m.common.utils.Utils;
import com.m.support.task.TaskException;
import com.m.support.task.WorkTask;
import com.m.ui.activity.BaseActivity;
import com.m.ui.utils.ViewUtils;
public class VersionSettingsFragment extends BasePreferenceFragment
implements OnPreferenceClickListener{
private Preference pVersion;// 检查版本
private Preference pGrade;// 给我评分
private ApkInfo mApkInfo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String apkInfoJson = ActivityHelper.getInstance().getShareData("apkInfo", null);
if (!TextUtils.isEmpty(apkInfoJson))
mApkInfo = JSON.parseObject(apkInfoJson, ApkInfo.class);
}
@Override
public void onResume() {
super.onResume();
refreshVersion();
}
private void refreshVersion() {
if (pVersion == null) {
pVersion = (Preference) (Preference) getPreferenceManager().findPreference("pVersion");
pVersion.setOnPreferenceClickListener(this);
if (ActivityHelper.getInstance().getBooleanShareData("newVersion", false))
pVersion.setIcon(R.drawable.skin_icon_new);
}
if (pGrade == null) {
pGrade = (Preference) (Preference) getPreferenceManager().findPreference("pGrade");
pGrade.setOnPreferenceClickListener(this);
}
pVersion.setTitle(R.string.settings_version_p);
pVersion.setSummary(String.format(getString(R.string.settings_current_version), SystemUtility.getVersionName(getActivity())));
if (mApkInfo != null && mApkInfo.getVersionCode() > SystemUtility.getVersionCode(getActivity())) {
pVersion.setTitle(R.string.settings_find_version);
pVersion.setSummary(String.format(getString(R.string.settings_version_summary),
SystemUtility.getVersionName(getActivity()), mApkInfo.getVersionName()));
}
}
@Override
public boolean onPreferenceClick(Preference preference) {
if ("pVersion".equals(preference.getKey())) {
if (mApkInfo != null && mApkInfo.getVersionCode() > SystemUtility.getVersionCode(getActivity())) {
showNewVersionDialog(getActivity(), mApkInfo, false);
}
else {
showVersionDialog(getActivity());
}
}
else if ("pGrade".equals(preference.getKey())) {
startMarket();
}
return true;
}
public static void showVersionDialog(final Activity context) {
VersionDialogFragment.launch(context);
}
public static void showNewVersionDialog(Activity context, final ApkInfo apkInfo, boolean ignoreAble) {
final Resources res = GlobalContext.getInstance().getResources();
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context)
.setTitle(String.format(res.getString(R.string.settings_new_version_remind), apkInfo.getVersionName()))
.setMessage(apkInfo.getDes().replace("\\", "").replace("n", "\n"))
.setNeutralButton(R.string.next_time_remind, null);
if (ignoreAble) {
dialogBuilder.setNegativeButton(R.string.donnot_remind, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityHelper.getInstance().putBooleanShareData("IgnoreNewVersion-" + apkInfo.getVersionCode(), true);
}
});
}
dialogBuilder.setPositiveButton(R.string.settings_update_now, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startMarket();
}
})
.show();
}
public static void startMarket() {
Uri uri = Uri.parse(String.format("market://details?id=%s", SystemUtility.getPackage(GlobalContext.getInstance())));
if (Utils.isIntentSafe(BaseActivity.getRunningActivity(), uri)) {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
GlobalContext.getInstance().startActivity(intent);
}
// 没有安装市场
else {
ViewUtils.showMessage(R.string.settings_error_market);
}
}
public static void checkVersion() {
new WorkTask<Void, Void, ApkInfo>() {
@Override
public ApkInfo workInBackground(Void... params) throws TaskException {
ApkInfo apkInfo = BizLogic.newInstance().getApkInfo();
ActivityHelper.getInstance().putShareData("apkInfo", JSON.toJSONString(apkInfo));
return apkInfo;
}
protected void onSuccess(ApkInfo result) {
super.onSuccess(result);
if (result.getVersionCode() > SystemUtility.getVersionCode(GlobalContext.getInstance())) {
ActivityHelper.getInstance().putBooleanShareData("newVersion", true);
if (!ActivityHelper.getInstance().getBooleanShareData("IgnoreNewVersion-" + result.getVersionCode(), false))
ActivityHelper.getInstance().putBooleanShareData("IgnoreNewVersion-" + result.getVersionCode(), false);
}
else {
ActivityHelper.getInstance().putBooleanShareData("newVersion", false);
}
};
}.execute();
}
}