package party.danyang.nationalgeographic.ui;
import android.content.DialogInterface;
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.CompoundButton;
import com.umeng.analytics.MobclickAgent;
import io.realm.Realm;
import party.danyang.nationalgeographic.R;
import party.danyang.nationalgeographic.databinding.ActivitySettingsBinding;
import party.danyang.nationalgeographic.databinding.LayoutDialogInputBinding;
import party.danyang.nationalgeographic.ui.base.ToolbarActivity;
import party.danyang.nationalgeographic.utils.SettingsModel;
import party.danyang.nationalgeographic.utils.Utils;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
public class SettingsActivity extends ToolbarActivity {
private ActivitySettingsBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_settings);
initViews();
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
private void initViews() {
binding.setWifiOnly(SettingsModel.getWifiOnly(this));
binding.setDoubleClickExit(SettingsModel.getDoubleClickExit(this));
binding.setCacheSize(SettingsModel.getCacheSize(this));
binding.setAccelerate(SettingsModel.getAccelerate(this));
binding.setCustomImageSize(SettingsModel.getAccelerateImageSize(this));
binding.setClicks(this);
setupToolbar(binding.toolbarContent);
}
//wifi only
public void onClickWifiOnly(View view) {
binding.setWifiOnly(!binding.getWifiOnly());
}
public void onCheckChangedWifiOnly(CompoundButton v, boolean checked) {
SettingsModel.setWifiOnly(this, checked);
}
public void onClickDoubleClickExit(View view) {
binding.setDoubleClickExit(!binding.getDoubleClickExit());
}
public void onCheckChangedDoubleClickExit(CompoundButton v, boolean checked) {
binding.setDoubleClickExit(checked);
SettingsModel.setDoubleClickExit(this, checked);
}
//七牛云加速
public void onClickAccelerate(View view) {
binding.setAccelerate(!binding.getAccelerate());
}
public void onCheckChangedAccelerate(CompoundButton v, boolean checked) {
binding.setAccelerate(checked);
if (!checked) {
//恢复默认值
SettingsModel.setAccelerateImageSize(this, 1000);
binding.setCustomImageSize(1000);
}
SettingsModel.setAccelerate(this, checked);
}
public void onClickAccelerateCustomImageSize(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogTheme);
final LayoutDialogInputBinding inputBinding = DataBindingUtil
.inflate(getLayoutInflater(), R.layout.layout_dialog_input, null, false);
inputBinding.input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length() <= 0) {
inputBinding.inputLayout.setErrorEnabled(false);
return;
}
int value = Integer.valueOf(charSequence.toString());
if (value > 2000) {
if (value > 4000)
inputBinding.inputLayout.setError("太大啦,为了app的流畅,已自动调回默认值1000啦");
else
inputBinding.inputLayout.setError("设成" + charSequence + "在查看某些大图的时候可能会有卡顿哦");
} else if (value < 800) {
if (value < 500)
inputBinding.inputLayout.setError("太小啦,已自动调回默认值1000啦");
else
inputBinding.inputLayout.setError("设成" + charSequence + "在看图时会很模糊的哦");
} else {
inputBinding.inputLayout.setErrorEnabled(false);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
builder.setView(inputBinding.getRoot());
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (inputBinding.input.getText().toString().length() <= 0) {
return;
}
int value = Integer.valueOf(inputBinding.input.getText().toString());
if (value > 4000 || value < 500) {
value = 1000;
}
SettingsModel.setAccelerateImageSize(SettingsActivity.this, value);
binding.setCustomImageSize(value);
dialogInterface.dismiss();
}
});
builder.setNegativeButton(R.string.cancel, null);
builder.show();
}
//clear cache
public void onClickClearCache(View view) {
clearCache();
}
private void clearCache() {
String sharePath = getExternalFilesDir(Environment.DIRECTORY_PICTURES) != null ?
getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath() : null;
Utils.deleteFileObservable(new String[]{getString(R.string.dir_picasso_cache),
sharePath})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {
binding.setCacheSize(SettingsModel.getCacheSize(SettingsActivity.this));
}
@Override
public void onError(Throwable e) {
Log.e("clear cache", e.toString());
}
@Override
public void onNext(Boolean aBoolean) {
Realm realm = Realm.getDefaultInstance();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.deleteAll();
}
});
realm.close();
}
});
}
// public void onClickCheckUpdate(View view) {
// appUpdater = new AppUpdater(this)
// .setUpdateFrom(UpdateFrom.XML)
// .setUpdateXML("https://raw.githubusercontent.com/dreamcontinue/Lavender/master/app/update-changelog.xml")
// .setDisplay(Display.DIALOG)
// .setTitleOnUpdateAvailable("")
// .setTitleOnUpdateNotAvailable("")
// .showAppUpdated(true);
// appUpdater.start();
// }
public void onClickAppInfo(View view) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.fromParts("package", getPackageName(), null));
startActivity(intent);
}
}