Exteor/src/dialog/StartPage.cpp

123 lines
3.4 KiB
C++
Raw Normal View History

2024-06-07 20:30:06 +03:00
#include "stdafx.h"
#include "xtr/dialog/StartPage.h"
#include "resource.h"
#include "xtr/Exteor.h"
#include "xtr/ui/HelpHandler.h"
#include "xtr/ui/UIHelper.h"
namespace xtr::dialog {
#pragma warning( push )
#pragma warning( disable : 26440 26436 26454 )
BEGIN_MESSAGE_MAP(ExtStartPage, CDialog)
ON_BN_CLICKED(IXTRC_NEW_DOCUMENT, &ThisClass::OnNewDoc)
ON_BN_CLICKED(IXTRC_OPEN_DOC, &ThisClass::OnOpenDoc)
ON_BN_CLICKED(IXTRC_START_HELP, &ThisClass::OnOpenHelp)
ON_BN_CLICKED(IXTRC_SAMPLES, &ThisClass::OnSamples)
ON_BN_CLICKED(IXTRC_MEMO, &ThisClass::OnMemo)
ON_BN_CLICKED(IXTRC_DONT_PROMT, &ThisClass::OnPromt)
END_MESSAGE_MAP()
#pragma warning( pop )
ExtStartPage::~ExtStartPage() {
::DestroyIcon(xtrIcon);
}
BOOL ExtStartPage::OnInitDialog() {
CDialog::OnInitDialog();
InitTitle();
LoadExteorIcon();
InitControls();
UpdateWindow();
return TRUE;
}
void ExtStartPage::LoadExteorIcon() {
xtrIcon = static_cast<HICON>(LoadImageW(AfxGetResourceHandle(),
MAKEINTRESOURCE(IXTRAD_MENU_MAINFRAME),
IMAGE_ICON, 0, 0, 0));
SetIcon(xtrIcon, TRUE);
}
void ExtStartPage::InitControls() {
releaseLog.SetFont(&XTROptions::App().fontTooltip);
releaseLog.SetWindowTextW(LoadLog());
promtBtn.SetCheck(XTROptions::App().showStartPage);
}
void ExtStartPage::InitTitle() {
auto title = ui::WindowText(*this);
title += g_Exteor.version.id;
SetWindowTextW(title);
}
CString ExtStartPage::LoadLog() {
const auto fileName = g_Exteor.GetModuleFolder() + mfc::LoadSID(IXTRS_FILE_UPDATELOG);
FILE* fStream{};
if (_wfopen_s(&fStream, fileName, LR"(r, ccs=UTF-8)") != 0) {
return mfc::LoadSID(IXTRE_LOG_NOT_FOUND);
} else {
CStdioFile logFile{ fStream };
CString line{};
CString text = line;
logFile.SeekToBegin();
while (logFile.ReadString(line)) {
text += line;
text += L"\r\n";
}
logFile.Close();
return text;
}
}
void ExtStartPage::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
::DDX_Control(pDX, IXTRC_NEW_DOCUMENT, newDocBtn);
::DDX_Control(pDX, IXTRC_OPEN_DOC, openDocBtn);
::DDX_Control(pDX, IXTRC_START_HELP, helpBtn);
::DDX_Control(pDX, IXTRC_CHANGE_LOG, releaseLog);
::DDX_Control(pDX, IXTRC_DONT_PROMT, promtBtn);
::DDX_Control(pDX, IXTRC_SAMPLES, examplesBtn);
}
void ExtStartPage::OnNewDoc() { // NOLINT(readability-convert-member-functions-to-static)
EndDialog(IDOK);
g_Exteor.OnFileNew();
}
void ExtStartPage::OnOpenDoc() { // NOLINT(readability-convert-member-functions-to-static)
EndDialog(IDOK);
g_Exteor.OnFileOpen();
}
void ExtStartPage::OnOpenHelp() { // NOLINT(readability-convert-member-functions-to-static)
ui::HelpHandler::RunHelp();
}
void ExtStartPage::OnMemo() { // NOLINT(readability-convert-member-functions-to-static)
::ShellExecuteW(nullptr, L"open", g_Exteor.GetModuleFolder() + mfc::LoadSID(IXTRS_FILE_FAQ),
nullptr, nullptr, SW_SHOWNORMAL);
}
void ExtStartPage::OnSamples() { // NOLINT(readability-convert-member-functions-to-static)
EndDialog(IDOK);
CString path = g_Exteor.GetModuleFolder() + mfc::LoadSID(IXTRS_FOLDER_SAMPLES);
::ShellExecuteW(nullptr, L"open", path, nullptr, nullptr, SW_SHOWNORMAL);
}
void ExtStartPage::OnPromt() { // NOLINT(readability-convert-member-functions-to-static)
XTROptions::App().showStartPage = promtBtn.GetCheck();
}
} // namespace xtr::dialog