package cn.mutils.app.demo.ui;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.AttributeSet;
import java.util.List;
import cn.mutils.app.demo.R;
import cn.mutils.app.media.CropPhotoTask;
import cn.mutils.app.media.CropPhotoTask.CropPhotoListener;
import cn.mutils.app.media.MakeVideoTask;
import cn.mutils.app.media.MakeVideoTask.MakeVideoListener;
import cn.mutils.app.media.PickContactTask;
import cn.mutils.app.media.PickContactTask.PickContactListener;
import cn.mutils.app.media.PickPhotoTask;
import cn.mutils.app.media.PickPhotoTask.PickPhotoListener;
import cn.mutils.app.media.TakePhotoTask;
import cn.mutils.app.media.TakePhotoTask.TakePhotoListener;
import cn.mutils.app.ui.Alert;
import cn.mutils.app.ui.StateView;
import cn.mutils.app.ui.photo.PhotoActivity;
import cn.mutils.app.ui.photo.PhotoExtra;
import cn.mutils.app.ui.video.VideoActivity;
import cn.mutils.app.ui.video.VideoActivity.VideoExtra;
import cn.mutils.app.util.AppUtil;
import cn.mutils.core.annotation.event.Click;
import cn.mutils.core.annotation.res.SetContentView;
@SetContentView(R.layout.view_media)
public class MediaDemoView extends StateView {
public static final int REQUEST_CODE_PICK_CONTACT = 1000;
public static final int REQUEST_CODE_TAKE_PHOTO = 1001;
public static final int REQUEST_CODE_PICK_PHOTO = 1002;
public static final int REQUEST_CODE_CROP_PHOTO = 1003;
public static final int REQUEST_CODE_MAKE_VIDEO = 1004;
protected Uri mCropPhotoUri;
public MediaDemoView(Context context) {
super(context);
}
public MediaDemoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MediaDemoView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Click(R.id.pick_contact)
protected void onClickPickContact() {
PickContactTask task = new PickContactTask(this, REQUEST_CODE_PICK_CONTACT);
task.setListener(new PickContactListener() {
@Override
public void onComplete(String name, List<String> phones) {
Alert alert = new Alert(getContext());
alert.setTitle(name);
StringBuilder sb = new StringBuilder();
for (String phone : phones) {
if (sb.length() != 0) {
sb.append("\n");
}
sb.append(phone);
}
alert.setMessage(sb);
alert.show();
}
});
task.pickContact();
}
@Click(R.id.take_photo)
protected void onClickTakePhoto() {
TakePhotoTask task = new TakePhotoTask(this, REQUEST_CODE_TAKE_PHOTO);
task.setListener(new TakePhotoListener() {
@Override
public void onComplete(Uri uri) {
mCropPhotoUri = uri;
Intent intent = new Intent(getContext(), PhotoActivity.class);
PhotoExtra extra = new PhotoExtra();
extra.setPhotos(AppUtil.asArrayList(new String[]{uri.getPath()}));
extra.putTo(intent);
startActivity(intent);
}
});
task.takePhoto();
}
@Click(R.id.pick_photo)
protected void onClickPickPhoto() {
PickPhotoTask task = new PickPhotoTask(this, REQUEST_CODE_PICK_PHOTO);
task.setListener(new PickPhotoListener() {
@Override
public void onComplete(Uri uri) {
mCropPhotoUri = uri;
Intent intent = new Intent(getContext(), PhotoActivity.class);
PhotoExtra extra = new PhotoExtra();
extra.setPhotos(AppUtil.asArrayList(new String[]{uri.getPath()}));
extra.putTo(intent);
startActivity(intent);
}
});
task.pickPhoto();
}
@Click(R.id.crop_photo)
protected void onClickCropPhoto() {
if (mCropPhotoUri == null) {
toast("Please take or pick one photo before click me");
return;
}
CropPhotoTask task = new CropPhotoTask(this, REQUEST_CODE_CROP_PHOTO);
task.setListener(new CropPhotoListener() {
@Override
public void onComplete(Uri uri) {
Intent intent = new Intent(getContext(), PhotoActivity.class);
PhotoExtra extra = new PhotoExtra();
extra.setPhotos(AppUtil.asArrayList(new String[]{uri.getPath()}));
extra.putTo(intent);
startActivity(intent);
}
});
task.cropPhoto(mCropPhotoUri, 150, 150);
}
@Click(R.id.make_video)
protected void onClickMakeVideo() {
MakeVideoTask task = new MakeVideoTask(this, REQUEST_CODE_MAKE_VIDEO);
task.setListener(new MakeVideoListener() {
@Override
public void onComplete(Uri uri) {
Intent intent = new Intent(getContext(), VideoActivity.class);
VideoExtra extra = new VideoExtra();
extra.setUrl(uri.getPath());
extra.putTo(intent);
startActivity(intent);
}
});
task.makeVideo();
}
}