/*! Populates the list of setup widgets filtered by selectd module. Selects the first item when \a first is true. */ void setup::populate(bool first) { _tree->clear(); while (_stack->count()) { QWidget* w = _stack->widget(0); _stack->removeWidget(w); w = 0; } XTreeWidgetItem* _configItem = new XTreeWidgetItem(_tree, 0, -1, tr("Configure")); XTreeWidgetItem* _mapItem = new XTreeWidgetItem(_tree, 0, -1, tr("Accounting Mappings")); XTreeWidgetItem* _masterItem = new XTreeWidgetItem(_tree, 0, -1, tr("Master Information")); QBrush disabled(Qt::gray); XTreeWidgetItem* parent = 0; ItemProps ip; int id = 0; QMapIterator<QString, ItemProps> i(_itemMap); while (i.hasNext()) { id++; i.next(); ip = i.value(); _itemMap[i.key()].index = -1; _itemMap[i.key()].id = -1; if (_modules->currentIndex() == 0 || _modules->itemData(_modules->currentIndex()).toInt() & ip.modules) { if (ip.type == Configure) parent = _configItem; else if (ip.type == AccountMapping) parent = _mapItem; else parent = _masterItem; // Set the item on the list XTreeWidgetItem* item = new XTreeWidgetItem(parent, id); item->setData(0, Qt::DisplayRole, QVariant(ip.title)); item->setData(0, Xt::RawRole, QVariant(i.key())); if (!ip.enabled) { item->setFlags(Qt::NoItemFlags); item->setForeground(0,disabled); } parent->addChild(item); _itemMap[i.key()].id = id; } } if (!_configItem->childCount()) _tree->takeTopLevelItem(_tree->indexOfTopLevelItem(_configItem)); if (!_mapItem->childCount()) _tree->takeTopLevelItem(_tree->indexOfTopLevelItem(_mapItem)); if (!_masterItem->childCount()) _tree->takeTopLevelItem(_tree->indexOfTopLevelItem(_masterItem)); _tree->expandAll(); if (_tree->topLevelItemCount() && first) setCurrentIndex(_tree->topLevelItem(0)); }