package com.troy.xifan.activity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import butterknife.BindView;
import butterknife.ButterKnife;
import com.avos.avoscloud.feedback.FeedbackAgent;
import com.chenenyu.router.Router;
import com.chenenyu.router.annotation.Route;
import com.google.gson.Gson;
import com.troy.xifan.App;
import com.troy.xifan.BuildConfig;
import com.troy.xifan.R;
import com.troy.xifan.config.Constants;
import com.troy.xifan.manage.UserHolder;
import com.troy.xifan.model.response.AppVersionInfoRes;
import com.troy.xifan.service.DownLoadApkService;
import com.troy.xifan.util.UIUtils;
import com.troy.xifan.util.Utils;
import im.fir.sdk.FIR;
import im.fir.sdk.VersionCheckCallback;
/**
* Created by chenlongfei on 2017/1/25.
*/
@Route(Constants.Router.SETTINGS)
public class SettingsActivity extends BaseActivity {
@BindView(R.id.toolbar) Toolbar mToolbar;
@BindView(R.id.layout_logout) View mViewLogout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
ButterKnife.bind(this);
initViews();
}
@Override
protected void initViews() {
mToolbar.setTitle(getString(R.string.title_settings));
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
initFragment();
initListeners();
}
private void initListeners() {
mViewLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UIUtils.showDialog(SettingsActivity.this, getString(R.string.title_tips),
getString(R.string.text_logout_tips), new UIUtils.OnDialogListener() {
@Override
public void onConfirm() {
UserHolder.getInstance().cleanUser();
Router.build(Constants.Router.LOGIN).go(SettingsActivity.this);
App.getInstance().cleanActivityList();
}
@Override
public void onCancel() {
}
});
}
});
}
private void initFragment() {
getFragmentManager().beginTransaction()
.replace(R.id.content, new SettingsFragment())
.commit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
public static class SettingsFragment extends PreferenceFragment
implements Preference.OnPreferenceClickListener {
private Resources mResources;
private Preference mCleanCachePre;
private Preference mFeedbackPre;
private Preference mCheckUpdatePre;
private Preference mAboutPre;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initPreference();
}
private void initPreference() {
mResources = getResources();
addPreferencesFromResource(R.xml.preference);
//mCleanCachePre = findPreference(mResources.getString(R.string.text_clean_cache));
mFeedbackPre = findPreference(mResources.getString(R.string.text_feedback));
mFeedbackPre.setOnPreferenceClickListener(this);
mCheckUpdatePre = findPreference(mResources.getString(R.string.text_check_update));
mCheckUpdatePre.setOnPreferenceClickListener(this);
mAboutPre = findPreference(getString(R.string.text_about));
mAboutPre.setOnPreferenceClickListener(this);
}
@Override
public boolean onPreferenceClick(Preference preference) {
String key = preference.getKey();
if (mResources.getString(R.string.text_feedback).equals(key)) {
FeedbackAgent agent = new FeedbackAgent(getActivity());
agent.startDefaultThreadActivity();
} else if (getString(R.string.text_check_update).equals(key)) {
checkUpdate();
} else if (getString(R.string.text_about).equals(key)) {
UIUtils.showToast(getActivity(), Utils.getVersionName());
}
return false;
}
private void checkUpdate() {
FIR.checkForUpdateInFIR(Constants.Fir.FIR_TOKEN, new VersionCheckCallback() {
@Override
public void onSuccess(String versionJson) {
AppVersionInfoRes appVersionInfo =
new Gson().fromJson(versionJson, AppVersionInfoRes.class);
String firVersion = appVersionInfo.getVersionShort().replaceAll("[.]", "");
String currentVersion = BuildConfig.VERSION_NAME.replaceAll("[.]", "");
if (Integer.parseInt(firVersion) > Integer.parseInt(currentVersion)) {
showAppUpdateDialog(appVersionInfo);
} else {
UIUtils.showOkDialog(getActivity(), getString(R.string.title_check_upate),
getString(R.string.text_not_need_update));
}
}
@Override
public void onFail(Exception exception) {
UIUtils.showToast(getActivity(), getString(R.string.text_check_update_fail));
}
@Override
public void onStart() {
UIUtils.showToast(getActivity(), getString(R.string.text_checking_update));
}
@Override
public void onFinish() {
}
});
}
private void showAppUpdateDialog(final AppVersionInfoRes appVersionInfo) {
UIUtils.showDialog(getActivity(), getString(R.string.title_check_upate),
appVersionInfo.getChangelog(), new UIUtils.OnDialogListener() {
@Override
public void onConfirm() {
Intent serviceIntent =
new Intent(getActivity(), DownLoadApkService.class);
serviceIntent.putExtra(DownLoadApkService.EXTRA_URL,
appVersionInfo.getInstallUrl());
getActivity().startService(serviceIntent);
}
@Override
public void onCancel() {
}
});
}
}
}