QVariant RostersView::rosterData(int AOrder, const IRosterIndex *AIndex, int ARole) const { QVariant data; if (AOrder == RDHO_ROSTERSVIEW) { IRosterIndex *index = const_cast<IRosterIndex *>(AIndex); if (ARole == RDR_LABEL_ITEMS) { AdvancedDelegateItems labelItems; for (QMultiMap<int, IRostersLabelHolder *>::const_iterator holder_it=FLabelHolders.constBegin(); holder_it!=FLabelHolders.constEnd(); ++holder_it) { QList<quint32> labels = holder_it.value()->rosterLabels(holder_it.key(),index); for (QList<quint32>::const_iterator label_it = labels.constBegin(); label_it!=labels.constEnd(); ++label_it) { quint32 labelId = *label_it; if (!labelItems.contains(labelId)) labelItems.insert(labelId,holder_it.value()->rosterLabel(holder_it.key(),labelId,index)); } } for (QMultiMap<IRosterIndex *, quint32>::const_iterator it = FIndexLabels.constFind(index); it!=FIndexLabels.constEnd() && it.key()==index; ++it) if (!labelItems.contains(it.value())) labelItems.insert(it.value(),FLabelItems.value(it.value())); data.setValue(labelItems); } } else if (AOrder == RDHO_ROSTERSVIEW_NOTIFY) { IRosterIndex *index = const_cast<IRosterIndex *>(AIndex); if (FActiveNotifies.contains(index)) { const IRostersNotify ¬ify = FNotifyItems.value(FActiveNotifies.value(index)); if (ARole == RDR_FORCE_VISIBLE) { if ((notify.flags & IRostersNotify::AllwaysVisible) > 0) data = 1; } else if (ARole == Qt::DecorationRole) { data = !notify.icon.isNull() ? notify.icon : data; } else if (ARole == Qt::BackgroundColorRole) { data = notify.background; } } } return data; }
void SetupPluginsDialog::updatePlugins() { FModel.clear(); int errorsCount = 0; int disableCount = 0; QDomElement pluginElem = FPluginsSetup.documentElement().firstChildElement(); while (!pluginElem.isNull()) { QUuid uuid = pluginElem.attribute("uuid"); QString file = pluginElem.tagName(); QString name = pluginElem.firstChildElement("name").text(); QString version = pluginElem.firstChildElement("version").text(); QString error = pluginElem.firstChildElement("error").text(); QString descr = pluginElem.firstChildElement("desc").text(); bool isEnabled = pluginElem.attribute("enabled","true") == "true"; const IPluginInfo *info = FPluginManager->pluginInfo(uuid); bool isLoaded = info!=NULL; QString homePage = info!=NULL ? info->homePage.toString() : QString::null; QStringList dependsOn, dependsFor; if (info != NULL) { foreach(const QUuid &dependUid, FPluginManager->pluginDependencesOn(uuid)) dependsOn.append(dependUid.toString()); foreach(const QUuid &dependUid, FPluginManager->pluginDependencesFor(uuid)) dependsFor.append(dependUid.toString()); } QStandardItem *pluginItem = new QStandardItem(name); pluginItem->setData(uuid.toString(), PDR_UUID); pluginItem->setData(file, PDR_FILE); pluginItem->setData(name.isEmpty() ? file : name, PDR_NAME); pluginItem->setData(error.isEmpty() ? descr : error, PDR_DESCR); pluginItem->setData(version, PDR_VERSION); pluginItem->setData(homePage, PDR_HOMEPAGE); pluginItem->setData(isLoaded, PDR_ISLOADED); pluginItem->setData(isEnabled, PDR_ISENABLED); pluginItem->setData(dependsOn, PDR_DEPENDS_ON); pluginItem->setData(dependsFor, PDR_DEPENDS_FOR); pluginItem->setData(file+" "+name+" "+descr+" "+error, PDR_FILTER); pluginItem->setData(pluginItem->data(PDR_DESCR), Qt::ToolTipRole); AdvancedDelegateItem nameLabel(AdvancedDelegateItem::DisplayId); nameLabel.d->kind = AdvancedDelegateItem::Display; nameLabel.d->data = pluginItem->data(PDR_NAME); nameLabel.d->hints.insert(AdvancedDelegateItem::FontWeight,QFont::Bold); AdvancedDelegateItem versionLabel(AdvancedDelegateItem::DisplayId+1); versionLabel.d->kind = AdvancedDelegateItem::CustomData; versionLabel.d->data = pluginItem->data(PDR_VERSION); AdvancedDelegateItem descrLabel(AdvancedDelegateItem::makeId(AdvancedDelegateItem::Bottom,129,10)); descrLabel.d->kind = AdvancedDelegateItem::CustomData; descrLabel.d->data = pluginItem->data(PDR_DESCR); AdvancedDelegateItems labels; labels.insert(nameLabel.d->id, nameLabel); labels.insert(versionLabel.d->id, versionLabel); labels.insert(descrLabel.d->id, descrLabel); pluginItem->setData(QVariant::fromValue<AdvancedDelegateItems>(labels), PDR_LABELS); if (!isEnabled) { disableCount++; nameLabel.d->hints.insert(AdvancedDelegateItem::Foreground, ui.tbvPlugins->palette().color(QPalette::Disabled, QPalette::Text)); } else if (!isLoaded) { errorsCount++; // descrLabel.d->hints.insert(AdvancedDelegateItem::Foreground, Qt::red); descrLabel.d->hints.insert(AdvancedDelegateItem::Foreground, QColor(Qt::red)); nameLabel.d->hints.insert(AdvancedDelegateItem::Foreground, ui.tbvPlugins->palette().color(QPalette::Disabled, QPalette::Text)); } pluginItem->setCheckable(true); pluginItem->setCheckState(isEnabled ? Qt::Checked : Qt::Unchecked); FModel.appendRow(pluginItem); FPluginItem.insert(uuid, pluginItem); FItemElement.insert(pluginItem, pluginElem); pluginElem = pluginElem.nextSiblingElement(); }