SmsManager/K_MsgList.cpp

550 lines
12 KiB
C++
Raw 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.

// ListDlg.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "K_MsgList.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CK_MsgList dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_SmsLogSee.h"
#include "DLG_HZB_Export.h"
#include "SmsManagerDoc.h"
#include "UserView.h"
#include "DLG_Corp_Oper_Open.h"
CK_MsgList::CK_MsgList(CWnd* pParent /*=NULL*/)
: CDialog(CK_MsgList::IDD, pParent)
{
//{{AFX_DATA_INIT(CK_MsgList)
m_lTime = -1;
m_lType = -1;
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
// m_bProcess = false;
m_lQueryCorpID = 0;
m_lMsgCount = 0;
}
void CK_MsgList::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CK_MsgList)
DDX_Control(pDX, IDC_LIST_CORPID, m_E_CorpID);
DDX_Control(pDX, IDC_LIST_TYPE, m_L_Type);
DDX_Control(pDX, IDC_LIST_TIME, m_L_Time);
DDX_Control(pDX, IDC_LIST_S1, m_S_S1);
DDX_Control(pDX, IDC_LIST_LIST, m_wndList);
DDX_CBIndex(pDX, IDC_LIST_TIME, m_lTime);
DDX_CBIndex(pDX, IDC_LIST_TYPE, m_lType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CK_MsgList, CDialog)
//{{AFX_MSG_MAP(CK_MsgList)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_LIST_LIST, OnDblclkListList)
ON_NOTIFY(NM_RCLICK, IDC_LIST_LIST, OnRclickListList)
ON_BN_CLICKED(IDC_LIST_QUERY, OnListQuery)
ON_CBN_SELCHANGE(IDC_LIST_TYPE, OnSelchangeListType)
//}}AFX_MSG_MAP
ON_COMMAND(MENU_LIST_SEE , On_User_See )
ON_COMMAND(MENU_LIST_CORPLIST , On_User_CorpList )
ON_COMMAND(MENU_LIST_CORPOFF , On_User_CorpOFF )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CK_MsgList message handlers
BOOL CK_MsgList::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CK_MsgList::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CK_MsgList::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return false;
}
#ifndef SMSMANAGER_KF
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) )
{
return false;
}
#endif
return true;
}
BOOL CK_MsgList::ProcessSocket(Socket_Head *pHead)
{
//ȡ<>
if (pHead->lFuncType == SMSFUNC_MSGLIST)
{
ANS_MsgList * pList = (ANS_MsgList *)pHead->pFrame;
ANS_MsgListData * pData = (ANS_MsgListData *)(pHead->pFrame+sizeof(ANS_MsgList));
if ( pList->lType == 0 || pList->lType == 2 || pList->lType == 3)
{
CString strTemp;
strTemp.Format( _T("<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (%d/%d)") , pList->lPageCount,pList->lPageAll );
m_S_S1.SetWindowText( strTemp );
//<2F><><EFBFBD>ӵ<EFBFBD>List
long lCount = m_wndList.GetItemCount();
TCHAR szBuf[512]={0};
for ( int i = 0 ; i< pList->lCount;i++)
{
ANS_MsgListData * pNewData = new ANS_MsgListData;
*pNewData = *pData;
POSITION pos = m_ListData.AddTail(pNewData);
//m_wndList.SetHeadings(_T("<22><><EFBFBD><EFBFBD>,40; <20><>ҵID,60;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1000;"));
m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10),0);
_stprintf(szBuf , _T("%d") , pData->lCorpID );
m_wndList.SetItemText(lCount+i,1,szBuf);
m_wndList.SetItemText(lCount+i,2,_itot(pData->lCount,szBuf,10));
m_wndList.SetItemText(lCount+i,3,pData->szMsg);
m_lMsgCount += pData->lCount;
m_wndList.SetItemData(lCount+i,(DWORD_PTR)(pos) );
pData++;
}
if ( pList->lPageCount==pList->lPageAll )
{
m_wndList.InsertItem( lCount+i,_T(""),0);i++;
m_wndList.InsertItem( lCount+i,_T("<EFBFBD>ϼ<EFBFBD>"),0);
m_wndList.SetItemText(lCount+i,2,_itot(m_lMsgCount,szBuf,10));
}
}
if ( pList->lType == 1 )
{
CString strTemp;
strTemp.Format( _T("<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (%d/%d)") , pList->lPageCount,pList->lPageAll );
m_S_S1.SetWindowText( strTemp );
//<2F><><EFBFBD>ӵ<EFBFBD>List
long lCount = m_wndList.GetItemCount();
TCHAR szBuf[512]={0};
for ( int i = 0 ; i< pList->lCount;i++)
{
ANS_MsgListData * pNewData = new ANS_MsgListData;
*pNewData = *pData;
POSITION pos = m_ListData.AddTail(pNewData);
// m_wndList.SetHeadings(_T("<22><><EFBFBD><EFBFBD>,50; <20><>ҵID,70;<3B><>ɧ<EFBFBD>ż<EFBFBD><C5BC><EFBFBD>,80,<2C>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>,130;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1000;"));
m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10),0);
_stprintf(szBuf , _T("%d") , pData->lCorpID );
m_wndList.SetItemText(lCount+i,1,szBuf);
_stprintf(szBuf, _T("%4d"), pData->lCheckResend);
m_wndList.SetItemText(lCount+i,2, szBuf);
m_wndList.SetItemText(lCount+i,3,pData->szMobile);
m_wndList.SetItemText(lCount+i,4,pData->szMsg);
m_wndList.SetItemData(lCount+i,(DWORD_PTR)(pos) );
pData++;
}
}
return true;
}
return false;
}
BOOL CK_MsgList::OnInitDialog()
{
CDialog::OnInitDialog();
//ȡ<>ù<EFBFBD><C3B9>ò<EFBFBD><C3B2><EFBFBD>
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//<2F><>ʼ<EFBFBD><CABC>List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LIST) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><>ҵID,80;<3B><><EFBFBD><EFBFBD>,80;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1000;"));
m_wndList.SetGridLines(true);
// m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
m_lType=0;
UpdateData(false);
OnSelchangeListType();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CK_MsgList::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
CRect rect;
m_S_S1.GetWindowRect(&rect);
m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
}
}
void CK_MsgList::Close()
{
Close_ListData();
}
void CK_MsgList::OnListQuery()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
#ifndef SMSMANAGER_KF
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) )
{
return ;
}
#endif
UpdateData(true);
Close_ListData();
m_wndList.DeleteAllColumns();
REQ_MsgList * pList = new REQ_MsgList;memset(pList,0,sizeof(REQ_MsgList));
pList->lType = m_lType;
if ( m_lType==0 || m_lType==3 )
{
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><>ҵID,80;<3B><><EFBFBD><EFBFBD>,60;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1000;"));
pList->dwMin = 30;
switch ( m_lTime )
{
case 0:
pList->dwMin = 5;
break;
case 1:
pList->dwMin = 10;
break;
case 2:
pList->dwMin = 20;
break;
case 3:
pList->dwMin = 30;
break;
case 4:
pList->dwMin = 40;
break;
case 5:
pList->dwMin = 50;
break;
case 6:
pList->dwMin = 60;
break;
case 7:
pList->dwMin = 90;
break;
case 8:
pList->dwMin = 120;
break;
case 9:
pList->dwMin = 180;
break;
case 10:
pList->dwMin = 300;
break;
case 11:
pList->dwMin = 480;
break;
case 12:
pList->dwMin = 600;
break;
case 13:
pList->dwMin = 900;
break;
}
this->Close_ListData(); //<2F>ر<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
}
if ( m_lType==1 )
{
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><>ҵID,80;<3B><>ɧ<EFBFBD>ż<EFBFBD><C5BC><EFBFBD>,100;<3B>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>,130;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1000;"));
pList->dwMin = 60;
switch ( m_lTime )
{
case 0:
pList->dwMin = 60;
break;
case 1:
pList->dwMin = 60*2;
break;
case 2:
pList->dwMin = 60*5;
break;
case 3:
pList->dwMin = -1;
break;
case 4:
pList->dwMin = -2;
break;
}
}
if ( m_lType==2)
{
CString strCorpID;
m_E_CorpID.GetWindowText(strCorpID);
long lCorpID = _ttol(strCorpID);
if ( lCorpID<100000 || lCorpID>999999 )
{
MessageBox( _T("<EFBFBD><EFBFBD>ҵID<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
GetDlgItem(IDC_LIST_CORPID)->SetFocus();
}
pList->lCorpID = lCorpID;
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,40; <20><>ҵID,60;<3B><><EFBFBD><EFBFBD>,60;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1000;"));
}
m_lMsgCount = 0;
m_wndList.ShowWindow( SW_HIDE ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
m_wndList.DeleteAllItems(); //<2F><>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>¼
m_pMainFrame->SendFrame(SMSFUNC_MSGLIST,(BYTE*)pList,sizeof(REQ_MsgList));
m_wndList.ShowWindow( SW_SHOW ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
m_S_S1.SetWindowText( _T("<EFBFBD><EFBFBD>ѯʱ<EFBFBD><EFBFBD>") );
return ;
}
void CK_MsgList::OnDblclkListList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CK_MsgList::OnRclickListList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CK_MsgList::ShowRMenu()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE,false) )
{
return ;
}
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
//<2F><><EFBFBD><EFBFBD>
if ( lItem>=0 )
{
menu.AppendMenu(MF_STRING , MENU_LIST_SEE , _T(" <20><> <20><> ") );
menu.AppendMenu(MF_STRING , MENU_LIST_CORPLIST, _T(" <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ҵ<EFBFBD>") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_LIST_CORPOFF , _T(" <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ҵ ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_SEE , _T(" <20><> <20><> ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_CORPLIST, _T(" <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ҵ<EFBFBD>") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_CORPOFF , _T(" <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ҵ ") );
}
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CK_MsgList::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CK_MsgList::On_User_See()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_MsgListData * pData = m_ListData.GetNext( pos );
if (!pData)
return ;
SMS_See sms={0};
_stprintf( sms.szCorpID , _T("%d") , pData->lCorpID);
if (m_lType==1)
_stprintf(sms.szStatus, _T("%d"), pData->lCheckResend);
_tcscpy(sms.szRecver, pData->szMobile);
_tcscpy( sms.szMsg , pData->szMsg );
DLG_SmsLogSee dlg(this);
dlg.SetParam(sms);
dlg.DoModal();
}
void CK_MsgList::Close_ListData()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
while (!m_ListData.IsEmpty())
{
ANS_MsgListData * pData = m_ListData.GetHead();
m_ListData.RemoveHead();
delete pData;
}
}
void CK_MsgList::On_User_CorpList()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_MsgListData * pData = m_ListData.GetNext( pos );
if (!pData)
return ;
this->m_pMainFrame->ShowFuncDlg( FUNC_LIST );
this->m_pMainFrame->m_pUserView->m_dlgList.m_lQueryCorpID = pData->lCorpID;
this->m_pMainFrame->m_pUserView->m_dlgList.OnListQuery();
}
void CK_MsgList::On_User_CorpOFF()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_MsgListData * pData = m_ListData.GetNext( pos );
if (!pData)
return ;
ANS_Corp_SeeData data={0};
data.lCorpID = pData->lCorpID;
DLG_Corp_Oper_Open dlg(this);
dlg.SetParam(&data,false,this->m_pMainFrame->m_Setup.szUser);
if ( dlg.DoModal() == IDOK )
{
REQ_CorpOFF * pCorp = new REQ_CorpOFF;memset(pCorp,0,sizeof(REQ_CorpOFF));
pCorp->lCorpID = pData->lCorpID;
pCorp->lStatus = 0; //0Ϊ<30><CEAA><EFBFBD>ã<EFBFBD><31><CEAA><EFBFBD><EFBFBD>
_tcscpy(pCorp->szBZ , dlg.m_strBZ );
_tcscpy(pCorp->szOper , dlg.m_strOperName );
m_pMainFrame->SendFrame(SMSFUNC_CORPOFF,(BYTE*)pCorp,sizeof(REQ_CorpOFF));
}
}
void CK_MsgList::OnSelchangeListType()
{
long lType = m_L_Type.GetCurSel();
UpdateData(true);
m_L_Time.ResetContent();
switch(lType)
{
case 0:
case 3:
m_lTime = 3;
m_L_Time.AddString( _T("5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
m_L_Time.AddString( _T("10<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
m_L_Time.AddString( _T("20<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
m_L_Time.AddString( _T("30<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
m_L_Time.AddString( _T("40<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
m_L_Time.AddString( _T("50<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
m_L_Time.AddString( _T("1Сʱ") );
#ifndef SMSMANAGER_KF
m_L_Time.AddString( _T("1.5Сʱ") );
m_L_Time.AddString( _T("2Сʱ") );
m_L_Time.AddString( _T("3Сʱ") );
m_L_Time.AddString( _T("5Сʱ") );
m_L_Time.AddString( _T("8Сʱ") );
m_L_Time.AddString( _T("10Сʱ") );
m_L_Time.AddString( _T("15Сʱ") );
#endif
break;
case 1:
m_lTime = 2;
m_L_Time.AddString( _T("1Сʱ") );
m_L_Time.AddString( _T("2Сʱ") );
m_L_Time.AddString( _T("5Сʱ") );
m_L_Time.AddString( _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
m_L_Time.AddString( _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
break;
default:
break;
}
UpdateData(false);
}