// DLG_UBoxPop.cpp : ʵÏÖÎļþ
//

#include "stdafx.h"
#include "CorpSms.h"
#include "DLG_UBoxPop.h"
#include "afxdialogex.h"
#include "MainFrm.h"
#include "FUBoxLog.h"
#include "DLG_SmsDY.h"
#include "DLG_UserSelect.h"


// DLG_UBoxPop ¶Ô»°¿ò

IMPLEMENT_DYNAMIC(DLG_UBoxPop, CDialogEx)

DLG_UBoxPop::DLG_UBoxPop(CWnd* pParent /*=NULL*/)
	: CDialogEx(DLG_UBoxPop::IDD, pParent)
{
	m_lCallingCount = 0;

	m_strKH_BZ = _T("");
	m_strKH_Job = _T("");
	m_strCall_BZ = _T("");
	m_strCallTime = _T("");
	m_strCallType = _T("");
	m_strKH_Local = _T("");
	m_strKH_LTD = _T("");
	m_strKH_Mobile = _T("");
	//  m_strKH_ = _T("");
	m_strKH_Name = _T("");
	m_strKH_Tel = _T("");
	m_strCall_Number = _T("");
	m_strCall_NumberLocal = _T("");

	m_lCallStatus = 0;
	m_lCallWay=0;
	m_bAddressModify = false;
	m_lAddressType = 0;
	m_lUserID = 0;
	m_bSelGroup = false;
	m_bCallModify = true;
	m_bCallSendSms = true;
	m_bAddressSave = false;

	m_bCallYModify = false;
	m_bAddressYModify = false;

	m_dwCallJT = 0;
	m_bCallBegin = false;
	m_bCallEnd = false;

	m_lUBoxLogID = 0;
	m_bSaveCallPro = false;
	m_lCallSC = 0;

	m_lTickCount = GetTickCount();

	m_lBeginTime = 0;

	m_lGroupID = 0;

	m_bRecord = false;
	m_bRecordEnd = false;
}

DLG_UBoxPop::~DLG_UBoxPop()
{
	int i=10;
}

void DLG_UBoxPop::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Text(pDX, IDD_UBOXPOP__KH_BZ, m_strKH_BZ);
	//  DDV_MaxChars(pDX, m_strKH_BZ, 50);
	DDX_Text(pDX, IDD_UBOXPOP__KH_JOB, m_strKH_Job);
	DDV_MaxChars(pDX, m_strKH_Job, 30);
	DDX_Text(pDX, IDD_UBOXPOP_CALLBZ, m_strCall_BZ);
	DDV_MaxChars(pDX, m_strCall_BZ, 500);
	DDX_Control(pDX, IDD_UBOXPOP_CALLSTATUS, m_S_CallStatus);
	DDX_Text(pDX, IDD_UBOXPOP_CALLTIME, m_strCallTime);
	DDV_MaxChars(pDX, m_strCallTime, 30);
	DDX_Text(pDX, IDD_UBOXPOP_CALLTYPE, m_strCallType);
	DDV_MaxChars(pDX, m_strCallType, 30);
	DDX_Control(pDX, IDD_UBOXPOP_CALLWAY, m_S_CallWay);
	DDX_Text(pDX, IDD_UBOXPOP_KH_LOCAL, m_strKH_Local);
	DDV_MaxChars(pDX, m_strKH_Local, 200);
	DDX_Text(pDX, IDD_UBOXPOP_KH_LTD, m_strKH_LTD);
	DDV_MaxChars(pDX, m_strKH_LTD, 50);
	DDX_Text(pDX, IDD_UBOXPOP_KH_MOBILE, m_strKH_Mobile);
	DDV_MaxChars(pDX, m_strKH_Mobile, 30);
	DDX_Text(pDX, IDD_UBOXPOP_KH_NAME, m_strKH_Name);
	DDV_MaxChars(pDX, m_strKH_Name, 24);
	DDX_Text(pDX, IDD_UBOXPOP_KH_TEL, m_strKH_Tel);
	DDV_MaxChars(pDX, m_strKH_Tel, 24);
	DDX_Text(pDX, IDD_UBOXPOP_NUMBER, m_strCall_Number);
	DDV_MaxChars(pDX, m_strCall_Number, 30);
	DDX_Text(pDX, IDD_UBOXPOP_NUMBERLOCAL, m_strCall_NumberLocal);
	DDV_MaxChars(pDX, m_strCall_NumberLocal, 120);
	DDX_Control(pDX, IDD_UBOXPOP_LIST, m_wndList);
}


