<?php

namespace Pixalia\ImageAssistant\Admin;

use Pixalia\ImageAssistant\Base\Const\PixaliaConst;
use Pixalia\ImageAssistant\Admin\Page\EyecatchCheck;
use Pixalia\ImageAssistant\Admin\Page\Settings;

use function __ as __;

/**
 * Menu Class
 *
 * WordPress管理画面のメニュー項目を登録し、
 * 各ページの描画担当クラスに処理を委譲します。
 */
class Menu {

	/**
	 * コンストラクタ
	 *
	 * @param EyecatchCheck $eyecatchCheck
	 * @param Settings $settingsPage 設定ページのインスタンス
	 */
	public function __construct
	(
		private readonly EyecatchCheck $eyecatchCheck,
		private readonly Settings $settingsPage
	) {
	}

	/**
	 * 管理画面のメニューとサブメニューを登録します。
	 */
	public function register_pages() {
		// 1. トップレベルメニュー（親）を定義
		//    親メニューのスラッグとコールバックを「設定」ページのものに設定
		add_menu_page(
			__( 'Pixalia Settings', 'pixalia-image-assistant' ),    // ページタイトル
			__( 'Pixalia Assistant', 'pixalia-image-assistant' ), // メニュー表示名
			'manage_options',
			PixaliaConst::MENU_SLUG_SETTINGS, // ★ 親のスラッグを「設定」にする
			[ $this->settingsPage, 'render' ], // ★ 描画担当を「設定」にする
			PixaliaConst::MENU_ICON,
			90
		);

		// 2. 「設定」サブメニューを追加 (これがデフォルトになる)
		//    親メニューと同じスラッグを第4引数に指定する
		add_submenu_page(
			PixaliaConst::MENU_SLUG_SETTINGS, // ★ 親のスラッグ
			__( 'Pixalia Settings', 'pixalia-image-assistant' ),
			__( 'Settings', 'pixalia-image-assistant' ), // サブメニュー名
			'manage_options',
			PixaliaConst::MENU_SLUG_SETTINGS, // ★ 親と同じスラッグ
			[ $this->settingsPage, 'render' ]  // 描画担当
		);

		// 3. 「アイキャッチチェック」サブメニューを追加
		add_submenu_page(
			PixaliaConst::MENU_SLUG_SETTINGS, // ★ 親のスラッグ
			__( 'Pixalia Eyecatch Check', 'pixalia-image-assistant' ),
			__( 'Eyecatch Check', 'pixalia-image-assistant' ),
			'manage_options',
			PixaliaConst::MENU_SLUG_EYECATCH_CHECK, // ★ 独自の「アイキャッチ」スラッグ
			[ $this->eyecatchCheck, 'render' ] // 描画担当
		);
	}
}
