Beispiel #1
0
void
Package::removeItems(const char *pattern) {
    int32_t index;

    findItems(pattern);
    while((index=findNextItem())>=0) {
        removeItem(index);
    }
}
Beispiel #2
0
void
Package::extractItems(const char *filesPath, const char *pattern, char outType) {
    int32_t index;

    findItems(pattern);
    while((index=findNextItem())>=0) {
        extractItem(filesPath, index, outType);
    }
}
Beispiel #3
0
void TreeWidget::moveToNextActiveItem()
{
    QTreeWidgetItem* item = findNextItem(currentItem(), 1, TreeRole::Badge);
    if (item)
        setCurrentItem(item);
}
bool CBigStashPaser::parsePage( CBigStashPage& ar_oPage )
{
    if( m_nIndex >= m_nDataLength )
    {
        return false;
    }

    /// 跳过页首
    m_nIndex += g_scnPageHeaderLength;

    int lo_nNextPage = findNextPageHeader();

    if( lo_nNextPage < 0 )
    {
        lo_nNextPage = m_nDataLength;
    }

    int lo_nPageEnd = lo_nNextPage;

    unsigned short lo_sItemSize = getShortValue( m_pBigStashDatas, m_nDataLength, m_nIndex );

    m_nIndex += 2;

    if( lo_sItemSize > 0 )
    {
        ar_oPage.ItemSize(lo_sItemSize);

        int lo_nStartItem = findNextItem( m_nIndex, lo_nPageEnd );

        if( lo_nStartItem < 0 )
        {
            AfxMessageBox("未找到任何物品信息");

            return false;
        }

        for( unsigned i = 0; i < ar_oPage.ItemSize(); ++i )
        {
            if( lo_nStartItem >= lo_nPageEnd )
            {
                CString lo_strErrorInfo;

                lo_strErrorInfo.Format(_T("物品%d解析错误"), i );

                AfxMessageBox(lo_strErrorInfo);

                return false;
            }

            CBigStashItem lo_oItem;

            int lo_nNextItem = findNextItem( lo_nStartItem+sizeof(g_scbItemIdentifiedHeader)/sizeof(g_scbItemIdentifiedHeader[0]), lo_nPageEnd );

            BYTE lo_bLocation = m_pBigStashDatas[lo_nNextItem+7]&0x1C;

            while( lo_bLocation == 0x18 )
            {
                lo_nNextItem = findNextItem( lo_nNextItem+sizeof(g_scbItemIdentifiedHeader)/sizeof(g_scbItemIdentifiedHeader[0]), lo_nPageEnd );

                if( lo_nNextItem < 0 )
                {
                    break;
                }

                lo_bLocation = m_pBigStashDatas[lo_nNextItem+7]&0x1C;
            }

            if( lo_nNextItem < 0 )
            {
                lo_nNextItem = lo_nPageEnd;
            }

            if( i == ar_oPage.ItemSize()-1 && lo_nNextItem != lo_nPageEnd )
            {
                AfxMessageBox(_T("物品信息解析错误"));

                return false;
            }


            int lo_nItemBufferSize = lo_nNextItem-lo_nStartItem;

            lo_oItem.setItemBuffer( m_pBigStashDatas, lo_nStartItem, lo_nItemBufferSize );

            lo_nStartItem = lo_nNextItem;

            ar_oPage.setItem( i, lo_oItem );
        }
    }

    m_nIndex = lo_nPageEnd;

    return true;
}