Files
2022-10-26 12:25:11 +08:00

509 lines
12 KiB
C++

#pragma once
//------------------------------------------------------------------------------
//
// 작업자: 이지연
// uiCommunityDlg class
//------------------------------------------------------------------------------
#include "uibase.h"
#define MAX_ICON_NUM 10
#define SHOW_DEFAULT_FRIEND_LINE 10
struct FRIEND_DATA;
struct MAIL_DATA;
enum eCOMMUNITY_MODE;
class uiCommunityMan;
class uiCommunityDlg: public uiBase
{
enum eDIALOG_POS
{
COMMUNITY_DIALOG_EXIT = 0,
// 각종 탭
#ifdef _NA_000000_20130114_RENEWER_UI
#else
COMMUNITY_DIALOG_TAB_FRIEND,
#endif//#ifdef _NA_000000_20130114_RENEWER_UI
COMMUNITY_DIALOG_TAB_MAIL,
COMMUNITY_DIALOG_TAB_GROUP,
COMMUNITY_DIALOG_TAB_SUB_FRIEND,
COMMUNITY_DIALOG_TAB_SUB_BLOCK,
COMMUNITY_DIALOG_TAB_SUB_REVENGE,
// 텍스트
COMMUNITY_DIALOG_TXT_1,
COMMUNITY_DIALOG_TXT_2,
COMMUNITY_DIALOG_TXT_3,
COMMUNITY_DIALOG_TXT_REVENGE_POINT,
COMMUNITY_DIALOG_TXT_REJECTION_CHAT,
COMMUNITY_DIALOG_TXT_HIDE_OFFLINE,
COMMUNITY_DIALOG_TXT_SHOW_NEW_MAIL,
COMMUNITY_DIALOG_TXT_REJECTION_GROUPS,
// 체크버튼
COMMUNITY_DIALOG_CHECK_REJECTION_CHAT,
COMMUNITY_DIALOG_CHECK_HIDE_OFFLINE,
COMMUNITY_DIALOG_CHECK_SHOW_NEW_MAIL,
COMMUNITY_DIALOG_CHECK_REJECTION_GROUP,
// 스크롤
COMMUNITY_DIALOG_VSCROLL,
// 리스트
COMMUNITY_DIALOG_LST_FRIEND,
COMMUNITY_DIALOG_LST_MAIL,
// 버튼
// ON/OFF 아이콘
COMMUNITY_DIALOG_BTN_ON1,
COMMUNITY_DIALOG_BTN_ON2,
COMMUNITY_DIALOG_BTN_ON3,
COMMUNITY_DIALOG_BTN_ON4,
COMMUNITY_DIALOG_BTN_ON5,
COMMUNITY_DIALOG_BTN_ON6,
COMMUNITY_DIALOG_BTN_ON7,
COMMUNITY_DIALOG_BTN_ON8,
COMMUNITY_DIALOG_BTN_ON9,
COMMUNITY_DIALOG_BTN_ON10,
COMMUNITY_DIALOG_BTN_OFF1,
COMMUNITY_DIALOG_BTN_OFF2,
COMMUNITY_DIALOG_BTN_OFF3,
COMMUNITY_DIALOG_BTN_OFF4,
COMMUNITY_DIALOG_BTN_OFF5,
COMMUNITY_DIALOG_BTN_OFF6,
COMMUNITY_DIALOG_BTN_OFF7,
COMMUNITY_DIALOG_BTN_OFF8,
COMMUNITY_DIALOG_BTN_OFF9,
COMMUNITY_DIALOG_BTN_OFF10,
//새쪽지/읽은 쪽지 아이콘
COMMUNITY_DIALOG_BTN_NEW1,
COMMUNITY_DIALOG_BTN_NEW2,
COMMUNITY_DIALOG_BTN_NEW3,
COMMUNITY_DIALOG_BTN_NEW4,
COMMUNITY_DIALOG_BTN_NEW5,
COMMUNITY_DIALOG_BTN_NEW6,
COMMUNITY_DIALOG_BTN_NEW7,
COMMUNITY_DIALOG_BTN_NEW8,
COMMUNITY_DIALOG_BTN_NEW9,
COMMUNITY_DIALOG_BTN_NEW10,
COMMUNITY_DIALOG_BTN_READ1,
COMMUNITY_DIALOG_BTN_READ2,
COMMUNITY_DIALOG_BTN_READ3,
COMMUNITY_DIALOG_BTN_READ4,
COMMUNITY_DIALOG_BTN_READ5,
COMMUNITY_DIALOG_BTN_READ6,
COMMUNITY_DIALOG_BTN_READ7,
COMMUNITY_DIALOG_BTN_READ8,
COMMUNITY_DIALOG_BTN_READ9,
COMMUNITY_DIALOG_BTN_READ10,
// 친구초대 이벤트용 ON/OFF 아이콘
COMMUNITY_DIALOG_BTN_EVTOFF1,
COMMUNITY_DIALOG_BTN_EVTOFF2,
COMMUNITY_DIALOG_BTN_EVTOFF3,
COMMUNITY_DIALOG_BTN_EVTOFF4,
COMMUNITY_DIALOG_BTN_EVTOFF5,
COMMUNITY_DIALOG_BTN_EVTOFF6,
COMMUNITY_DIALOG_BTN_EVTOFF7,
COMMUNITY_DIALOG_BTN_EVTOFF8,
COMMUNITY_DIALOG_BTN_EVTOFF9,
COMMUNITY_DIALOG_BTN_EVTOFF10,
COMMUNITY_DIALOG_BTN_EVTON1,
COMMUNITY_DIALOG_BTN_EVTON2,
COMMUNITY_DIALOG_BTN_EVTON3,
COMMUNITY_DIALOG_BTN_EVTON4,
COMMUNITY_DIALOG_BTN_EVTON5,
COMMUNITY_DIALOG_BTN_EVTON6,
COMMUNITY_DIALOG_BTN_EVTON7,
COMMUNITY_DIALOG_BTN_EVTON8,
COMMUNITY_DIALOG_BTN_EVTON9,
COMMUNITY_DIALOG_BTN_EVTON10,
COMMUNITY_DIALOG_BTN_ADD_FRIEND,
COMMUNITY_DIALOG_BTN_DEL_FRIEND,
COMMUNITY_DIALOG_BTN_ADD_BLOCK,
COMMUNITY_DIALOG_BTN_DEL_BLOCK,
COMMUNITY_DIALOG_BTN_DEL_REVENGE,
COMMUNITY_DIALOG_BTN_WARP,
COMMUNITY_DIALOG_BTN_DEL_MAIL,
COMMUNITY_DIALOG_BTN_DEL_ALL_MAIL,
COMMUNITY_DIALOG_BTN_WRITE_MAIL,
COMMUNITY_DIALOG_BTN_INVITE,
COMMUNITY_DIALOG_LIST_BTN_ID,
COMMUNITY_DIALOG_LIST_BTN_LV,
COMMUNITY_DIALOG_LIST_BTN_CLASS,
COMMUNITY_DIALOG_LIST_BTN_CHANNEL,
COMMUNITY_DIALOG_LIST_BTN_LOGON,
COMMUNITY_DIALOG_LIST_BTN_SENDER,
COMMUNITY_DIALOG_LIST_BTN_DATE,
COMMUNITY_DIALOG_LIST_BTN_MEMO,
COMMUNITY_DIALOG_BTN_ADD_MEMBER,
COMMUNITY_DIALOG_BTN_DEL_MEMBER,
COMMUNITY_DIALOG_MAX,
};
enum COMMUNITY_TABS
{
#ifdef _NA_000000_20130114_RENEWER_UI
#else
COMMUNITY_TAB_FRIEND,
#endif
COMMUNITY_TAB_MAIL,
COMMUNITY_TAB_GROUP,
COMMUNITY_TAB_SUB_FRIEND,
COMMUNITY_TAB_SUB_BLOCK,
COMMUNITY_TAB_SUB_REVENGE,
COMMUNITY_TAB_MAX,
};
enum COMMUNITY_TXTS
{
COMMUNITY_TXT_1,
COMMUNITY_TXT_2,
COMMUNITY_TXT_3,
COMMUNITY_TXT_REVENGE_POINT,
COMMUNITY_TXT_REJECTION_GROUPS,
COMMUNITY_TXT_MAX,
};
enum COMMUNITY_CHECKS
{
COMMUNITY_CHECK_REJECTION_CHAT,
COMMUNITY_CHECK_HIDE_OFFLINE,
COMMUNITY_CHECK_SHOW_NEW_MAIL,
COMMUNITY_CHECK_REJECTION_GROUP,
COMMUNITY_CHECK_MAX,
};
enum COMMUNITY_LSTS
{
COMMUNITY_LST_FRIEND,
COMMUNITY_LST_MAIL,
COMMUNITY_LST_MAX,
};
enum COMMUNITY_BTNS
{
COMMUNITY_BTN_ADD_FRIEND,
COMMUNITY_BTN_DEL_FRIEND,
COMMUNITY_BTN_ADD_BLOCK,
COMMUNITY_BTN_DEL_BLOCK,
COMMUNITY_BTN_DEL_REVENGE,
COMMUNITY_BTN_WARP,
COMMUNITY_BTN_DEL_MAIL,
COMMUNITY_BTN_DEL_ALL_MAIL,
COMMUNITY_BTN_WRITE_MAIL,
COMMUNITY_BTN_INVITE,
COMMUNITY_LIST_BTN_ID,
COMMUNITY_LIST_BTN_LV,
COMMUNITY_LIST_BTN_CLASS,
COMMUNITY_LIST_BTN_CHANNEL,
COMMUNITY_LIST_BTN_LOGON,
COMMUNITY_LIST_BTN_SENDER,
COMMUNITY_LIST_BTN_DATE,
COMMUNITY_LIST_BTN_MEMO,
COMMUNITY_BTN_ADD_MEMBER,
COMMUNITY_BTN_DEL_MEMBER,
COMMUNITY_BTN_MAX,
};
enum COMMUNITY_ON_BTNS
{
COMMUNITY_BTN_ON1,
COMMUNITY_BTN_ON2,
COMMUNITY_BTN_ON3,
COMMUNITY_BTN_ON4,
COMMUNITY_BTN_ON5,
COMMUNITY_BTN_ON6,
COMMUNITY_BTN_ON7,
COMMUNITY_BTN_ON8,
COMMUNITY_BTN_ON9,
COMMUNITY_BTN_ON10,
COMMUNITY_BTN_ON_MAX,
};
enum COMMUNITY_ON_OFF_BTNS
{
COMMUNITY_BTN_OFF1,
COMMUNITY_BTN_OFF2,
COMMUNITY_BTN_OFF3,
COMMUNITY_BTN_OFF4,
COMMUNITY_BTN_OFF5,
COMMUNITY_BTN_OFF6,
COMMUNITY_BTN_OFF7,
COMMUNITY_BTN_OFF8,
COMMUNITY_BTN_OFF9,
COMMUNITY_BTN_OFF10,
COMMUNITY_BTN_OFF_MAX,
};
enum COMMUNITY_MAIL_NEW_BTNS
{
COMMUNITY_BTN_NEW1,
COMMUNITY_BTN_NEW2,
COMMUNITY_BTN_NEW3,
COMMUNITY_BTN_NEW4,
COMMUNITY_BTN_NEW5,
COMMUNITY_BTN_NEW6,
COMMUNITY_BTN_NEW7,
COMMUNITY_BTN_NEW8,
COMMUNITY_BTN_NEW9,
COMMUNITY_BTN_NEW10,
COMMUNITY_BTN_NEW_MAX,
};
enum COMMUNITY_MAIL_READ_BTNS
{
COMMUNITY_BTN_READ1,
COMMUNITY_BTN_READ2,
COMMUNITY_BTN_READ3,
COMMUNITY_BTN_READ4,
COMMUNITY_BTN_READ5,
COMMUNITY_BTN_READ6,
COMMUNITY_BTN_READ7,
COMMUNITY_BTN_READ8,
COMMUNITY_BTN_READ9,
COMMUNITY_BTN_READ10,
COMMUNITY_BTN_READ_MAX,
};
enum COMMUNITY_EVTON_BTNS
{
COMMUNITY_BTN_EVTON1,
COMMUNITY_BTN_EVTON2,
COMMUNITY_BTN_EVTON3,
COMMUNITY_BTN_EVTON4,
COMMUNITY_BTN_EVTON5,
COMMUNITY_BTN_EVTON6,
COMMUNITY_BTN_EVTON7,
COMMUNITY_BTN_EVTON8,
COMMUNITY_BTN_EVTON9,
COMMUNITY_BTN_EVTON10,
COMMUNITY_BTN_EVTON_MAX,
};
enum COMMUNITY_EVTOFF_BTNS
{
COMMUNITY_BTN_EVTOFF1,
COMMUNITY_BTN_EVTOFF2,
COMMUNITY_BTN_EVTOFF3,
COMMUNITY_BTN_EVTOFF4,
COMMUNITY_BTN_EVTOFF5,
COMMUNITY_BTN_EVTOFF6,
COMMUNITY_BTN_EVTOFF7,
COMMUNITY_BTN_EVTOFF8,
COMMUNITY_BTN_EVTOFF9,
COMMUNITY_BTN_EVTOFF10,
COMMUNITY_BTN_EVTOFF_MAX,
};
enum FRIEND_LIST
{
FRIEND_LIST_NAME = 0,
FRIEND_LIST_LEVEL,
FRIEND_LIST_CLASS,
FRIEND_LIST_CHANNEL,
FRIEND_LIST_ONLINE,
FRIEND_LIST_MAX,
};
enum MAIL_LIST
{
MAIL_LIST_NAME = 0,
MAIL_LIST_DATE,
MAIL_LIST_MEMO,
MAIL_LIST_MAX,
};
public:
uiCommunityDlg(InterfaceManager *pUIMan);
virtual ~uiCommunityDlg();
//-------------------------------- ------------------------------------------
// init/release
//
public:
virtual void Init(CDrawBase* pDrawBase);
virtual void Release();
protected:
void InitControls();
//--------------------------------------------------------------------------
// helper/comms.
//
public:
uiCommunityMan* GetManager();
//--------------------------------------------------------------------------
// functions
//
private:
BOOL _isEnable();
#ifdef _NA_000000_20130114_RENEWER_UI
void _setDefaultFriend(ENUM_STATEWZ eState,bool ShowingTap = true);
#else
void _setDefaultFriend(ENUM_STATEWZ eState);
#endif
void _setModeFriend(ENUM_STATEWZ eState);
void _setModeBlock(ENUM_STATEWZ eState);
void _setModeRevenge(ENUM_STATEWZ eState);
void _setModeMail(ENUM_STATEWZ eState);
void _refreshMailNum();
void _setModeGroup(ENUM_STATEWZ eState);
void _SortByType(int eModeType, int eSortType);
void _ShowListIcons();
void _HideListIcons();
time_t GetLastTime(INT64 lastDate);
void _hideMailIcons();
void _hideOnOffIcons();
void _setNewMail(int index);
void _setReadMail(int index);
void _setOnline(int index, BYTE byFriendSts = 1);
void _setOffline(int index, BYTE byFriendSts = 1);
void _hideMailIcon(int index);
void _hideOnOffIcon(int index);
void _refreshOnOffIcon();
void _refreshMailIcon();
void _updateCheckState();
void _clearSelection();
void _RefreshControl(nArray<FRIEND_DATA> &ArrayType);
void _SettListCtrlData(COMMUNITY_LSTS eType,int nIndex,int nSubIndex,TCHAR* pszText,BOOL bOnLine, BYTE byMaster = false);
void _RefreshMailControl();
void ViewMemoOnList();
public:
void Clear();
void Reset();
void ChangeMode(int iMode, bool bForce = false);
void RefreshControl();
void RefreshFriendList();
void RefreshMailList();
int GetCurListSel();
FRIEND_DATA * GetCurData(int iSelect);
MAIL_DATA * GetCurMailData(int iSelect);
int GetCurScrollCount() { return m_pScroll->GetScrollPosWZ(); }
//--------------------------------------------------------------------------
// dialog functions
//
public:
void RefreshOnlineMember(eCOMMUNITY_MODE community_mode);
protected:
virtual void OnShowWindow( BOOL val );
virtual void OnUpdateSolarDialog();
private:
void UpdateMouseWheel();
void DownScroll(int nRange);
void UpScroll(int nRange);
protected:
CControlWZ * getControl( POSTYPE AtPos );
POSTYPE getCtrlIDToPos( WzID wzId );
static WzID m_wzId[COMMUNITY_DIALOG_MAX];
//--------------------------------------------------------------------------
// procedure
//
public:
virtual void MessageProc( SI_MESSAGE * pMessage ); // Pure
//--------------------------------------------------------------------------
// member vars
//
private:
uiCommunityMan* m_pCommunityMan;
CCtrlButtonCheckWZ* m_pBtnCheckTabs[COMMUNITY_TAB_MAX];
CCtrlStaticWZ* m_pTxtCtrls[COMMUNITY_TXT_MAX];
CCtrlButtonCheckWZ* m_pBtnChecks[COMMUNITY_CHECK_MAX];
CCtrlListWZ* m_pListCtrls[COMMUNITY_LST_MAX];
CCtrlButtonWZ* m_pBtnCtrls[COMMUNITY_BTN_MAX];
CCtrlButtonWZ* m_pOnBtn[COMMUNITY_BTN_ON_MAX];
CCtrlButtonWZ* m_pOffBtn[COMMUNITY_BTN_OFF_MAX];
CCtrlButtonWZ* m_pNewBtn[COMMUNITY_BTN_NEW_MAX];
CCtrlButtonWZ* m_pReadBtn[COMMUNITY_BTN_READ_MAX];
CCtrlButtonWZ* m_pEvtOnBtn[COMMUNITY_BTN_EVTON_MAX];
CCtrlButtonWZ* m_pEvtOffBtn[COMMUNITY_BTN_EVTOFF_MAX];
CCtrlVScrollWZ* m_pScroll;
bool m_bControlsInitialized;
int friend_list_column_[FRIEND_LIST_MAX];
int mail_list_column_[MAIL_LIST_MAX];
};
//------------------------------------------------------------------------------
/**
*/
inline
POSTYPE
uiCommunityDlg::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < COMMUNITY_DIALOG_MAX ; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return COMMUNITY_DIALOG_MAX;
}
//------------------------------------------------------------------------------
/**
*/
inline
CControlWZ *
uiCommunityDlg::getControl( POSTYPE AtPos )
{
ASSERT( AtPos < COMMUNITY_DIALOG_MAX );
return GetControlWZ( m_wzId[AtPos] );
}
//------------------------------------------------------------------------------
/**
*/
void _CallBack_Friend_Add(bool bYes, const char *pString ); //외부에서 친구 추가 할때
//------------------------------------------------------------------------------