/*---------------------------------------------------------------------------------------------- Check the requirments of the FldSpec, and verify that data in the field meets the requirement. It returns: kFTReqNotReq if the all requirements are met. kFTReqWs if data is missing, but it is encouraged. kFTReqReq if data is missing, but it is required. ----------------------------------------------------------------------------------------------*/ FldReq AfDeFeSt::HasRequiredData() { if (m_qfsp->m_fRequired == kFTReqNotReq) return kFTReqNotReq; CustViewDaPtr qcvd; GetDataAccess(&qcvd); AssertPtr(qcvd); bool fEmpty = true; ITsStringPtr qtss; int cch = 0; HVO hvoPara; int iPara; if (!m_hvoText) goto LExit; int cPara; CheckHr(qcvd->get_VecSize(m_hvoText, kflidStText_Paragraphs, &cPara)); if (!cPara) goto LExit; // Make sure at least some paragraph has data. for (iPara = 0; iPara < cPara; ++iPara) { CheckHr(qcvd->get_VecItem(m_hvoText, kflidStText_Paragraphs, iPara, &hvoPara)); // At some point we may need to handle something other than StTxtPara. CheckHr(qcvd->get_StringProp(hvoPara, kflidStTxtPara_Contents, &qtss)); if (qtss) CheckHr(qtss->get_Length(&cch)); if (cch) break; // Have a valid string } fEmpty = iPara == cPara; LExit: if (fEmpty) return m_qfsp->m_fRequired; else return kFTReqNotReq; }