BEGIN_MESSAGE_MAP(DLG_UBoxPop, CDialogEx)
	ON_WM_TIMER()
	ON_EN_CHANGE(IDD_UBOXPOP_KH_NAME, &DLG_UBoxPop::OnEnChangeUboxpopKhName)
	ON_EN_CHANGE(IDD_UBOXPOP_KH_LTD, &DLG_UBoxPop::OnEnChangeUboxpopKhLtd)
	ON_EN_CHANGE(IDD_UBOXPOP__KH_JOB, &DLG_UBoxPop::OnEnChangeUboxpop)
	ON_EN_CHANGE(IDD_UBOXPOP_KH_MOBILE, &DLG_UBoxPop::OnEnChangeUboxpopKhMobile)
	ON_EN_CHANGE(IDD_UBOXPOP_KH_TEL, &DLG_UBoxPop::OnEnChangeUboxpopKhTel)
	ON_EN_CHANGE(IDD_UBOXPOP__KH_BZ, &DLG_UBoxPop::OnEnChangeUboxpopKhBZ)
	ON_BN_CLICKED(IDD_UBOXPOP_KH_LOCAL_SEL, &DLG_UBoxPop::OnBnClickedUboxpopKhLocalSel)
	ON_BN_CLICKED(IDD_UBOXPOP_CALLTYPE_SEL, &DLG_UBoxPop::OnBnClickedUboxpopCalltypeSel)
	ON_EN_CHANGE(IDD_UBOXPOP_CALLBZ, &DLG_UBoxPop::OnEnChangeUboxpopCallbz)

	ON_COMMAND_RANGE(UBOXPOP_CALLTYPE_BEGIN,UBOXPOP_CALLTYPE_END,&DLG_UBoxPop::On_CallType)
	ON_COMMAND_RANGE(UBOXPOP_SMSDY_BEGIN,UBOXPOP_SMSDY_END,&DLG_UBoxPop::On_SmsDY)
	ON_COMMAND(UBOXPOP_SMSDY_OTHER , &DLG_UBoxPop::On_SmsDY_Other)
	ON_COMMAND(UBOXPOP_SMSDY_MANAGER , &DLG_UBoxPop::On_SmsDY_Manager)
	ON_MESSAGE( UBOX_EVENT , UBox_Event )
	ON_BN_CLICKED(IDOK, &DLG_UBoxPop::OnBnClickedOk)
	ON_BN_CLICKED(IDCANCEL, &DLG_UBoxPop::OnBnClickedCancel)
	ON_BN_CLICKED(IDD_UBOXPOP_CALL_RESMS, &DLG_UBoxPop::OnBnClickedUboxpopCallResms)
END_MESSAGE_MAP()


// DLG_UBoxPop ÏûÏ¢´¦Àí³ÌÐò


void DLG_UBoxPop::SetMainFrame(CMainFrame * pFrame)
{
	m_pMainFrame = pFrame;
}


void DLG_UBoxPop::ReSetTitle(void)
{
	CString str;
	if ( m_lCallWay==0 )
		str = _T("ºôÈë");
	else
		str = _T("ºô³ö");
	str = str + CString(_T(" ")) + m_strCall_NumberLocal;
	str = str + CString(_T(" ")) + m_strNumber;
	str = str + CString(_T(" ")) + m_strKH_Name;
	str = str + CString(_T(" ")) + m_strKH_LTD;

	if ( m_lCallingCount>1 )
	{
		CString strTemp;
		strTemp.Format( _T("%d´Î"),this->m_lCallingCount);
		str = str + CString(_T(" ")) + strTemp;
	}
	SetWindowText(str);
}


void DLG_UBoxPop::SetNumber(CString strNumber)
{
	m_strNumber = strNumber;
}



void DLG_UBoxPop::OnTimer(UINT_PTR nIDEvent)
{
	CDialogEx::OnTimer(nIDEvent);

	if ( nIDEvent ==1 )
	{
		KillTimer(nIDEvent);
		GetAddress();
	}
	if ( nIDEvent ==2 )
	{
		if ( m_dwCallJT>0 )
		{
			DWORD dwTime = ::GetTickCount()-m_dwCallJT;
			long lSec = dwTime/1000;
			COleDateTimeSpan sc(0,0,0,lSec);
			CString str;
			str.Format(_T("%02d:%02d") , sc.GetMinutes(),sc.GetSeconds());
			m_S_CallStatus.SetWindowText(str);
		}
	}
	if ( nIDEvent ==7 )  //ÓÃÓÚ×Ô¶¯½ÓÌý
	{
		KillTimer(nIDEvent);
		Call_Begin();
	}
	if ( nIDEvent == 8 )  //ÓÃÓÚÅжÏÉÏ´«Í¨»°¼Ç¼³¬Ê±
	{
		KillTimer(nIDEvent);

		Call_Close();  //¹Ø±Õͨ»°´°¿Ú
	}
}


