Files
Client/Server/ManageTool/ManageSetup/dialog/ServerToolUserManagementDlg.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

160 lines
4.0 KiB
C++

// ServerToolUserManagementDlg.cpp : 구현 파일
//
#include "stdafx.h"
#include "ManageSetup.h"
#include "ServerToolUserManagementDlg.h"
#include "UserRegEditDlg.h"
#include <UserManage/ToolUserManageTable.h>
const TCHAR* GetLVString( int nLVIndex )
{
switch( nLVIndex )
{
case CToolUserManager::MASTER: return _T("MASTER");
case CToolUserManager::GENERAL: return _T("GENERAL");
case CToolUserManager::MONITORING: return _T("MONITORING");
}
return _T("UNKNOWN");
}
// CServerToolUserManagementDlg 대화 상자
CServerToolUserManagementDlg::CServerToolUserManagementDlg(CWnd* pParent /*=NULL*/)
: CDialog(CServerToolUserManagementDlg::IDD, pParent)
{
}
void CServerToolUserManagementDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_USERINFO_LIST, m_ctrlUserInfoList);
}
BEGIN_MESSAGE_MAP(CServerToolUserManagementDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_USER_REG, OnBnClickedUserReg)
ON_BN_CLICKED(IDC_USER_EDIT, OnBnClickedUserEdit)
ON_BN_CLICKED(IDC_USER_DEL, OnBnClickedUserDel)
END_MESSAGE_MAP()
// CServerToolUserManagementDlg 메시지 처리기
BOOL CServerToolUserManagementDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ctrlUserInfoList.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB );
//m_ctrlUserInfoList.SetBkColor ( COLORREF RGB( 255, 190, 125) );
//m_ctrlUserInfoList.SetTextBkColor ( COLORREF RGB( 255, 190, 125) );
m_ctrlUserInfoList.InsertColumn ( 0, _T("ID"), LVCFMT_LEFT, 100 );
m_ctrlUserInfoList.InsertColumn ( 1, _T("NAME"), LVCFMT_LEFT, 80 );
m_ctrlUserInfoList.InsertColumn ( 2, _T("IP"), LVCFMT_LEFT, 110 );
m_ctrlUserInfoList.InsertColumn ( 3, _T("ADMIN LV"), LVCFMT_LEFT, 100 );
UserListSet(); // 운영자 정보 DB를 읽어서 리스트에 표시
return true;
}
struct SORT_BY_ID
{
bool operator () (const ServerManage::UserInfo& lhs, const ServerManage::UserInfo& rhs)
{
return std::lexicographical_compare(lhs.szID, lhs.szID + strlen(lhs.szID),
rhs.szID, rhs.szID + strlen(rhs.szID));
}
};
bool CServerToolUserManagementDlg::UserListSet()
{
// 리스트 컨트롤 클리어
m_ctrlUserInfoList.DeleteAllItems();
CToolUserManager::UserList userList;
// DB를 읽어서 리스트 컨트롤에 셋팅
CToolUserManager::GetInstance().GetUserInfo(userList);
userList.sort(SORT_BY_ID());
CToolUserManager::UserList::iterator pos = userList.begin();
CToolUserManager::UserList::iterator end = userList.end();
in_addr userIP;
int nCount = 0;
for(;pos != end; ++pos, ++nCount)
{
ServerManage::UserInfo& userInfo = *pos;
m_ctrlUserInfoList.InsertItem(nCount, userInfo.szID );
m_ctrlUserInfoList.SetItemText(nCount, 1, userInfo.szFullName );
userIP.S_un.S_addr = userInfo.dwIP;
m_ctrlUserInfoList.SetItemText(nCount, 2, inet_ntoa(userIP));
m_ctrlUserInfoList.SetItemText(nCount, 3, GetLVString(userInfo.usAdminLevel));
}
return true;
}
void CServerToolUserManagementDlg::OnBnClickedUserReg()
{
CUserRegEditDlg RegDlg(0);
RegDlg.DoModal();
UserListSet();
}
void CServerToolUserManagementDlg::OnBnClickedUserEdit()
{
int nSelectedIndex = m_ctrlUserInfoList.GetNextItem(-1, LVIS_SELECTED);
if(-1 != nSelectedIndex)
{
char szID[ServerManage::UserInfo::ID_LEN];
m_ctrlUserInfoList.GetItemText(nSelectedIndex, 0, szID, ServerManage::UserInfo::ID_LEN);
ServerManage::UserInfo userInfo;
if(CToolUserManager::GetInstance().GetUserInfo(szID, userInfo))
{
CUserRegEditDlg EditDlg(&userInfo);
EditDlg.DoModal();
UserListSet();
}
}
}
void CServerToolUserManagementDlg::OnBnClickedUserDel()
{
int nSelectedIndex = m_ctrlUserInfoList.GetNextItem( -1, LVIS_SELECTED );
if( -1 != nSelectedIndex )
{
// 계정 삭제시에는 ID만 채워서 보냄
ServerManage::UserInfo stDelUserInfo;
m_ctrlUserInfoList.GetItemText(nSelectedIndex, 0,
stDelUserInfo.szID, ServerManage::UserInfo::ID_LEN);
CToolUserManager::GetInstance().DelUser(stDelUserInfo.szID);
UserListSet();
}
}