void MainWindow::reloadAssistantXml(const QString &path) { if (m_assistantXmlPath != path) { m_assistantXmlPath = path; foreach (QListWidget* widget, m_assistantWidgets) { widget->deleteLater(); } m_assistantWidgets.clear(); if (m_assistantXmlPath.isEmpty()) { qDebug() << "No assistant defined."; } else { AssistantXmlReader reader; reader.readFile(m_assistantXmlPath); QAction* action_insert = new QAction(this); action_insert->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Enter)); for (int i = 0; i < reader.size(); ++i) { const Assistant* assistant = reader.assistant(i); QListWidget* view = newAssistantListWidget(ASSISTANT_ICON_SIZE, this); for (int j = 0; j < assistant->size(); ++j) { const AssistantItem* assistantItem = assistant->item(j); QListWidgetItem* listWidgetItem = new QListWidgetItem(iconFromSvg(ASSISTANT_ICON_SIZE, assistantItem->icon()), assistantItem->name(), view); listWidgetItem->setData(ASSISTANT_ITEM_DATA_ROLE, assistantItem->data()); listWidgetItem->setData(ASSISTANT_ITEM_NOTES_ROLE, assistantItem->notes()); } m_assistantToolBox->addItem(view, assistant->name()); connect(view, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(onAssistanItemDoubleClicked(QListWidgetItem*))); connect(view, SIGNAL(itemSelectionChanged()), this, SLOT(onAssistantItemSelectionChanged())); QAction* action = new QAction(this); action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return)); m_assistantInsertSignalMapper->setMapping(action, view); connect(action, SIGNAL(triggered()), m_assistantInsertSignalMapper, SLOT(map())); view->addAction(action); m_assistantWidgets << view; } } }