package cc.winboll.studio.apputils;

/**
 * @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
 * @Date 2025/09/22 07:09
 * @Describe 二维码生成窗口
 */
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.journeyapps.barcodescanner.BarcodeEncoder;

public class QRGeneratorActivity extends Activity {
	public static final String TAG = "QrGeneratorActivity";

	// 控件引用
	private EditText etInputText;
	private ImageView ivQrPreview;
	private Button btnGenerateQr;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_qrgenerator);

		// 初始化控件
		initViews();
		// 设置按钮点击事件
		setGenerateClickListener();
	}

	/**
	 * 初始化布局控件
	 */
	private void initViews() {
		etInputText = findViewById(R.id.et_input_text);
		ivQrPreview = findViewById(R.id.iv_qr_preview);
		btnGenerateQr = findViewById(R.id.btn_generate_qr);
	}

	/**
	 * 设置生成按钮点击事件：获取输入文字 → 生成二维码 → 显示到 ImageView
	 */
	private void setGenerateClickListener() {
		btnGenerateQr.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View v) {
					// 1. 获取输入框文字（去除前后空格）
					String inputText = etInputText.getText().toString().trim();

					// 2. 空输入判断
					if (inputText.isEmpty()) {
						Toast.makeText(QRGeneratorActivity.this, "请先输入要生成二维码的文字", Toast.LENGTH_SHORT).show();
						return;
					}

					// 3. 生成二维码 Bitmap（宽高 500px，可调整）
					Bitmap qrBitmap = generateQrCodeBitmap(inputText, 500, 500);

					// 4. 显示二维码到 ImageView
					if (qrBitmap != null) {
						ivQrPreview.setImageBitmap(qrBitmap);
					} else {
						Toast.makeText(QRGeneratorActivity.this, "二维码生成失败，请重试", Toast.LENGTH_SHORT).show();
					}
				}
			});
	}

	/**
	 * 核心方法：生成二维码 Bitmap
	 * @param content 二维码内容（输入的文字）
	 * @param width 二维码宽度（px）
	 * @param height 二维码高度（px）
	 * @return 生成的二维码 Bitmap，失败返回 null
	 */
	private Bitmap generateQrCodeBitmap(String content, int width, int height) {
		try {
			// 初始化二维码编码器（指定格式为 QR_CODE）
			BarcodeEncoder encoder = new BarcodeEncoder();
			// 生成二维码 Bitmap（参数：内容、格式、宽、高）
			return encoder.encodeBitmap(content, BarcodeFormat.QR_CODE, width, height);
		} catch (WriterException e) {
			// 生成失败（如内容过长、宽高非法），打印异常信息
			e.printStackTrace();
			return null;
		}
	}
}

