package com.codeest.geeknews.ui.gank.activity;
import android.Manifest;
import android.content.Intent;
import android.graphics.Bitmap;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.codeest.geeknews.R;
import com.codeest.geeknews.app.App;
import com.codeest.geeknews.app.Constants;
import com.codeest.geeknews.base.SimpleActivity;
import com.codeest.geeknews.model.bean.RealmLikeBean;
import com.codeest.geeknews.model.db.RealmHelper;
import com.codeest.geeknews.util.ShareUtil;
import com.codeest.geeknews.util.SystemUtil;
import com.codeest.geeknews.util.ToastUtil;
import com.tbruyelle.rxpermissions2.RxPermissions;
import butterknife.BindView;
import io.reactivex.functions.Consumer;
import uk.co.senab.photoview.PhotoViewAttacher;
/**
* Created by codeest on 16/8/20.
*/
public class GirlDetailActivity extends SimpleActivity {
@BindView(R.id.tool_bar)
Toolbar toolBar;
@BindView(R.id.iv_girl_detail)
ImageView ivGirlDetail;
private static int ACTION_SAVE = 0x00;
private static int ACTION_SHARE = 0x01;
Bitmap bitmap;
RxPermissions rxPermissions;
RealmHelper mRealmHelper;
PhotoViewAttacher mAttacher;
MenuItem menuItem;
String url;
String id;
boolean isLiked;
@Override
protected int getLayout() {
return R.layout.activity_girl_detail;
}
@Override
protected void initEventAndData() {
setToolBar(toolBar,"");
mRealmHelper = App.getAppComponent().realmHelper();
Intent intent = getIntent();
url = intent.getExtras().getString(Constants.IT_GANK_GRIL_URL);
id = intent.getExtras().getString(Constants.IT_GANK_GRIL_ID);
if (url != null) {
Glide.with(mContext).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
bitmap = resource;
ivGirlDetail.setImageBitmap(resource);
mAttacher = new PhotoViewAttacher(ivGirlDetail);
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.girl_menu,menu);
menuItem = menu.findItem(R.id.action_like);
setLikeState(mRealmHelper.queryLikeId(id));
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.action_like:
if(isLiked) {
item.setIcon(R.mipmap.ic_toolbar_like_n);
mRealmHelper.deleteLikeBean(this.id);
} else {
item.setIcon(R.mipmap.ic_toolbar_like_p);
RealmLikeBean bean = new RealmLikeBean();
bean.setId(this.id);
bean.setImage(url);
bean.setType(Constants.TYPE_GIRL);
bean.setTime(System.currentTimeMillis());
mRealmHelper.insertLikeBean(bean);
}
break;
case R.id.action_save:
checkPermissionAndAction(ACTION_SAVE);
break;
case R.id.action_share:
checkPermissionAndAction(ACTION_SHARE);
break;
}
return super.onOptionsItemSelected(item);
}
private void setLikeState(boolean state) {
if(state) {
menuItem.setIcon(R.mipmap.ic_toolbar_like_p);
isLiked = true;
} else {
menuItem.setIcon(R.mipmap.ic_toolbar_like_n);
isLiked = false;
}
}
@Override
public void onBackPressedSupport() {
if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
pop();
} else {
finishAfterTransition();
}
}
private void checkPermissionAndAction(final int action) {
if (rxPermissions == null) {
rxPermissions = new RxPermissions(this);
}
rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean granted) {
if (granted) {
if (action == ACTION_SAVE) {
SystemUtil.saveBitmapToFile(mContext, url, bitmap, ivGirlDetail, false);
} else if (action == ACTION_SHARE) {
ShareUtil.shareImage(mContext, SystemUtil.saveBitmapToFile(mContext, url, bitmap, ivGirlDetail, true), "分享一只妹纸");
}
} else {
ToastUtil.shortShow("获取写入权限失败");
}
}
});
}
}