void ParameterWidget::removeParam(int pRow) { QLayoutItem *test; QLayoutItem *test2; test = _filtersLayout->itemAtPosition(pRow, 0)->layout()->itemAt(0); XComboBox *mybox = (XComboBox*)test->widget(); QVariant filterVar(mybox->itemData(mybox->currentIndex())); QString filterType = filterVar.toString(); QStringList split = filterType.split(":"); QPair<QString, QVariant> tempPair = _filterValues.value(split[0].toInt()); _filterValues.remove(split[0].toInt()); test2 = _filtersLayout->itemAtPosition(pRow, 0)->layout()->takeAt(1); delete test2; test2 = 0; _filtersLayout->update(); _addFilterRow->setDisabled(false); repopulateComboboxes(); if (!mybox->currentText().isEmpty()) _usedTypes.remove(pRow); emit updated(); }
void ParameterWidget::save() { QString filter; QString filtersetname; QString variantString; QString username; QString query; QVariant tempVar; int filter_id; QMessageBox msgBox; filtersetname = _filterSetName->text(); if ( filtersetname.isEmpty() ) { msgBox.setText(tr("Please enter a name for this filter set before saving.")); msgBox.exec(); return; } else { QMapIterator<int, QPair<QString, QVariant> > i(_filterValues); while (i.hasNext()) { i.next(); QPair<QString, QVariant> tempPair = i.value(); tempVar = tempPair.second; QLayoutItem *test = _filtersLayout->itemAtPosition(i.key(), 0)->layout()->itemAt(0); XComboBox* mybox = (XComboBox*)test->widget(); QStringList split = mybox->itemData(mybox->currentIndex()).toString().split(":"); if ( tempVar.canConvert<QString>() ) { variantString = tempVar.toString(); filter = filter + tempPair.first + ":" + variantString + ":" + split[1] + "|"; } } const QMetaObject *metaobject = this->parent()->metaObject(); QString classname(metaobject->className()); XSqlQuery qry, qry2, qry3; qry.exec("SELECT current_user;"); if (qry.first()) username = qry.value("current_user").toString(); //check to see if filter name exists for this screen QString filter_query = "select filter_name " "from filter " "where filter_name=:name and filter_username=:username " " and filter_screen=:screen"; qry2.prepare(filter_query); qry2.bindValue(":name", filtersetname); qry2.bindValue(":username" , username); qry2.bindValue(":screen", classname); qry2.exec(); //if the filter name is found, update it if (qry2.first() && !qry2.isNull(0)) query = "update filter set filter_value=:value " "where filter_screen=:screen " " and filter_name=:name " " and filter_username=:username"; else query = "insert into filter (filter_screen, filter_name, filter_value, filter_username) " " values (:screen, :name, :value, :username) "; qry.prepare(query); qry.bindValue(":screen", classname); qry.bindValue(":value", filter); qry.bindValue(":username" , username); qry.bindValue(":name", filtersetname ); if (qry.exec()) { query = "select filter_id " "from filter " "where filter_name=:name " " and filter_username=:username " " and filter_screen=:screen"; qry3.prepare(query); qry3.bindValue(":screen", classname); qry3.bindValue(":username" , username); qry3.bindValue(":name", filtersetname ); qry3.exec(); if (qry3.first()) filter_id = qry.value("filter_id").toInt(); emit filterSetSaved(); } } setSavedFilters(); _filterList->setCurrentIndex(_filterList->findText(filtersetname)); }