// AddBlockUserDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "AddBlockUserDlg.h" #include "UserCharTreeView.h" #include "GlobalFunctions.h" #include "CharacterDoc.h" #include "PacketManager.h" #include ".\addblockuserdlg.h" // CAddBlockUserDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CAddBlockUserDlg, CDialog) CAddBlockUserDlg::CAddBlockUserDlg(CWnd* pParent /*=NULL*/) : CDialog(CAddBlockUserDlg::IDD, pParent) , m_lpParent(pParent) { } CAddBlockUserDlg::~CAddBlockUserDlg() { } void CAddBlockUserDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_BA_SERVER_CB, m_ctrlServerGroupCb); DDX_Control(pDX, IDC_BA_SELALL_CHK, m_ctrlAllChk); } BEGIN_MESSAGE_MAP(CAddBlockUserDlg, CDialog) ON_CBN_SELCHANGE(IDC_BLOCK_TYPE, OnCbnSelchangeBlockType) ON_BN_CLICKED(IDC_BA_SELALL_CHK, OnBnClickedBaSelallChk) END_MESSAGE_MAP() // CAddBlockUserDlg ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CAddBlockUserDlg::OnInitDialog() { CDialog::OnInitDialog(); CUserCharTreeView* lpTreeDlg = static_cast(m_lpParent); CUserCharTreeView::BLOCK_INFO BlockInfo = lpTreeDlg->GetLastBlockInfo(); ServerGroupComboSet(m_ctrlServerGroupCb, false); // ´ë»ó ±×·ì ¼ÂÆÃ (üũ ÄÞº¸ ¹Ú½º) CString strServerName; CCharacterDoc::GetInstance().GetServerName(BlockInfo.m_dwServerGroup, strServerName); if (0 != strServerName.CompareNoCase("UNKNOWN")) { m_ctrlServerGroupCb.SetCheck(m_ctrlServerGroupCb.FindString(-1, strServerName), true); m_ctrlServerGroupCb.EnableWindow(false); m_ctrlAllChk.EnableWindow(false); } // ´ë»ó ij¸¯¸í ¼ÂÆÃ SetDlgItemText(IDC_BLOCK_NAME, BlockInfo.m_szCharacterName); CComboBox* lpBlockTermCb = static_cast(GetDlgItem(IDC_BLOCK_TYPE)); // ºí·° ±â°£ ÄÞº¸ ¼ÂÆÃ lpBlockTermCb->AddString(GetLocalString("IDC_BLOCKADD_06")); lpBlockTermCb->AddString(GetLocalString("IDC_BLOCKADD_07")); SetWindowText(GetLocalString("WND_BLOCKADD")); SetUIString(this->m_hWnd, IDC_BLOCKADD_01, "IDC_BLOCKADD_01"); SetUIString(this->m_hWnd, IDC_BLOCKADD_02, "IDC_BLOCKADD_02"); SetUIString(this->m_hWnd, IDC_BLOCKADD_03, "IDC_BLOCKADD_03"); SetUIString(this->m_hWnd, IDC_BLOCKADD_04, "IDC_BLOCKADD_04"); SetUIString(this->m_hWnd, IDC_BLOCKADD_05, "IDC_BLOCKADD_05"); return TRUE; } void CAddBlockUserDlg::OnOK() { CUserCharTreeView* lpTreeDlg = static_cast(m_lpParent); CUserCharTreeView::BLOCK_INFO BlockInfo = lpTreeDlg->GetLastBlockInfo(); CDateTimeCtrl* lpDateCtrl = static_cast(GetDlgItem(IDC_BLOCK_DATE)); CComboBox* lpBlockTermCb = static_cast(GetDlgItem(IDC_BLOCK_TYPE)); unsigned char cBlockTarget, cBlockTerm = 0; // ºí·° ´ë»ó if(BlockInfo.ACCOUNT == BlockInfo.m_cType) { cBlockTarget = PktAdminMgr::PktAddBlockUser::TARGET_ACCOUNT; } else if(BlockInfo.CHARACTER == BlockInfo.m_cType) { cBlockTarget = PktAdminMgr::PktAddBlockUser::TARGET_CHARACTER; } // ºí·° ±â°£ if(CB_ERR == lpBlockTermCb->GetCurSel()) { Report(GetLocalString("MSG_0093"), CAUTION); return; } else { if(TEMP_BLOCK == lpBlockTermCb->GetCurSel()) { cBlockTerm = PktAdminMgr::PktAddBlockUser::TERM_TEMPORARY; } else if((PERMANANT_BLOCK == lpBlockTermCb->GetCurSel())) { cBlockTerm = PktAdminMgr::PktAddBlockUser::TERM_PERMANANT; } } // ºí·° ±â°£ (½ÇÁ¦ ³¯Â¥) TCHAR szFinishDate[20], szDescription[31]; szFinishDate[0] = szDescription[0] = 0; COleDateTime StartBlockTime = COleDateTime::GetCurrentTime(); COleDateTime FinishBlockTime; lpDateCtrl->GetTime(FinishBlockTime); COleDateTimeSpan TimeSpan = FinishBlockTime - StartBlockTime; // 24½Ã°£ À̳»¿¡ ÀÖ´Â ½Ã°£Àº ¿ØÁö ¸ð¸£°Ô °è»êÀ» ¸øÇÑ´Ù ¤Ñ.¤Ñ 10ÀÏ-9ÀÏÀ» ÇÏ¸é ³¯¼ö°¡ 0ÀÌ´Ù Á¨Àå long BlockDays = TimeSpan.GetDays() + 1; if((StartBlockTime.GetDay() == FinishBlockTime.GetDay()) && (1 == BlockDays)) { --BlockDays; } else if(StartBlockTime > FinishBlockTime) { Report(GetLocalString("MSG_0094"), CAUTION); return; } GetDlgItemText(IDC_BLOCK_REASON, szDescription, sizeof(szDescription)); _sntprintf(szFinishDate, sizeof(szFinishDate), _T("%d"), BlockDays); if((0 < _tcslen(szFinishDate)) && (0 < _tcslen(szDescription)) && (30 > _tcslen(szDescription))) { for (int nIndex = 0; nIndex < m_ctrlServerGroupCb.GetCount(); ++nIndex) { if (TRUE == m_ctrlServerGroupCb.GetCheck(nIndex)) { CString strServerName; unsigned long dwServerIndex = 10000; m_ctrlServerGroupCb.GetLBText(nIndex, strServerName); CCharacterDoc::GetInstance().GetServerIndex(strServerName, dwServerIndex); CPacketMgr::GetInstance()->SendPktBlockUser((unsigned char)dwServerIndex, BlockInfo.m_dwUID, BlockInfo.m_szCharacterName, cBlockTarget, cBlockTerm, szFinishDate, szDescription); } } EndDialog(true); } else { Report(GetLocalString("MSG_0095"), CAUTION); return; } } void CAddBlockUserDlg::OnCbnSelchangeBlockType() { CComboBox* lpBlockTermCb = static_cast(GetDlgItem(IDC_BLOCK_TYPE)); if(NULL == lpBlockTermCb) { return; } if(TEMP_BLOCK == lpBlockTermCb->GetCurSel()) { GetDlgItem(IDC_BLOCK_DATE)->EnableWindow(true); } else if(PERMANANT_BLOCK == lpBlockTermCb->GetCurSel()) { GetDlgItem(IDC_BLOCK_DATE)->EnableWindow(false); } } void CAddBlockUserDlg::OnBnClickedBaSelallChk() { bool bChk = false; m_ctrlServerGroupCb.EnableWindow(true); if (BST_CHECKED == m_ctrlAllChk.GetCheck()) { bChk = true; m_ctrlServerGroupCb.EnableWindow(false); } m_ctrlServerGroupCb.SelectAll(bChk); }