Files
interactive/application/sp-console3/ConsoleApp/ConfigDlg.cpp
T
2026-08-07 17:38:18 +09:00

163 lines
4.4 KiB
C++

// ConfigDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "ConsoleApp.h"
#include "ConfigDlg.h"
// CConfigDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CConfigDlg, CDialog)
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
{
m_iPage = -1;
}
CConfigDlg::~CConfigDlg()
{
for (int i = 0; i < m_paPage.GetCount(); i++)
delete (PCONFIG_PAGE_STRUCT)m_paPage[i];
}
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STC_TITLE, m_stcTitle);
DDX_Control(pDX, IDC_TAB, m_tab);
}
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTb)
ON_BN_CLICKED(IDOK, OnOk)
END_MESSAGE_MAP()
// CConfigDlg 메시지 처리기입니다.
BOOL CConfigDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_stcTitle.m_crText = ::GetSysColor(COLOR_3DFACE);
m_stcTitle.m_nFontWeight = FW_BOLD;
m_stcTitle.m_nFontSize = 14;
m_stcTitle.m_sFontName = _T("Verdana");
m_stcTitle.SetConstantText(APP_TITLE);
m_tab.InsertItem(0, "기본");
m_tab.InsertItem(1, "URL 저장");
m_tab.InsertItem(2, "프록시");
// m_tab.SetItemSize(CSize(130, 17));
m_tab.GetClientRect(&m_rcFrame);
m_rcFrame.left += 1;
m_rcFrame.top += 23;
m_rcFrame.right -= 1;
m_rcFrame.bottom -= 1;
m_dlgCommon.m_bAutoConnect = COptions::GetOptionVal(OPTION_AUTOCONNECT);
m_dlgCommon.m_bSavePassword = COptions::GetOptionVal(OPTION_SAVEPASSWORD);
m_dlgCommon.m_nAfterExec = COptions::GetOptionVal(OPTION_AFTEREXEC);
m_dlgUrl.m_bSearchSub = COptions::GetOptionVal(OPTION_SEARCHSUBURL);
m_dlgUrl.m_nTag = COptions::GetOptionVal(OPTION_URLTAGTYPE);
m_dlgUrl.m_sSTag = COptions::GetOption(OPTION_URLSTAG);
m_dlgUrl.m_sETag = COptions::GetOption(OPTION_URLETAG);
m_dlgProxy.m_sHost = COptions::GetOption(OPTION_PROXYHOST);
m_dlgProxy.m_sPort = COptions::GetOption(OPTION_PROXYPORT);
m_dlgProxy.m_bUseIEProxy = COptions::GetOptionVal(OPTION_USEIEPROXY);
AddPage(m_dlgCommon, "기본");
AddPage(m_dlgUrl, "URL 저장");
AddPage(m_dlgProxy, "프록시");
ShowPage(0);
#ifdef _OPENDISK
SetWindowText("Opensidk Console 설정");
#else
SetWindowText("SP-Console 설정");
#endif
return TRUE; // return TRUE unless you set the focus to a control
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
}
void CConfigDlg::AddPage(CConfigSubDlg &dlg, LPCTSTR pszCaption)
{
PCONFIG_PAGE_STRUCT pcp = new CONFIG_PAGE_STRUCT;
pcp->pdlg = &dlg;
pcp->nID = dlg.GetID();
pcp->sCaption = pszCaption;
m_paPage.Add(pcp);
if (!::IsWindow(dlg.m_hWnd))
dlg.Create(dlg.GetID(), this);
}
BOOL CConfigDlg::ShowPage(int iPage)
{
if (m_iPage >= 0) {
PCONFIG_PAGE_STRUCT pcp = (PCONFIG_PAGE_STRUCT)m_paPage[m_iPage];
if (!pcp)
return FALSE;
if (pcp->pdlg) {
if (::IsWindow(pcp->pdlg->GetSafeHwnd()))
pcp->pdlg->ShowWindow(SW_HIDE);
}
}
PCONFIG_PAGE_STRUCT pcp = (PCONFIG_PAGE_STRUCT)m_paPage[iPage];
if (!pcp)
return FALSE;
if (pcp->pdlg) {
if (::IsWindow(pcp->pdlg->GetSafeHwnd())) {
pcp->pdlg->SetParent(&m_tab);
pcp->pdlg->MoveWindow(m_rcFrame.left, m_rcFrame.top, m_rcFrame.Width(), m_rcFrame.Height());
pcp->pdlg->ShowWindow(SW_SHOW);
pcp->pdlg->RedrawWindow();
pcp->pdlg->SetFocus();
}
m_tab.SetCurSel(iPage);
m_iPage = iPage;
}
m_stcTitle.SetWindowText(pcp->sCaption);
return TRUE;
}
void CConfigDlg::OnSelchangeTb(NMHDR *pNMHDR, LRESULT *pResult)
{
ShowPage(m_tab.GetCurSel());
*pResult = 0;
}
void CConfigDlg::OnOk()
{
m_dlgCommon.UpdateData();
m_dlgUrl.UpdateData();
m_dlgProxy.UpdateData();
COptions::SetOption(OPTION_AUTOCONNECT, m_dlgCommon.m_bAutoConnect);
COptions::SetOption(OPTION_SAVEPASSWORD, m_dlgCommon.m_bSavePassword);
COptions::SetOption(OPTION_AFTEREXEC, m_dlgCommon.m_nAfterExec);
COptions::SetOption(OPTION_SEARCHSUBURL, m_dlgUrl.m_bSearchSub);
COptions::SetOption(OPTION_URLTAGTYPE, m_dlgUrl.m_nTag);
COptions::SetOption(OPTION_URLSTAG, m_dlgUrl.m_sSTag);
COptions::SetOption(OPTION_URLETAG, m_dlgUrl.m_sETag);
COptions::SetOption(OPTION_PROXYHOST, m_dlgProxy.m_sHost);
COptions::SetOption(OPTION_PROXYPORT, m_dlgProxy.m_sPort);
COptions::SetOption(OPTION_USEIEPROXY, m_dlgProxy.m_bUseIEProxy);
CDialog::OnOK();
}