void DLG_UBoxPop::GetAddress(void)
{
	m_AdoRS.SetAdoConnection(&this->m_pMainFrame->m_adoConnection);
	m_AdoRS2.SetAdoConnection(&this->m_pMainFrame->m_adoConnection);

	UpdateData(true);
	CString str;

	m_bCallModify = true; //ĬÈÏÊÇÔÊÐíÐÞ¸ÄÀ´µçÊôÐÔ
	m_bCallSendSms = true; //ĬÈÏÊÇÔÊÐí»Ø¸´¶ÌÐŵÄ
	m_bAddressSave = false; //ĬÈϲ»ÊÇÐÂÔöͨѶ¼£¬²»ÄÜÑ¡Ôñ±£´æ
	//ÊÕµ½DTMF£¬¼ì²éÏà¹ØÊý¾Ý
	if ( m_strNumber.GetLength()>0 )
	{
		BOOL bGetAddress=false;
		if (m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_SEE,false))  //Óй«ÓÃͨѶ¼²é¿´È¨ÏÞ
		{
			//²éÓû§
			str.Format(_T("select * from gaddress where Mobile='%s' or Tel='%s'"),m_strNumber,m_strNumber);
			if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() )
			{
				bGetAddress = true;
				m_lAddressType = 0;  //¹«ÓÃͨѶ¼
				m_bSelGroup = false;     //ÒÑÓÐÓû§£¬²»ÔÊÐíÑ¡Ôñ×é
				/*
				if (m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_MODIFY,false))  //Óй«ÓÃͨѶ¼²é¿´È¨ÏÞ
				{
					m_bAddressModify = true; //ÔÊÐíÐÞ¸ÄͨѶ¼
				}
				*/
				m_bAddressModify = false; //¹«ÓÃͨѶ¼µÄ£¬²»ÔÊÐíÐÞ¸Ä

				m_AdoRS.GetCollect(_T("UserID") , m_lUserID );
				m_AdoRS.GetCollect(_T("Name") , m_strKH_Name );
				m_AdoRS.GetCollect(_T("LTD") , m_strKH_LTD );
				m_AdoRS.GetCollect(_T("Job") , m_strKH_Job );
				m_AdoRS.GetCollect(_T("Mobile") , m_strKH_Mobile );
				m_AdoRS.GetCollect(_T("Tel") , m_strKH_Tel );
				m_AdoRS.GetCollect(_T("BZ")  , m_strKH_BZ );
				TCHAR szGroupID[32]={0};
				m_AdoRS.GetCollect(_T("GroupID")  , szGroupID );
				TCHAR szLocal[512]={0};
				GetLocal(_T("¹«ÓÃͨѶ¼"),_T("gaddress") , szLocal,szGroupID);
				m_strKH_Local = szLocal;
			}
		}
		if ( !bGetAddress )
		{
			//²éÓû§
			str.Format(_T("select * from paddress where Mobile='%s' or Tel='%s'"),m_strNumber,m_strNumber);
			if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() )
			{
				bGetAddress = true;
				m_lAddressType = 1;  //˽ÈËͨѶ¼
				m_bSelGroup = false;     //ÒÑÓÐÓû§£¬²»ÔÊÐíÑ¡Ôñ×é
				m_bAddressModify = true; //ÔÊÐíÐÞ¸ÄͨѶ¼

				m_AdoRS.GetCollect(_T("UserID") , m_lUserID );
				m_AdoRS.GetCollect(_T("Name") , m_strKH_Name );
				m_AdoRS.GetCollect(_T("LTD") , m_strKH_LTD );
				m_AdoRS.GetCollect(_T("Job") , m_strKH_Job );
				m_AdoRS.GetCollect(_T("Mobile") , m_strKH_Mobile );
				m_AdoRS.GetCollect(_T("Tel") , m_strKH_Tel );
				m_AdoRS.GetCollect(_T("BZ")  , m_strKH_BZ );
				TCHAR szGroupID[32]={0};
				m_AdoRS.GetCollect(_T("GroupID")  , szGroupID );
				TCHAR szLocal[512]={0};
				GetLocal(_T("˽ÈËͨѶ¼"),_T("paddress") , szLocal,szGroupID);
				m_strKH_Local = szLocal;
			}
		}
		if ( !bGetAddress )
		{
			m_lAddressType = -1;  //δ֪
			m_bSelGroup = true;     //ÔÊÐíÑ¡ÔñÓû§×é
			m_bAddressModify = true; //ÔÊÐíÐÞ¸ÄͨѶ¼
			m_bAddressSave   = true; //ÔÊÐíÑ¡Ôñ±£´æÍ¨Ñ¶Â¼

			m_lAddressType = 1;  //˽ÈËͨѶ¼
			m_strKH_Local = _T("˽ÈËͨѶ¼");
			m_strKHGroupID = _T("");  //ĬÈϱ£´æÎ»ÖÃ

			if ( m_strNumber.Left(1) == _T("1") )  //ÊÖ»ú
			{
				m_strKH_Mobile = m_strNumber;
			}
			else
			{
				m_strKH_Tel = m_strNumber;
			}
		}

		//·¢³öÇëÇ󣬶Áȡͨ»°¼Ç¼.Èç¹ûÊÇ100000£¬¶ÁÈ¡ÆóÒµID¡£
		REQ_UBox_GetPro * pGetPro = new REQ_UBox_GetPro;
		memset(pGetPro , 0 , sizeof(REQ_UBox_GetPro));
		pGetPro->lCorpID =  m_pMainFrame->m_lCorpID;
		pGetPro->lUserID = m_pMainFrame->m_lUserID;
		pGetPro->lTickCount = m_lTickCount;
		pGetPro->lAddressType = m_lAddressType;
		pGetPro->lKH_UserID = m_lUserID;
		_tcscpy(pGetPro->szCallNumber , m_strNumber);
		pGetPro->bGetCorpPro = false;
		if (  !bGetAddress && m_pMainFrame->m_lCorpID==100000)
		{
			pGetPro->bGetCorpPro = true;
		}
		m_pMainFrame->SendFrame(SMSFUNC_UBOX_GETPRO,(BYTE*)pGetPro,sizeof(REQ_UBox_GetPro));

	}
	else
	{
		m_lAddressType = -1;  //δ֪
		m_bSelGroup = false;     //ÒÑÓÐÓû§£¬²»ÔÊÐíÑ¡Ôñ×é
		m_bAddressModify = false; //ÔÊÐíÐÞ¸ÄͨѶ¼
		m_bCallSendSms = false; //²»ÔÊÐí·¢ËͶÌÐÅ
	}

	EnableCtrl();

	ReSetTitle();

	UpdateData(false);
}

void DLG_UBoxPop::GetLocal(CString strType,CString strDBName,TCHAR *pLocal, TCHAR *pGroupID)
{
	long lLen = _tcslen( pGroupID );
	TCHAR szGroup[16]={0};
	TCHAR szTemp[16]={0};
	TCHAR szSelect[128]={0};
	_stprintf( pLocal , strType );

	for ( int i = 1 ; i<= lLen ; i++ )
	{
		_tcsncpy( szGroup , pGroupID , i );
		_stprintf( szSelect , _T("select Name from %s where GroupID='%s' AND UserType='0' ") ,strDBName, szGroup );
		BOOL b = m_AdoRS.Open( szSelect );
		if (b && !m_AdoRS.IsEOF())
		{
			m_AdoRS.GetCollect( _T("Name") , szTemp );
			_tcscat( pLocal , _T("\\") );
			_tcscat( pLocal , szTemp );
		}
	}
}



