Example #1
0
void KWDocStructRootItem::setupTables()
{
    // Delete Empty item from list.
    QListViewItem* lvItem = firstChild();
    if (lvItem && (lvItem->text(0) == i18n("Empty"))) delete lvItem;

    // Build a list of framesets ordered by their screen position (top left corner).
    KWDocument* dok = doc();
    QValueList<KWOrderedFrameSet> orderedFrameSets;
    for ( int i = dok->frameSetCount() - 1; i >= 0; i-- ) {
        KWFrameSet* frameset = dok->frameSet(i);
        if ( frameset->type() == FT_TABLE)
            orderedFrameSets.append(KWOrderedFrameSet(frameset));
    }
    qHeapSort(orderedFrameSets);

    // Build a list of table pointers from the sorted list.
    QPtrList<KWTableFrameSet> frameSetPtrs;
    frameSetPtrs.setAutoDelete(false);
    for ( uint i = 0; i < orderedFrameSets.count(); i++ )
        frameSetPtrs.append(dynamic_cast<KWTableFrameSet *>(orderedFrameSets[i].frameSet()));

    // Remove deleted tables from the listview.
    KWDocStructTableItem* item = dynamic_cast<KWDocStructTableItem *>(firstChild());
    KWDocStructTableItem* delItem;
    while (item) {
        delItem = item;
        item = dynamic_cast<KWDocStructTableItem *>(item->nextSibling());
        if (frameSetPtrs.containsRef(delItem->table()) == 0) delete delItem;
    }

    // Add new framesets to the list or update existing ones.
    KWDocStructTableItem* after = 0L;
    for ( uint i = 0; i < orderedFrameSets.count(); i++ )
    {
        KWTableFrameSet* tableFrameset = dynamic_cast<KWTableFrameSet *>(orderedFrameSets[i].frameSet());
        item = findTableItem(tableFrameset);
        if (item)
            item->setText(0, tableFrameset->name());
        else {
            if (after)
                item = new KWDocStructTableItem(
                    this, after, tableFrameset->name(), tableFrameset);
            else
                item = new KWDocStructTableItem(this, tableFrameset->name(), tableFrameset);
        }
        after = item;
        item->setupCells();
    }

    if ( childCount() == 0 )
        ( void )new KListViewItem( this, i18n( "Empty" ) );
}
Example #2
0
void
NodeAnim::onTableItemInserted(int index, const KnobTableItemPtr& item, TableChangeReasonEnum)
{
    KnobTableItemPtr parentItem = item->getParent();
    TableItemAnimPtr parentAnim;
    if (parentItem) {
        parentAnim = findTableItem(parentItem);
    }
    KnobItemsTableGuiPtr table = getNodeGui()->getKnobItemsTable();
    if (parentItem) {
        TableItemAnimPtr anim(TableItemAnim::create(getModel(), table, shared_from_this(), item, parentAnim->getRootItem()));
        parentAnim->insertChild(index, anim);
    } else {
        TableItemAnimPtr anim(TableItemAnim::create(getModel(), table, shared_from_this(), item, _imp->nameItem));
        if (index < 0 || index >= (int)_imp->topLevelTableItems.size()) {
            _imp->topLevelTableItems.push_back(anim);
        } else {
            std::vector<TableItemAnimPtr>::iterator it = _imp->topLevelTableItems.begin();
            std::advance(it, index);
            _imp->topLevelTableItems.insert(it, anim);
        }
    }

}