// CControlJobDlg.cpp: 实现文件
|
//
|
|
#include "stdafx.h"
|
#include "Servo.h"
|
#include "CControlJobDlg.h"
|
#include "afxdialogex.h"
|
|
|
// CControlJobDlg 对话框
|
|
IMPLEMENT_DYNAMIC(CControlJobDlg, CDialogEx)
|
|
CControlJobDlg::CControlJobDlg(CWnd* pParent /*=nullptr*/)
|
: CDialogEx(IDD_DIALOG_CONTROL_JOB, pParent)
|
{
|
m_pControlJob = nullptr;
|
}
|
|
CControlJobDlg::~CControlJobDlg()
|
{
|
}
|
|
void CControlJobDlg::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_LIST1, m_listCtrl);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CControlJobDlg, CDialogEx)
|
ON_WM_SIZE()
|
END_MESSAGE_MAP()
|
|
|
void CControlJobDlg::SetControlJob(SERVO::CControlJob* pControlJob)
|
{
|
m_pControlJob = pControlJob;
|
}
|
|
// CControlJobDlg 消息处理程序
|
BOOL CControlJobDlg::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
|
// label字体
|
LOGFONT lf{};
|
GetFont()->GetLogFont(&lf);
|
lf.lfHeight = -20;
|
lf.lfWeight = FW_BOLD;
|
_tcscpy_s(lf.lfFaceName, _T("Arial"));
|
m_fontNoJob.CreateFontIndirect(&lf);
|
GetDlgItem(IDC_LABEL_NO_JOB)->SetFont(&m_fontNoJob);
|
|
|
// 列表控件
|
HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1);
|
ListView_SetImageList(m_listCtrl.GetSafeHwnd(), imageList, LVSIL_SMALL);
|
m_listCtrl.ModifyStyle(0, LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS);
|
m_listCtrl.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 180);
|
m_listCtrl.InsertColumn(1, _T("类型"), LVCFMT_LEFT, 120);
|
m_listCtrl.InsertColumn(2, _T("状态"), LVCFMT_LEFT, 120);
|
m_listCtrl.InsertColumn(3, _T("配方"), LVCFMT_LEFT, 120);
|
m_listCtrl.InsertColumn(4, _T("Port / Carrier / Slot"), LVCFMT_LEFT, 180);
|
m_listCtrl.InsertColumn(5, _T("描述"), LVCFMT_LEFT, 220);
|
|
|
// 控件状态
|
Resize();
|
ShowGroup1(m_pControlJob == nullptr);
|
ShowGroup2(m_pControlJob != nullptr);
|
LoadData();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// 异常: OCX 属性页应返回 FALSE
|
}
|
|
void CControlJobDlg::OnSize(UINT nType, int cx, int cy)
|
{
|
CDialogEx::OnSize(nType, cx, cy);
|
if (GetDlgItem(IDC_LIST1) == nullptr) return;
|
Resize();
|
}
|
|
void CControlJobDlg::Resize()
|
{
|
CRect rcClient, rcItem;
|
CWnd* pItem;
|
|
GetClientRect(rcClient);
|
|
|
// 关闭按钮
|
int y = rcClient.bottom - 12;
|
pItem = GetDlgItem(IDCANCEL);
|
pItem->GetClientRect(&rcItem);
|
pItem->MoveWindow(rcClient.right - 12 - rcItem.Width(),
|
y - rcItem.Height(),
|
rcItem.Width(), rcItem.Height());
|
y -= rcItem.Height();
|
y -= 12;
|
|
|
// 线
|
pItem = GetDlgItem(IDC_LINE1);
|
pItem->MoveWindow(12, y, rcClient.Width() - 24, 2);
|
y -= 2;
|
|
|
// Label
|
pItem = GetDlgItem(IDC_LABEL_NO_JOB);
|
pItem->GetClientRect(&rcItem);
|
pItem->MoveWindow((rcClient.Width() - rcItem.Width()) / 2,
|
(y - rcItem.Height()) / 2,
|
rcItem.Width(), rcItem.Height());
|
|
|
// ListCtrl
|
pItem = GetDlgItem(IDC_LIST1);
|
pItem->MoveWindow(12, 12, rcClient.Width() - 24, y - 12);
|
}
|
|
void CControlJobDlg::ShowGroup1(BOOL bShow)
|
{
|
GetDlgItem(IDC_LABEL_NO_JOB)->ShowWindow(bShow ? SW_SHOW : SW_HIDE);
|
GetDlgItem(IDC_LINE1)->ShowWindow(bShow ? SW_SHOW : SW_HIDE);
|
}
|
|
void CControlJobDlg::ShowGroup2(BOOL bShow)
|
{
|
GetDlgItem(IDC_LIST1)->ShowWindow(bShow ? SW_SHOW : SW_HIDE);
|
}
|
|
void CControlJobDlg::LoadData()
|
{
|
m_listCtrl.DeleteAllItems();
|
|
if (m_pControlJob != nullptr) {
|
auto* root1 = m_listCtrl.InsertRoot({ m_pControlJob->id().c_str(), _T("ControlJob"),
|
m_pControlJob->getStateText().c_str(), _T("") });
|
auto pjs = m_pControlJob->getPjs();
|
for (auto pj : pjs) {
|
auto* root2 = m_listCtrl.InsertChild(root1, {pj->id().c_str(), _T("ProcessJob"),
|
pj->getStateText().c_str(), pj->recipeSpec().c_str(), _T(""), _T(""), _T("") });
|
auto cs = pj->carriers();
|
for (auto c : cs) {
|
for (auto g : c.contexts) {
|
SERVO::CGlass* pGlass = (SERVO::CGlass*)g;
|
if (pGlass != nullptr) {
|
int port, slot;
|
pGlass->getOrginPort(port, slot);
|
std::string carrier = c.carrierId + " / Port" + std::to_string(port + 1) + " / Slot" + std::to_string(slot + 1);
|
m_listCtrl.InsertChild(root2, { pGlass->getID().c_str(), _T("Glass"),
|
pGlass->getStateText().c_str(), _T(""), carrier.c_str(), _T("") });
|
}
|
else {
|
m_listCtrl.InsertChild(root2, { "Null", _T("Glass"), _T(""), _T(""), c.carrierId.c_str(), _T("") });
|
}
|
}
|
}
|
root2->expanded = true;
|
}
|
root1->expanded = true;
|
|
|
m_listCtrl.RebuildVisible();
|
}
|
}
|