// --------------------------------------------------------------------------------
// TreeWidget de películas y sus repartos
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
// Preparamos y configuramos el control treewidget
// --------------------------------------------------------------------------------
var tree = theRoot.dataView().control("CONTROL" );
tree.setHeaderLabel(0, "Título");
tree.setHeaderLabel(1, "Año / Trabajo");
tree.setIconSize(64, 80);
// --------------------------------------------------------------------------------
// Creamos el top level del árbol con un icono basado en un objeto dibujo
// --------------------------------------------------------------------------------
var icoPelis = new VImage();
icoPelis.loadResource("CINE/CINE_32");
var itemCarpetaPeliculas = tree.addTopLevelItem();
itemCarpetaPeliculas.setText(0, "Películas");
itemCarpetaPeliculas.setIcon(0, icoPelis);
// --------------------------------------------------------------------------------
// Preparamos el patrón de películas
// --------------------------------------------------------------------------------
var patternPeli = tree.createItemRegPattern();
patternPeli.addChildPattern(patternReparto);
patternPeli.setTable("CINE_DAT/PELICULAS");
patternPeli.setIdFieldIcon(0, "CARTEL");
patternPeli.setIdFieldText(0, "NAME");
patternPeli.setTextAlignment(0, VTreeWidgetItem.AlignLeft | VTreeWidgetItem.AlignVCenter);
patternPeli.setIdFieldText(1, "AGNO");
patternPeli.setTextAlignment(1, VTreeWidgetItem.AlignLeft | VTreeWidgetItem.AlignVCenter);
patternPeli.setNewRecordForm("CINE/PELICULA");
patternPeli.setEditForm("CINE/PELICULA");
patternPeli.setDeleteForm("CINE/ELIMINAR_PELICULA");
// --------------------------------------------------------------------------------
// Preparamos el patrón de repartos
// --------------------------------------------------------------------------------
var patternReparto = tree.createItemRegPattern();
patternReparto.setTable("CINE_DAT/REPARTOS");
patternReparto.setIdFieldIcon(0, "PERSONAS.FOTO");
patternReparto.setIdFieldText(0, "PERSONAS.NAME");
patternReparto.setIdFieldText(1, "TRABAJOS.NAME");
patternReparto.setNewRecordForm("CINE/REPARTO_PRUEBAS");
patternReparto.setEditForm("CINE/REPARTO_PRUEBAS");
patternReparto.setDeleteForm("CINE/REPARTO_CARTEL_P");
// --------------------------------------------------------------------------------
// Leemos la lista de películas a cargar en el treewidget
// --------------------------------------------------------------------------------
var pelis = new VRegisterList(theRoot);
pelis.setTable("CINE_DAT/PELICULAS");
// --------------------------------------------------------------------------------
// Cargamos la lista de películas al treewidget aplicando el patrón
// --------------------------------------------------------------------------------
itemCarpetaPeliculas.addChildRegisterList(pelis ,patternPeli);
// --------------------------------------------------------------------------------
// Recorremos las películas del treewidget para incluir los repartos
// --------------------------------------------------------------------------------
for(var x = 0 ; x < itemCarpetaPeliculas.childCount(); ++x)
// Se lee la película del nodo en curso
var itemPeli = itemCarpetaPeliculas.child(x);
var curPeli = pelis.readAt(x);
// Se leen los repartos de la película
var reparto = curPeli.loadPlurals("REPARTOS_PELICULAS");
// Se calcula el total años de la película (como ejemplo de cálculo de totales)
agnos += curPeli.fieldToInt("AGNO");
// --------------------------------------------------------------------------------
// Se añaden los repartos como nodos hijos de la película aplicando el patrón
// --------------------------------------------------------------------------------
itemPeli.addChildRegisterList(reparto, patternReparto);
// --------------------------------------------------------------------------------
// Se añade un nodo hijo con el subtotal de personas de reparto de la película
// --------------------------------------------------------------------------------
var itemSubtotal = itemPeli.addChild();
itemSubtotal.setFlags(VTreeWidgetItem.NoItemFlags);
itemSubtotal.setBackgroundColor(0, 192, 192, 192);
itemSubtotal.setForegroundColor(0, 0, 0, 128);
itemSubtotal.setText(0, "Nº de personas: " + reparto.size());
itemSubtotal.setBackgroundColor(1, 192, 192, 192);
itemSubtotal.setForegroundColor(1, 0, 0, 128);
// --------------------------------------------------------------------------------
// Se añade un nodo con los totales generales (películas y años)
// --------------------------------------------------------------------------------
var itemTotalPeliculas = itemCarpetaPeliculas.addChild();
itemTotalPeliculas.setFlags(VTreeWidgetItem.NoItemFlags);
itemTotalPeliculas.setBackgroundColor(0, 192, 192, 192);
itemTotalPeliculas.setForegroundColor(0, 255, 0, 0);
itemTotalPeliculas.setText(0, "Nº de películas: " + pelis.size());
itemTotalPeliculas.setBackgroundColor(1, 192, 192, 192);
itemTotalPeliculas.setForegroundColor(1, 255, 0, 0);
itemTotalPeliculas.setText(1, "" + agnos);
itemTotalPeliculas.setTextAlignment(1, VTreeWidgetItem.AlignRight | VTreeWidgetItem.AlignVCenter);
// --------------------------------------------------------------------------------
// Se expande el ítem de totales generales creado y se ajuste el ancho de las columnas del treewidget
// --------------------------------------------------------------------------------
tree.expandItem(itemCarpetaPeliculas);
tree.resizeColumnToContents(0);
// --------------------------------------------------------------------------------
// Como ejemplo, se añaden los géneros de las películas como nodos principales al treewidget
// --------------------------------------------------------------------------------
var patternGenero = tree.createItemRegPattern();
patternGenero.setTable("CINE_DAT/GENEROS");
patternGenero.setIdFieldText(0, "NAME");
var generos = new VRegisterList(theRoot);
generos.setTable("CINE_DAT/GENEROS");
tree.addTopLevelItemRegisterList(generos, patternGenero);