package org.ntlab.acanthus_client.views.paint;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;

import org.ntlab.acanthus_client.R;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class SendScreenShotActivity extends Activity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send_screen_shot);
        // 全体キャプチャ
        Button captureAll = (Button)findViewById(R.id.capture_all);
        captureAll.setOnClickListener(this);

        // アイコン画像のみキャプチャ
        Button captureIcon = (Button)findViewById(R.id.capture_icon);
        captureIcon.setOnClickListener(this);

        // キャプチャした画像を添付してメールを送る
        Button sendMail = (Button)findViewById(R.id.send_mail);
        sendMail.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // 読み書きするファイル名を指定
        File file = new File(Environment.getExternalStorageDirectory() + "/capture.jpeg");
        // 指定したファイル名が無ければ作成する。
        file.getParentFile().mkdir();

        switch(v.getId()) {
            case R.id.capture_all:
                // 全体を撮る
                saveCapture(findViewById(android.R.id.content),file);
                break;
            case R.id.capture_icon:
                // View1を撮る
                saveCapture(findViewById(R.id.icon),file);
                break;
            case R.id.send_mail:
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_SEND);
                intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"s1871104@s.konan-u.ac.jp"});
                intent.setType("message/rfc822");
                intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
                startActivity(intent);

                break;
        }
    }

    /**
     * 撮ったキャプチャを保存
     * @param view
     * @param 書き込み先ファイルfile
     */
    public void saveCapture(View view, File file) {
        // キャプチャを撮る
        Bitmap capture = getViewCapture(view);
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(file, false);
            // 画像のフォーマットと画質と出力先を指定して保存
            capture.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException ie) {
                    fos = null;
                }
            }
        }
    }

    /**
     * キャプチャを撮る
     * @param 撮りたいview
     * @return 撮ったキャプチャ(Bitmap)
     */
    public Bitmap getViewCapture(View view) {
        view.setDrawingCacheEnabled(true);

        // Viewのキャプチャを取得
        Bitmap cache = view.getDrawingCache();
        if(cache == null){
            return null;
        }
        Bitmap screenShot = Bitmap.createBitmap(cache);
        view.setDrawingCacheEnabled(false);
        return screenShot;
    }

}