// MainFrm.h : interface of the CMainFrame class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_MAINFRM_H__53645CFE_009C_4AD6_9EB7_EEB04AE157ED__INCLUDED_)
#define AFX_MAINFRM_H__53645CFE_009C_4AD6_9EB7_EEB04AE157ED__INCLUDED_

#include "StdAfx.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "CorpSmsDoc.h"
#include "FuncView.h"
#include "BaseView.h"
#include "ProcessSocket.h"
#include "DLG_GetUser.h"
#include "..\public\reportctrl\ReportCtrl.h"
#include "DLG_CJCard.h"
#include "DLG_Commend.h"
//#ifdef SUPPER_UBOX
#include ".\UBox\phonic_ubox.h"
#include "DLG_UBox_Dial.h"
#include "DLG_UBoxPop.h"
#include "DLG_UBox_UserLog.h"

//#endif



#define SHELL_ICON_MESS   WM_USER+260
#define UBOX_EVENT        WM_USER+270
#define UBOX_EVENT_DTMF   1
#define UBOX_EVENT_JT     2
#define UBOX_EVENT_WJ     3
#define UBOX_EVENT_HOOK_OFF     4
#define UBOX_EVENT_HOOK_UP     5
#define UBOX_EVENT_HOOK_UP2    6
#define UBOX_EVENT_CALLOUT     7
#define UBOX_EVENT_ERROR       8
#define UBOX_EVENT_CHAR        9

#define CORPSMS_ICON_R_SHOW  WM_USER + 2001    //��ʾ������
#define CORPSMS_ICON_R_SMS  WM_USER + 2002    //��ʾ������
#define CORPSMS_ICON_R_MMS  WM_USER + 2003    //��ʾ������
#define CORPSMS_ICON_R_QUIT  WM_USER + 2004    //��ʾ������

typedef CTypedPtrList<CPtrList, SM_User*>  CUser;
typedef CTypedPtrArray<CPtrArray, DLG_UBoxPop*> CDLG_UBoxPop;

typedef struct _RecordUpload
{
	long lUBoxLogID;
	CString strRecordName;
}RecordUpload;

typedef CList<RecordUpload>  CRecordUpload;

class DLG_HDQuery;
class DLG_White2;
class CMainFrame : public CFrameWnd
{
public:
	CFuncView  * m_pFuncView;
	CBaseView  * m_pBaseView;
	CImageList   m_Image;
	CButton      m_B_CJ;
	CButton      m_B_YJ;

	CAdoConnection m_adoConnection;
	CAdoRecordSet  m_AdoRS;
	CAdoRecordSet  m_AdoRS2;

	long            m_lCorpID;
	long            m_lUserID;
	ULONG           m_ulPurviewType;    //�û�Ȩ������
	ULONG           m_ulPurview;    //�û�Ȩ��

	CString         m_strLoginIP;
	SM_Setup        m_Setup;
	CUser           m_User;
	SM_User       * m_pCurUser;
	ANS_Login       m_Ans_Login;
	ANS_Login2      m_Ans_Login2;
	CProcessSocket  m_Socket;
	CPictureEx      m_B_Gif;
	CString         m_strTEXT;
	long            m_lGDText;

	DLG_CJCard    * m_pCJCard;   //��ֵ��

	BOOL            m_CliSmsTD_Req;  //�����ж�ͨ�����������﷢����

	//������
	long              m_lFiltCount;
	ANS_Filt2_SeeDataU * m_pFilt;

	long              m_lNoSupperWordCount;
	ANS_Login3_NoSupperData * m_pNoSupperWord;

	//������
	long              m_lBackCount;
	ANS_Back_SeeData * m_pBack;

	CString           m_strMobile;  //�˵�¼�û����ֻ�����
	CString           m_strMainGroupID;  //���û���ID
	long              m_lMainGroupID;  //���û���ID
	CString           m_strMainGroupName; //�û�������

	//��ֹ���������Ķ��ύ��Ϣ
	DWORD             m_dwEndTYjTime;

	//ExcelAddin������
	HWND              m_hExcelAddinWnd;
	long              m_lAddinType;  //1-Open,2-SendSms,3-Address
	BOOL              m_bLoginOK;

	//�Ƽ��ͻ�
	DLG_Commend *     m_pCommendDlg;
	DLG_HDQuery *     m_pHDQuery;

	//masoem
	CString           m_strMasTitle;
	BOOL              m_bCheckUpdateManual;

	CString           m_strCorpWorkUrl;  //�����׵�¼
	CString           m_strPasswdEnc;    //���ܺ�����룬���ڹ����׵�¼