BOOL DLG_UBoxPop::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	m_lTickCount = GetTickCount();


	//³õʼ»¯List
	m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLIN) );
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLIN2) );
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLOUT) );
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLOUT2) );

	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("µç»°ºÅÂë,130;  ʱ ¼ä,130;ͨ»°Ê±³¤,80;½ÓÌýÈË,90; ÐÕÃû,90;  µ¥Î»Ãû³Æ,200;    ±¸×¢,220;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);

	m_strCall_Number = m_strNumber;
	GetLocalTime(&m_tCallTime);
	m_strCallTime.Format(_T("%02d:%02d:%02d") , m_tCallTime.wHour,m_tCallTime.wMinute,m_tCallTime.wSecond);

	m_strCall_NumberLocal=_T("δ֪¹éÊôµØ");
	m_strCallType = _T("δ·ÖÀà");

	SetCallStatus();
	SetCallWay();


	UpdateData(false);

	SetTimer(1,100,NULL);  //½øÐÐȡͨѶ¼²Ù×÷

	if ( m_lCallWay == 1 ) //ºô³ö
	{
		long lDelay = m_pMainFrame->m_Setup.UBox_lPhoneOutDelay;
		if ( lDelay <7 || lDelay>20 )
			lDelay = 7;

		if ( m_lBeginTime>0 )
			SetTimer( 7 , m_lBeginTime*1000 , NULL );  //×Ô¶¯½Óͨ,ÐèÒªÁ¢¼´½Óͨ
		else
			SetTimer( 7 , lDelay*1000 , NULL );  //×Ô¶¯½Óͨ
	}

	ReSetTitle();

	return TRUE;  // return TRUE unless you set the focus to a control
	// Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE
}


void DLG_UBoxPop::SetCallStatus(void)
{
	if ( m_lCallStatus ==0 )
	{
		m_S_CallStatus.SetWindowText(_T("δ½Ó"));
	}
	else
	{
		m_S_CallStatus.SetWindowText(_T("ÒѽÓ"));
	}
}


void DLG_UBoxPop::SetCallWay(void)
{
	if ( m_lCallWay ==0 )
	{
		m_S_CallWay.SetWindowText(_T("ºôÈë"));
	}
	else
	{
		m_S_CallWay.SetWindowText(_T("ºô³ö"));
	}
}


void DLG_UBoxPop::EnableCtrl(void)
{
	if ( m_bSelGroup )
	{
		GetDlgItem(IDD_UBOXPOP_KH_LOCAL_SEL)->EnableWindow(true);
	}
	else
	{
		GetDlgItem(IDD_UBOXPOP_KH_LOCAL_SEL)->EnableWindow(false);
	}
	if ( m_bCallModify )
	{
		GetDlgItem(IDD_UBOXPOP_CALLTYPE_SEL)->EnableWindow(true);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_CALLBZ))->SetReadOnly(false);
	}
	else
	{
		GetDlgItem(IDD_UBOXPOP_CALLTYPE_SEL)->EnableWindow(false);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_CALLBZ))->SetReadOnly(true);
	}
	if ( m_bCallSendSms )
	{
		GetDlgItem(IDD_UBOXPOP_CALL_RESMS)->EnableWindow(true);
	}
	else
	{
		GetDlgItem(IDD_UBOXPOP_CALL_RESMS)->EnableWindow(false);
	}

	if ( m_bAddressModify )
	{
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_NAME))->SetReadOnly(false);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_LTD))->SetReadOnly(false);
		((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_JOB))->SetReadOnly(false);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_MOBILE))->SetReadOnly(false);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_TEL))->SetReadOnly(false);
		((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_BZ))->SetReadOnly(false);
	}
	else
	{
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_NAME))->SetReadOnly(true);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_LTD))->SetReadOnly(true);
		((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_JOB))->SetReadOnly(true);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_MOBILE))->SetReadOnly(true);
		((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_TEL))->SetReadOnly(true);
		((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_BZ))->SetReadOnly(true);
	}

	if ( m_bAddressSave )
	{
		GetDlgItem(IDD_UBOXPOP__KH_SAVE)->EnableWindow(true);
	}
	else
	{
		GetDlgItem(IDD_UBOXPOP__KH_SAVE)->EnableWindow(false);
	}

}


void DLG_UBoxPop::OnEnChangeUboxpopKhName()
{
	m_bAddressYModify = true;  //Ð޸ĹýͨѶ¼×ÊÁÏ
}


void DLG_UBoxPop::OnEnChangeUboxpopKhLtd()
{
	m_bAddressYModify = true;  //Ð޸ĹýͨѶ¼×ÊÁÏ
}


void DLG_UBoxPop::OnEnChangeUboxpop()
{
	m_bAddressYModify = true;  //Ð޸ĹýͨѶ¼×ÊÁÏ
}


void DLG_UBoxPop::OnEnChangeUboxpopKhMobile()
{
	m_bAddressYModify = true;  //Ð޸ĹýͨѶ¼×ÊÁÏ
}


void DLG_UBoxPop::OnEnChangeUboxpopKhTel()
{
	m_bAddressYModify = true;  //Ð޸ĹýͨѶ¼×ÊÁÏ
}

void DLG_UBoxPop::OnEnChangeUboxpopKhBZ()
{
	m_bCallYModify = true;  //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ
}


void DLG_UBoxPop::OnBnClickedUboxpopKhLocalSel()
{
	DLG_UserSelect dlg(this);
	dlg.SetParam( m_pMainFrame,_T("paddress"),_T("¸ùĿ¼"),false );
	if ( dlg.DoModal()==IDOK )
	{
		m_lGroupID = dlg.GetParam(m_strGroupID);
		m_bAddressYModify = true;  //Ð޸ĹýͨѶ¼×ÊÁÏ
		m_lAddressType = 1; //˽ÈËͨѶ¼

		//µ½GroupID
		CString str;
		m_strGroupID = _T("");
		str.Format(_T("select * from paddress where UserID=%d") , m_lGroupID );
		if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() )
		{
			m_AdoRS.GetCollect(_T("GroupID") , m_strGroupID);
		}

		TCHAR szLocal[512]={0};
		GetLocal(_T("˽ÈËͨѶ¼"),_T("paddress") , szLocal,m_strGroupID.GetBuffer(0));

		UpdateData(true);
		m_strKH_Local = szLocal;
		//m_Address.lAccessGroupID = dlg.GetParam(m_strGroup);
		UpdateData(false);
	}	
}


