a
This commit is contained in:
@@ -0,0 +1,668 @@
|
||||
// Dial2DTaskList.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "GeoMative.h"
|
||||
#include "Dial2DTaskTree.h"
|
||||
#include "TaskDataOper.h"
|
||||
#include "DialTaskManager.h"
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CDial2DTaskTree dialog
|
||||
extern int g_UIOffset;
|
||||
extern int g_iUILanguage;
|
||||
extern CGeoMativeApp theApp;
|
||||
extern time_t Str2GmtTm(CString szTime);
|
||||
extern CString Tm2LocalStr(time_t t);
|
||||
extern time_t g_i64SaveQueryTaskStartTime;
|
||||
extern time_t g_i64SaveQueryTaskEndTime;
|
||||
CDial2DTaskTree::CDial2DTaskTree(CWnd* pParent /*=NULL*/)
|
||||
: CNetRequestDialog(CDial2DTaskTree::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CDial2DTaskTree)
|
||||
//}}AFX_DATA_INIT
|
||||
m_pParentWnd = NULL;
|
||||
m_dwTaskID = 0;
|
||||
m_tQueryStartTime = 0;
|
||||
m_tQueryEndTime = 0;
|
||||
m_tSaveQueryStartTime = 0;
|
||||
m_tSaveQueryEndTime = 0;
|
||||
//m_bAppendData = FALSE;
|
||||
m_uSelTaskCount = 0;
|
||||
}
|
||||
|
||||
|
||||
void CDial2DTaskTree::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CNetRequestDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CDial2DTaskTree)
|
||||
DDX_Control(pDX, IDC_TREE_TASK_LIST, m_treeTask);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CDial2DTaskTree, CNetRequestDialog)
|
||||
//{{AFX_MSG_MAP(CDial2DTaskTree)
|
||||
ON_WM_SHOWWINDOW()
|
||||
ON_NOTIFY(NM_CLICK, IDC_TREE_TASK_LIST, OnClickTreeTaskList)
|
||||
//ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_TASK_LIST, OnSelchangedTreeTaskList)
|
||||
//}}AFX_MSG_MAP
|
||||
ON_NOTIFY(NM_RCLICK, IDC_TREE_TASK_LIST, OnNMRClickTreeTaskList)
|
||||
ON_COMMAND(IDM_TASKMANAGER_CREATETASK, OnTaskmanagerCreateTask)
|
||||
ON_COMMAND(IDM_TASKMANAGER_DELETETASK, OnTaskmanagerDeleteTask)
|
||||
//ON_COMMAND(IDM_TASKMANAGER_TASKINFORMATIONSYN, OnTaskmanagerTaskInfoSyn)
|
||||
ON_COMMAND(IDM_TASKMANAGER_CANCELTEST, OnTaskmanagerCancelTest)
|
||||
ON_COMMAND(IDM_TASKMANAGER_REFRESHLIST, OnTaskmanagerRefreshList)
|
||||
ON_WM_DELETEITEM()
|
||||
ON_NOTIFY(TVN_DELETEITEM, IDC_TREE_TASK_LIST, &CDial2DTaskTree::OnDeleteitemTreeTaskList)
|
||||
ON_NOTIFY(NM_CUSTOMDRAW, IDC_TREE_TASK_LIST, &CDial2DTaskTree::OnNMCustomdrawTreeTaskList)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CDial2DTaskTree message handlers
|
||||
|
||||
BOOL CDial2DTaskTree::OnInitDialog()
|
||||
{
|
||||
CNetRequestDialog::OnInitDialog();
|
||||
|
||||
// TODO: Add extra initialization here
|
||||
|
||||
//ShowTaskTree(EN_2D_TASK_TREE);
|
||||
|
||||
//去掉根节点复选框
|
||||
m_treeTask.ModifyStyle(TVS_CHECKBOXES, 0);
|
||||
m_treeTask.ModifyStyle(0, TVS_CHECKBOXES);
|
||||
//HTREEITEM rootItem = m_treeTask.GetRootItem();
|
||||
//m_treeTask.SetItemState(rootItem, INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
// void CDial2DTaskTree::AppendTaskTree(int iSptType, time_t tStartTime/* = 0*/, time_t tEndTime/* = 0*/)
|
||||
// {
|
||||
// m_bAppendData = TRUE;
|
||||
// m_iSptType = iSptType;
|
||||
// int iMaxRecvLen = sizeof(UINT32) + 300 * sizeof(STRemTaskTable);
|
||||
//
|
||||
// time_t tm;
|
||||
// //GetSystemTime(&sysTm);
|
||||
//
|
||||
// theApp.m_NetWorkOper.SetSuspendForThread(true);
|
||||
//
|
||||
// time_t uiCurTime = 0;
|
||||
// time_t uiStartTime = 0;
|
||||
// /*if (m_tQureyStartTime == 0 && m_tQueryEndTime == 0)
|
||||
// {
|
||||
// uiCurTime = (time_t)time(&tm);
|
||||
// uiCurTime += 3600 * 8;
|
||||
// //默认显示最近一周的,后期增加选框,显示最近的
|
||||
// m_tQureyStartTime = uiCurTime - LOAD_DATA_BY_DATE_CELL * 24 * 3600;
|
||||
// m_tQueryEndTime = uiCurTime;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// m_tQureyStartTime = tStartTime;
|
||||
// m_tQueryEndTime = tEndTime;
|
||||
// }*/
|
||||
// //时间往前挪一天
|
||||
// m_tQueryEndTime = m_tQureyStartTime;
|
||||
// m_tQureyStartTime = m_tQureyStartTime - LOAD_DATA_BY_DATE_CELL * 24 * 3600;
|
||||
//
|
||||
// uiCurTime = htonl(m_tQueryEndTime);
|
||||
// uiStartTime = htonl(m_tQureyStartTime);
|
||||
// char chSendStr[20] = { 0 };
|
||||
// UINT32 uiDevID = htonl(m_uiGD10DevID);
|
||||
// memcpy(chSendStr, &uiDevID, sizeof(UINT32));
|
||||
// memcpy(&chSendStr[sizeof(UINT32)], &uiStartTime, sizeof(UINT32));
|
||||
// memcpy(&chSendStr[2 * sizeof(UINT32)], &uiCurTime, sizeof(UINT32));
|
||||
// chSendStr[3 * sizeof(UINT32)] = (char)(iSptType & 0xFF);
|
||||
// PostNetRequest(EN_REQ_DOWNLOAD_TASK_TABLE, this->m_hWnd, chSendStr, 3 * sizeof(UINT32) + sizeof(char), 100 * 1024);
|
||||
// }
|
||||
|
||||
CTreeCtrl* CDial2DTaskTree::GetTaskTreePtr()
|
||||
{
|
||||
return &m_treeTask;
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::ShowTaskTree(int iSptType, time_t tStartTime/* = 0*/, time_t tEndTime/* = 0*/)
|
||||
{
|
||||
//清空勾选个数
|
||||
m_uSelTaskCount = 0;
|
||||
//清空列表数据
|
||||
m_treeTask.DeleteAllItems();
|
||||
OnClearTaskList();
|
||||
//m_bAppendData = FALSE;
|
||||
|
||||
//GetSystemTime(&sysTm);
|
||||
|
||||
theApp.m_NetWorkOper.SetSuspendForThread(true);
|
||||
|
||||
CString strLog;
|
||||
time_t uiCurTime = 0;
|
||||
time_t uiStartTime = 0;
|
||||
if (tStartTime == 0 && tEndTime == 0)
|
||||
{
|
||||
if (g_i64SaveQueryTaskStartTime == 0 && g_i64SaveQueryTaskEndTime == 0)
|
||||
{
|
||||
time_t tm;
|
||||
uiCurTime = (time_t)time(&tm);
|
||||
//uiCurTime += 3600 * 8;
|
||||
|
||||
//默认显示最近一周的任务
|
||||
m_tSaveQueryStartTime = uiCurTime - 7 * 24 * 3600;
|
||||
m_tSaveQueryEndTime = uiCurTime;
|
||||
|
||||
m_tQueryStartTime = m_tSaveQueryStartTime;
|
||||
m_tQueryEndTime = m_tSaveQueryStartTime + 1 * 24 * 3600;
|
||||
|
||||
g_i64SaveQueryTaskStartTime = m_tSaveQueryStartTime;
|
||||
g_i64SaveQueryTaskEndTime = m_tSaveQueryEndTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_tSaveQueryStartTime = g_i64SaveQueryTaskStartTime;
|
||||
m_tSaveQueryEndTime = g_i64SaveQueryTaskEndTime;
|
||||
|
||||
m_tQueryStartTime = m_tSaveQueryStartTime;
|
||||
m_tQueryEndTime = m_tSaveQueryStartTime + 1 * 24 * 3600;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
m_tSaveQueryStartTime = tStartTime;
|
||||
m_tSaveQueryEndTime = tEndTime + 3600 * 8;
|
||||
|
||||
m_tQueryStartTime = tStartTime;
|
||||
m_tQueryEndTime = tStartTime + 1 * 24 * 3600;
|
||||
|
||||
g_i64SaveQueryTaskStartTime = m_tSaveQueryStartTime;
|
||||
g_i64SaveQueryTaskEndTime = m_tSaveQueryEndTime;
|
||||
}
|
||||
strLog.Format(_T("zm:CDial2DTaskTree::ShowTaskTree query time range:m_tSaveQueryStartTime=%s - m_tSaveQueryEndTime=%s--------\n"), Tm2LocalStr(m_tSaveQueryStartTime), Tm2LocalStr(m_tSaveQueryEndTime));
|
||||
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
||||
|
||||
uiCurTime = htonl(m_tQueryEndTime);
|
||||
uiStartTime = htonl(m_tQueryStartTime);
|
||||
char chSendStr[20] = { 0 };
|
||||
UINT32 uiDevID = htonl(m_uiGD10DevID);
|
||||
memcpy(chSendStr, &uiDevID, sizeof(UINT32));
|
||||
memcpy(&chSendStr[sizeof(UINT32)], &uiStartTime, sizeof(UINT32));
|
||||
memcpy(&chSendStr[2 * sizeof(UINT32)], &uiCurTime, sizeof(UINT32));
|
||||
chSendStr[3 * sizeof(UINT32)] = (char)(EN_2D_TASK_TREE & 0xFF);
|
||||
|
||||
|
||||
////////1、比如是请求2018-12-29 到 2019-01-02的数据,这里初始的请求范围为uiStartTime="2018-12-29 00:00:00" tEndTime="2019-12-29 23:59:59"
|
||||
PostNetRequest(EN_REQ_DOWNLOAD_TASK_TABLE, this->m_hWnd, chSendStr, 3 * sizeof(UINT32) + sizeof(char), 100 * 1024, WM_NET_RESPONSE, 0xFFFFFFFF, EN_DEV_CLOUND, 60000);
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnShowWindow(BOOL bShow, UINT nStatus)
|
||||
{
|
||||
CNetRequestDialog::OnShowWindow(bShow, nStatus);
|
||||
if (TRUE == bShow )
|
||||
{
|
||||
CRect rect;
|
||||
GetClientRect(&rect);
|
||||
m_treeTask.MoveWindow(&rect);
|
||||
m_treeTask.ShowWindow(SW_SHOW);
|
||||
}
|
||||
|
||||
// TODO: Add your message handler code here
|
||||
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::SetChildCheck(HTREEITEM hCurItem, BOOL bCheck)
|
||||
{
|
||||
HTREEITEM hChildItem = m_treeTask.GetChildItem(hCurItem);
|
||||
if (hChildItem == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_uSelTaskCount = 0;
|
||||
while (hChildItem)
|
||||
{
|
||||
if (bCheck)
|
||||
{
|
||||
m_uSelTaskCount++;
|
||||
}
|
||||
m_treeTask.SetCheck(hChildItem, bCheck);
|
||||
hChildItem = m_treeTask.GetNextSiblingItem(hChildItem);
|
||||
}
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnClickTreeTaskList(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
POINT point;
|
||||
if (!GetCursorPos(&point))
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_treeTask.ScreenToClient(&point);
|
||||
|
||||
UINT uFlags;
|
||||
HTREEITEM hItem = m_treeTask.HitTest(point, &uFlags);
|
||||
if (hItem == NULL)
|
||||
return;
|
||||
|
||||
//点中复选框
|
||||
if (hItem != NULL && TVHT_ONITEMSTATEICON&uFlags)
|
||||
{
|
||||
//点击勾选按钮不选中
|
||||
m_treeTask.Select(hItem, TVGN_CARET);
|
||||
//获取当前复选状态
|
||||
BOOL bParentCheck = m_treeTask.GetCheck(hItem);
|
||||
if (bParentCheck)
|
||||
{
|
||||
m_uSelTaskCount--;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_uSelTaskCount++;
|
||||
}
|
||||
//设置子节点复选状态
|
||||
SetChildCheck(hItem, !bParentCheck);
|
||||
|
||||
//设置父节点文本
|
||||
HTREEITEM hRoot = m_treeTask.GetRootItem();
|
||||
CString strItem;
|
||||
strItem.LoadString(IDS_TASK_TREE_ROOT + g_UIOffset);
|
||||
strItem.Format(_T("%s (%d)"), strItem, m_uSelTaskCount);
|
||||
m_treeTask.SetItemText(hRoot, strItem);
|
||||
return;
|
||||
//m_treeTask.Select(hItem, TVGN_CARET);
|
||||
}
|
||||
|
||||
DWORD dwTaskID = m_treeTask.GetItemData(hItem);
|
||||
if (dwTaskID == m_dwTaskID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_dwTaskID = dwTaskID;
|
||||
if (m_pParentWnd)
|
||||
{
|
||||
m_pParentWnd->SendMessage(WM_CLICK_TASK_TREE, (WPARAM)m_dwTaskID, 0);
|
||||
}
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnNMRClickTreeTaskList(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
POINT point;
|
||||
if (!GetCursorPos(&point))
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_treeTask.ScreenToClient(&point);
|
||||
|
||||
UINT uFlags;
|
||||
HTREEITEM hItem = m_treeTask.HitTest(point, &uFlags);
|
||||
/*if (hItem != NULL && TVHT_ONITEM&uFlags)
|
||||
{
|
||||
m_treeTask.Select(hItem, TVGN_CARET);
|
||||
}*/
|
||||
|
||||
if (!m_treeTask.ItemHasChildren(hItem))
|
||||
{
|
||||
m_treeTask.ClientToScreen(&point);
|
||||
CMenu menu;
|
||||
menu.LoadMenu(IDR_MENU_TASK_MANAGER); //加载现有的菜单资源
|
||||
CMenu *pPopupMenu = menu.GetSubMenu(0); //获取以创建好的弹出式菜单
|
||||
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
{
|
||||
pPopupMenu->ModifyMenu(0, MF_BYPOSITION, IDM_TASKMANAGER_CREATETASK, _T("创建任务"));
|
||||
pPopupMenu->ModifyMenu(1, MF_BYPOSITION, IDM_TASKMANAGER_DELETETASK, _T("删除任务"));
|
||||
//pPopupMenu->ModifyMenu(2, MF_BYPOSITION, IDM_TASKMANAGER_TASKINFORMATIONSYN, _T("任务信息同步"));
|
||||
pPopupMenu->ModifyMenu(2, MF_BYPOSITION, IDM_TASKMANAGER_CANCELTEST, _T("取消测试"));
|
||||
pPopupMenu->ModifyMenu(3, MF_BYPOSITION, IDM_TASKMANAGER_REFRESHLIST, _T("刷新列表"));
|
||||
}
|
||||
else
|
||||
{
|
||||
pPopupMenu->ModifyMenu(0, MF_BYPOSITION, IDM_TASKMANAGER_CREATETASK, "create task");
|
||||
pPopupMenu->ModifyMenu(1, MF_BYPOSITION, IDM_TASKMANAGER_DELETETASK, "delete task");
|
||||
//pPopupMenu->ModifyMenu(2, MF_BYPOSITION, IDM_TASKMANAGER_TASKINFORMATIONSYN, _T("task info syn"));
|
||||
pPopupMenu->ModifyMenu(2, MF_BYPOSITION, IDM_TASKMANAGER_CANCELTEST, _T("cancel test"));
|
||||
pPopupMenu->ModifyMenu(3, MF_BYPOSITION, IDM_TASKMANAGER_REFRESHLIST, _T("Refresh list"));
|
||||
}
|
||||
pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
|
||||
}
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnTaskmanagerCreateTask()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
if (NULL != m_pParentWnd)
|
||||
{
|
||||
((CDialTaskManager*)m_pParentWnd)->OnButtonCreateTask();
|
||||
}
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnTaskmanagerDeleteTask()
|
||||
{
|
||||
if (NULL != m_pParentWnd)
|
||||
{
|
||||
((CDialTaskManager*)m_pParentWnd)->OnButtonDelTask();
|
||||
}
|
||||
}
|
||||
|
||||
// void CDial2DTaskTree::OnTaskmanagerTaskInfoSyn()
|
||||
// {
|
||||
// if (NULL != m_pParentWnd)
|
||||
// {
|
||||
// ((CDialTaskManager*)m_pParentWnd)->OnCmdTaskInfoSyn();
|
||||
// }
|
||||
// }
|
||||
|
||||
void CDial2DTaskTree::OnTaskmanagerCancelTest()
|
||||
{
|
||||
if (NULL != m_pParentWnd)
|
||||
{
|
||||
((CDialTaskManager*)m_pParentWnd)->OnCmdTaskCancelTest();
|
||||
}
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnTaskmanagerRefreshList()
|
||||
{
|
||||
if (NULL != m_pParentWnd)
|
||||
{
|
||||
::SendMessage(m_pParentWnd->GetSafeHwnd(), WM_MSG_UPDATE_TASK_LIST, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct)
|
||||
{
|
||||
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
||||
|
||||
CNetRequestDialog::OnDeleteItem(nIDCtl, lpDeleteItemStruct);
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::OnDeleteitemTreeTaskList(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
TVITEM& item = ((LPNMTREEVIEW)pNMHDR)->itemOld;
|
||||
// free item data, ignore invalid shell items
|
||||
if (item.lParam != 0)
|
||||
{
|
||||
delete (STTaskListItem*)item.lParam;//这里就会把你的内存释放掉
|
||||
}
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CDial2DTaskTree::PreNetResponse(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam;
|
||||
if (pResponsePacket == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (pResponsePacket->clsPacketBase.ucCmd)
|
||||
{
|
||||
case EN_REQ_DOWNLOAD_TASK_TABLE://获取任务列表
|
||||
{
|
||||
/*if (!m_bAppendData)
|
||||
{
|
||||
OnGetTaskListResponse(wParam, lParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
OnAppendTaskListResponse(wParam, lParam);
|
||||
}*/
|
||||
OnAddNewItemToTaskList(wParam, lParam);
|
||||
|
||||
CString strLog;
|
||||
CTime clsStart(m_tSaveQueryStartTime);
|
||||
CTime clsStop(m_tSaveQueryEndTime);
|
||||
CTimeSpan timeSpan1 = clsStop - clsStart;
|
||||
int iDay = timeSpan1.GetDays();
|
||||
if (iDay > 1)
|
||||
{
|
||||
//m_bAppendData = TRUE;
|
||||
|
||||
CTimeSpan ts(1, 0, 0, 0); // 加1天
|
||||
clsStart = clsStart + ts;
|
||||
CString date = clsStart.Format("%Y-%m-%d %H:%M:%S ");
|
||||
m_tSaveQueryStartTime = Str2GmtTm(date);
|
||||
|
||||
//clsStop = clsStop + ts;
|
||||
//m_tSaveQureyEndTime = Str2GmtTm(clsStop.Format("%Y-%m-%d %H:%M:%S "));
|
||||
|
||||
time_t uiCurTime = 0;
|
||||
time_t uiStartTime = 0;
|
||||
//uiCurTime = (time_t)time(&m_tSaveQureyEndTime);
|
||||
//uiCurTime += 3600 * 8;
|
||||
//默认显示最近一周的,后期增加选框,显示最近的
|
||||
//m_tQureyStartTime = uiCurTime - LOAD_DATA_BY_DATE_CELL * 24 * 3600;
|
||||
//m_tQueryEndTime = uiCurTime;
|
||||
//uiCurTime = htonl(m_tSaveQureyEndTime);
|
||||
|
||||
m_tQueryStartTime = m_tSaveQueryStartTime;
|
||||
m_tQueryEndTime = m_tSaveQueryStartTime + LOAD_DATA_BY_DATE_CELL * 24 * 3600+3600;//3600预留一小时,客户端与服务器偏差时间
|
||||
uiStartTime = htonl(m_tQueryStartTime);
|
||||
strLog.Format(_T("zm:CDial2DTaskTree::PreNetResponse request start time:%s,end time=%s\n"), Tm2LocalStr(m_tQueryStartTime), Tm2LocalStr(m_tQueryEndTime));
|
||||
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
||||
|
||||
uiCurTime = htonl(m_tQueryEndTime);
|
||||
char chSendStr[20] = { 0 };
|
||||
UINT32 uiDevID = htonl(m_uiGD10DevID);
|
||||
memcpy(chSendStr, &uiDevID, sizeof(UINT32));
|
||||
memcpy(&chSendStr[sizeof(UINT32)], &uiStartTime, sizeof(UINT32));
|
||||
memcpy(&chSendStr[2 * sizeof(UINT32)], &uiCurTime, sizeof(UINT32));
|
||||
chSendStr[3 * sizeof(UINT32)] = (char)(EN_2D_TASK_TREE & 0xFF);
|
||||
PostNetRequest(EN_REQ_DOWNLOAD_TASK_TABLE, this->m_hWnd, chSendStr, 3 * sizeof(UINT32) + sizeof(char), 100 * 1024, WM_NET_RESPONSE, 0xFFFFFFFF, EN_DEV_CLOUND, 60000);
|
||||
}
|
||||
else
|
||||
{
|
||||
//已经加载到最后一天
|
||||
//树控件显示列表
|
||||
CTaskDataOper taskOper;
|
||||
taskOper.m_uiDevID = m_uiGD10DevID;
|
||||
//总查询时间范围
|
||||
taskOper.SetCurrentTimeRange(g_i64SaveQueryTaskStartTime, g_i64SaveQueryTaskEndTime + 3600);
|
||||
taskOper.InitOnLineTaskTreeCtrl(m_treeTask, EN_2D_TASK_TREE, m_mapTaskList, m_pParentWnd->GetSafeHwnd());
|
||||
//去掉根节点复选框
|
||||
//m_treeTask.ModifyStyle(TVS_CHECKBOXES, 0);
|
||||
//m_treeTask.ModifyStyle(0, TVS_CHECKBOXES);
|
||||
//HTREEITEM rootItem = m_treeTask.GetRootItem();
|
||||
//m_treeTask.SetItemState(rootItem, INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
|
||||
m_treeTask.Expand(m_treeTask.GetRootItem(), TVE_EXPAND);
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//从服务器一批一批获取任务列表
|
||||
BOOL CDial2DTaskTree::OnAddNewItemToTaskList(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam;
|
||||
if (pResponsePacket == NULL || pResponsePacket->clsPacketBase.ucCmd != EN_REQ_DOWNLOAD_TASK_TABLE || pResponsePacket->pData == NULL)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
char *chMsgSyn = (char *)malloc(pResponsePacket->wDataLen);
|
||||
memcpy(chMsgSyn, pResponsePacket->pData, pResponsePacket->wDataLen);
|
||||
UINT32 *uiRevData = (UINT32*)(chMsgSyn);
|
||||
UINT32 uiTaskNum = 0;
|
||||
uiTaskNum = ntohl(uiRevData[0]);
|
||||
|
||||
STRemTaskTable *ptTaskTable = NULL;
|
||||
if ((uiRevData[0] < 1) || (pResponsePacket->wDataLen < (sizeof(UINT32) + uiTaskNum * sizeof(STRemTaskTable))))
|
||||
{
|
||||
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
||||
if (uiRevData[0] > 0)
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("获取任务列表失败,数据长度错误"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Synchronization task table recv failed. recv length is error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
}
|
||||
//return;
|
||||
}
|
||||
ptTaskTable = (STRemTaskTable *)(&chMsgSyn[sizeof(UINT32)]);
|
||||
for (int i = 0; i < uiTaskNum; i++)
|
||||
{
|
||||
m_mapTaskList[ptTaskTable[i].ucTaskID] = ptTaskTable[i];
|
||||
}
|
||||
|
||||
if (chMsgSyn != NULL)
|
||||
{
|
||||
free(chMsgSyn);
|
||||
chMsgSyn = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
//清空列表
|
||||
void CDial2DTaskTree::OnClearTaskList()
|
||||
{
|
||||
m_mapTaskList.clear();
|
||||
}
|
||||
|
||||
/*BOOL CDial2DTaskTree::OnGetTaskListResponse(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam;
|
||||
if (pResponsePacket == NULL || pResponsePacket->clsPacketBase.ucCmd != EN_REQ_DOWNLOAD_TASK_TABLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
char *chMsgSyn = (char *)malloc(pResponsePacket->wDataLen);
|
||||
memcpy(chMsgSyn, pResponsePacket->pData, pResponsePacket->wDataLen);
|
||||
UINT32 *uiRevData = (UINT32*)(chMsgSyn);
|
||||
UINT32 uiTaskNum = 0;
|
||||
uiTaskNum = ntohl(uiRevData[0]);
|
||||
|
||||
STRemTaskTable *ptTaskTable = NULL;
|
||||
if ((uiRevData[0] < 1) || (pResponsePacket->wDataLen < (sizeof(UINT32) + uiTaskNum * sizeof(STRemTaskTable))))
|
||||
{
|
||||
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
||||
if (uiRevData[0] > 0)
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("获取任务列表失败,数据长度错误"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Synchronization task table recv failed. recv length is error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
}
|
||||
//return;
|
||||
}
|
||||
ptTaskTable = (STRemTaskTable *)(&chMsgSyn[sizeof(UINT32)]);
|
||||
|
||||
CTaskDataOper taskOper;
|
||||
taskOper.m_uiDevID = m_uiGD10DevID;
|
||||
taskOper.SetCurrentTimeRange(m_tQueryStartTime, m_tQueryEndTime);
|
||||
taskOper.InitialOnLineTaskTreeCtrl(m_treeTask, m_iSptType, uiTaskNum, ptTaskTable, m_pParentWnd->GetSafeHwnd());
|
||||
if (chMsgSyn != NULL)
|
||||
{
|
||||
free(chMsgSyn);
|
||||
chMsgSyn = NULL;
|
||||
}
|
||||
//去掉根节点复选框
|
||||
//m_treeTask.ModifyStyle(TVS_CHECKBOXES, 0);
|
||||
//m_treeTask.ModifyStyle(0, TVS_CHECKBOXES);
|
||||
//HTREEITEM rootItem = m_treeTask.GetRootItem();
|
||||
//m_treeTask.SetItemState(rootItem, INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
|
||||
|
||||
m_treeTask.Expand(m_treeTask.GetRootItem(), TVE_EXPAND);
|
||||
return TRUE;
|
||||
}*/
|
||||
|
||||
/*BOOL CDial2DTaskTree::OnAppendTaskListResponse(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam;
|
||||
if (pResponsePacket == NULL || pResponsePacket->clsPacketBase.ucCmd != EN_REQ_DOWNLOAD_TASK_TABLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
char *chMsgSyn = (char *)malloc(pResponsePacket->wDataLen);
|
||||
memcpy(chMsgSyn, pResponsePacket->pData, pResponsePacket->wDataLen);
|
||||
UINT32 *uiRevData = (UINT32*)(chMsgSyn);
|
||||
UINT32 uiTaskNum = 0;
|
||||
uiTaskNum = ntohl(uiRevData[0]);
|
||||
|
||||
STRemTaskTable *ptTaskTable = NULL;
|
||||
if ((uiRevData[0] < 1) || (pResponsePacket->wDataLen < (sizeof(UINT32) + uiTaskNum * sizeof(STRemTaskTable))))
|
||||
{
|
||||
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
||||
if (uiRevData[0] > 0)
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("同步任务表接受失败,长度是错误!"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Synchronization task table recv failed. recv length is error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
}
|
||||
//return;
|
||||
}
|
||||
ptTaskTable = (STRemTaskTable *)(&chMsgSyn[sizeof(UINT32)]);
|
||||
|
||||
CTaskDataOper taskOper;
|
||||
taskOper.m_uiDevID = m_uiGD10DevID;
|
||||
taskOper.SetCurrentTimeRange(m_tQueryStartTime, m_tQueryEndTime);
|
||||
taskOper.AppendOnLineTaskTreeCtrl(m_treeTask, m_iSptType, uiTaskNum, ptTaskTable, m_pParentWnd->GetSafeHwnd());
|
||||
if (chMsgSyn != NULL)
|
||||
{
|
||||
free(chMsgSyn);
|
||||
chMsgSyn = NULL;
|
||||
}
|
||||
//去掉根节点复选框
|
||||
// m_treeTask.ModifyStyle(TVS_CHECKBOXES, 0);
|
||||
// m_treeTask.ModifyStyle(0, TVS_CHECKBOXES);
|
||||
// HTREEITEM rootItem = m_treeTask.GetRootItem();
|
||||
// m_treeTask.SetItemState(rootItem, INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
|
||||
|
||||
m_treeTask.Expand(m_treeTask.GetRootItem(), TVE_EXPAND);
|
||||
return TRUE;
|
||||
}*/
|
||||
|
||||
void CDial2DTaskTree::OnNMCustomdrawTreeTaskList(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
//LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
|
||||
LPNMTVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMTVCUSTOMDRAW>(pNMHDR);
|
||||
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
switch (pNMCD->nmcd.dwDrawStage)
|
||||
{
|
||||
case CDDS_PREPAINT:
|
||||
*pResult = CDRF_NOTIFYITEMDRAW;
|
||||
return;
|
||||
case CDDS_ITEMPREPAINT:
|
||||
{
|
||||
// 这里做判断
|
||||
CString s = m_treeTask.GetItemText((HTREEITEM)pNMCD->nmcd.dwItemSpec);
|
||||
STTaskListItem* pTaskItem = NULL;
|
||||
pTaskItem = (STTaskListItem*)m_treeTask.GetItemData((HTREEITEM)pNMCD->nmcd.dwItemSpec);
|
||||
if (pTaskItem == NULL)
|
||||
return;
|
||||
|
||||
//测试中
|
||||
if (10 <= pTaskItem->byTestStatus && pTaskItem->byTestStatus < 20)
|
||||
{
|
||||
pNMCD->clrText = RGB(0, 0, 255); // 这样设置文字颜色
|
||||
}
|
||||
//测试失败
|
||||
else if (30 <= pTaskItem->byTestStatus && pTaskItem->byTestStatus < 40)
|
||||
{
|
||||
pNMCD->clrText = RGB(255, 0, 0); // 这样设置文字颜色
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user