void IndexWidget::setAttributes(DatabaseModel *model, Table *parent_obj, OperationList *op_list, Index *index) { vector<IndexElement> idx_elems; if(!parent_obj) throw Exception(ERR_ASG_NOT_ALOC_OBJECT,__PRETTY_FUNCTION__,__FILE__,__LINE__); BaseObjectWidget::setAttributes(model, op_list, index, parent_obj); if(index) { idx_elems = index->getIndexElements(); indexing_cmb->setCurrentIndex(indexing_cmb->findText(~index->getIndexingType())); fill_factor_chk->setChecked(index->getFillFactor() >= 10); if(fill_factor_chk->isChecked()) fill_factor_sb->setValue(index->getFillFactor()); else fill_factor_sb->setValue(90); concurrent_chk->setChecked(index->getIndexAttribute(Index::CONCURRENT)); fast_update_chk->setChecked(index->getIndexAttribute(Index::FAST_UPDATE)); unique_chk->setChecked(index->getIndexAttribute(Index::UNIQUE)); buffering_chk->setChecked(index->getIndexAttribute(Index::BUFFERING)); predicate_txt->setPlainText(Utf8String::create(index->getPredicate())); selectIndexingType(); } elements_wgt->setAttributes(model, parent_obj, idx_elems); }
IndexWidget::IndexWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_INDEX) { try { QStringList list; QGridLayout *grid=nullptr; map<QString, vector<QWidget *> > fields_map; QFrame *frame=nullptr; Ui_IndexWidget::setupUi(this); predicate_hl=new SyntaxHighlighter(predicate_txt, false); predicate_hl->loadConfiguration(GlobalAttributes::CONFIGURATIONS_DIR + GlobalAttributes::DIR_SEPARATOR + GlobalAttributes::SQL_HIGHLIGHT_CONF + GlobalAttributes::CONFIGURATION_EXT); elements_wgt = new ElementsWidget(this); grid=new QGridLayout; grid->setContentsMargins(4,4,4,4); grid->addWidget(elements_wgt,0,0); tabWidget->widget(1)->setLayout(grid); configureFormLayout(index_grid, OBJ_INDEX); parent_form->setMinimumSize(600, 600); IndexingType::getTypes(list); indexing_cmb->addItems(list); fields_map[BaseObjectWidget::generateVersionsInterval(BaseObjectWidget::AFTER_VERSION, SchemaParser::PGSQL_VERSION_92)].push_back(buffering_chk); frame=BaseObjectWidget::generateVersionWarningFrame(fields_map); frame->setParent(this); grid=dynamic_cast<QGridLayout *>(tabWidget->widget(0)->layout()); grid->addWidget(frame, grid->count(), 0, 1, 5); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(indexing_cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(selectIndexingType(void))); connect(fill_factor_chk, SIGNAL(toggled(bool)), fill_factor_sb, SLOT(setEnabled(bool))); configureTabOrder(); selectIndexingType(); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
void IndexWidget::setAttributes(DatabaseModel *model, Table *parent_obj, OperationList *op_list, Index *index) { unsigned i, count; if(!parent_obj) throw Exception(ERR_ASG_NOT_ALOC_OBJECT,__PRETTY_FUNCTION__,__FILE__,__LINE__); BaseObjectWidget::setAttributes(model, op_list, index, parent_obj); op_class_sel->setModel(model); updateColumnsCombo(); if(index) { indexing_cmb->setCurrentIndex(indexing_cmb->findText(~index->getIndexingType())); fill_factor_chk->setChecked(index->getFillFactor() >= 10); if(fill_factor_chk->isChecked()) fill_factor_sb->setValue(index->getFillFactor()); else fill_factor_sb->setValue(90); concurrent_chk->setChecked(index->getIndexAttribute(Index::CONCURRENT)); fast_update_chk->setChecked(index->getIndexAttribute(Index::FAST_UPDATE)); unique_chk->setChecked(index->getIndexAttribute(Index::UNIQUE)); cond_expr_txt->setPlainText(Utf8String::create(index->getConditionalExpression())); elements_tab->blockSignals(true); count=index->getElementCount(); for(i=0; i < count; i++) { elements_tab->addRow(); showElementData(index->getElement(i), i); } elements_tab->blockSignals(false); selectIndexingType(); } }