// MainDlg.h : interface of the CMainDlg class
|
//
|
/////////////////////////////////////////////////////////////////////////////
|
#pragma once
|
#include "imre\SImRichedit.h"
|
#include "helper\SMenuEx.h"
|
#include "../controls.extend/SListboxex.h"
|
#include "control\SDropDown.h"
|
#include <wtypes.h>
|
#include <vector>
|
#include <shellapi.h>
|
#include "imre\ClipboardConverter.h"
|
#include "MessengerPro.h"
|
#include "SChatEditLog.h"
|
#include "SChatEditMsg.h"
|
#include "MBGroupChatData.h"
|
#include "MBFileTransItem.h"
|
#include "MBEmotionsWnd.h"
|
#include "IFontAdapterCallback.h"
|
#include "FontAdapter.h"
|
#include "CrowdDataMgr.h"
|
#include "MBAMChatDef.h"
|
#include "MBGroupUserTileAdapter.h"
|
#include "MBGroupUserinfoWnd.h"
|
#include "MBGroupFileSMCAdapter.h"
|
|
class CMBAMWnd;
|
|
class AFX_EXT_CLASS CMBGroupChatFrame : public TAutoEventMapReg<CMBGroupChatFrame> , public IFontAdapterCallback, public CMBEmotionsWnd::IListener
|
{
|
public:
|
|
CMBGroupChatFrame();
|
~CMBGroupChatFrame();
|
private: // 组件
|
SOUI::SWindow *m_pPageRoot;
|
HWND m_hWnd;
|
SHostWnd *m_pHostWnd;
|
bool m_bLayoutInited; // 是否初始化
|
SChatEditLog * m_pMsgRichEdit;
|
SChatEditMsg * m_pInputRichEdit;
|
time_t m_lastWhellTime;
|
int m_totalWhellDelta;
|
// int m_nSendType; // 输入enter发送或者enter+ctrl发送
|
//BOOL m_bCaptureHideWnd;
|
|
CMBEmotionsWnd *m_pWndEmotions; // 弹出窗
|
CMBGroupUserinfoWnd *m_pGroupUserInfoWnd; // 弹出窗
|
public: // 服务
|
CMBServerMgr *m_pServerMgr;
|
CMBOrgWebCMgr *m_pOrgWebCMgr;
|
CMBFileMD5GenMgr *m_pFileMD5GenMgr;
|
CMBUserLogin *m_pUserLogin;
|
CMessengerPro *m_pAMMessengerPro;
|
CMBAMWnd *m_pMBAMWnd;
|
CFontAdapter* m_pFontFaceAdapter;
|
CFontAdapter* m_pFontSizeAdapter;
|
|
STileViewEx *m_pTileVUserItem;
|
CMBGroupUserTileAdapter *m_pAdapterUserItemTile;
|
// 共享文件列表
|
CMBGroupFileSMCAdapter *m_pShareFileLstMCAdapter;
|
CMBMcListViewEx *m_pMCLvShareFileLst;
|
|
CMBGroupChatData *m_pAMChatData;
|
CMapStringGroupChatData m_mapCrowdChatData;
|
|
CObList m_lstStkMsg;
|
CArraySTKUploadMgr m_arUploadMgr;
|
CArraySTKUploadMgr m_arUploadFileMgr;
|
CMapSTKUploadFile m_mapSTKUploadFile;
|
CMapSTKUploadFile m_mapSTKUploadFileMD5;
|
CMapSTKUploadFile m_mapUploadFolder;
|
CMapSTKUploadFile m_mapUploadFolderZip;
|
CMapLongToString m_mapFolderZip;
|
CMapStringToString m_mapZipToFolder;
|
CMapSendMsgInfo m_mapSendMsg;
|
CMapStringToLong m_mapUploadingImage;
|
CMapSTKUploadFile m_mapUploadingFile;
|
|
CCheckTransferOutTimeMgr m_mgrCheckTransferOutTime;
|
BOOL m_bCloseDlg;
|
|
CArray<stAttachInfo, stAttachInfo&> m_arMBDownloadFile;
|
CMapSTKImageInfo m_mapImageFile;
|
CMapAttachInfo m_mapDwonloadFile;
|
CMapAttachInfo m_mapDwonloadFolderZip;
|
CArray<stAMDeleteFileInfo, stAMDeleteFileInfo&> m_arMBDeleteFile;
|
long m_nSelBegin;
|
long m_nSelEnd;
|
CString m_strFileSFlag;
|
int m_nFolderCompressLevel;
|
HANDLE m_hUploadFileThread;
|
HANDLE m_hDownloadFileThread;
|
CMapStringToString m_mapOpenFile;
|
|
CMBImageViewWnd *m_pImageViewWnd; // 图片浏览的窗口
|
CChatShortcutTermArray *m_parCommIDI;
|
public:
|
bool RegisterNotifyCenter();
|
bool UnRegisterNotifyCenter();
|
public:
|
void OnInit(SWindow *pRoot);
|
void SetServerMgrPtr( CMBServerMgr *pMBServerMgr );
|
void SetAMWndPtr( CMBAMWnd *pMBAMWnd );
|
void SetCrowdChat( CCrowdItem *pCrowdItem);
|
void RemoveCrowd( CString strID);
|
void DoMessageLoop();
|
void OnTimer(UINT_PTR idEvent);
|
void OnClose();
|
CMBGroupChatData *GetCurChatData();
|
|
void SendMsgSuccess(long nTrID, CString strMsgID );
|
void RecSendMsgBack( CCrowdMsgItem *pMsg, long nErrorCode);
|
void SendChatData(CCrowdMsgItem *pMsg, bool bRefrush);
|
void SendMsgFailed(long nTrID, long nErrCode );
|
void RecSendMsgTime(CCrowdMsgItem *pItem, CString strErrorInfo);
|
void SetMsgData( CCrowdMsgItem *pMsg,bool bRefrush );
|
//File
|
bool ResponseFileClientReceive( REQLOADSERVER_ITEM & reqLoadServerItem,COISysMsg *pSMsg,CString &strErrInfo );
|
bool ResponseFileClientError(REQLOADSERVER_ITEM & reqLoadServerItem,CString strParam,CString &strErrInfo);
|
bool ResponseFileMD5Finish( CString strFilePath,CString strFileMD5 );
|
bool ResponseFileMD5Error( CString strFilePath);
|
|
void MsgFileResUploadFinish( long nTrID, CString strConnectType, CString strBody );
|
void MsgFileResDownloadFinish( long nTrID, CString strConnectType, CString strBody );
|
bool IsThisWndAcceptDropFile( SWND ptWnd ); // 是否该窗口接收拖拽文件
|
BOOL OnDropFile( IDataObject* pDataObject ); //接受拖拽文件
|
void SendAMFile();
|
void DealNeedUploadFolders();
|
void DealNeedUploadFiles();
|
void CompressUploadFolder();
|
BOOL CheckCrowdChat(CString strID);
|
void UpdateCrowdUser(CString strCrowdID);
|
void UpdateCrowdInfo(CString strCrowdID);
|
void UpdateFileList(CString strCrowdID);
|
void ShareFileSuccess(CString strCrowdID,CString strShareID, CString strParam);
|
void ShareFileFailed(CString strCrowdID,CString strSendFlag);
|
void DeleteShareFile(CString strCrowdID,CString strShareID);
|
void CancelShareFileTransfer(CString strCrowdID,CString strShareID, bool bSend = true);
|
void DeleteShareFileRes(CString strCrowdID,CString strShareID,CString strFileSFlag,CString strFileID);
|
void DownloadShareFileBeginRes(CString strCrowdID,CString strShareID,CString strFileSFlag,CString strFileID,CString strFilePath);
|
void DownloadShareFileEndRes(CString strCrowdID,CString strShareID);
|
void AddSendFileLst( CStringArray &arFileLst );
|
void LoadChatWndNewMsg(CString strCrowdID);
|
public:
|
//virtual void OnClickFontFaceItem(int nIndex,CString strText);
|
//virtual void OnClickFontSizeItem(int nIndex,CString strText);
|
virtual void OnClickFontItem(int nIndex,int nFontType,CString strText);
|
virtual void EmotionTileViewItemClick(int nIndex);
|
public:
|
static unsigned int _stdcall ThreadFunctionCompressFile(void *pV);
|
static unsigned int _stdcall ThreadFunctionDecompressFile(void *pV);
|
private:
|
void OnInitFont();
|
CMBGroupChatData *GetAMChatData(CString strCrowdID);
|
CMBGroupChatData *AddAMChatData( CCrowdItem *pCrowdItem);
|
void ClearAMChatData();
|
void GetUserInfo(CChatUserInfo& info,SStringW strUser,SStringW strName);
|
BOOL SendMsg();
|
BOOL ResendMsg(SStringT strSendFlag,SStringT strSOUIContent);
|
BOOL SendCaptureImage(CString strImage);
|
BOOL CheckMsgHasImage(CString strStkMsg);
|
void SendImageFile();
|
CString SendImageFile(CString strStkMsg, CString strSendFlag );
|
BOOL SendingMsg();
|
|
long AMUploadFile(CString strReceiver, CString strFileName ,CString strFileMD5= _T(""), DWORD dwOption = OPTION_TRANOPTION_REPORT );
|
long AMUploadImageFile(CString strReceiver, CString strFileName);
|
long AMDownloadFile(CString strFlag,CString strUser, CString strFileID, CString strFilePath, DWORD dwOption = OPTION_TRANOPTION_REPORT );
|
long AMDownloadImageFile(CString strFlag,CString strUser, CString strFileID, CString strFilePath);
|
bool AMDeleteFile(CString strFlag,CString strFileID,CString &strErrInfo);
|
bool AMCancelCmder(CString strFlag,long nTrID);
|
//BOOL GetAttitudeValue( UINT nAttitudeID, CString &strLeftButton, CString &strRightButton );
|
void ShowChatTip(SStringW strMessage,SStringW strReiver/* = L""*/,eTipsType nTipsType = e_TipsType_Info);
|
void ShowChatRecordData(CMBGroupChatData *pAMChatData );
|
CString GetGroupFilePath( CString strGroupID, CString strShareID );
|
void UpdateGroupFileInfo( CString strGroupID, CString strShareID, CString strFilePath, CString strFileName = _T(""), __int64 nFileSize = 0);
|
POSITION FindStkMsg(long nTrID);
|
void CleanStkMsgLst( );
|
CString SendImageFileMsg(CMBCrowdMsg *pItemStrMsg, CString strStkMsg);
|
void DownloadMsgImage(CString strCrowdID, CString strStkMsg,CString strMsgID );
|
void DownLoadAMFile( );
|
void DeleteAMFile();
|
void DecompressDownloadFolder();
|
void DealDownloadFoldersZip( );
|
|
void AddDownloadFileInfo(stAttachInfo &infoAttach);
|
bool GetDownloadFileInfo(stAttachInfo &infoAttach);
|
|
void AddDeleteFileInfo(CString strFileSFlag,CString strFileID,CString strCrowdID);
|
bool GetDeleteFileInfo(CString &strFileSFlag,CString &strFileID,CString &strCrowdID);
|
|
void InputRichSelEndChanged();
|
void RetransferFileItem(CMBFileTransItem& item);
|
CMBUserPro* GetUserPro( );
|
void GetDownloadDir( CString &strDir );
|
void SaveAsImage(SStringT strImagePath);
|
void RemoveUploadFile(CString strFile);
|
BOOL UploadFiles( CStringArray &arFile);
|
void DirectSendMsg(CString strText);
|
protected:
|
|
|
|
void FillRClickAvatarMenu(MenuWrapper& menu, RichEditContent* pContent);
|
void FillRClickImageMenu(MenuWrapper& menu, RichEditContent* pContent);
|
void FillRClickFileMenu(MenuWrapper& menu, RichEditContent* pContent);
|
void FillRClickSelRegionMenu(MenuWrapper& menu, RichEditContent* pContent);
|
void FillRClickBubbleMenu(MenuWrapper& menu, RichEditContent* pContent);
|
void FillRClickNothingMenu(MenuWrapper& menu);
|
void DragDropFiles(RichFormatConv::DropFiles& files);
|
|
protected:
|
|
void OnSend();
|
void OnSendPicture();
|
void OnShowSendTypeMenu();
|
void OnFont();
|
// void OnFontName();
|
//void OnFontSize();
|
void OnFontBold();
|
void OnFontItalic();
|
void OnFontUnderline();
|
void OnFontColor();
|
void OnEmotion();
|
void OnCutScreen();
|
void OnCutScreenArrow();
|
void OnCommTerms();
|
void OnMsgRecord();
|
void OnShowCrowdInfo();
|
void OnExitCrowd();
|
void OnChatLogCopy();
|
void OnChatLogSaveAs();
|
void OnGetShareFileLst();
|
void OnUploadFiles();
|
|
void OnDropFiles(HDROP hDropInfo);
|
bool OnEditorAcceptData(SOUI::EventArgs *pEvt);
|
bool OnShowInputRichEditMenu(SOUI::EventArgs *pEvt);
|
bool OnShowMessageRichEditMenu(SOUI::EventArgs *pEvt);
|
bool OnInputEditorChange(SOUI::EventArgs *pEvt);
|
bool OnInputRichObjEvent(SOUI::EventArgs *pEvt);
|
bool OnInputRichKeyDownEvent(SOUI::EventArgs *pEvt);
|
bool OnMsgRichObjEvent(SOUI::EventArgs *pEvt);
|
bool OnMsgRichScrollEvent(SOUI::EventArgs *pEvt);
|
bool OnEventGroupChatDataQueryFinish(EventArgs *e);
|
bool OnEventGroupCompressFolderFinish(EventArgs *e);
|
bool OnEventGroupDecompressFolderZipFinish(EventArgs *e);
|
bool OnInputRichLButtonDownEvent(EventArgs *pEvt); //
|
bool OnInputRichMouseHoverEvent(EventArgs *pEvt); //
|
bool OnEventGroupFileClick(EventArgs *pEvt); //
|
protected:
|
//soui消息
|
EVENT_MAP_BEGIN()
|
EVENT_CHECK_SENDER_ROOT(m_pPageRoot)
|
EVENT_ID_COMMAND_RANGE(34000, 34005, OnTabPageRadioSwitch) //30000-30003是page_share.xml中定义的radio2的ID
|
EVENT_NAME_COMMAND(L"btn_send", OnSend)
|
EVENT_NAME_COMMAND(L"btn_showsendmenu", OnShowSendTypeMenu)
|
EVENT_NAME_COMMAND(L"chk_font", OnFont)
|
EVENT_NAME_COMMAND(L"chk_fontbold", OnFontBold)
|
EVENT_NAME_COMMAND(L"chk_fontitalic", OnFontItalic)
|
EVENT_NAME_COMMAND(L"chk_fontunderline", OnFontUnderline)
|
EVENT_NAME_COMMAND(L"btn_fontcolor", OnFontColor)
|
EVENT_NAME_COMMAND(L"btn_emotion", OnEmotion)
|
EVENT_NAME_COMMAND(L"btn_screencut", OnCutScreen)
|
EVENT_NAME_COMMAND(L"btn_screencut_arrow", OnCutScreenArrow)
|
EVENT_NAME_COMMAND(L"btn_sendpic", OnSendPicture)
|
EVENT_NAME_COMMAND(L"btn_commterms", OnCommTerms)
|
EVENT_NAME_COMMAND(L"btn_msgrecord", OnMsgRecord)
|
EVENT_NAME_COMMAND(L"btn_morecrowdinfo", OnShowCrowdInfo)
|
EVENT_NAME_COMMAND(L"btn_exitcrowd", OnExitCrowd)
|
EVENT_NAME_COMMAND(L"btn_chatlog_copy", OnChatLogCopy)
|
EVENT_NAME_COMMAND(L"btn_chatlog_saveas", OnChatLogSaveAs)
|
EVENT_NAME_COMMAND(L"btn_sharefile_update", OnGetShareFileLst)
|
EVENT_NAME_COMMAND(L"btn_sharefile_upload", OnUploadFiles)
|
EVENT_HANDLER(EventGroupChatDataQueryFinish::EventID,OnEventGroupChatDataQueryFinish)
|
EVENT_HANDLER(EventGroupCompressFolderFinish::EventID,OnEventGroupCompressFolderFinish)
|
EVENT_HANDLER(EventGroupDecompressFolderZipFinish::EventID,OnEventGroupDecompressFolderZipFinish)
|
EVENT_HANDLER(EventGroupFileClick::EventID,OnEventGroupFileClick)
|
//MSG_WM_DROPFILES(OnDropFiles)
|
EVENT_MAP_BREAK()
|
protected:
|
void OnTabPageRadioSwitch(int nID);
|
};
|