void ParameterWidget::changeFilterObject(int index) { XComboBox *mybox = (XComboBox *)sender(); QStringList split = mybox->itemData(index).toString().split(":"); QString row = split.at(0); int type = split.at(1).toInt(); XSqlQuery qry; QWidget *widget = _filterGroup->findChild<QWidget *>("widget" + row); QWidget *button = _filterGroup->findChild<QToolButton *>("button" + row); QHBoxLayout *layout = _filterGroup->findChild<QHBoxLayout *>("widgetLayout1" + row);; QPair<QString, ParameterWidgetTypes> tempPair; DLineEdit *dLineEdit= new DLineEdit(_filterGroup); UsernameCluster *usernameCluster = new UsernameCluster(_filterGroup); CRMAcctCluster *crmacctCluster = new CRMAcctCluster(_filterGroup); QLineEdit *lineEdit = new QLineEdit(_filterGroup); XComboBox *xBox = new XComboBox(_filterGroup); ContactCluster *contactCluster = new ContactCluster(_filterGroup); if (widget && layout && button) delete widget; else return; switch (type) { case Date: delete usernameCluster; delete crmacctCluster; delete lineEdit; delete xBox; delete contactCluster; dLineEdit->setObjectName("widget" + row); layout->insertWidget(0, dLineEdit); connect(button, SIGNAL(clicked()), dLineEdit, SLOT( deleteLater() ) ); connect(dLineEdit, SIGNAL(newDate(QDate)), this, SLOT( storeFilterValue(QDate) ) ); break; case User: delete dLineEdit; delete crmacctCluster; delete lineEdit; delete xBox; delete contactCluster; usernameCluster->setObjectName("widget" + row); usernameCluster->setNameVisible(false); usernameCluster->setDescriptionVisible(false); usernameCluster->setLabel(""); layout->insertWidget(0, usernameCluster); connect(button, SIGNAL(clicked()), usernameCluster, SLOT( deleteLater() ) ); connect(usernameCluster, SIGNAL(newId(int)), this, SLOT( storeFilterValue(int) ) ); break; case Crmacct: delete dLineEdit; delete usernameCluster; delete lineEdit; delete xBox; delete contactCluster; crmacctCluster->setObjectName("widget" + row); crmacctCluster->setNameVisible(false); crmacctCluster->setDescriptionVisible(false); crmacctCluster->setLabel(""); layout->insertWidget(0, crmacctCluster); connect(button, SIGNAL(clicked()), crmacctCluster, SLOT( deleteLater() ) ); connect(crmacctCluster, SIGNAL(newId(int)), this, SLOT( storeFilterValue(int) ) ); break; case Contact: delete dLineEdit; delete usernameCluster; delete lineEdit; delete xBox; delete crmacctCluster; contactCluster->setObjectName("widget" + row); contactCluster->setDescriptionVisible(false); contactCluster->setLabel(""); layout->insertWidget(0, contactCluster); connect(button, SIGNAL(clicked()), contactCluster, SLOT( deleteLater() ) ); connect(contactCluster, SIGNAL(newId(int)), this, SLOT( storeFilterValue(int) ) ); break; case XComBox: delete dLineEdit; delete usernameCluster; delete lineEdit; delete crmacctCluster; delete contactCluster; xBox->setObjectName("widget" + row); xBox->setType(_comboTypes[mybox->currentText()]); if (_comboTypes[mybox->currentText()] == XComboBox::Adhoc) { qry.prepare( _comboQuery[mybox->currentText()] ); qry.exec(); xBox->populate(qry); } layout->insertWidget(0, xBox); connect(button, SIGNAL(clicked()), xBox, SLOT( deleteLater() ) ); connect(xBox, SIGNAL(newID(int)), this, SLOT( storeFilterValue(int) ) ); break; default: delete dLineEdit; delete usernameCluster; delete crmacctCluster; delete xBox; delete contactCluster; lineEdit->setObjectName("widget" + row); layout->insertWidget(0, lineEdit); connect(button, SIGNAL(clicked()), lineEdit, SLOT( deleteLater() ) ); connect(lineEdit, SIGNAL(editingFinished()), this, SLOT( storeFilterValue() ) ); break; } }
docAttachPrivate(docAttach *parent) : p(parent) { // url and file match _docType->populate below, at least for now map.insert(-3, new StackDescriptor(p->_urlPage, p->_url)); map.insert(-2, new StackDescriptor(p->_filePage, p->_file)); map.insert(Documents::Contact, new StackDescriptor(p->_cntctPage, p->_cntct)); map.insert(Documents::CRMAccount, new StackDescriptor(p->_crmacctPage, p->_crmacct)); map.insert(Documents::Customer, new StackDescriptor(p->_custPage, p->_cust)); map.insert(Documents::Employee, new StackDescriptor(p->_empPage, p->_emp)); map.insert(Documents::Uninitialized, new StackDescriptor(p->_filePage, p->_file)); map.insert(Documents::Uninitialized, new StackDescriptor(p->_imagePage, p->_img)); map.insert(Documents::Incident, new StackDescriptor(p->_incdtPage, p->_incdt)); map.insert(Documents::Invoice, new StackDescriptor(p->_invoicePage, p->_invoice)); map.insert(Documents::Item, new StackDescriptor(p->_itemPage, p->_item)); map.insert(Documents::Opportunity, new StackDescriptor(p->_oppPage, p->_opp)); map.insert(Documents::Project, new StackDescriptor(p->_projPage, p->_proj)); map.insert(Documents::PurchaseOrder, new StackDescriptor(p->_poPage, p->_po)); map.insert(Documents::SalesOrder, new StackDescriptor(p->_soPage, p->_so)); map.insert(Documents::Vendor, new StackDescriptor(p->_vendPage, p->_vend)); map.insert(Documents::Uninitialized, new StackDescriptor(p->_urlPage, p->_url)); map.insert(Documents::WorkOrder, new StackDescriptor(p->_woPage, p->_wo)); if (! _x_privileges) return; // Qt Designer doesn't connect to the database XSqlQuery q("SELECT * FROM source" " WHERE source_widget NOT IN ('', 'core');"); QUiLoader uil(p); while (q.next()) { QWidget *w = 0; QString description = q.value("source_widget").toString(); if (DEBUG) qDebug() << "checking" << q.value("source_name") << description; if (description.startsWith("SELECT", Qt::CaseInsensitive)) { XComboBox *c = new XComboBox(); c->populate(description); w = c; } else if (description.contains("Cluster")) { w = uil.createWidget(description, p, "_" + q.value("source_name").toString()); } if (w) { QString litValue = q.value("source_descrip").toString(); QWidget *page = new QWidget(); QFormLayout *lyt = new QFormLayout(p); QLabel *lit = new QLabel(QT_TRANSLATE_NOOP("docAttach", litValue)); page->setLayout(lyt); lyt->addRow(lit, w); p->_documentsStack->addWidget(page); map.insert(q.value("source_docass_num").toInt(), new StackDescriptor(page, w)); if (DEBUG) qDebug() << "created a widget for" << description; } else { qDebug() << "Could not create a widget for" << description; } } ErrorReporter::error(QtCriticalMsg, 0, "Error Getting Document Types", q, __FILE__, __LINE__); }