	CCriticalSection     m_Update_Lock;

	//���ڼ�¼ͼ����Ϣ
	long m_Iocn_UBox_KT;
#ifdef SUPPER_UBOX  //������ʾ����
	long                  m_ubox_Status;
	HINSTANCE             m_ubox_Lib;
	Mubox_open            m_ubox_Open;
	Mubox_close           m_ubox_close;
	Mubox_get_work_mode   m_ubox_get_work_mode;
	Mubox_send_dtmf       m_ubox_send_dtmf;
	Mubox_record_stream   m_ubox_record_stream;
	Mubox_stop_record     m_ubox_stop_record;
	Mubox_record_file     m_ubox_record_file;

	UBOX_HANDLE           m_ubox_endHandle;

	DLG_UBox_Dial         m_DlgUBoxDial;

	BOOL                  m_ubox_bPhoneUp;   //����״̬�Ƿ�Ϊ���𻰻������𻰻����ܲ���
	BOOL                  m_ubox_Phoneing;   //����״̬�Ƿ�Ϊ֪ͨ�У�����Ҳ����ͨ����
	
	//�������ڵ�������
	CDLG_UBoxPop        m_ubox_Pop;
	DLG_UBoxPop      *  m_ubox_NowPop;
	CCriticalSection     m_ubox_Lock;

	//���������ϴ�¼���ļ�
	CRecordUpload        m_RecordUpload;
	long                 m_RecordUpload_UBoxLogID;
	DWORD                m_RecordUpload_EndSendFrame;
	long                m_RecordUpload_AllSize;
	long                m_RecordUpload_UpSize;
	CFile               m_RecordFile;
#endif
	BOOL m_bLogin;  //�Ƿ��Ѿ���¼�ɹ�

	//���ڰ���������
	DLG_White2 *     m_pWhie2;
protected:
	long            m_lCurFunc;
	DLG_GetUser     m_DlgProcess;
	BOOL            m_bShowProcess;
	BOOL            m_bChangeGAddress;
	BOOL            m_bReadGAddressError;

	
protected: // create from serialization only
	CMainFrame();
	DECLARE_DYNCREATE(CMainFrame)

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMainFrame)
	public:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	protected:
	virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
	//}}AFX_VIRTUAL

// Implementation
public:
	static BOOL AutoBackAddress_Save(CMainFrame * pFrame , CString strName);
	static UINT AutoBackAddress_T(void *pParam);
	void AutoBak_SendLog();
	BOOL isSupportPhs();
	long GetMaxAddressCount();
	long FindBX(long lMon, long lMon2, long lDay,CReportCtrl *pList);
	long GetQJCM( CString & strCM );
	long GetMaxSendMsgLen();
	CString GetSoftSName();
	void GetUpdateMsg(BOOL bManual=false);
	void YWDB(BOOL bYW);
	long FindNS(long lMon,long lMon2, CReportCtrl *pList);
	static BOOL UpdateDB(CAdoConnection & m_adoConnection,CAdoRecordSet & m_AdoRS);
	void GetBack();
	void GDText();
	void GetGGMsg();
	long FindSR(long lMon,long lDay,long lMon2,long lDay2,BOOL bGAddress,BOOL bPAddress,CReportCtrl* pList);
	BOOL ReadGAddress(BOOL bRefresh=false);
	void SetStatMsg(TCHAR *pMsg);
	BOOL ProcessSocket(Socket_Head *pHead);
	BOOL SendFrame( DWORD lFuncType , unsigned char * pFrame , unsigned long lFrameLen );
	BOOL GetUserPurview( ULONG ulPurview ,BOOL bShowWarning=true);
	BOOL GetUserPurview_HideNum();
	void GetCurrentPath(TCHAR *pPath);
	void SaveSetup();
	void ReadSetup();
	void CreateNullSetup();
	virtual ~CMainFrame();

	void uboxPop_New(CString strNumber,long lCallWay,long lBeginTime=0);
	void uboxPop_Del(DLG_UBoxPop * pPop);
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:  // control bar embedded members
	CStatusBar  m_wndStatusBar;
	CToolBar    m_wndToolBar;
	CSplitterWnd m_wndSplitter;
	static  void WINAPI ubox_NotifyProc(UBOX_HANDLE uboxHnd,int eventID,unsigned long param1,unsigned long param2,unsigned long param3,unsigned long param4);
