void WidgetBoxCategoryModel::addWidget(const QDesignerWidgetBoxInterface::Widget &widget, const QIcon &icon,bool editable) { // build item. Filter on name + class name if it is different and not a layout. QString filter = widget.name(); if (!filter.contains(QLatin1String("Layout")) && m_classNameRegExp.indexIn(widget.domXml()) != -1) { const QString className = m_classNameRegExp.cap(1); if (!filter.contains(className)) filter += className; } WidgetBoxCategoryEntry item(widget, filter, icon, editable); const QDesignerWidgetDataBaseInterface *db = m_core->widgetDataBase(); const int dbIndex = db->indexOfClassName(widget.name()); if (dbIndex != -1) { const QDesignerWidgetDataBaseItemInterface *dbItem = db->item(dbIndex); const QString toolTip = dbItem->toolTip(); if (!toolTip.isEmpty()) item.toolTip = toolTip; const QString whatsThis = dbItem->whatsThis(); if (!whatsThis.isEmpty()) item.whatsThis = whatsThis; } // insert const int row = m_items.size(); beginInsertRows(QModelIndex(), row, row); m_items.push_back(item); endInsertRows(); }
void WidgetBoxCategoryListView::slotPressed(const QModelIndex &index) { const QDesignerWidgetBoxInterface::Widget wgt = m_model->widgetAt(m_proxyModel->mapToSource(index)); if (wgt.isNull()) return; emit pressed(wgt.name(), widgetDomXml(wgt), QCursor::pos()); }
QString WidgetBoxCategoryListView::widgetDomXml(const QDesignerWidgetBoxInterface::Widget &widget) { QString domXml = widget.domXml(); if (domXml.isEmpty()) { domXml = QLatin1String(uiOpeningTagC); domXml += QLatin1String("<widget class=\""); domXml += widget.name(); domXml += QLatin1String("\"/>"); domXml += QLatin1String(uiClosingTagC); } return domXml; }