cimportingredientdialog.cpp cimportingredientdialog.h ui_cimportingredientdialog.h cmessageanimatedialog.h #include"cimportingredientdialog.h" #include"ui_cimportingredientdialog.h" #include"cmessageanimatedialog.h" cImportIngredientDialog::cImportIngredientDialog(QWidget*parent): QDialog(parent), ui(newUi::cImportIngredientDialog), m_lpIngredientListModel(0), m_lpIngredientDetailsModel(0) { init(); } cImportIngredientDialog::~cImportIngredientDialog() { deleteui; } voidcImportIngredientDialog::init() { ui->setupUi(this); initIngredientList(); initIngredientDetails(); } voidcImportIngredientDialog::initIngredientList() { if(!m_lpIngredientListModel) { m_lpIngredientListModel=newQStandardItemModel(0,1); ui->m_lpIngredientList->setModel(m_lpIngredientListModel); connect(ui->m_lpIngredientList->selectionModel(),SIGNAL(selectionChanged(QItemSelection,QItemSelection)),SLOT(onIngredientListSelectionChanged(QItemSelection,QItemSelection))); } m_lpIngredientListModel->clear(); } voidcImportIngredientDialog::initIngredientDetails() { if(!m_lpIngredientDetailsModel) { m_lpIngredientDetailsModel=newQStandardItemModel(0,2); ui->m_lpIngredientDetails->setModel(m_lpIngredientDetailsModel); } m_lpIngredientDetailsModel->clear(); QStringListheaderLabels=QStringList()<<tr("Group/Name")<<tr("Value"); m_lpIngredientDetailsModel->setHorizontalHeaderLabels(headerLabels); } voidcImportIngredientDialog::setPluginList(constQList<cPlugin*>pluginList) { m_pluginList=pluginList; for(intz=0;z<m_pluginList.count();z++) { cPlugin*lpPlugin=m_pluginList.at(z); if(lpPlugin->capability()==cPlugin::PluginCapImport) ui->m_lpSource->addItem(lpPlugin->pluginName(),QVariant::fromValue(lpPlugin)); } ui->m_lpSource->setCurrentIndex(0); } voidcImportIngredientDialog::on_m_lpSearchString_textChanged(constQString&/*arg1*/) { if(ui->m_lpSearchString->text().length()) ui->m_lpSearchButton->setEnabled(true); else ui->m_lpSearchButton->setEnabled(false); } voidcImportIngredientDialog::on_m_lpSearchButton_clicked() { cMessageAnimateDialog*lpDialog=newcMessageAnimateDialog(this); lpDialog->setTitle("ImportIngredient"); lpDialog->setMessage("Searching"); lpDialog->show(); m_lpIngredientListModel->removeRows(0,m_lpIngredientListModel->rowCount()); cPlugin*lpPlugin=ui->m_lpSource->currentData().value<cPlugin*>(); if(!lpPlugin) { deletelpDialog; return; } cImportInterface*lpImport=lpPlugin->importInterface(); if(!lpImport) { deletelpDialog; return; } QStringListstrList=lpImport->search(ui->m_lpSearchString->text()); for(intz=0;z<strList.count();z++) { QStandardItem*lpNew=newQStandardItem(strList.at(z)); m_lpIngredientListModel->appendRow(lpNew); } deletelpDialog; } voidcImportIngredientDialog::onIngredientListSelectionChanged(constQItemSelection&/*selected*/,constQItemSelection&/*deselected*/) { cMessageAnimateDialog*lpDialog=newcMessageAnimateDialog(this); lpDialog->setTitle("ImportIngredient"); lpDialog->setMessage("Loading"); lpDialog->show(); m_lpIngredientDetailsModel->removeRows(0,m_lpIngredientDetailsModel->rowCount()); cPlugin*lpPlugin=ui->m_lpSource->currentData().value<cPlugin*>(); if(!lpPlugin) { deletelpDialog; return; } cImportInterface*lpImport=lpPlugin->importInterface(); if(!lpImport) { deletelpDialog; return; } intiIndex=ui->m_lpIngredientList->currentIndex().row(); if(iIndex<0) { deletelpDialog; return; } if(!lpImport->load(iIndex)) { deletelpDialog; return; } if(!lpImport->load(ui->m_lpIngredientList->currentIndex().row())) { deletelpDialog; return; } for(intz=0;z<cIngredient::iIngredientMax;z++) { if(lpImport->value((cIngredient::iIngredient)z)!=-1) { QStandardItem*lpParent=addGroup(lpImport->group((cIngredient::iIngredient)z)); QStandardItem*lpName=newQStandardItem(lpImport->name((cIngredient::iIngredient)z)); QStandardItem*lpValue=newQStandardItem(lpImport->valueStr((cIngredient::iIngredient)z)); lpValue->setTextAlignment(Qt::AlignRight); lpParent->appendRow(QList<QStandardItem*>()<<lpName<<lpValue); } } ui->m_lpIngredientDetails->resizeColumnToContents(0); ui->m_lpIngredientDetails->resizeColumnToContents(1); deletelpDialog; } QStandardItem*cImportIngredientDialog::addGroup(constQString&group) { QList<QStandardItem*>itemList=m_lpIngredientDetailsModel->findItems(group); for(intz=0;z<itemList.count();z++) { if(!itemList.at(z)->parent()) return(itemList.at(z)); } QStandardItem*lpItem=newQStandardItem(group); m_lpIngredientDetailsModel->appendRow(lpItem); return(lpItem); }