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" ) ); }
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); } } }