CorpSms/DLG_UBoxPop.cpp

1101 lines
27 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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_PTR 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();
}