package com.netease.nim.uikit.common.media.picker;

import android.app.Activity;
import android.content.Context;

import com.netease.nim.uikit.R;
import com.netease.nim.uikit.common.media.picker.activity.PickImageActivity;
import com.netease.nim.uikit.common.ui.dialog.CustomAlertDialog;
import com.netease.nim.uikit.common.util.storage.StorageType;
import com.netease.nim.uikit.common.util.storage.StorageUtil;
import com.netease.nim.uikit.common.util.string.StringUtil;

/**
 * Created by huangjun on 2015/9/22.
 */
public class PickImageHelper {

    public static class PickImageOption {
        /**
         * 图片选择器标题
         */
        public int titleResId = R.string.choose;

        /**
         * 是否多选
         */
        public boolean multiSelect = true;

        /**
         * 最多选多少张图（多选时有效）
         */
        public int multiSelectMaxCount = 9;

        /**
         * 是否进行图片裁剪(图片选择模式：false / 图片裁剪模式：true)
         */
        public boolean crop = false;

        /**
         * 图片裁剪的宽度（裁剪模式时有效）
         */
        public int cropOutputImageWidth = 720;

        /**
         * 图片裁剪的高度（裁剪模式时有效）
         */
        public int cropOutputImageHeight = 720;

        /**
         * 图片选择保存路径
         */
        public String outputPath = StorageUtil.getWritePath(StringUtil.get32UUID() + ".jpg", StorageType.TYPE_TEMP);
    }

    /**
     * 打开图片选择器
     */
    public static void pickImage(final Context context, final int requestCode, final PickImageOption option) {
        if (context == null) {
            return;
        }

        CustomAlertDialog dialog = new CustomAlertDialog(context);
        dialog.setTitle(option.titleResId);

        dialog.addItem(context.getString(R.string.input_panel_take), new CustomAlertDialog.onSeparateItemClickListener() {
            @Override
            public void onClick() {
                int from = PickImageActivity.FROM_CAMERA;
                if (!option.crop) {
                    PickImageActivity.start((Activity) context, requestCode, from, option.outputPath, option.multiSelect, 1,
                            true, false, 0, 0);
                } else {
                    PickImageActivity.start((Activity) context, requestCode, from, option.outputPath, false, 1,
                            false, true, option.cropOutputImageWidth, option.cropOutputImageHeight);
                }

            }
        });

        dialog.addItem(context.getString(R.string.choose_from_photo_album), new CustomAlertDialog
                .onSeparateItemClickListener() {
            @Override
            public void onClick() {
                int from = PickImageActivity.FROM_LOCAL;
                if (!option.crop) {
                    PickImageActivity.start((Activity) context, requestCode, from, option.outputPath, option.multiSelect,
                            option.multiSelectMaxCount, true, false, 0, 0);
                } else {
                    PickImageActivity.start((Activity) context, requestCode, from, option.outputPath, false, 1,
                            false, true, option.cropOutputImageWidth, option.cropOutputImageHeight);
                }

            }
        });

        dialog.show();
    }
}