void DLG_UBoxPop::OnBnClickedUboxpopCalltypeSel()
{
	CMenu menu;
	menu.CreatePopupMenu();

	long lCount = m_CallType.GetCount();

	for ( long i=0 ; i<lCount; i++ )
	{
		menu.AppendMenu(MF_STRING     , UBOXPOP_CALLTYPE_BEGIN+i, m_CallType.GetAt(i).szType );
	}

	CRect rect;
	GetDlgItem(IDD_UBOXPOP_CALLTYPE_SEL)->GetWindowRect(&rect);
	//this->ClientToScreen(&rect);
	//ÏÔʾ²Ëµ¥
	menu.TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON | TPM_RIGHTBUTTON,rect.right,rect.bottom, this, NULL);

	menu.DestroyMenu();


	//m_bCallYModify = true;  //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ
}

void DLG_UBoxPop::OnEnChangeUboxpopCallbz()
{
	m_bCallYModify = true;  //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ
}


BOOL DLG_UBoxPop::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
try
{
	CString str;
	//È¡ÍÆ¼öÐÅÏ¢
	if (pHead->lFuncType == SMSFUNC_UBOX_GETPRO)
	{
		ANS_UBox_GetPro   * pGetPro = (ANS_UBox_GetPro *)pFrame;
		ANS_UBox_CallType * pCallType = (ANS_UBox_CallType *)(pFrame+sizeof(ANS_UBox_GetPro));
		ANS_UBox_CallLog * pCallLog  =  (ANS_UBox_CallLog *)(pFrame+sizeof(ANS_UBox_GetPro)+sizeof(ANS_UBox_CallType)*pGetPro->lCallTypeCount);

		if ( pGetPro->lTickCount != m_lTickCount )  //²»ÊÇ´Ë´°¿Ú·¢³öµÄ£¬²»´¦Àí¡£
		{
			return true;
		}

		UpdateData(true);
		m_strCall_NumberLocal = pGetPro->szCall_Local;
		if ( pGetPro->bGetCorpPro)
		{
			m_strKH_Name = pGetPro->szKH_Name;
			m_strKH_LTD = pGetPro->szKH_LTD;
			m_strKH_Job = pGetPro->szKH_Job;
			m_strKH_Mobile = pGetPro->szKH_Mobile;
			m_strKH_Tel = pGetPro->szKH_Tel;
			m_strKH_Local = pGetPro->szKH_Local;

			m_bCallModify = true;
			m_bCallSendSms = true;
			m_bAddressSave = false;
			m_bAddressModify = false;
			m_bAddressYModify = false;
			m_bSelGroup = false;

			EnableCtrl();
		}
		ReSetTitle();
		UpdateData(false);

		m_CallType.RemoveAll();
		for ( long i=0; i<pGetPro->lCallTypeCount;i++ )
		{
			ANS_UBox_CallType callType = pCallType[i];
			m_CallType.Add(callType);
		}

		m_wndList.DeleteAllItems();
		for ( i=0 ; i< pGetPro->lCallLogCount ; i++ )
		{
			//m_wndList.SetHeadings(_T("µç»°ºÅÂë,90;·½Ïò,50; ʱ ¼ä,120;ͨ»°Ê±³¤,60; ÐÕÃû,80;  µ¥Î»Ãû³Æ,120;    ±¸×¢,120;"));
			m_wndList.InsertItem(i,pCallLog[i].szCallNumber,CFUBoxLog::GetCallLogIconIndex(&pCallLog[i]));
			long lTemp=1;

			str.Format(_T("%04d.%02d.%02d %02d:%02d") , pCallLog[i].tCallTime.wYear,pCallLog[i].tCallTime.wMonth,pCallLog[i].tCallTime.wDay,pCallLog[i].tCallTime.wHour,pCallLog[i].tCallTime.wMinute);
			m_wndList.SetItemText(i,lTemp++,str); //ͨ»°Ê±¼ä

			COleDateTimeSpan span(0,0,0,pCallLog[i].lCallSC);
			str.Format(_T("%02d:%02d:%02d"),span.GetHours(),span.GetMinutes(),span.GetSeconds());
			m_wndList.SetItemText(i,lTemp++,str); //ʱ³¤

			m_wndList.SetItemText(i,lTemp++,pCallLog[i].szUserName); //½ÓÌýÈË
			m_wndList.SetItemText(i,lTemp++,pCallLog[i].szKHName); //ÐÕÃû
			m_wndList.SetItemText(i,lTemp++,pCallLog[i].szKHLTD); //µ¥Î»
			m_wndList.SetItemText(i,lTemp++,pCallLog[i].szCallBZ); //±¸×¢


		}

		return true;
	}
	if (pHead->lFuncType == SMSFUNC_UBOX_UPLOAD)
	{
		ANS_UBox_UpLoad * pUpload = (ANS_UBox_UpLoad *)pFrame;
		if ( pUpload->req.lTickCount != m_lTickCount )  //²»ÊÇ´Ë´°¿Ú·¢³öµÄ£¬²»´¦Àí¡£
		{
			return true;
		}
		if ( pUpload->lUploadStatus == 1 )
		{
			m_lUBoxLogID = pUpload->req.callLog.lUBoxLogID;
		}

		Call_Close();

		return true;
	}

	return false;
}
catch(...)
{
}
return false;
}


