void PoitemTableDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { const QAbstractItemModel *model = index.model(); QLineEdit *lineedit = 0; switch (index.column()) { case ITEM_NUMBER_COL: { ItemLineEdit *item = static_cast<ItemLineEdit*>(editor); if (model->data(model->index(index.row(), POITEM_ITEMSITE_ID_COL)).toInt() > 0) item->setItemsiteid(model->data(model->index(index.row(), POITEM_ITEMSITE_ID_COL)).toInt()); break; } case WAREHOUS_CODE_COL: { WComboBox *whs = static_cast<WComboBox*>(editor); whs->setId(model->data(model->index(index.row(), WAREHOUS_ID_COL)).toInt()); break; } case POITEM_VEND_ITEM_NUMBER_COL: case POITEM_QTY_ORDERED_COL: case POITEM_UNITPRICE_COL: case POITEM_FREIGHT_COL: lineedit = static_cast<QLineEdit*>(editor); lineedit->setText(model->data(index).toString()); break; case POITEM_DUEDATE_COL: { DLineEdit *duedate = static_cast<DLineEdit*>(editor); duedate->setDate(index.data().toDate()); break; } #ifdef QE_PROJECT case PRJ_NUMBER_COL: { ProjectLineEdit *prj = static_cast<ProjectLineEdit*>(editor); prj->setId(model->data(model->index(index.row(), POITEM_PRJ_ID_COL)).toInt()); break; } #endif #ifdef QE_NONINVENTORY case EXPCAT_CODE_COL: { ExpenseLineEdit *exp = static_cast<ExpenseLineEdit*>(editor); exp->setId(model->data(model->index(index.row(), POITEM_EXPCAT_ID_COL)).toInt()); break; } #endif default: break; } }
void CustCharacteristicDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { if (editor->inherits("QComboBox")) { QComboBox *comboBox = static_cast<QComboBox*>(editor); model->setData(index, comboBox->currentText()); } else if (editor->inherits("DLineEdit")) { DLineEdit *dlineedit = static_cast<DLineEdit*>(editor); model->setData(index, dlineedit->date()); } }
void ToitemTableDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { const QAbstractItemModel *model = index.model(); QLineEdit *lineedit = 0; switch (index.column()) { case ITEM_NUMBER_COL: { ItemLineEdit *item = static_cast<ItemLineEdit*>(editor); item->setId(model->data(model->index(index.row(), TOITEM_ITEM_ID_COL)).toInt()); break; } case TOITEM_QTY_ORDERED_COL: case TOITEM_FREIGHT_COL: lineedit = static_cast<QLineEdit*>(editor); lineedit->setText(model->data(index).toString()); break; case TOITEM_DUEDATE_COL: { DLineEdit *duedate = static_cast<DLineEdit*>(editor); duedate->setDate(index.data().toDate()); break; } #ifdef QE_PROJECT case PRJ_NUMBER_COL: { ProjectLineEdit *prj = static_cast<ProjectLineEdit*>(editor); prj->setId(model->data(model->index(index.row(), TOITEM_PRJ_ID_COL)).toInt()); break; } #endif default: break; } }
void ItemCharacteristicDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { XSqlQuery ItemetModelData; QComboBox *comboBox = static_cast<QComboBox*>(editor); QModelIndex charidx = index.sibling(index.row(), CHAR); QModelIndex priceidx = index.sibling(index.row(), PRICE); QVariant charVars; QVariantList listVars; if (priceidx.model()) charVars.setValue(priceidx.model()->data(priceidx, Qt::UserRole).toList()); listVars=charVars.toList(); if (editor->inherits("QComboBox")) { if (listVars.value(CUST_ID).toInt()) { ItemetModelData.prepare("SELECT itemcharprice(:item_id,:char_id,:value,:cust_id,:shipto_id,:qty,:curr_id,:effective)::numeric(16,4) AS price;"); ItemetModelData.bindValue(":item_id" , listVars.value(ITEM_ID).toInt()); ItemetModelData.bindValue(":char_id" , charidx.model()->data(charidx, Qt::UserRole)); ItemetModelData.bindValue(":value" , comboBox->currentText()); ItemetModelData.bindValue(":cust_id" , listVars.value(CUST_ID)); ItemetModelData.bindValue(":shipto_id", listVars.value(SHIPTO_ID)); ItemetModelData.bindValue(":qty" , listVars.value(QTY)); ItemetModelData.bindValue(":curr_id" , listVars.value(CURR_ID)); ItemetModelData.bindValue(":effective", listVars.value(EFFECTIVE)); ItemetModelData.exec(); if (ItemetModelData.first()) model->setData(priceidx, ItemetModelData.value("price").toString()); } model->setData(index, comboBox->currentText()); } else if (editor->inherits("DLineEdit")) { DLineEdit *dlineedit = static_cast<DLineEdit*>(editor); model->setData(index, dlineedit->date()); } }
void CustCharacteristicDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { if (editor->inherits("QComboBox")) { QString value = index.model()->data(index, Qt::DisplayRole).toString(); QComboBox *comboBox = static_cast<QComboBox*>(editor); int curIdx = comboBox->findText(value); if(curIdx != -1) comboBox->setCurrentIndex(curIdx); else comboBox->setEditText(value); } else if (editor->inherits("DLineEdit")) { QDate date = index.model()->data(index, Qt::UserRole).toDate(); DLineEdit *dlineedit = static_cast<DLineEdit*>(editor); dlineedit->setDate(date); } }
void ToitemTableDelegate::setModelData(QWidget *editor, QAbstractItemModel *pModel, const QModelIndex &index) const { bool hitError = false; QVariant oldval = pModel->data(index); ToitemTableModel *model = static_cast<ToitemTableModel*>(pModel); switch (index.column()) { case ITEM_NUMBER_COL: { ItemLineEdit *item = static_cast<ItemLineEdit*>(editor); if (oldval.isNull() || item->itemNumber() != oldval.toString()) { if (! item->itemNumber().isEmpty() && item->isValid()) { XSqlQuery itemq; itemq.prepare("SELECT *, stdCost(item_id) AS stdcost, uom_name " "FROM item JOIN uom ON (item_inv_uom_id=uom_id) " "WHERE (item_id=:item_id);"); itemq.bindValue(":item_id", item->id()); itemq.exec(); if (itemq.first()) { if (itemq.value("stdcost").toDouble() == 0.0) { QMessageBox::critical(0, tr("No Standard Cost"), tr("<p>The selected item has no Standard " "Costing information. Please see your " "controller to correct this situation " "before continuing.")); hitError = true; break; } model->setData(index, item->itemNumber()); model->setData(model->index(index.row(), TOITEM_ITEM_ID_COL), itemq.value("item_id").toInt()); model->setData(model->index(index.row(), TOITEM_UOM_COL), itemq.value("uom_name")); model->setData(model->index(index.row(), TOITEM_STDCOST_COL), formatPurchPrice(itemq.value("stdcost").toDouble())); } else if (itemq.lastError().type() != QSqlError::NoError) { systemError(0, itemq.lastError().databaseText(), __FILE__, __LINE__); hitError = true; break; } } if (hitError) { model->setData(index, QVariant(QVariant::String)); model->setData(model->index(index.row(), TOITEM_ITEM_ID_COL), QVariant(QVariant::Int)); model->setData(model->index(index.row(), TOITEM_STDCOST_COL), QVariant(QVariant::Double)); } } break; } case TOITEM_FREIGHT_COL: { QLineEdit *lineedit = static_cast<QLineEdit*>(editor); if (lineedit->text().toDouble() != oldval.toDouble()) model->setData(index, formatPurchPrice(lineedit->text().toDouble())); break; } case TOITEM_QTY_ORDERED_COL: { QLineEdit *lineedit = static_cast<QLineEdit*>(editor); if (lineedit->text().isEmpty()) model->setData(index, QVariant()); else model->setData(index, lineedit->text().toDouble()); break; } case TOITEM_DUEDATE_COL: { DLineEdit *duedate = static_cast<DLineEdit*>(editor); if (duedate->date() != oldval.toDate()) { model->setData(index, duedate->date()); } break; } #ifdef QE_PROJECT case PRJ_NUMBER_COL: { ProjectLineEdit *prj = static_cast<ProjectLineEdit*>(editor); if (prj->id() != oldval.toInt()) { model->setData(model->index(index.row(), TOITEM_PRJ_ID_COL), prj->id()); model->setData(index, prj->text()); } break; } #endif default: break; } QTableView *view = qobject_cast<QTableView*>(parent()); if (view) { if (hitError) view->setCurrentIndex(index); else if (index.row() >= (model->rowCount() - 1)) { QHeaderView* header = view->horizontalHeader(); if (header->visualIndex(index.column()) >= (header->count() - header->hiddenSectionCount() - 1)) { model->insertRow(model->rowCount()); } } } return; }
void ParameterWidget::applySaved(int pId, int filter_id) { qDebug() << "in applySaved, pid is: " << pId; QGridLayout *container; QLayoutItem *child; QLayoutItem *child2; QHBoxLayout *layout2; QWidget *found; QDate tempdate; XSqlQuery qry; QString query; QString filterValue; int xid; QMapIterator<int, QPair<QString, QVariant> > j(_filterValues); clearFilters(); if (!parent()) return; //if (pId == 0) //addParam(); if (_filterList->id() == -1) { _filterSetName->clear(); setSelectedFilter(-1); emit updated(); return; } if (filter_id == 0 && _filterList->id() != -1) filter_id = _filterList->id(_filterList->currentIndex()); const QMetaObject *metaobject = this->parent()->metaObject(); QString classname(metaobject->className()); //look up filter from database query = " SELECT filter_value " " FROM filter " " WHERE filter_username=current_user " " AND filter_id=:id " " AND filter_screen=:screen "; qry.prepare(query); qry.bindValue(":screen", classname); qry.bindValue(":id", filter_id ); qry.exec(); if (qry.first()) filterValue = qry.value("filter_value").toString(); QStringList filterRows = filterValue.split("|"); QString tempFilter = QString(); int windowIdx = _filtersLayout->rowCount(); for (int i = 0; i < filterRows.size(); ++i) { tempFilter = filterRows[i]; if ( !(tempFilter.isEmpty()) ) { //0 is filterType, 1 is filterValue, 2 is parameterwidgettype QStringList tempFilterList = tempFilter.split(":"); this->addParam(); QLayoutItem *test = _filtersLayout->itemAtPosition(windowIdx, 0)->layout()->itemAt(0); XComboBox *mybox = (XComboBox*)test->widget(); QString key = this->getParameterTypeKey(tempFilterList[0]); int idx = mybox->findText(key); mybox->setCurrentIndex(idx); QString row; row = row.setNum(windowIdx); container = _filtersLayout->findChild<QGridLayout *>("topLayout" + row); child = container->itemAtPosition(0, 0)->layout()->itemAt(0); layout2 = (QHBoxLayout *)child->layout(); child2 = layout2->itemAt(0); found = child2->widget(); int widgetType = tempFilterList[2].toInt(); //grab pointer to newly created filter object switch (widgetType) { case Date: DLineEdit *dLineEdit; dLineEdit = (DLineEdit*)found; dLineEdit->setDate(QDate::fromString(tempFilterList[1], "yyyy-MM-dd"), true); break; case User: UsernameCluster *usernameCluster; usernameCluster = (UsernameCluster*)found; usernameCluster->setUsername(tempFilterList[1]); break; case Crmacct: CRMAcctCluster *crmacctCluster; crmacctCluster = (CRMAcctCluster*)found; crmacctCluster->setId(tempFilterList[1].toInt()); break; case Contact: ContactCluster *contactCluster; contactCluster = (ContactCluster*)found; contactCluster->setId(tempFilterList[1].toInt()); break; case XComBox: XComboBox *xBox; xBox = (XComboBox*)found; //fix for setid not emitting id signal if id found for filter is first in list //set to any other valid id first to fix it xBox->setId(2); xid = tempFilterList[1].toInt(); qDebug() << "xid is: " << xid; xBox->setId(xid); while (j.hasNext()) { j.next(); QPair<QString, QVariant> tempPair = j.value(); qDebug() << j.key() << ": " << tempPair.second << endl; } break; default: QLineEdit *lineEdit; lineEdit = (QLineEdit*)found; lineEdit->setText(tempFilterList[1]); storeFilterValue(-1, lineEdit); break; } }//end of if windowIdx++; }//end of for _filterSetName->setText( _filterList->currentText() ); setSelectedFilter(filter_id); emit updated(); }
void PoitemTableDelegate::setModelData(QWidget *editor, QAbstractItemModel *pModel, const QModelIndex &index) const { bool hitError = false; QVariant oldval = pModel->data(index); PoitemTableModel *model = static_cast<PoitemTableModel*>(pModel); switch (index.column()) { case ITEM_NUMBER_COL: { ItemLineEdit *item = static_cast<ItemLineEdit*>(editor); if (item->itemNumber() != oldval.toString()) { if (item->itemNumber().isEmpty()) { model->setData(index, new QVariant()); model->setData(model->index(index.row(), ITEM_ID_COL), new QVariant()); model->setData(model->index(index.row(), POITEM_ITEMSITE_ID_COL), new QVariant()); model->setData(model->index(index.row(), WAREHOUS_ID_COL), new QVariant()); model->setData(model->index(index.row(), WAREHOUS_CODE_COL), new QVariant()); model->setData(model->index(index.row(), POITEM_ITEMSRC_ID_COL), new QVariant()); model->setData(model->index(index.row(), POITEM_VEND_ITEM_NUMBER_COL), new QVariant()); model->setData(model->index(index.row(), POITEM_VEND_ITEM_DESCRIP_COL), new QVariant()); model->setData(model->index(index.row(), POITEM_VEND_UOM_COL), new QVariant()); model->setData(model->index(index.row(), ITEMSRC_MINORDQTY_COL), new QVariant()); model->setData(model->index(index.row(), ITEMSRC_MULTORDQTY_COL), new QVariant()); model->setData(model->index(index.row(), ITEMSRC_INVVENDORUOMRATIO_COL), new QVariant()); model->setData(model->index(index.row(), POITEM_INVVENDUOMRATIO_COL), new QVariant()); model->setData(model->index(index.row(), EARLIESTDATE_COL), new QVariant()); } else { model->setData(index, item->itemNumber()); model->setData(model->index(index.row(), ITEM_ID_COL), item->id()); if (item->isValid()) { XSqlQuery itemq; itemq.prepare("SELECT (warehous_id=:preferred) AS preferred, " " itemsite_id, warehous_id, warehous_code " "FROM itemsite, whsinfo " "WHERE ((itemsite_item_id=:item_id)" " AND (itemsite_warehous_id=warehous_id)) " "ORDER BY preferred DESC, warehous_code " "LIMIT 1;"); itemq.bindValue(":item_id", item->id()); itemq.bindValue(":preferred", _x_preferences->value("PreferredWarehouse").toInt()); itemq.exec(); if (itemq.first()) { model->setData(model->index(index.row(), POITEM_ITEMSITE_ID_COL), itemq.value("itemsite_id").toInt()); model->setData(model->index(index.row(), WAREHOUS_ID_COL), itemq.value("warehous_id").toInt()); model->setData(model->index(index.row(), WAREHOUS_CODE_COL), itemq.value("warehous_code").toString()); } else if (itemq.lastError().type() != QSqlError::None) { systemError(0, itemq.lastError().databaseText(), __FILE__, __LINE__); hitError = true; break; } else { systemError(0, QString("Could not find Item Site for %1 (%2).") .arg(item->itemNumber()).arg(item->id())); hitError = true; break; } if (_metrics->boolean("RequireStdCostForPOItem")) { XSqlQuery stdcostq; stdcostq.prepare("SELECT stdCost(:item_id) AS result"); stdcostq.bindValue(":item_id", item->id()); stdcostq.exec(); if(stdcostq.first() && stdcostq.value("result").toDouble() == 0.0) { QMessageBox::critical(0, tr("Selected Item Missing Cost"), tr("<p>The selected item has no Std. Costing information. " "Please see your controller to correct this situation " "before continuing.")); model->setData(index, new QString()); model->setData(model->index(index.row(), POITEM_ITEMSITE_ID_COL), new QVariant()); model->setData(model->index(index.row(), WAREHOUS_ID_COL), new QVariant()); model->setData(model->index(index.row(), WAREHOUS_CODE_COL), new QString()); model->setData(index, new QString()); hitError = true; break; } else if (stdcostq.lastError().type() != QSqlError::None) { systemError(0, stdcostq.lastError().databaseText(), __FILE__, __LINE__); hitError = true; break; } } XSqlQuery itemsrcq; itemsrcq.prepare( "SELECT itemsrc_id, itemsrc_vend_item_number," " itemsrc_vend_item_descrip, itemsrc_vend_uom," " itemsrc_minordqty," " itemsrc_multordqty," " itemsrc_invvendoruomratio," " (CURRENT_DATE + itemsrc_leadtime) AS earliestdate " "FROM pohead, itemsrc " "WHERE ( (itemsrc_vend_id=pohead_vend_id)" " AND (itemsrc_item_id=:item_id)" " AND (pohead_id=:pohead_id) );" ); itemsrcq.bindValue(":item_id", item->id()); itemsrcq.bindValue(":pohead_id", model->headId()); itemsrcq.exec(); if (itemsrcq.first()) { model->setData(model->index(index.row(), POITEM_ITEMSRC_ID_COL), itemsrcq.value("itemsrc_id").toInt()); model->setData(model->index(index.row(), POITEM_VEND_ITEM_NUMBER_COL), itemsrcq.value("itemsrc_vend_item_number").toString()); model->setData(model->index(index.row(), POITEM_VEND_ITEM_DESCRIP_COL), itemsrcq.value("itemsrc_vend_item_descrip").toString()); model->setData(model->index(index.row(), POITEM_VEND_UOM_COL), itemsrcq.value("itemsrc_vend_uom").toString()); model->setData(model->index(index.row(), ITEMSRC_MINORDQTY_COL), itemsrcq.value("itemsrc_minordqty").toDouble()); model->setData(model->index(index.row(), ITEMSRC_MULTORDQTY_COL), itemsrcq.value("itemsrc_multordqty").toDouble()); model->setData(model->index(index.row(), ITEMSRC_INVVENDORUOMRATIO_COL), itemsrcq.value("itemsrc_invvendoruomratio").toDouble()); model->setData(model->index(index.row(), POITEM_INVVENDUOMRATIO_COL), itemsrcq.value("itemsrc_invvendoruomratio").toDouble()); model->setData(model->index(index.row(), EARLIESTDATE_COL), itemsrcq.value("earliestdate").toDate()); if (_metrics->boolean("UseEarliestAvailDateOnPOItem")) model->setData(model->index(index.row(), POITEM_DUEDATE_COL), itemsrcq.value("earliestdate").toDate()); } else if (itemsrcq.lastError().type() != QSqlError::None) { systemError(0, itemsrcq.lastError().databaseText(), __FILE__, __LINE__); hitError = true; break; } } } } break; } case WAREHOUS_CODE_COL: { WComboBox *whs = static_cast<WComboBox*>(editor); if (whs->id() < 0) { model->setData(model->index(index.row(), WAREHOUS_ID_COL), QVariant()); model->setData(index, QVariant()); } else if (whs->id() != oldval.toInt()) { model->setData(model->index(index.row(), WAREHOUS_ID_COL), whs->id()); model->setData(index, whs->currentText()); if (whs->isValid()) { XSqlQuery itemq; itemq.prepare("SELECT itemsite_id " "FROM itemsite " "WHERE ((itemsite_item_id=:item_id)" " AND (itemsite_warehous_id=:whs_id)) " "LIMIT 1;"); itemq.bindValue(":item_id", model->index(index.row(), ITEM_ID_COL).data()); itemq.bindValue(":whs_id", whs->id()); itemq.exec(); if (itemq.first()) { model->setData(model->index(index.row(), POITEM_ITEMSITE_ID_COL), itemq.value("itemsite_id").toInt()); } else if (itemq.lastError().type() != QSqlError::None) { systemError(0, itemq.lastError().databaseText(), __FILE__, __LINE__); hitError = true; break; } else { systemError(0, QString("Could not find Item Site for %1 in %2.") .arg(model->index(index.row(), ITEM_NUMBER_COL).data().toString()) .arg(whs->currentText())); hitError = true; break; } } } break; } case POITEM_VEND_ITEM_NUMBER_COL: { QLineEdit *lineedit = static_cast<QLineEdit*>(editor); if (lineedit->text() != oldval.toString()) model->setData(index, lineedit->text()); break; } case POITEM_FREIGHT_COL: { QLineEdit *lineedit = static_cast<QLineEdit*>(editor); if (lineedit->text().toDouble() != oldval.toDouble()) model->setData(index, formatPurchPrice(lineedit->text().toDouble())); break; } case POITEM_QTY_ORDERED_COL: { QLineEdit *lineedit = static_cast<QLineEdit*>(editor); if (lineedit->text().isEmpty()) { model->setData(index, QVariant()); model->setData(model->index(index.row(), EXTPRICE_COL), QVariant()); break; } double qty = lineedit->text().toDouble(); if (qty != oldval.toDouble()) { model->setData(index, formatQty(qty)); if (model->data(model->index(index.row(), POITEM_QTY_ORDERED_COL)).toDouble() > 0 && model->data(model->index(index.row(), POITEM_ITEMSRC_ID_COL)).toInt() > 0) { q.prepare( "SELECT ROUND(currToCurr(itemsrcp_curr_id, :curr_id, itemsrcp_price, :effective), :prec) " "AS new_itemsrcp_price " "FROM itemsrcp " "WHERE ( (itemsrcp_itemsrc_id=:itemsrc_id)" " AND (itemsrcp_qtybreak <= :qty) ) " "ORDER BY itemsrcp_qtybreak DESC " "LIMIT 1;" ); q.bindValue(":itemsrc_id", model->data(model->index(index.row(), POITEM_ITEMSRC_ID_COL)).toInt()); q.bindValue(":qty", model->data(model->index(index.row(), POITEM_QTY_ORDERED_COL)).toDouble()); q.bindValue(":curr_id", model->currId()); q.bindValue(":effective", model->transDate().toString()); q.bindValue(":prec", omfgThis->priceVal()->decimals()); q.exec(); if (q.first()) { model->setData(model->index(index.row(), POITEM_UNITPRICE_COL), q.value("new_itemsrcp_price").toDouble()); } else if (q.lastError().type() != QSqlError::None) { systemError(0, q.lastError().databaseText(), __FILE__, __LINE__); hitError = true; break; } else model->setData(model->index(index.row(), POITEM_UNITPRICE_COL), 0); } double prc = model->data(model->index(index.row(), POITEM_UNITPRICE_COL)).toDouble(); model->setData(model->index(index.row(), EXTPRICE_COL), formatPurchPrice(qty * prc)); } break; } case POITEM_UNITPRICE_COL: { QLineEdit *lineedit = static_cast<QLineEdit*>(editor); if (lineedit->text().isEmpty()) { model->setData(index, QVariant()); model->setData(model->index(index.row(), EXTPRICE_COL), QVariant()); break; } double prc = lineedit->text().toDouble(); if (prc != oldval.toDouble()) { model->setData(index, prc); double qty = model->data(model->index(index.row(),POITEM_QTY_ORDERED_COL)).toDouble(); model->setData(model->index(index.row(), EXTPRICE_COL), formatPurchPrice(qty * prc)); } break; } case POITEM_DUEDATE_COL: { DLineEdit *duedate = static_cast<DLineEdit*>(editor); if (duedate->date() != oldval.toDate()) { model->setData(index, duedate->date()); } break; } #ifdef QE_PROJECT case PRJ_NUMBER_COL: { ProjectLineEdit *prj = static_cast<ProjectLineEdit*>(editor); if (prj->id() != oldval.toInt()) { model->setData(model->index(index.row(), POITEM_PRJ_ID_COL), prj->id()); model->setData(index, prj->text()); } break; } #endif #ifdef QE_NONINVENTORY case EXPCAT_CODE_COL: { ExpenseLineEdit *exp = static_cast<ExpenseLineEdit*>(editor); if (exp->id() != oldval.toInt()) { model->setData(model->index(index.row(), POITEM_EXPCAT_ID_COL), exp->id()); model->setData(index, exp->text()); } break; } #endif default: break; } QTableView *view = qobject_cast<QTableView*>(parent()); if (view) { if (hitError) view->setCurrentIndex(index); else if (index.row() >= (model->rowCount() - 1)) { QHeaderView* header = view->horizontalHeader(); if (header->visualIndex(index.column()) >= (header->count() - header->hiddenSectionCount() - 1)) { model->insertRow(model->rowCount()); } } } return; }
void ParameterWidget::applySaved(int pId, int filter_id) { QWidget *found = 0; QDate tempdate; XSqlQuery qry; QString query; QString filterValue; QDate today = QDate::currentDate(); int xid, init_filter_id; init_filter_id = filter_id; QMapIterator<int, QPair<QString, QVariant> > j(_filterValues); QPair<QString, ParameterWidgetTypes> tempPair; clearFilters(); if (!parent()) return; if (_filterList->id() == -1) { emit updated(); return; } if (filter_id == 0 && _filterList->id() != -1) filter_id = _filterList->id(_filterList->currentIndex()); QString classname(parent()->objectName()); if (classname.isEmpty()) classname = parent()->metaObject()->className(); query = " SELECT filter_value, " " CASE WHEN (filter_username IS NULL) THEN true " " ELSE false END AS shared " " FROM filter " " WHERE filter_id=:id "; qry.prepare(query); qry.bindValue(":id", filter_id ); qry.exec(); if (qry.first()) { filterValue = qry.value("filter_value").toString(); _shared = qry.value("shared").toBool(); } QStringList filterRows = filterValue.split("|"); QString tempFilter = QString(); int windowIdx = _filtersLayout->rowCount(); if (filterRows.size() == 1 && pId == 0 && filter_id != 0) { emit updated(); return; } for (int i = 0; i < filterRows.size(); ++i) { tempFilter = filterRows[i]; if ( !(tempFilter.isEmpty()) ) { //0 is filterType, 1 is filterValue, 2 is parameterwidgettype QStringList tempFilterList = tempFilter.split(":"); QString key = this->getParameterTypeKey(tempFilterList[0]); if (key.isEmpty()) { //parametertype is no longer found, prompt user to delete filter if (QMessageBox::question(this, tr("Invalid Filter Set"), tr("This filter set contains an obsolete filter and will be deleted. Do you want to do this?"), QMessageBox::No | QMessageBox::Default, QMessageBox::Yes) == QMessageBox::No) return; else { QString query = "delete from filter where filter_id=:filter_id"; XSqlQuery qry; qry.prepare(query); qry.bindValue(":filter_id", filter_id); qry.exec(); setSavedFilters(); return; } } else { this->addParam(); QLayoutItem *test = _filtersLayout->itemAtPosition(windowIdx, 0)->layout()->itemAt(0); XComboBox *mybox = (XComboBox*)test->widget(); int idx = mybox->findText(key); mybox->setCurrentIndex(idx); found = getFilterWidget(windowIdx); int widgetType = tempFilterList[2].toInt(); //grab pointer to newly created filter object switch (widgetType) { case Date: DLineEdit *dLineEdit; dLineEdit = qobject_cast<DLineEdit*>(found); if (dLineEdit != 0) dLineEdit->setDate(today.addDays(tempFilterList[1].toInt()), true); break; case User: UsernameCluster *usernameCluster; usernameCluster = qobject_cast<UsernameCluster*>(found); if (usernameCluster != 0) usernameCluster->setUsername(tempFilterList[1]); break; case Crmacct: CRMAcctCluster *crmacctCluster; crmacctCluster = qobject_cast<CRMAcctCluster*>(found); if (crmacctCluster != 0) crmacctCluster->setId(tempFilterList[1].toInt()); break; case Contact: ContactCluster *contactCluster; contactCluster = qobject_cast<ContactCluster*>(found); if (contactCluster != 0) contactCluster->setId(tempFilterList[1].toInt()); break; case XComBox: XComboBox *xBox; xBox = qobject_cast<XComboBox*>(found); if (xBox != 0) { //fix for setid not emitting id signal if id found for filter is first in list //set to any other valid id first to fix it xBox->setId(2); xid = tempFilterList[1].toInt(); xBox->setId(xid); } break; case Multiselect: { QTableWidget *tab; tab = qobject_cast<QTableWidget*>(found); if (tab != 0) { QStringList savedval = tempFilterList[1].split(","); bool oldblk = tab->blockSignals(true); /* the obvious, loop calling tab->selectRow(), gives one selected row, so try this to get multiple selections: make only the desired values selectable, select everything, and connect to a slot that can clean up after us. yuck. */ for (int j = 0; j < tab->rowCount(); j++) { if (! savedval.contains(tab->item(j, 0)->data(Qt::UserRole).toString())) tab->item(j, 0)->setFlags(tab->item(j, 0)->flags() & (~ Qt::ItemIsSelectable)); } QTableWidgetSelectionRange range(0, 0, tab->rowCount() - 1, tab->columnCount() - 1); tab->setRangeSelected(range, true); connect(tab, SIGNAL(itemClicked(QTableWidgetItem*)), this, SLOT(resetMultiselect(QTableWidgetItem*))); tab->blockSignals(oldblk); storeFilterValue(-1, tab); } } break; default: { QLineEdit *lineEdit; lineEdit = qobject_cast<QLineEdit*>(found); if (lineEdit != 0) { lineEdit->setText(tempFilterList[1]); storeFilterValue(-1, lineEdit); } } break; }//end of switch }//end of not empty key else windowIdx++; }//end of if tempfilter not empty
QWidget *MainWindow::InstallOptionBody(){ QWidget *widget = new QWidget; QVBoxLayout *layout = new QVBoxLayout; layout->setSpacing(0); layout->addSpacing(10); DLineEdit *usernameEdit = new DLineEdit(":/fontend/images/user.png", tr("Username")); usernameEdit->setMaxLength(32); usernameEdit->setFixedSize(180, DefaultWidgetHeight); layout->addWidget(usernameEdit); layout->setAlignment(usernameEdit, Qt::AlignCenter); connect(usernameEdit, SIGNAL(textChanged(QString)), this, SLOT(setUsername(QString))); connect(usernameEdit, SIGNAL(editingFinished()), this, SLOT(editUsernameFinish())); connect(usernameEdit, SIGNAL(editingBegin(QString)), this, SLOT(editUsernameBegin(QString))); connect(this, SIGNAL(usernameChanged(QString)), usernameEdit, SLOT(overwriteText(QString))); DTips *usernameTips = new DTips(usernameEdit); connect(this, SIGNAL(showUsernameTips()), usernameTips, SLOT(pop())); connect(this, SIGNAL(hideUsernameTips()), usernameTips, SLOT(pack())); connect(this, SIGNAL(setUsernameTips(QString)), usernameTips, SLOT(setText(QString))); usernameEdit->setText(ToDeepinUsername(Xapi::Username())); DLineEdit *password = new DLineEdit(":/fontend/images/lock.png", tr("Password")); password->setEchoMode(QLineEdit::Password); password->setFixedSize(180, DefaultWidgetHeight); layout->addSpacing(27); layout->addWidget(password); layout->setAlignment(password, Qt::AlignCenter); connect(password, SIGNAL(textChanged(QString)), this, SLOT(setPassword(QString))); connect(password, SIGNAL(editingFinished()), this, SLOT(editPasswordFinish())); connect(password, SIGNAL(editingBegin(QString)), this, SLOT(editPasswordBegin(QString))); DTips *passwordTips = new DTips(password); passwordTips->setText(PasswordHits); connect(this, SIGNAL(showPasswordTips()), passwordTips, SLOT(pop())); connect(this, SIGNAL(hidePasswordTips()), passwordTips, SLOT(pack())); connect(this, SIGNAL(setPasswordTips(QString)), passwordTips, SLOT(setText(QString))); setPassword(""); DLineEdit *repeatRassword = new DLineEdit(":/fontend/images/lock.png", tr("Repeat Password")); repeatRassword->setEchoMode(QLineEdit::Password); repeatRassword->setFixedSize(180, DefaultWidgetHeight); layout->addSpacing(27); layout->addWidget(repeatRassword); layout->setAlignment(repeatRassword, Qt::AlignCenter); connect(repeatRassword, SIGNAL(textChanged(QString)), this, SLOT(setRepeatPassword(QString))); connect(repeatRassword, SIGNAL(editingFinished()), this, SLOT(editRepeatPasswordFinish())); connect(repeatRassword, SIGNAL(editingBegin(QString)), this, SLOT(editRepeatPasswordBegin(QString))); DTips *repeatPasswordTips = new DTips(repeatRassword); repeatPasswordTips->setText(RepeatPasswordHits); connect(this, SIGNAL(showRepeatPasswordTips()), repeatPasswordTips, SLOT(pop())); connect(this, SIGNAL(hideRepeatPasswordTips()), repeatPasswordTips, SLOT(pack())); connect(this, SIGNAL(setRepeatPasswordTips(QString)), repeatPasswordTips, SLOT(setText(QString))); setRepeatPassword(""); QString defaultLocale = Xapi::Locale(); DComboBox *installLang = new DComboBox; installLang->setFixedSize(180, DefaultWidgetHeight); layout->addSpacing(27); layout->addWidget(installLang); layout->setAlignment(installLang, Qt::AlignCenter); installLang->setIconSize(QSize(130,14)); installLang->setContentsMargins(QMargins(0,0,0,0)); installLang->setMinimumContentsLength(0); QVector<XUtils::Language>::Iterator langItor = m_Languages.begin(); int langIndex = 0; int defalutLangIndex = 0; for (;langItor != m_Languages.end(); ++langItor) { installLang->addItem(QIcon(":/data/langicon/"+langItor->Locale+".png"),""); if (defaultLocale.toLower() == langItor->Locale.toLower()) { defalutLangIndex = langIndex; } ++langIndex; } connect(installLang, SIGNAL(currentIndexChanged(int)), this, SLOT(installLanguageChanged(int))); installLang->setCurrentIndex(defalutLangIndex); DComboBox *installDev = new DComboBox; installDev->setFixedSize(180, DefaultWidgetHeight); layout->addSpacing(27); layout->addWidget(installDev); layout->setAlignment(installDev, Qt::AlignCenter); connect(installDev, SIGNAL(currentIndexChanged(QString)), this, SLOT(installDevTextChanged(QString))); QString partitionTableFiter = "GPT,MBR"; BootloaderType bootloader = WindowsBootLoaderType (); PartitonStyle styleFiter = MBRPartition; QString style = "MBR"; if (BCD_UEFI == bootloader) { styleFiter = GPTPartition; style = "GPT"; } bool hasMismatchPartitionStyle = false; //Init Dev List m_DiskSizeEnough = false; QList<DiskInfo> alldisklist = GetLocalDiskList(0, "NTFS", partitionTableFiter); QList<DiskInfo> list; QList<DiskInfo>::iterator itor; for (itor = alldisklist.begin(); itor != alldisklist.end(); ++itor){ if(styleFiter == itor->Style) { if (itor->FreeSpace > MiniInstallSize) { qDebug()<<"Add Disk"<<itor->Name; list.push_back (*itor); } } else { hasMismatchPartitionStyle = true; } } for (itor = list.begin(); itor != list.end(); ++itor){ if(itor->FreeSpace > MiniInstallSize) { m_DiskSizeEnough = true; } installDev->addItem(QString("%1(%2GB)").arg(itor->Name).arg(itor->FreeSpace)); } DStepEdit *installSize = new DStepEdit; installSize->setMin(MiniInstallSize); if (!list.isEmpty ()) { installSize->setMax(list.first().FreeSpace); } else { installSize->setMax(MiniInstallSize+1); } installSize->setFixedSize(180, DefaultWidgetHeight); layout->addSpacing(24); layout->addWidget(installSize); layout->setAlignment(installSize, Qt::AlignCenter); connect(this, SIGNAL(maxInstallSizeChage(int)), installSize, SLOT(setMax(int))); connect(installSize, SIGNAL(valueChanged(int)), this, SLOT(setInstallSize(int))); layout->addSpacing(5); installSize->setValue(MiniInstallSize); QLabel *hits = new QLabel; hits->setFixedWidth(240); hits->setWordWrap(true); hits->setText("<p style='color:grey; font-size:10px;'>"+ tr("This operation will not affect any of your data. Please use it freely.") + "</p>"); layout->addSpacing(10); layout->addWidget(hits); layout->setAlignment(hits, Qt::AlignCenter); //Disable if there is not enough disk size if (!m_DiskSizeEnough) { qDebug()<<"Disable all control"; usernameEdit->setVisible (false); password->setVisible (false); repeatRassword->setVisible (false); usernameTips->pack (); passwordTips->pack (); installLang->setVisible (false); installDev->setVisible (false); installSize->setVisible (false); if (!hasMismatchPartitionStyle) { style = ""; } else { style = " "+style; } QString errHits = tr("Please ensure that there is at least one%1 disk having more than 10GB free space.").arg (style); return NoSpaceBody(errHits); } widget->setLayout(layout); return widget; }