Exemplo n.º 1
0
QFCItem::QFCItem(QListViewItem *parent, const FieldContainerPtr &pFC)
    : Inherited(parent),
      _pFC     (pFC   )
{
    if(getFC() != NullFC)
    {
        setText(0, QString(getFC()->getType().getCName()));

        if(getName(AttachmentContainerPtr::dcast(getFC())))
            setText(1, 
                    QString(getName(AttachmentContainerPtr::dcast(getFC()))));
        else
            setText(1, QString("unnamed")       );
    }
}
Exemplo n.º 2
0
void
QFCItem::addParents(MFFieldContainerPtr *pMFFCPtr)
{
    if(!pMFFCPtr)
        return;

    MFFieldContainerPtr::reverse_iterator mfIter = pMFFCPtr->rbegin();
    MFFieldContainerPtr::reverse_iterator mfEnd  = pMFFCPtr->rend();

    if((mfIter == mfEnd) || (pMFFCPtr->size() <= 1))
        return;

    QHeaderItem *pHeaderItem = new QHeaderItem(this, "parents");  

    for( ; mfIter != mfEnd; ++mfIter)
    {
        if(*mfIter == getFC())
            continue;
        
        if((*mfIter)->getType().isNode())
        {
            new QNodeItem(pHeaderItem, NodePtr::dcast(*mfIter));
        }
        else if((*mfIter)->getType().isNodeCore())
        {
            new QNodeCoreItem(pHeaderItem, NodeCorePtr::dcast(*mfIter));
        }
        else
        {
            new QFCItem(pHeaderItem, *mfIter);
        }
    }   
}    
Exemplo n.º 3
0
void
QFCItem::setup(void)
{
    FieldContainer *pFCAsp = getFC().getAspectCPtr(getAspect());

    if(!pFCAsp)
        return;

    UInt32 uiNumFields = pFCAsp->getType().getNumFieldDescs();
    
    for(UInt32  fieldId = 1; fieldId <= uiNumFields; ++fieldId)
    {
        FieldDescription *pDesc     = 
            pFCAsp->getType().getFieldDescription     (fieldId);
        Field            *pField    = pFCAsp->getField(fieldId);
        
        if(isSFFieldContainerPtr(pField))
        {
            if(stringcmp(pDesc->getCName(), "parent" ) == 0)
                continue;

            SFFieldContainerPtr *pSFFCPtr = 
                reinterpret_cast<SFFieldContainerPtr *>(pField);

            if(pSFFCPtr->getValue() != NullFC)
            {
                setExpandable(this);
                break;
            }
        }
        else if(isMFFieldContainerPtr(pField))
        {
            MFFieldContainerPtr *pMFFCPtr =
                reinterpret_cast<MFFieldContainerPtr *>(pField);

            if(stringcmp(pDesc->getCName(), "parents") == 0)
            {
                if(pMFFCPtr->size() > 1)
                {
                    setExpandable(this);
                    break;
                }
            }
            else
            {
                if(pMFFCPtr->size() > 0)
                {
                    setExpandable(this);
                    break;
                }
            }
        }
    }

    Inherited::setup();
}
Exemplo n.º 4
0
void
QFCItem::expand(void)
{
    if(childCount() != 0)
        return;

    FieldContainer *pFCAsp = getFC().getAspectCPtr(getAspect());

    if(!pFCAsp)
        return;

    FieldContainerType &fcType      = pFCAsp->getType();
    UInt32              uiNumFields = fcType.getNumFieldDescs();

    for(UInt32 fieldId = 1; fieldId <= uiNumFields; ++fieldId)
    {
        FieldDescription *pFieldDesc = fcType.getFieldDescription(fieldId);
        Field            *pField     = pFCAsp->getField          (fieldId);
        
        //add Items for all referenced containers (except parents)
        if(isSFFieldContainerPtr(pField))
        {
            if(stringcmp(pFieldDesc->getCName(), "parent" ) == 0)
                continue;

            addRefedContainer(
                reinterpret_cast<SFFieldContainerPtr *>(pField));
        }
        else if(isMFFieldContainerPtr(pField))
        {
            if(stringcmp(pFieldDesc->getCName(), "parents") == 0)
            {
                addParents(
                    reinterpret_cast<MFFieldContainerPtr *>(pField));
            }
            else
            {
                addRefedContainer(
                    reinterpret_cast<MFFieldContainerPtr *>(pField), 
                    pFieldDesc   );
            }
        }

        //add attachments
        if(stringcmp(pFieldDesc->getCName(), "attachments") == 0)
        {
            addAttachments(dynamic_cast<SFAttachmentMap *>(pField));
        }
    }

    PNOTICE << endLog;
}
Exemplo n.º 5
0
void WrdPAPXFKP::appendGrpprl( const ChBYTE *in_grpprl, ChUINT4 in_ulGrpprlSize, ChUINT4 in_ulStartFC, ChUINT4 in_ulEndFC )
{
    ChUINT2 unGrpprlOffset = 0;
    ChUINT2 unFoundOffset  = s_unUndefinedOffset;

    // preconditions
    ChASSERT( m_pPageData != NULL );

    // The number of bytes that we need to write has to be even!!!
    // First, determine what the total bytes being written is,
    // which includes the grpprl size byte itself.
    // If the input grpprl size is even, then that means that with
    // the addition of the grpprl size byte, we have an odd number
    // of bytes, which means that a pad byte will be added when we
    // write the grpprl size, therefore, we need to increment the
    // total number of bytes written by 1.
    ChUINT4 ulBytesToWrite = in_ulGrpprlSize + 1;
    if (in_ulGrpprlSize % 2 == 0)
    {
        ulBytesToWrite += 1;
    }

    // check of grpprl is the same some previous grpprl, and just store
    // offset to it rather than appending another
    unFoundOffset = findGrpprlOffset( in_ulGrpprlSize, in_grpprl );

    if (getNumberOfRuns() == 0)
    {
        ChASSERT( isRoomForGrpprl( in_ulGrpprlSize ) ); 
       
        // Set up initial data
        setNumberOfRuns( 1 );
        setFC( 0, in_ulStartFC );
        setFC( 1, in_ulEndFC );

        // Offset (in bytes) of grpprl. NOTE: Even though the # of runs
        // is at location s_unPageBufferSize - 1, the grpprls need to be
        // written on word boundaries, which means they also need to
        // end at word boundaries, therefore, really need to think that
        // the # of runs storage takes 2 bytes.
        unGrpprlOffset = (s_unPageBufferSize - 2) - ulBytesToWrite;
        ChASSERT( unGrpprlOffset < s_unPageBufferSize );
    }
    else
    {
        ChASSERT( in_ulStartFC == getFC(getNumberOfRuns()) );

        ChASSERT( ((4 * (getNumberOfRuns() + 1)) + (getNumberOfRuns() * SIZEOF_BX)) < s_unPageBufferSize);
        
        // Offset (in bytes) of grpprl
        unGrpprlOffset = getSmallestGrpprlOffset();
        ChASSERT( unGrpprlOffset >= ulBytesToWrite);
        unGrpprlOffset -= ulBytesToWrite;

        ChASSERT( unGrpprlOffset < s_unPageBufferSize );
        ChASSERT( (unGrpprlOffset) > 0 );        
        
        // Move offset array over to make room for another FC 
        memmove( &(m_pPageData[4 * (getNumberOfRuns() + 2)]), 
                &(m_pPageData[4 * (getNumberOfRuns() + 1)]),
                getNumberOfRuns() * SIZEOF_BX );
        
        // set up initial data
        setNumberOfRuns( getNumberOfRuns() + 1 );
        setFC( getNumberOfRuns(), in_ulEndFC );

    }

    if (unFoundOffset == s_unUndefinedOffset)
    {
        ChASSERT( (unGrpprlOffset) > 0 );
        ChASSERT( unGrpprlOffset < s_unPageBufferSize );
        setGrpprlOffset( getNumberOfRuns() - 1, unGrpprlOffset );

        // Grpprl size
        setGrpprlSize( getNumberOfRuns() - 1, (ChUINT2)in_ulGrpprlSize );

        // Actual Grpprl... don't forget size byte
        if ( in_ulGrpprlSize > 0 )
        {
            ChASSERT( ((unGrpprlOffset + 1) + (in_ulGrpprlSize)) < s_unPageBufferSize);

            // If the input grpprl size is even, then the # of bytes to write the size
            // is 2, therefore, start writing the grpprl at the offset + 2. If the input
            // grpprl size is odd, then the # of bytes to write the size is 1, therefore
            // start writing the grpprl at the offset + 1.
            if (in_ulGrpprlSize % 2 == 0)
            {
                memcpy( &m_pPageData[unGrpprlOffset + 2], in_grpprl, in_ulGrpprlSize );
            }
            else
            {
                memcpy( &m_pPageData[unGrpprlOffset + 1], in_grpprl, in_ulGrpprlSize );
            }
        }
    }
    else
    {
        setGrpprlOffset( getNumberOfRuns() - 1, unFoundOffset );
    }
}