void DLG_UBoxPop::On_CallType(UINT nID)
{
	UpdateData(true);

	long lID = nID;
	long lBegin = UBOXPOP_CALLTYPE_BEGIN;

	long lIndex = nID-lBegin;

	m_strCallType = m_CallType.GetAt(lIndex).szType;
	m_bCallYModify = true;  //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ
	UpdateData(false);
}

void DLG_UBoxPop::On_SmsDY_Other()
{

	if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
	{
		//Ìí¼ÓÄÚÈÝ
		m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("") );
		//Ìí¼ÓºÅÂë
		long lCount=1;
		//·ÖÅäÊý¾Ý
		long lSize = sizeof(Send_User)*lCount;
		BYTE *pS = new BYTE[lSize];
		memset( pS , 0 , lSize );
		Send_User * pUser = (Send_User * )pS;
		_tcscpy(pUser->szName,this->m_strKH_Name);
		_tcscpy(pUser->szMobile,this->m_strNumber);
		m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS);
		delete pS;
	}
	
}

void DLG_UBoxPop::On_SmsDY_Manager()
{
	DLG_SmsDY dlg(this);
	dlg.SetParam( &m_AdoRS );
	dlg.m_bDblclkSelect = false; //Ë«»÷²»ÓÃÑ¡Ôñ
	dlg.DoModal();
}

void DLG_UBoxPop::On_SmsDY(UINT nID)
{

	long lID = nID;
	long lBegin = UBOXPOP_SMSDY_BEGIN;

	long lIndex = nID-lBegin;

	if ( lIndex<m_SmsDY.GetCount() )
	{
		CString strSmsDY = m_SmsDY.GetAt(lIndex);

		if ( strSmsDY.GetLength()>0 && m_strNumber.GetLength()>0 )
		{
			m_pMainFrame->SendSms(m_strNumber,strSmsDY);
		}
	}
}


LONG DLG_UBoxPop::UBox_Event( WPARAM wParam , LPARAM lParam )
{
	long lCmd = (long)wParam;
	CString str;

	if ( lCmd == UBOX_EVENT_HOOK_UP || lCmd == UBOX_EVENT_HOOK_UP2) //¹Ò»ú
	{
		if (lCmd== UBOX_EVENT_HOOK_UP2 )  //ÖØ¸´Í¨»°µÄ£¬¹Ø±Õǰһ¸öͨ»°
		{
			CDialogEx::OnCancel();
		}
		Call_End();
		return true;
	}
	if ( lCmd == UBOX_EVENT_HOOK_OFF ) //ͻȜ
	{
		if ( m_lCallWay ==0 ) //ºôÈë,ºôÈëʱժ»úΪ¿ªÊ¼½ÓÌý
		{
			Call_Begin();  //ºô½Ð¿ªÊ¼
		}
		if ( m_lCallWay == 1 ) //ºô³ö,ºô³öÊÇÕª»úºó²ÅÄܲ¦ºÅµÄ£¬Èç¹ûÔÙ´ÎÕª»ú£¬¿Ï¶¨ÊǽáÊøÍ¨»°ÁË
		{
			Call_End();  //ºô½Ð½áÊø
		}
		return true;
	}
	if ( lCmd == UBOX_EVENT_WJ ) //δ½Ó
	{
		if ( m_lCallWay ==0 ) //ºôÈë,ºôÈëʱ³öÏÖδ½ÓΪ½Óºô½áÊø£¬ºô½Ðʱ¼äΪ0
		{
			Call_End();  //ºô½Ð½áÊø
		}
		if ( m_lCallWay == 1 ) //ºô³ö,ºô³öÊÇÕª»úºó²ÅÄܲ¦ºÅµÄ£¬Èç¹ûÔÙ´ÎÕª»ú£¬¿Ï¶¨ÊǽáÊøÍ¨»°ÁË
		{
			Call_End();  //ºô½Ð½áÊø
		}
		return true;
	}

	return 0;
}

void DLG_UBoxPop::Call_End(void)
{
#ifdef SUPPER_UBOX
	KillTimer(2); //½áÊøÓÃÓÚÏÔʾʱ¼äµÄTimer
	KillTimer(7); //½áÊøÓÃÓÚ×Ô¶¯½ÓÌýµÄTimer

	//if ( m_bCallEnd )  //´Ëºô½ÐÊÇÒѽáÊøµÄ£¬²»ÓÃÔÙ´¦Àí
	//	return;

	m_bCallEnd = true;

	//¼ÆËãͨ»°Ê±³¤
	if ( m_dwCallJT>0 && m_lCallSC<=0 )
	{
		DWORD dwTime = ::GetTickCount()-m_dwCallJT;
		m_lCallSC = dwTime/1000;
	}

	//ֹͣ¼Òô
	if ( m_bRecord )
	{
		m_bRecordEnd = true;
		m_pMainFrame->m_ubox_stop_record(m_pMainFrame->m_ubox_endHandle);
	}
	if ( this->m_lUBoxLogID <=0 )
	{
		//Ϊ²¦ºÅ½çÃæÔö¼Ó²¦ºÅÈÕÖ¾
		this->m_pMainFrame->m_DlgUBoxDial.AddCallLog(m_strNumber,m_lCallWay,m_lCallStatus);
		//½«Êý¾ÝÉÏ´«µ½·þÎñÆ÷
		Call_Upload();
	}
#endif
}