public:
	BOOL ubox_SetStatus(long lStatus);
	BOOL ubox_Close();
	BOOL ubox_Init();
	BOOL ubox_Enable();
	static CString GetMD5(CString str,BOOL bLower=false);
	void Mas_ProcessSendCount();
	BOOL ProcessSocket(Socket_Head_Add *pHead,BYTE* pFrame);
	DWORD GetExcelAddinErrorNum();
	void GetCenterTime();
	long GetMaxUsersCount();
	BOOL ReadGAddress2(BOOL bRefresh=false);
	long GetMaxSendMsgLen_longSms(long & lCMLen);
	void OnTYj2( const TCHAR * pType );
	afx_msg void OnTYj();

// Generated message map functions
protected:
	//{{AFX_MSG(CMainFrame)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	afx_msg void OnModifyPasswd();
	afx_msg void OnMsgsetup();
	afx_msg void OnTShowsmslist();
	afx_msg void OnTShowmmslist();
	afx_msg void OnTMsgsetup();
	afx_msg void OnTAdduser();
	afx_msg void OnUpdateTAdduser(CCmdUI* pCmdUI);
	afx_msg void OnTAddgroup();
	afx_msg void OnUpdateTAddgroup(CCmdUI* pCmdUI);
	afx_msg void OnTSmsview();
	afx_msg void OnUpdateTSmsview(CCmdUI* pCmdUI);
	afx_msg void OnTSmsnew();
	afx_msg void OnUpdateTSmsnew(CCmdUI* pCmdUI);
	afx_msg void OnUpdateTShowsmslist(CCmdUI* pCmdUI);
	afx_msg void OnUpdateTShowmmslist(CCmdUI* pCmdUI);
	afx_msg void OnClose();
	afx_msg void OnFindsr();
	afx_msg void OnCompdb();
	afx_msg void OnHelp2();
	afx_msg void OnSystemsetup();
	afx_msg void OnUpdateSystemsetup(CCmdUI* pCmdUI);
	afx_msg void OnTCj();
	afx_msg void OnSendsetup();
	afx_msg void OnTLogo();
	afx_msg void OnTBill();
	afx_msg void OnUpdateTBill(CCmdUI* pCmdUI);
	afx_msg void OnUpdateHelp2(CCmdUI* pCmdUI);
	afx_msg void OnSetupSzgj();
	afx_msg void OnNsts();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnBxts();
	afx_msg void OnHd();
	afx_msg void OnSetupTd();
	afx_msg void OnTLogo2();
	afx_msg void OnSetupImMas();
	afx_msg void OnAppCommend();
	afx_msg void OnTGg();
	afx_msg void OnOperSendsms();
	afx_msg void OnOperSendfax();
	afx_msg void OnOperSendmms();
	afx_msg void OnCheckupdate();
	afx_msg void OnTCorpwork();
	afx_msg void OnTUbox();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg LONG_PTR UBox_Event( WPARAM wParam , LPARAM lParam );
	afx_msg  void OnShellIcon_Show();
	afx_msg  void OnShellIcon_Sms();
	afx_msg  void OnShellIcon_Mms();
	afx_msg  void OnShellIcon_Exit();

	//}}AFX_MSG
	afx_msg LONG_PTR On_Picture_Click( WPARAM wParam , LPARAM lParam );
	afx_msg LONG_PTR ProcessSocket_Error( WPARAM wParam , LPARAM lParam );
	afx_msg LONG_PTR ProcessSocket_Frame( WPARAM wParam , LPARAM lParam );

	afx_msg LONG_PTR OnShellIconMess( WPARAM wParam , LPARAM lParam );   //������ͼ�괦������

	afx_msg LONG_PTR On_ExcelAddin_Data( WPARAM wParam , LPARAM lParam );
	afx_msg LONG_PTR On_ExcelAddin_Open( WPARAM wParam , LPARAM lParam );
	afx_msg LONG_PTR On_ExcelAddin_GetGroup( WPARAM wParam , LPARAM lParam );

	DECLARE_MESSAGE_MAP()
public:
	BOOL SendSms(CString strMobile, CString strMsg);
	afx_msg void OnAppCalltype();
	afx_msg void OnUpdateAppCalltype(CCmdUI *pCmdUI);
	int UBox_AddUploadRecordFile(long lUBoxLogID, CString strRecordName);
	void UBox_Upload_Record(void);
	int UBox_Upload_Record_SendNextFrame(void);
	void OnShellIcon_Show2(BOOL bShowRecever=true);
	afx_msg void OnAppWhite2();
	afx_msg void OnUpdateAppWhite2(CCmdUI *pCmdUI);
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MAINFRM_H__53645CFE_009C_4AD6_9EB7_EEB04AE157ED__INCLUDED_)