| 1358 | //------------------------------------------------------------------------------ |
| 1359 | |
| 1360 | S32 GuiTreeViewCtrl::insertItem(S32 parentId, const char * text, const char * value, const char * iconString, S16 normalImage, S16 expandedImage) |
| 1361 | { |
| 1362 | if( ( parentId < 0 ) || ( parentId > mItems.size() ) ) |
| 1363 | { |
| 1364 | Con::errorf(ConsoleLogEntry::General, "GuiTreeViewCtrl::insertItem: invalid parent id!"); |
| 1365 | return 0; |
| 1366 | } |
| 1367 | |
| 1368 | if((parentId != 0) && (mItems[parentId-1] == 0)) |
| 1369 | { |
| 1370 | Con::errorf(ConsoleLogEntry::General, "GuiTreeViewCtrl::insertItem: parent item invalid!"); |
| 1371 | return 0; |
| 1372 | } |
| 1373 | |
| 1374 | |
| 1375 | const char * pItemText = ( text != NULL ) ? text : ""; |
| 1376 | const char * pItemValue = ( value != NULL ) ? value : ""; |
| 1377 | |
| 1378 | S32 icon = getIcon(iconString); |
| 1379 | |
| 1380 | // create an item (assigns id) |
| 1381 | Item * pNewItem = createItem(icon); |
| 1382 | if( pNewItem == NULL ) |
| 1383 | return 0; |
| 1384 | |
| 1385 | pNewItem->setText( StringTable->insert( pItemText, true ) ); |
| 1386 | pNewItem->setValue( StringTable->insert( pItemValue, true ) ); |
| 1387 | |
| 1388 | pNewItem->setNormalImage( normalImage ); |
| 1389 | pNewItem->setExpandedImage( expandedImage ); |
| 1390 | |
| 1391 | // root level? |
| 1392 | if(parentId == 0) |
| 1393 | { |
| 1394 | // insert back |
| 1395 | if( mRoot != NULL ) |
| 1396 | { |
| 1397 | Item * pTreeTraverse = mRoot; |
| 1398 | while( pTreeTraverse != NULL && pTreeTraverse->mNext != NULL ) |
| 1399 | pTreeTraverse = pTreeTraverse->mNext; |
| 1400 | |
| 1401 | pTreeTraverse->mNext = pNewItem; |
| 1402 | pNewItem->mPrevious = pTreeTraverse; |
| 1403 | } |
| 1404 | else |
| 1405 | mRoot = pNewItem; |
| 1406 | |
| 1407 | mFlags.set(RebuildVisible); |
| 1408 | } |
| 1409 | else if( mItems.size() >= ( parentId - 1 ) ) |
| 1410 | { |
| 1411 | Item * pParentItem = mItems[parentId-1]; |
| 1412 | |
| 1413 | // insert back |
| 1414 | if( pParentItem != NULL && pParentItem->mChild) |
| 1415 | { |
| 1416 | Item * pTreeTraverse = pParentItem->mChild; |
| 1417 | while( pTreeTraverse != NULL && pTreeTraverse->mNext != NULL ) |
no test coverage detected