SmsManager/K_MsgList.cpp

550 lines
12 KiB
C++
Raw Normal View History

2025-01-14 10:46:18 +08:00
// 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) );
2025-01-14 10:46:18 +08:00
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) );
2025-01-14 10:46:18 +08:00
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);
}