package com.smartalk.gank.presenter; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.util.Log; import com.smartalk.gank.R; import com.smartalk.gank.utils.FileUtil; import com.smartalk.gank.utils.ShareUtil; import com.smartalk.gank.view.IMeizhiView; import rx.Observable; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.schedulers.Schedulers; /** * Created by panl on 16/1/3. */ public class MeizhiPresenter extends BasePresenter<IMeizhiView> { public MeizhiPresenter(Context context, IMeizhiView iView) { super(context, iView); } @Override public void release() { if (subscription != null) subscription.unsubscribe(); } public void saveMeizhiImage(final Bitmap bitmap, final String title) { subscription = Observable.create(new Observable.OnSubscribe<Uri>() { @Override public void call(Subscriber<? super Uri> subscriber) { Uri uri = FileUtil.saveBitmapToSDCard(bitmap, title); if (uri == null) { subscriber.onError(new Exception(context.getString(R.string.girl_reject_your_request))); } else { subscriber.onNext(uri); subscriber.onCompleted(); } } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Uri>() { @Override public void call(Uri uri) { Intent scannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri); context.sendBroadcast(scannerIntent); iView.showSaveGirlResult(context.getString(R.string.save_girl_successfully)); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { iView.showSaveGirlResult(context.getString(R.string.girl_reject_your_request)); } }); } public void shareGirlImage(final Bitmap bitmap, final String title) { Observable.create(new Observable.OnSubscribe<Uri>() { @Override public void call(Subscriber<? super Uri> subscriber) { Uri uri = FileUtil.saveBitmapToSDCard(bitmap, title); if (uri == null) { Log.d("log", "uri is null"); subscriber.onError(new Exception(context.getString(R.string.girl_reject_your_request))); } else { subscriber.onNext(uri); subscriber.onCompleted(); } } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Uri>() { @Override public void call(Uri uri) { ShareUtil.shareImage(context, uri, context.getString(R.string.share_girl_to)); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { Log.d("log", "some thing is wrong"); iView.showSaveGirlResult(throwable.getMessage()); } }); } }