Esempio n. 1
0
void CPPageMessage::OnButtonAdd()
{
    CMsgIDAttr odMsgDlg(mMsgAttributes);
    if (odMsgDlg.DoModal() == IDOK)
    {
        m_sNewItem.nCANID = odMsgDlg.m_nID;
        m_sNewItem.omCANIDName = odMsgDlg.m_omStrMsg;
        m_sNewItem.Colour = odMsgDlg.m_sColour;

        /* Addition of the new message attribute must be always successful
        because the validation is already done */
        mMsgAttributes->nAddNewAttrib(m_sNewItem);

        if(m_pRGBColors == nullptr)
        {
            m_pRGBColors = (COLORREF*)malloc(sizeof(COLORREF));
        }
        else
        {
            m_pRGBColors = (COLORREF*)realloc(m_pRGBColors, (m_odMsgList.GetItemCount()+1)* sizeof(COLORREF));
        }

        nEnterMessageAttrib(m_sNewItem, m_odMsgList.GetItemCount());
    }
}
Esempio n. 2
0
void CPPageMessage::OnButtonEdit()
{
    int nCurrSel = m_odMsgList.GetNextItem(-1, LVNI_SELECTED);

    if (nCurrSel >= 0)
    {
        CMessageAttrib& ouMsg = CMessageAttrib::ouGetHandle(m_eBusType);

        CString omARow = m_odMsgList.GetItemText(nCurrSel, 0);

        UINT unMsgID;
        sscanf_s((LPCTSTR) omARow, "%X", &unMsgID);
        ouMsg.nGetAttrib(unMsgID, m_sNewItem);

        CMsgIDAttr odMsgDlg(m_eBusType);
        odMsgDlg.m_nID = m_sNewItem.nCANID;
        odMsgDlg.m_sColour = m_sNewItem.Colour;
        odMsgDlg.m_omStrMsg = m_sNewItem.omCANIDName;
        odMsgDlg.m_bForEdit = true;
        odMsgDlg.m_bDBMessage = m_bForDBMsg;
        odMsgDlg.m_nPreviousID = m_sNewItem.nCANID;
        if (odMsgDlg.DoModal() == IDOK)
        {
            m_sNewItem.omCANIDName = odMsgDlg.m_omStrMsg;
            m_sNewItem.nCANID = odMsgDlg.m_nID;
            m_sNewItem.Colour = odMsgDlg.m_sColour;

            if(odMsgDlg.m_nPreviousID == m_sNewItem.nCANID) //if ID is not changed then just modify the current one
            {
                ouMsg.nModifyAttrib(m_sNewItem);
            }
            else    //if the ID has changed then first remove the structure with old ID and then save the new ID
            {
                int nResult = ouMsg.nRemoveAttrib(odMsgDlg.m_nPreviousID);
                if (nResult == 0)
                {
                    ouMsg.nAddNewAttrib(m_sNewItem);
                }
            }

            m_odMsgList.DeleteItem(nCurrSel);
            nEnterMessageAttrib(m_sNewItem, nCurrSel);

            m_odMsgList.EnsureVisible(nCurrSel, FALSE);
        }
    }
}
Esempio n. 3
0
int CPPageMessage::nInitialiseMsgLCtrl(UINT unTotalDBMsgs, UINT* punDBMsgIDs)
{
    int nMessagesAdded = 0;
    CMessageAttrib& ouMsg = CMessageAttrib::ouGetHandle(m_eBusType);

    SCanIDList* psList = nullptr;

    int nEntries = ouMsg.nGetTotalIDs();

    if (nEntries > 0)
    {
        psList = new SCanIDList[nEntries];
    }

    if (psList != nullptr)
    {
        ouMsg.nGetMsgAttribs(psList);
        int nLastItem = 0;

        m_pRGBColors = (COLORREF*)malloc(nEntries * sizeof(COLORREF));
        for (int i = 0; i < nEntries; i++)
        {
            m_sNewItem = *(psList + i);
            BOOL bToEnter = !(bIsMsgIDPresent(punDBMsgIDs, unTotalDBMsgs,
                                              m_sNewItem.nCANID) ^ m_bForDBMsg);
            if (bToEnter)
            {
                nLastItem = nEnterMessageAttrib(m_sNewItem, nLastItem);
                nLastItem++;
                nMessagesAdded++;
            }
        }
        delete[] psList;
        psList = nullptr;
    }

    return nMessagesAdded;
}