void DLG_UBoxPop::Call_Begin(void)
{
#ifdef SUPPER_UBOX
	KillTimer(7); //½áÊøÓÃÓÚ×Ô¶¯½ÓÌýµÄTimer
	if ( m_bCallBegin ) //´Ëºô½ÐÊÇÒÑ¿ªÊ¼µÄ£¬²»Óô¦Àí
		return ;

	if ( m_bCallEnd ) //´Ëºô½ÐÊÇÒѽáÊøµÄ£¬²»Óô¦Àí
		return ;

	m_bCallBegin = true;
	m_dwCallJT = GetTickCount();
	m_lCallStatus =1 ;//ͨ»°×´Ì¬±ä»¯ÒѽÓ
	m_S_CallStatus.SetWindowText(_T("00:00"));
	SetTimer(2 , 1000 , NULL );

	if ( !m_bRecord && m_pMainFrame->m_Setup.UBox_bAutoRecord )  //δ¿ªÊ¼Â¼Òô£¬½øÐмÒô²Ù×÷
	{
		//ȡ¼ÒôÎļþÃû
		m_bRecordEnd = false;  //δ¼ÒôÍê³É

		TCHAR szPath[512]={0};
		m_pMainFrame->GetCurrentPath(szPath);
		_tcscat(szPath , _T("Record") );
		::CreateDirectory(szPath , NULL );  //ÓÐÀíûÀí£¬ÏÈ´´½¨Îļþ¼Ð
		SYSTEMTIME t;::GetLocalTime(&t);
		m_strRecordName.Format( _T("%s\\%04d%02d%02d%02d%02d%02d%d.mp3"),szPath,t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond,t.wMilliseconds);
		m_pMainFrame->m_ubox_stop_record(m_pMainFrame->m_ubox_endHandle);

		//CODER_ALAW
		//CODER_MP3
#ifdef _UNICODE
		int iRet = m_pMainFrame->m_ubox_record_file(m_pMainFrame->m_ubox_endHandle,CW2A(m_strRecordName),CODER_ALAW);
#else
		int iRet = m_pMainFrame->m_ubox_record_file(m_pMainFrame->m_ubox_endHandle,m_strRecordName,CODER_MP3);
#endif
		if ( iRet ==0 )
		{
			m_bRecord = true;
		}
	}
#endif
}


void DLG_UBoxPop::SetCallCount(long lCount)
{
	this->m_lCallingCount = lCount;
}


void DLG_UBoxPop::SetCallWay(long lCallWay)
{
	m_lCallWay = lCallWay;
}


void DLG_UBoxPop::Call_Upload(void)
{
	UpdateData(true);

	REQ_UBox_UpLoad * pUpload = new REQ_UBox_UpLoad;
	memset(pUpload , 0 , sizeof(REQ_UBox_UpLoad));

	pUpload->callLog.lUBoxLogID = m_lUBoxLogID;
	pUpload->lCorpID =  m_pMainFrame->m_lCorpID;
	pUpload->lUserID = m_pMainFrame->m_lUserID;
	pUpload->lTickCount = m_lTickCount;
	pUpload->callLog.lCorpID = pUpload->lCorpID;
	pUpload->callLog.lUserID = pUpload->lUserID;
	_tcscpy(pUpload->callLog.szUserName , m_pMainFrame->m_pCurUser->szUser);
	pUpload->callLog.lCallStatus = m_lCallStatus;
	pUpload->callLog.lCallWay = m_lCallWay;
	pUpload->callLog.tCallTime = m_tCallTime;
	_tcscpy(pUpload->callLog.szCallLocal ,this->m_strCall_NumberLocal);
	_tcscpy(pUpload->callLog.szCallNumber ,m_strNumber);
	pUpload->callLog.lCallSC = m_lCallSC;
	if ( m_bSaveCallPro )
	{
		_tcscpy(pUpload->callLog.szCallType ,m_strCallType);
		_tcscpy(pUpload->callLog.szCallBZ ,m_strCall_BZ);
	}
	pUpload->callLog.lKHAddressType = m_lAddressType;
	pUpload->callLog.lKHUserID = m_lUserID;
	_tcscpy(pUpload->callLog.szKHName ,m_strKH_Name);
	_tcscpy(pUpload->callLog.szKHLTD ,m_strKH_LTD);

	m_pMainFrame->SendFrame(SMSFUNC_UBOX_UPLOAD,(BYTE*)pUpload,sizeof(REQ_UBox_UpLoad));

	SetTimer(8 , 30000 , NULL );  //30Ãëºó³¬Ê±¼ì²â
}


void DLG_UBoxPop::OnBnClickedOk()
{
	m_bSaveCallPro = true;  //ÐèÒª±£´æÍ¨»°ÊôÐÔ

	UpdateData(true);

	if ( m_bAddressYModify ) //ÒÑÐ޸ĹýͨѶ¼
	{
		CString str;
		if ( m_bAddressModify && m_lAddressType==1 && m_lUserID>0 ) //˽ÈËͨѶ¼µÄÔÊÐíÖ±½ÓÐÞ¸Ä
		{
			str.Format(_T("Update paddress set Name='%s',Ltd='%s',Job='%s',Mobile='%s',Tel='%s',BZ='%s' where UserID=%d") , SqlStr(m_strKH_Name),SqlStr(m_strKH_LTD),SqlStr(m_strKH_Job),SqlStr(m_strKH_Mobile),SqlStr(m_strKH_Tel),SqlStr(m_strKH_BZ),m_lUserID);
			m_AdoRS.Open(str);
			m_AdoRS.Close();
		}
		if ( m_bAddressModify && m_lAddressType==1 && m_lUserID<=0 ) //˽ÈËͨѶ¼µÄÔÊÐíÖ±½ÓÐÞ¸Ä
		{
			//Ìí¼Ó˽ÈËͨѶ¼
			CString strGroupID = m_strGroupID;
			str.Format(_T("insert into  paddress (GroupID,UserType,Name,Ltd,Job,Mobile,Tel,BZ) values ('%s','1','%s','%s','%s','%s','%s','%s')") , strGroupID,SqlStr(m_strKH_Name),SqlStr(m_strKH_LTD),SqlStr(m_strKH_Job),SqlStr(m_strKH_Mobile),SqlStr(m_strKH_Tel),SqlStr(m_strKH_BZ),m_lUserID);
			m_AdoRS.Open(str);
			str.Format(_T("select top 1 * from paddress order by UserID desc"));
			if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF())
			{
				m_AdoRS.GetCollect(_T("UserID") , m_lUserID);
			}
			m_AdoRS.Close();
		}
	}

	Call_Upload();

	CDialogEx::OnOK();
}


