#pragma once


namespace nlite{

	class CListenerSettingWindow;
	///
	///クッキー設定用ウィンドウ
	///
	class CCookieSettingWindow:public CDialogImpl<CCookieSettingWindow>{
		
	private:
		BROWSERTYPE browserType;

	public:
		enum { IDD = IDD_DIALOG_BROWSERTYPE };

		BEGIN_MSG_MAP(CMainDlg)
			MSG_WM_INITDIALOG(OnInitDialog)
			COMMAND_ID_HANDLER_EX(IDC_BUTTON_COOKIE_OK, OnOK)
			COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
		END_MSG_MAP()

		VOID SetBrowserType(BROWSERTYPE browserType);

		BROWSERTYPE GetBrowserType();

	private:
		///
		///ダイアログ初期化時に呼ばれる
		///
		BOOL OnInitDialog(CWindow wndFocus, LPARAM lInitParam);

		///
		///OKボタン押下時の動作
		///
		VOID OnOK(UINT uNotifyCode, int nID, CWindow wndCtl);


		///
		///キャンセルボタン押下時の動作
		///
		VOID OnCancel(UINT uNotifyCode, int nID, CWindow wndCtl);


	};

	///
	///色設定ボタン
	///
	class CColorSettingButton:public CWindowImpl<CColorSettingButton,CStatic>{
		friend CListenerSettingWindow;
	
		CBrush brush;
		COLORREF color;

		BEGIN_MSG_MAP(CColorSettingButton)
			MSG_WM_LBUTTONDOWN(OnLButtonDown)
			MSG_WM_SETCURSOR(OnSetCursor)
		END_MSG_MAP()


		///
		///左クリック時の処理
		///
		VOID OnLButtonDown(UINT wParam,CPoint &point);

		///
		///色を設定
		///
		VOID SetColor(COLORREF in_color);


		///
		///カーソル変更処理
		///
		LRESULT OnSetCursor(HWND wparam,UINT loLparam,UINT hiLparam);
	};

	///
	///リスナー設定用ウィンドウ
	///
	class CListenerSettingWindow:public CDialogImpl<CListenerSettingWindow>{
		
		CEdit nameEdit;									//ニックネーム編集エディット
		CColorSettingButton nameColorButton;			//ニックネーム色編集ボタン
		CButton nameColorReturnButton;					//ニックネーム色を戻すボタン
		CColorSettingButton backColorButton;			//背景色編集ボタン
		CButton backColorReturnButton;					//背景色を戻すボタン
		CStatic idField;								//ID表示領域
		ListenerData *listenerData;						//対象のリスナーデータ
	public:
		enum { IDD = IDD_LISTENER_SETTING_DIALOG };

		BEGIN_MSG_MAP(CListenerSettingWindow)
			MSG_WM_INITDIALOG(OnInitDialog)
			MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic)
			COMMAND_ID_HANDLER_EX(IDOK, OnOK)
			COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
			COMMAND_CODE_HANDLER_EX(BN_CLICKED,OnButton)
		END_MSG_MAP()


		///
		///設定ウィンドウ表示
		///
		VOID ShowSettingWindow(ListenerData &listenerData);

	private:
		///
		///ダイアログ初期化時に呼ばれる
		///
		BOOL OnInitDialog(CWindow wndFocus, LPARAM lInitParam);

		///
		///スタティックウィンドウの色処理
		///
		LRESULT OnCtlColorStatic(HDC hdc,HWND hWnd);
		
		///
		///OKボタン押下時の動作
		///
		VOID OnOK(UINT uNotifyCode, int nID, CWindow wndCtl);


		///
		///キャンセルボタン押下時の動作
		///
		VOID OnCancel(UINT uNotifyCode, int nID, CWindow wndCtl);


		///
		///ボタンクリック時の動作
		///
		VOID OnButton(UINT hiWParam,INT_PTR loWParam,HWND lParam);
		
	};


}