static EdiField mdbReadField(Edi *edi, cchar *tableName, cchar *key, cchar *fieldName) { Mdb *mdb; MdbTable *table; MdbCol *col; MdbRow *row; EdiField field, err; int r; mdb = (Mdb*) edi; lock(mdb); err.valid = 0; if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return err; } if ((col = lookupColumn(table, fieldName)) == 0) { unlock(mdb); return err; } if ((r = lookupRow(table, key)) < 0) { unlock(mdb); return err; } row = mprGetItem(table->rows, r); field = makeFieldFromRow(row, col); unlock(mdb); return field; }
static int mdbGetColumnSchema(Edi *edi, cchar *tableName, cchar *columnName, int *type, int *flags, int *cid) { Mdb *mdb; MdbTable *table; MdbCol *col; mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((col = lookupColumn(table, columnName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if (type) { *type = col->type; } if (flags) { *flags = col->flags; } if (cid) { *cid = col->cid; } unlock(mdb); return 0; }
static int mdbAddValidation(Edi *edi, cchar *tableName, cchar *columnName, EdiValidation *vp) { Mdb *mdb; MdbTable *table; MdbCol *col; mprAssert(edi); mprAssert(tableName && *tableName); mprAssert(columnName && *columnName); mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((col = lookupColumn(table, columnName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if (col->validations == 0) { col->validations = mprCreateList(0, 0); } mprAddItem(col->validations, vp); unlock(mdb); return 0; }
static int mdbChangeColumn(Edi *edi, cchar *tableName, cchar *columnName, int type, int flags) { Mdb *mdb; MdbTable *table; MdbCol *col; mprAssert(edi); mprAssert(tableName && *tableName); mprAssert(columnName && *columnName); mprAssert(type); mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((col = lookupColumn(table, columnName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } col->name = sclone(columnName); col->type = type; autoSave(mdb, table); unlock(mdb); return 0; }
/* IndexName is not implemented yet */ static int mdbAddIndex(Edi *edi, cchar *tableName, cchar *columnName, cchar *indexName) { Mdb *mdb; MdbTable *table; MdbCol *col; mprAssert(edi); mprAssert(tableName && *tableName); mprAssert(columnName && *columnName); mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((col = lookupColumn(table, columnName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((table->index = mprCreateHash(0, MPR_HASH_STATIC_VALUES)) == 0) { unlock(mdb); return MPR_ERR_MEMORY; } table->indexCol = col; col->flags |= EDI_INDEX; autoSave(mdb, table); unlock(mdb); return 0; }
static int mdbAddColumn(Edi *edi, cchar *tableName, cchar *columnName, int type, int flags) { Mdb *mdb; MdbTable *table; MdbCol *col; mprAssert(edi); mprAssert(tableName && *tableName); mprAssert(columnName && *columnName); mprAssert(type); mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((col = lookupColumn(table, columnName)) != 0) { unlock(mdb); return MPR_ERR_ALREADY_EXISTS; } if ((col = createCol(table, columnName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } col->type = type; col->flags = flags; autoSave(mdb, table); unlock(mdb); return 0; }
static EdiGrid *mdbReadWhere(Edi *edi, cchar *tableName, cchar *columnName, cchar *operation, cchar *value) { Mdb *mdb; EdiGrid *grid; MdbTable *table; MdbCol *col; MdbRow *row; int nrows, next, op, r, count; assert(edi); assert(tableName && *tableName); mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return 0; } nrows = mprGetListLength(table->rows); if ((grid = ediCreateBareGrid(edi, tableName, nrows)) == 0) { unlock(mdb); return 0; } grid->flags = EDI_GRID_READ_ONLY; if (columnName) { if ((col = lookupColumn(table, columnName)) == 0) { unlock(mdb); return 0; } if ((op = parseOperation(operation)) < 0) { unlock(mdb); return 0; } if (col->flags & EDI_INDEX && (op & OP_EQ)) { if ((r = lookupRow(table, value)) != 0) { row = getRow(table, r); grid->records[0] = createRecFromRow(edi, row); grid->nrecords = 1; } } else { grid->nrecords = count = 0; for (ITERATE_ITEMS(table->rows, row, next)) { if (!matchRow(col, row->fields[col->cid], op, value)) { continue; } grid->records[count++] = createRecFromRow(edi, row); grid->nrecords = count; } } } else { for (ITERATE_ITEMS(table->rows, row, next)) {
void QxtFilterDialog::done ( int r ) { if(r==QDialog::Accepted){ qxt_d().selectedIndex = QModelIndex(); QModelIndex proxyIndex = qxt_d().listingTreeView->currentIndex(); proxyIndex = qxt_d().proxyModel->index(proxyIndex.row(),lookupColumn()); if(proxyIndex.isValid()) { qxt_d().selectedIndex = qxt_d().proxyModel->mapToSource(proxyIndex); } } else qxt_d().selectedIndex = QModelIndex(); return QDialog::done(r); }
static int mdbLookupField(Edi *edi, cchar *tableName, cchar *fieldName) { Mdb *mdb; MdbTable *table; MdbCol *col; mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((col = lookupColumn(table, fieldName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } unlock(mdb); return col->cid; }
static int mdbAddColumn(Edi *edi, cchar *tableName, cchar *columnName, int type, int flags) { Mdb *mdb; MdbTable *table; MdbCol *col; assert(edi); assert(tableName && *tableName); assert(columnName && *columnName); assert(type); mdb = (Mdb*) edi; lock(mdb); if ((table = lookupTable(mdb, tableName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } if ((col = lookupColumn(table, columnName)) != 0) { unlock(mdb); return MPR_ERR_ALREADY_EXISTS; } if ((col = createCol(table, columnName)) == 0) { unlock(mdb); return MPR_ERR_CANT_FIND; } col->type = type; col->flags = flags; if (flags & EDI_INDEX) { if (table->index) { mprError("Index already specified in table %s, replacing.", tableName); } if ((table->index = mprCreateHash(0, MPR_HASH_STATIC_VALUES)) != 0) { table->indexCol = col; } } autoSave(mdb, table); unlock(mdb); return 0; }