void DLG_UBoxPop::OnBnClickedCancel()
{
	if ( this->m_bAddressYModify || this->m_bCallYModify )
	{
		int iRet = MessageBox(_T("ͨѶ¼»òͨ»°ÊôÐÔÒÑ×ö¹ýÐ޸ģ¬ÐèÒª±£´æÂð£¿") , _T("Ìáʾ") , MB_ICONQUESTION|MB_YESNO);
		if ( iRet == IDYES )
		{
			OnBnClickedOk();
			return ;
		}
	}

	m_bSaveCallPro = false;  //²»ÐèÒª±£´æÍ¨»°ÊôÐÔ

	CDialogEx::OnCancel();

	Call_Close();
}


void DLG_UBoxPop::Call_Close(void)
{

	if ( m_bRecordEnd && m_lUBoxLogID)  //¼Òô½áÊø
	{
		CString strFileName;
		//¸ÄÃû
		TCHAR szPath[512]={0};
		m_pMainFrame->GetCurrentPath(szPath);
		_tcscat(szPath , _T("Record") );
		::CreateDirectory(szPath , NULL );  //ÓÐÀíûÀí£¬ÏÈ´´½¨Îļþ¼Ð
		strFileName.Format( _T("%s\\%d.mp3"),szPath,m_lUBoxLogID);

		//½øÐиÄÃû²Ù×÷
		if ( strFileName!=m_strRecordName )
		{
			MoveFile(m_strRecordName,strFileName );
			m_strRecordName = strFileName;

			if (  m_pMainFrame->m_Setup.UBox_lReocrdDel>0 && this->m_lCallSC < m_pMainFrame->m_Setup.UBox_lReocrdDel )  //³¤¶È²»¹»£¬É¾³ý
			{
				::DeleteFile(m_strRecordName);
			}
			else
			{
				m_pMainFrame->UBox_AddUploadRecordFile(m_lUBoxLogID,m_strRecordName);
			}
		}
	}
	if ( m_bCallEnd && !IsWindowVisible() )
	{
		//ͨ»°½áÊø²¢ÇÒ´°¿Ú¹Ø±Õ£¬¿ÉÒÔ½áÊø±¾´°¿ÚÁË
		m_pMainFrame->uboxPop_Del(this);

		OnCancel();
	}
}


void DLG_UBoxPop::OnCancel()
{
	// TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà

	//CDialogEx::OnCancel();

	DestroyWindow();
}


void DLG_UBoxPop::PostNcDestroy()
{
	CDialogEx::PostNcDestroy();

	delete this;
}

void DLG_UBoxPop::SetCallBeginTime(long lBeginTime)
{
	m_lBeginTime = lBeginTime;
}



void DLG_UBoxPop::OnBnClickedUboxpopCallResms()
{
	m_SmsDY.RemoveAll();


	CMenu menu;
	menu.CreatePopupMenu();

	long lMaxPopMenu=32;
	CMenu popMenu[32];
	CString str;
	str.Format(_T("Select * from smsdytype"));
	m_AdoRS.Open(str);
	long lIndex=0;
	long lItemCount=0;
	while(!m_AdoRS.IsEOF() && lIndex<lMaxPopMenu)
	{
		CString strType;
		long lDYID;
		m_AdoRS.GetCollect(_T("Title") , strType);
		m_AdoRS.GetCollect(_T("DYID") , lDYID);

		popMenu[lIndex].CreatePopupMenu();
		menu.AppendMenu( MF_STRING|MF_POPUP,(UINT)popMenu[lIndex].GetSafeHmenu(), strType );

		str.Format(_T("Select * from smsdy where Type='%d'"),lDYID);
		m_AdoRS2.Open(str);
		while(!m_AdoRS2.IsEOF())
		{
			CString strMsg;
			m_AdoRS2.GetCollect(_T("Msg") , strMsg);
			if ( strMsg.GetLength()>0 )
			{
				m_SmsDY.Add(strMsg);
				popMenu[lIndex].AppendMenu( MF_STRING     , UBOXPOP_SMSDY_BEGIN + lItemCount , strMsg );

				lItemCount++;
			}

			m_AdoRS2.MoveNext();
		}


		m_AdoRS.MoveNext();
		lIndex ++;
	}

	menu.AppendMenu(MF_SEPARATOR );

	menu.AppendMenu( MF_STRING     , UBOXPOP_SMSDY_OTHER , _T("ÆäËü¶ÌÐÅÄÚÈÝ") );

	menu.AppendMenu(MF_SEPARATOR );

	menu.AppendMenu( MF_STRING     , UBOXPOP_SMSDY_MANAGER , _T("³£ÓöÌÓï¹ÜÀí") );



	CRect rect;
	GetDlgItem(IDD_UBOXPOP_CALL_RESMS)->GetWindowRect(&rect);
	//this->ClientToScreen(&rect);
	//ÏÔʾ²Ëµ¥
	menu.TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON | TPM_RIGHTBUTTON,rect.right,rect.bottom, this, NULL);

	menu.DestroyMenu();


}