www.pudn.com > eMule0.42e-Sources.zip > ChatSelector.h


//this file is part of eMule 
//Copyright (C)2002 Merkur ( merkur-@users.sourceforge.net / http://www.emule-project.net ) 
// 
//This program is free software; you can redistribute it and/or 
//modify it under the terms of the GNU General Public License 
//as published by the Free Software Foundation; either 
//version 2 of the License, or (at your option) any later version. 
// 
//This program is distributed in the hope that it will be useful, 
//but WITHOUT ANY WARRANTY; without even the implied warranty of 
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
//GNU General Public License for more details. 
// 
//You should have received a copy of the GNU General Public License 
//along with this program; if not, write to the Free Software 
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
#pragma once 
#include "ClosableTabCtrl.h" 
 
class CHTRichEditCtrl; 
class CUpDownClient; 
 
 
/////////////////////////////////////////////////////////////////////////////// 
// CChatItem 
 
class CChatItem 
{ 
public: 
	CChatItem(); 
	~CChatItem(); 
 
	CUpDownClient*		client; 
	CHTRichEditCtrl*	log; 
	char*				messagepending; 
	bool				notify; 
	CStringArray		history; 
	int					history_pos; 
}; 
 
 
/////////////////////////////////////////////////////////////////////////////// 
// CChatSelector 
 
class CChatSelector : public CClosableTabCtrl 
{ 
	DECLARE_DYNAMIC(CChatSelector) 
 
public: 
	CChatSelector(); 
	virtual	~CChatSelector(); 
 
	void		Init(); 
	void		Localize(void); 
	CChatItem*	StartSession(CUpDownClient* client, bool show = true); 
	void		EndSession(CUpDownClient* client = 0); 
	uint16		GetTabByClient(CUpDownClient* client); 
	CChatItem*	GetItemByClient(CUpDownClient* client); 
	void		ProcessMessage(CUpDownClient* sender, char* message); 
	bool		SendMessage(LPCTSTR message); 
	void		DeleteAllItems(); 
	void		ShowChat(); 
	void		ConnectingResult(CUpDownClient* sender,bool success); 
	void		Send(); 
	void		UpdateFonts(CFont* pFont); 
	CChatItem*	GetCurrentChatItem(); 
	BOOL		RemoveItem(int nItem) { return DeleteItem(nItem); } 
 
protected: 
	DECLARE_MESSAGE_MAP() 
	afx_msg void OnSize(UINT nType, int cx, int cy); 
	afx_msg void OnDestroy(); 
	afx_msg void OnTimer(UINT_PTR nIDEvent); 
	afx_msg void OnTcnSelchangeChatsel(NMHDR *pNMHDR, LRESULT *pResult); 
	afx_msg void OnBnClickedCsend(); 
	afx_msg void OnBnClickedCclose(); 
	afx_msg void OnSysColorChange(); 
 
	virtual BOOL PreTranslateMessage(MSG* pMsg); 
	virtual int InsertItem(int nItem, TCITEM* pTabCtrlItem); 
	virtual BOOL DeleteItem(int nItem); 
 
	void AddTimeStamp(CChatItem*); 
	bool IsSpam(CString strMessage, CUpDownClient* client); 
	void SetAllIcons(); 
	void GetChatSize(CRect& rcChat); 
 
private: 
	UINT_PTR m_Timer; 
	bool m_blinkstate; 
	bool m_lastemptyicon; 
	CWnd* m_pMessageBox; 
	CWnd* m_pCloseBtn; 
	CWnd* m_pSendBtn; 
	CImageList m_imlChat; 
};