/*
 * Copyright (C) 2022 SCALOlaz
 * 1,2,3 pages for ABOUT
 */

#include "pch.h"
//#include "resource.h"
#include "AboutDlg.h"

// 1 page
IMPLEMENT_DYNAMIC(AboutDlg, CDialogEx)
AboutDlg::AboutDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_ABOUTBOX_1, pParent)
{}

AboutDlg::~AboutDlg()
= default;

void AboutDlg::DoDataExchange(CDataExchange *pDX)
{
	CDialogEx::DoDataExchange(pDX);

	DDX_Control(pDX, IDC_STATIC_HOMEPAGE, m_staticHomePage);
	DDX_Control(pDX, IDC_STATIC_HOMEPAGE2, m_staticHomePage2);
	DDX_Control(pDX, IDC_STATIC_MAIL, m_staticMail);
	DDX_Control(pDX, IDC_STATIC_MAIL2, m_staticMail2);
}

BEGIN_MESSAGE_MAP(AboutDlg, CDialogEx)
END_MESSAGE_MAP()

BOOL AboutDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	return TRUE;
}

// 2 page
IMPLEMENT_DYNAMIC(AboutLinks, CDialogEx)

AboutLinks::AboutLinks(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_ABOUTBOX_2, pParent)
{}

AboutLinks::~AboutLinks()
= default;

void AboutLinks::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);

	DDX_Control(pDX, IDC_STATIC_GAMES, m_staticGames);
	DDX_Control(pDX, IDC_STATIC_FORUM, m_staticForum);
	DDX_Control(pDX, IDC_STATIC_SVN, m_staticSVN);
	DDX_Control(pDX, IDC_STATIC_SVN2, m_staticSVN2);
	DDX_Control(pDX, IDC_STATIC_SVN3, m_staticSVN3);
	DDX_Control(pDX, IDC_STATIC_SVN4, m_staticSVN4);
	DDX_Control(pDX, IDC_STATIC_SVN5, m_staticSVN5);

	// and Some Other Links
}

BEGIN_MESSAGE_MAP(AboutLinks, CDialogEx)
END_MESSAGE_MAP()

BOOL AboutLinks::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	return TRUE;
}

// 3 page
IMPLEMENT_DYNAMIC(AboutThx, CDialogEx)

AboutThx::AboutThx(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_ABOUTBOX_3, pParent)
{}

AboutThx::~AboutThx()
= default;

void AboutThx::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(AboutThx, CDialogEx)
	ON_EN_SETFOCUS(IDC_ABOUT_EDIT, &AboutThx::OnEnSetfocusAboutThxEdit)
END_MESSAGE_MAP()

BOOL AboutThx::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	m_TextEdit = (CEdit*)GetDlgItem(IDC_ABOUT_EDIT);

	static const TCHAR l_thanks[] =
		_T("  Выражаю глубокую признательность и благодарность следующим людям:\r\n")
		_T("  ---------------------------------------------------------------------------\r\n")
		
		_T(" •  Калмыкову Юрию - за то, что начал делать эмулятор.\r\n")
		_T(" •  nzeemin - за его эмулятор BKBTL, откуда был позаимствован эмулятор КНГМД на 1801ВП1 - 128, алгоритм основного цикла процессора(конкретно - диспетчер прерываний), способ выборки опкодов, звук и метод рисования экрана.\r\n")
		_T(" •  Patron и anonymous - за исследование работы 1801ВМ1 и его некоторых команд.\r\n")
		_T(" •  Voland и dk_spb - за предоставленные дампы ПЗУ БК 0011. Ещё Voland-у, за реплику контроллера «АльтПро СМК - 512» и изображения клавиатур.\r\n")
		_T("\r\n")

		_T(" •  ММ - за познания в тонкостях БКстроения и за Книгу «Инструкции по ремонту МС0513».\r\n")
		_T(" •  severyanin - за то что отсканировал Книгу и выложил в общий доступ.\r\n")
		_T(" •  Terra - за информацию о формате самарского hdd.\r\n")
		_T(" •  CD-Inc - за схему самарского hdd контроллера и за дельные советы по устройству контроллера «АльтПро».\r\n")
		_T("\r\n")

		_T(" •  Александр Тишин (Sandro) - за эмулятор БК10 на Java.\r\n")
		_T(" •  KISSER и TheGWBV - за истинную таблицу палитр.\r\n")
		_T(" •  SKCorp - за разные полезные мелочи.\r\n")
		_T(" •  BD (Бутырский Дмитрий) - за блок ИРПС, авось когда-нибудь пригодится.\r\n")
		_T("\r\n")

		_T(" •  peg, SCALOlaz, LAsoft - эти люди своей деятельностью не дают мне расслабиться и сподвигают продолжать что-то делать с эмулятором.\r\n")
		_T(" •  SCALOlaz - за иконки и разные улучшения интерфейса пользователя.\r\n")

		_T("\r\n")
		_T("  Есть ещё люди, чьи высказывания на форуме помогали опосредованно. Как только внятно сформулирую, тоже добавлю.\r\n")

		_T("\r\n")
		_T(" ...Ой, да лано.\r\n")
		_T(" •  И всем, всем, всем, кто пользуется эмулятором и не говнит меня за то, что я не могу добавить их хотелки, которые я не знаю как сделать. А иногда - не знаю зачем...\r\n")

		// Последняя строка, чтобы не думалось о точке с запятой
		_T(" ");
		m_TextEdit->SetWindowText(l_thanks);
//		m_TextEdit->Detach();
	return TRUE;
}

void AboutThx::OnEnSetfocusAboutThxEdit()
{
	m_TextEdit->SetSel(-1, -1);
	m_TextEdit->LineScroll(-m_TextEdit->GetLineCount());
	m_TextEdit->SetCaretPos(CPoint(0, 0));
	// TODO: добавьте свой код обработчика уведомлений
}
