package ren.solid.ganhuoio.module.mine;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.content.ContextCompat;
import android.text.SpannableStringBuilder;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import io.reactivex.annotations.NonNull;
import io.reactivex.functions.Consumer;
import ren.solid.ganhuoio.R;
import ren.solid.ganhuoio.common.activity.SubActivity;
import ren.solid.ganhuoio.common.event.LoginEvent;
import ren.solid.ganhuoio.module.about.AboutActivity;
import ren.solid.ganhuoio.utils.AppUtils;
import ren.solid.ganhuoio.utils.AuthorityUtils;
import ren.solid.library.SettingCenter;
import ren.solid.library.fragment.base.BaseFragment;
import ren.solid.library.imageloader.ImageLoader;
import ren.solid.library.rx.RxBus;
import ren.solid.library.utils.SpannableStringUtils;
import ren.solid.library.utils.ToastUtils;
/**
* Created by _SOLID
* Date:2017/3/14
* Time:11:33
* Desc:
*/
public class MineFragment extends BaseFragment {
private TextView tv_username;
private ImageView iv_avatar;
private TextView tv_clear_cache;
@Override
protected void init() {
RxBus.getInstance()
.toObservable(LoginEvent.class)
.compose(this.<LoginEvent>bindToLifecycle())
.subscribe(new Consumer<LoginEvent>() {
@Override
public void accept(@NonNull LoginEvent loginEvent) throws Exception {
setUserInfo();
}
});
}
@Override
protected int setLayoutResourceID() {
return R.layout.fragment_mine;
}
@Override
protected void setUpView() {
iv_avatar = $(R.id.iv_avatar);
tv_username = $(R.id.tv_username);
tv_clear_cache = $(R.id.tv_clear_cache);
$(R.id.tv_my_collect).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!AuthorityUtils.isLogin()) {
startActivity(new Intent(getContext(), LoginActivity.class));
} else {
SubActivity.start(getContext(), getString(R.string.mine_collect), SubActivity.TYPE_COLLECT);
}
}
});
tv_username.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!AuthorityUtils.isLogin()) {
startActivity(new Intent(getContext(), LoginActivity.class));
}
}
});
$(R.id.tv_feedback).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppUtils.feedBack(getContext(), v);
}
});
$(R.id.tv_about).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getContext(), AboutActivity.class));
}
});
$(R.id.tv_logout).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppUtils.logOut(getContext(), new AppUtils.OnSuccessListener() {
@Override
public void onSuccess() {
setUserInfo();
}
});
}
});
tv_clear_cache.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppUtils.clearCache(getContext(), new SettingCenter.ClearCacheListener() {
@Override
public void onResult() {
ToastUtils.getInstance().showToast(getString(R.string.cache_clear_success));
tv_clear_cache.setText(getString(R.string.mine_cache_clear));
}
});
}
});
}
@Override
protected void setUpData() {
setUserInfo();
refresh();
}
@Override
public void refresh() {
SettingCenter.countDirSizeTask(new SettingCenter.CountDirSizeListener() {
@Override
public void onResult(long result) {
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(getString(R.string.mine_cache_clear));
builder.append("\n");
builder.append(SpannableStringUtils.format(getContext(), "(" + SettingCenter.formatFileSize(result) + ")", R.style.ByTextAppearance));
tv_clear_cache.setText(builder);
}
});
}
private void setUserInfo() {
if (AuthorityUtils.isLogin()) {
tv_username.setText(AuthorityUtils.getUserName());
ImageLoader.displayImage(iv_avatar, AuthorityUtils.getAvatar());
} else {
tv_username.setText(getString(R.string.mine_click_login));
iv_avatar.setImageDrawable(new ColorDrawable(ContextCompat.getColor(getContext(),
R.color.colorPrimaryDark)));
}
}
}