SmsManager/C_NoSendTimeSet.cpp
2025-01-14 10:46:18 +08:00

502 lines
13 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.

// C_NoSendTimeSet.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "C_NoSendTimeSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CC_NoSendTimeSet dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_C_NoSendTime_Modify.h"
CC_NoSendTimeSet::CC_NoSendTimeSet(CWnd* pParent /*=NULL*/)
: CDialog(CC_NoSendTimeSet::IDD, pParent)
{
//{{AFX_DATA_INIT(CC_NoSendTimeSet)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
}
void CC_NoSendTimeSet::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_NoSendTimeSet)
DDX_Control(pDX, IDC_NOSENDTIMESET_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CC_NoSendTimeSet, CDialog)
//{{AFX_MSG_MAP(CC_NoSendTimeSet)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_NOSENDTIMESET_LIST, OnDblclkYwyList)
ON_NOTIFY(NM_RCLICK, IDC_NOSENDTIMESET_LIST, OnRclickYwyList)
ON_NOTIFY(LVN_KEYDOWN, IDC_NOSENDTIMESET_LIST, OnKeydownYwyList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_PARTNER_ADD , On_User_Add)
ON_COMMAND( MENU_PARTNER_MODIFY , On_User_Modify)
ON_COMMAND( MENU_PARTNER_DEL , On_User_Del)
ON_COMMAND( MENU_PARTNER_REFRESH, On_User_Refresh)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CC_NoSendTimeSet message handlers
BOOL CC_NoSendTimeSet::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) )
{
return false;
}
REQ_GetNoSendTime * pGet = new REQ_GetNoSendTime;
memset(pGet , 0 , sizeof(REQ_GetNoSendTime));
m_pMainFrame->SendFrame(SMSFUNC_GETNOSENDTIME,(BYTE*)pGet,sizeof(REQ_GetNoSendTime));
return true;
}
void CC_NoSendTimeSet::Close()
{
Close_Partner();
}
BOOL CC_NoSendTimeSet::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CC_NoSendTimeSet::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
void CC_NoSendTimeSet::SetLockItem(long lItem, BOOL bLock)
{
if ( bLock )
m_wndList.SetIconIndex( lItem , 1 );
else
m_wndList.SetIconIndex( lItem , 0 );
}
long CC_NoSendTimeSet::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
BOOL CC_NoSendTimeSet::isLockItem(long lItem, BOOL bShowWarning)
{
BOOL b = (m_wndList.GetIconIndex(lItem) == 1);
if ( b && bShowWarning )
{
MessageBox( _T("<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONINFORMATION );
}
return b;
}
BOOL CC_NoSendTimeSet::ProcessSocket(Socket_Head_Add *pHead,BYTE* pFrame)
{
CString str;
//ȡ<><C8A1><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
if (pHead->lFuncType == SMSFUNC_GETNOSENDTIME)
{
m_bRefresh = true; //<2F>Ѿ<EFBFBD>ˢ<EFBFBD>¹<EFBFBD>
ANS_GetNoSendTime * pNoSendTime = (ANS_GetNoSendTime *)pFrame;
ANS_GetNoSendTimeData * pData = (ANS_GetNoSendTimeData *)(pFrame+sizeof(ANS_GetNoSendTime));
m_wndList.DeleteAllItems(); //ɾ<><C9BE>ԭ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
this->Close_Partner(); //<2F>ر<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
TCHAR Buf[32];
for ( int i=0;i<pNoSendTime->lCount;i++ )
{
ANS_GetNoSendTimeData * pNewData = new ANS_GetNoSendTimeData;
*pNewData = *pData;
POSITION pos = m_NoSendTime.AddTail(pNewData);
//m_wndList.SetHeadings(_T("<22><><EFBFBD><EFBFBD>,50;״̬,90;<3B><>ʼʱ<CABC><CAB1>,90;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,90;<3B><>ע,200;"));
_stprintf(Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 );
m_wndList.SetItemData( i , (DWORD)pos ); //<2F><>Pos
long lTemp11=1;
if ( pData->lStatus == 0 )
{
str= _T(" <20><><EFBFBD><EFBFBD>") ;
}
else
{
str= _T(" <20><><EFBFBD><EFBFBD>") ;
}
m_wndList.SetItemText(i,lTemp11++,str);
str.Format( _T("%02d:%02d") , pData->tBegin.wHour,pData->tBegin.wMinute );
m_wndList.SetItemText(i,lTemp11++,str);
str.Format( _T("%02d:%02d") , pData->tEnd.wHour,pData->tEnd.wMinute );
m_wndList.SetItemText(i,lTemp11++,str);
m_wndList.SetItemText(i,lTemp11++,pData->szBZ);
pData ++;
}
return true;
}
//<2F>޸Ĺ<DEB8><C4B9><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
if (pHead->lFuncType == SMSFUNC_NOSENDTIME_MODIFY)
{
ANS_NoSendTime_Modify * pModify = (ANS_NoSendTime_Modify *)pFrame;
ANS_GetNoSendTimeData * pData = (ANS_GetNoSendTimeData *)(pFrame+sizeof(ANS_NoSendTime_Modify));
SetLockItem( pModify->lItem , false ); //<2F><><EFBFBD><EFBFBD>
if ( pModify->lCount == 1 ) //<2F><><EFBFBD><EFBFBD><31><CAB1>ʾ<EFBFBD>޸ijɹ<C4B3>
{
POSITION pos = (POSITION)m_wndList.GetItemData(pModify->lItem);
ANS_GetNoSendTimeData * pData2 = m_NoSendTime.GetNext( pos );
if ( pData2 )
{
*pData2 = *pData; //ȡ<><C8A1><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
long lTemp11=1;
if ( pData->lStatus == 0 )
{
str= _T(" <20><><EFBFBD><EFBFBD>") ;
}
else
{
str= _T(" <20><><EFBFBD><EFBFBD>") ;
}
m_wndList.SetItemText(pModify->lItem,lTemp11++,str);
str.Format( _T("%02d:%02d") , pData->tBegin.wHour,pData->tBegin.wMinute );
m_wndList.SetItemText(pModify->lItem,lTemp11++,str);
str.Format( _T("%02d:%02d") , pData->tEnd.wHour,pData->tEnd.wMinute );
m_wndList.SetItemText(pModify->lItem,lTemp11++,str);
m_wndList.SetItemText(pModify->lItem,lTemp11++,pData->szBZ);
}
}
return true;
}
//<2F><><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD>Ա
if (pHead->lFuncType == SMSFUNC_NOSENDTIME_ADD)
{
ANS_NoSendTime_Add * pAdd = (ANS_NoSendTime_Add *)pFrame;
ANS_GetNoSendTimeData * pData = (ANS_GetNoSendTimeData *)(pFrame+sizeof(ANS_NoSendTime_Add));
if ( pAdd->lCount == 1 ) //<2F><><EFBFBD><EFBFBD><31><CAB1>ʾ<EFBFBD>޸ijɹ<C4B3>
{
long lCount = m_wndList.GetItemCount();
TCHAR Buf[32];
_stprintf( Buf, _T("%d") , lCount +1 );
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
m_wndList.InsertItem( lCount , Buf , 0 );
long lTemp11=1;
if ( pData->lStatus == 0 )
{
str= _T(" <20><><EFBFBD><EFBFBD>") ;
}
else
{
str= _T(" <20><><EFBFBD><EFBFBD>") ;
}
m_wndList.SetItemText(lCount,lTemp11++,str);
str.Format( _T("%02d:%02d") , pData->tBegin.wHour,pData->tBegin.wMinute );
m_wndList.SetItemText(lCount,lTemp11++,str);
str.Format( _T("%02d:%02d") , pData->tEnd.wHour,pData->tEnd.wMinute );
m_wndList.SetItemText(lCount,lTemp11++,str);
m_wndList.SetItemText(lCount,lTemp11++,pData->szBZ);
ANS_GetNoSendTimeData * pData2 = new ANS_GetNoSendTimeData;
*pData2 = *pData;
POSITION pos = m_NoSendTime.AddTail( pData2 );
m_wndList.SetItemData( lCount, (DWORD)pos );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>û<EFBFBD>ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>
if ( pData->lNoSendTimeID <= 0 )
{
RefreshInfo();
}
}
return true;
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
if (pHead->lFuncType == SMSFUNC_NOSENDTIME_DEL)
{
ANS_NoSendTime_Del * pDel = (ANS_NoSendTime_Del *)pFrame;
ANS_NoSendTime_DelData * pDelData = (ANS_NoSendTime_DelData *)(pFrame+sizeof(ANS_NoSendTime_Del));
POSITION pos,pos2;
ANS_GetNoSendTimeData * pNoSendTimeData;
for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
{
if ( pDelData[i].lNoSendTimeID ) //ɾ<><C9BE><EFBFBD>ɹ<EFBFBD>
{
pos = (POSITION)m_wndList.GetItemData( pDelData[i].lItem );
pos2 = pos;
pNoSendTimeData = m_NoSendTime.GetNext( pos );
if ( pNoSendTimeData->lNoSendTimeID == pDelData[i].lNoSendTimeID ) //ID<49><44>ͬ<EFBFBD>IJſ<C4B2>ɾ<EFBFBD><C9BE>
{
delete pNoSendTimeData; //<2F><>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_NoSendTime.RemoveAt(pos2); //<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ɾ<EFBFBD><C9BE>
m_wndList.DeleteItem(pDelData[i].lItem); //<2F><>ListCtrl<72><6C>ɾ<EFBFBD><C9BE>
}
}
}
return true;
}
return false;
}
void CC_NoSendTimeSet::ShowRMenu()
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE,false)) //û<>в鿴Ȩ<E9BFB4><C8A8>
return ;
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
if ( lItem >= 0 )
bLock = isLockItem( lItem , false ); //ȡ<><C8A1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>
if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD,false) )
{
menu.AppendMenu(MF_STRING , MENU_PARTNER_ADD, _T(" <20><><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>ʱ<EFBFBD><CAB1> ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PARTNER_ADD , _T(" <20><><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>ʱ<EFBFBD><CAB1> ") );
}
//<2F>޸<EFBFBD>
if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_MODIFY,false) && lItem >=0 && !bLock)
{
menu.AppendMenu(MF_STRING , MENU_PARTNER_MODIFY, _T(" <20><> <20><> ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PARTNER_MODIFY , _T(" <20><> <20><> ") );
}
//ɾ<><C9BE>
if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_DEL,false) && lItem >=0 && !bLock )
{
menu.AppendMenu(MF_STRING , MENU_PARTNER_DEL, _T(" ɾ <20><> ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PARTNER_DEL , _T(" ɾ <20><> ") );
}
menu.AppendMenu(MF_SEPARATOR );
//ˢ<><CBA2>
menu.AppendMenu(MF_STRING , MENU_PARTNER_REFRESH, _T(" ˢ <20><> ") );
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
BOOL CC_NoSendTimeSet::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_MANAGER) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50;״̬,90;<3B><>ʼʱ<CABC><CAB1>,90;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,90;<3B><>ע,200;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CC_NoSendTimeSet::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
void CC_NoSendTimeSet::OnDblclkYwyList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_Modify();
}
void CC_NoSendTimeSet::OnRclickYwyList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CC_NoSendTimeSet::OnKeydownYwyList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CC_NoSendTimeSet::On_User_Add()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD) )
{
return ;
}
ANS_GetNoSendTimeData NoSendTimeData={0};
NoSendTimeData.lStatus = 1; //Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DLG_C_NoSendTime_Modify dlg(this);
dlg.SetParam( NoSendTimeData);
if ( dlg.DoModal() == IDOK )
{
long lSize = sizeof(REQ_NoSendTime_Add)+sizeof(ANS_GetNoSendTimeData);
BYTE * pAddData = new BYTE[lSize];memset(pAddData,0,lSize);
REQ_NoSendTime_Add * pAdd = (REQ_NoSendTime_Add *)pAddData; //ͷ
ANS_GetNoSendTimeData * pNoSendTimeData = (ANS_GetNoSendTimeData *)(pAddData+sizeof(REQ_NoSendTime_Add));
*pNoSendTimeData = dlg.GetParam();
pAdd->lCount = 1;
m_pMainFrame->SendFrame( SMSFUNC_NOSENDTIME_ADD , pAddData , lSize );
}
}
void CC_NoSendTimeSet::On_User_Modify()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_MODIFY) )
{
return ;
}
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
if (isLockItem(lItem))
{
return ;
}
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_GetNoSendTimeData * pData = m_NoSendTime.GetNext( pos );
if (pData)
{
DLG_C_NoSendTime_Modify dlg(this);
dlg.SetParam( *pData);
if ( dlg.DoModal() == IDOK )
{
SetLockItem( lItem ,true);
long lSize = sizeof(REQ_NoSendTime_Modify)+sizeof(ANS_GetNoSendTimeData);
BYTE * pModifyData = new BYTE[lSize];memset(pModifyData,0,lSize);
REQ_NoSendTime_Modify * pModify = (REQ_NoSendTime_Modify *)pModifyData; //ͷ
ANS_GetNoSendTimeData * pNoSendTimeData = (ANS_GetNoSendTimeData *)(pModifyData+sizeof(REQ_NoSendTime_Modify));
*pNoSendTimeData = dlg.GetParam();
pModify->lItem = lItem;
pModify->lCount = 1;
m_pMainFrame->SendFrame( SMSFUNC_NOSENDTIME_MODIFY , pModifyData , lSize );
}
}
}
void CC_NoSendTimeSet::On_User_Del()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_DEL) )
{
return ;
}
long lRet = MessageBox( _T("<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Σ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2);
if ( lRet != IDYES )
return;
long lCount = m_wndList.GetSelectedCount();
long lSize = sizeof(REQ_NoSendTime_Del)+sizeof(ANS_NoSendTime_DelData)*lCount;
BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize);
REQ_NoSendTime_Del * pDel = (REQ_NoSendTime_Del *)pDelSend; //ͷ
ANS_NoSendTime_DelData * pDelData = (ANS_NoSendTime_DelData *)(pDelSend+sizeof(REQ_NoSendTime_Del));
pDel->lCount = lCount;
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
ANS_GetNoSendTimeData * pNoSendTimeData;
POSITION pos2;
while(pos)
{
pDelData->lItem = m_wndList.GetNextSelectedItem(pos);
pos2 = (POSITION)m_wndList.GetItemData(pDelData->lItem);
pNoSendTimeData = m_NoSendTime.GetNext(pos2); //ȡ<><C8A1><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD>pos
pDelData->lNoSendTimeID = pNoSendTimeData->lNoSendTimeID;
pDelData ++;
}
m_pMainFrame->SendFrame( SMSFUNC_NOSENDTIME_DEL , pDelSend , lSize );
}
void CC_NoSendTimeSet::On_User_Refresh()
{
RefreshInfo();
}
BOOL CC_NoSendTimeSet::FindPartnerName(const TCHAR *pName, POSITION exPos)
{
POSITION pos = m_NoSendTime.GetHeadPosition();
POSITION pos2;
while (pos)
{
pos2 = pos;
ANS_GetNoSendTimeData * pData = m_NoSendTime.GetNext( pos );
if ( pos2 != exPos )
{
//if ( !_tcscmp( pData->szName , pName ) )
// return true;
}
}
return false;
}
void CC_NoSendTimeSet::Close_Partner()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
while (!m_NoSendTime.IsEmpty())
{
ANS_GetNoSendTimeData * pNoSendTime = m_NoSendTime.GetHead();
m_NoSendTime.RemoveHead();
delete pNoSendTime;
}
}