/******************************************************************************
 * YesDialog.c
 *
 * Copyright (c) 2022, longpanda <admin@ventoy.net>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
 *
 */

#include <Windows.h>
#include <commctrl.h>
#include "resource.h"
#include "Language.h"
#include "Ventoy2Disk.h"

BOOL g_InputYes = FALSE;

static BOOL YesInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
    HFONT hStaticFont1;
    HFONT hStaticFont2;

    g_InputYes = FALSE;

    SetWindowText(GetDlgItem(hWnd, IDC_YES_STATIC4), _G(STR_INSTALL_YES_TIP1));
    SetWindowText(GetDlgItem(hWnd, IDC_YES_STATIC1), _G(STR_INSTALL_YES_TIP2));

    SetWindowText(GetDlgItem(hWnd, ID_YES_OK), _G(STR_BTN_OK));
    SetWindowText(GetDlgItem(hWnd, ID_YES_CANCEL), _G(STR_BTN_CANCEL));

    hStaticFont1 = CreateFont(26, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0,
        ANSI_CHARSET, OUT_DEFAULT_PRECIS,
        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
        DEFAULT_PITCH & FF_SWISS, TEXT("Courier New"));

    hStaticFont2 = CreateFont(22, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0,
        ANSI_CHARSET, OUT_DEFAULT_PRECIS,
        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
        DEFAULT_PITCH & FF_SWISS, TEXT("MS Shell Dlg"));

    SendMessage(GetDlgItem(hWnd, IDC_YES_STATIC2), WM_SETFONT, (WPARAM)hStaticFont1, TRUE);
    SendMessage(GetDlgItem(hWnd, IDC_YES_STATIC4), WM_SETFONT, (WPARAM)hStaticFont2, TRUE);

    return TRUE;
}


static VOID OnYesBtnOkClick(HWND hWnd)
{	
	CHAR Value[64] = { 0 };

	GetWindowTextA(GetDlgItem(hWnd, IDC_YES_EDIT1), Value, sizeof(Value) - 1);
	
    if (strcmp(Value, "YES") == 0)
    {
        g_InputYes = TRUE;
    }
    
    SendMessage(hWnd, WM_CLOSE, 0, 0);
}

static VOID OnYesBtnCancelClick(HWND hWnd)
{
	SendMessage(hWnd, WM_CLOSE, 0, 0);
}

INT_PTR CALLBACK YesDialogProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    WORD NotifyCode;
    WORD CtrlID;

    switch (Message)
    {
        case WM_COMMAND:
        {
            NotifyCode = HIWORD(wParam);
            CtrlID = LOWORD(wParam);
            
            if (CtrlID == ID_YES_OK && NotifyCode == BN_CLICKED)
            {
				OnYesBtnOkClick(hWnd);
            }
            else if (CtrlID == ID_YES_CANCEL && NotifyCode == BN_CLICKED)
            {
				OnYesBtnCancelClick(hWnd);
            }			
            else
            {
                return TRUE;
            }

            break;
        }
        case WM_CTLCOLORSTATIC:
        {
            if (GetDlgItem(hWnd, IDC_YES_STATIC2) == (HANDLE)lParam ||
                GetDlgItem(hWnd, IDC_YES_STATIC4) == (HANDLE)lParam)
            {
                SetBkMode((HDC)wParam, TRANSPARENT);
                SetTextColor((HDC)wParam, RGB(255, 0, 0));
                return (LRESULT)(HBRUSH)(GetStockObject(HOLLOW_BRUSH));
            }
            else
            {
                break;
            }
        }
        case WM_INITDIALOG:
        {
            YesInitDialog(hWnd, wParam, lParam);
            return FALSE;
        }        
        case WM_CLOSE:
        {            
            EndDialog(hWnd, 0);
            return TRUE;
        }
    }

    return 0;
}
