Supponiamo di avere uno schema di database così semplice:
CREATE TABLE tbl(key INTEGER PRIMARY KEY, cap TEXT NOT NULL);
Voglio mostrare almeno tre finestre GUI indipendenti.
Una finestra ( window A
) con una lista di elementi,
se scelgo un articolo dovrebbe essere possibile aprire window B
,
che consente di eliminare o aggiornare l'elemento. Inoltre dovrebbe essere possibile
per aprire window B
per creare un nuovo elemento.
Suppongo un compito normale per molte applicazioni.
Ma voglio fare window B
per non essere una finestra di dialogo modale,
inoltre consenti di creare diverse finestre di dialogo di tipo window B
.
Come dovrei rendere il contenuto coerente di queste finestre?
Ad esempio, se creo:
struct Record {
int64_t id;
std::string text;
};
e class Db
che incapsulano semplici update
, select
, insert
e delete
SQL
affermazioni non sarebbero sufficienti.
Per esempio posso aprire window B
con l'ultimo elemento in tbl
, il valore massimo di key
colonna, che lo riapre in altri window B
,
ed eliminalo, dopodiché crea un nuovo oggetto, e questo elemento otterrà lo stesso valore key
di quello cancellato. Quindi ho due window B
con lo stesso key
, ma diverso cap
.
Devo creare in Db
cache di classe con std::shared_ptr<Record>
?
E aggiungi la possibilità di iscriverti su std::shared_ptr<Record>
cambiamenti?
Oppure potrebbe esserci un altro modo standard per gestire una situazione come questa?