void PluginChoooserWidget::loadImpl() { clear(); Config group = Config().group("plugins/list"); QStandardItem *parent_item = m_model->invisibleRootItem(); QList<QWeakPointer<Plugin> > plugins = pluginsList(); QStringList helper; for (int i = 0; i < plugins.size(); i++) { const PluginInfo &info = plugins.at(i).data()->info(); QLatin1String class_name(plugins.at(i).data()->metaObject()->className()); if (!m_plugin_items.contains(info.name())) { QIcon icon = info.icon(); if (icon.isNull() || !icon.availableSizes().count()) icon = Icon("applications-system"); QString name = info.name(); int index = qLowerBound(helper, name) - helper.constBegin(); helper.insert(index, name); ServiceItem *item = new ServiceItem(icon, name); item->setToolTip(html(info)); item->setCheckable(true); item->setData(true,ServiceItem::ExclusiveRole); item->setData(info.description().toString(), DescriptionRole); item->setCheckState((group.value(class_name, true) ? Qt::Checked : Qt::Unchecked)); parent_item->insertRow(index, item); m_plugin_items.insert(class_name, item); m_plugins.insert(class_name, plugins.at(i).data()); } } }
QList<PersonInfo> PersonInfo::authors() { // May be we should use QMap and get result finally from it withour QVector and qSort? StringPersonHash authors; StringPersonHash::iterator it; foreach (QPointer<Plugin> plugin, pluginsList()) { foreach (const PersonInfo &person, plugin.data()->info().authors()) { it = authors.find(person.name()); if (it == authors.end()) it = authors.insert(person.name(), qMakePair(person, 0)); it.value().second += plugin.data()->avaiableExtensions().size(); } }