Esta clase representa la selección de instancias de Velneo vClient y dispone de las funciones necesarias para realizar la selección y ejecución de la aplicación seleccionada.
El objeto theInstances
El script QML está conectado al objeto theInstances que representa la ventana de selección de instancia en curso.
Funciones
Funciones de información
Retorno
Función
model
Funciones de selección
Retorno
Función
void
void
void
Funciones de marco
Retorno
Función
void
void
Documentación de funciones
Funciones de información
model instancesModel( void )
Devuelve un modelo con la lista de instancias a las que tiene acceso el usuario en el servidor.
Por cada item del modelo dispondremos de las propiedades display y decoration. La propiedad display nos devolverá el nombre de la instancia y la propiedad decoration contendrá el icono que tiene asociado la instancia. Podremos usar ambos para presentar la información necesaria al usuario para que seleccione la instancia.
Funciones de selección
void setInstance( number index )
Establece la instancia que será ejecutada. Usaremos como parámetro el index o posición en la lista devuelta en el modelo (comienza a contar desde 0).
void accept( void )
Ejecuta la instancia seleccionada.
void reject( void )
Cancela la selección de instancia.
Funciones de marco
void setWindowTitle( String szTitle )
Establece el título que aparece en el marco. Para que se muestre el marco, hemos de establecer el título o una imagen como icono.
void setWindowIcon( String szPath )
Establece el título que aparece en el marco. Para que se muestre el marco, hemos de establecer el título o una imagen como icono.
Establece la senda en disco de la imagen que aparecerá como icono en el marco. Para que se muestre el marco, hemos de establecer el título o una imagen como icono.
Ejemplo
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Instances.qml
//
// Ejemplo de Qml para la lista de instancias en Velneo.
//
// En el ejemplo se carga la lista de instancias y se muestra al usuario para que seleccione. Si únicamente
// hay una instancia, se carga ésta de forma automática.
//
import QtQuick 2.6
Rectangle
{
width: 480
height: 460
Component.onCompleted:
{
// Indicamos el título y el icono de la ventana
theInstances.setWindowTitle("Selecciona la aplicación");
theInstances.setWindowIcon("icono.png");
}
Item
{
x: 10
y: 5
Image
{
width: 60
height: 30
source: "logo.png"
fillMode: Image.PreserveAspectFit
smooth: true
asynchronous: true
}
}
Item
{
width: parent.width - 20
height: parent.height - 100
anchors.horizontalCenter: parent.horizontalCenter
y: 40
Column
{
// Lista de instancias
id: instancesList
anchors.top: parent.top
width: parent.width
height: parent.height
spacing: 10
Text
{
text: "Lista de aplicaciones"
font.bold: true
}
Rectangle
{
id: instancesListRec
width: parent.width
height: parent.height - 20
border.color: "lightgrey"
border.width: 2
radius: 10
ListView
{
id: instanciasListView
anchors.fill: parent
signal clicked
clip: true
focus: true
Keys.onReturnPressed:
{
aceptarBoton.clicked(Qt.LeftButton);
}
highlight:
Rectangle
{
width: parent.width;
height: 40;
anchors.horizontalCenter: parent.horizontalCenter;
color: "#E30B0B";
radius: 10;
y: instanciasListView.currentItem.y
Behavior on y {
SpringAnimation {
spring: 3
damping: 0.2
}
}
}
highlightFollowsCurrentItem: false;
model: theInstances.instancesModel()
delegate:
Row
{
id: intanciaRow
width: parent.width -10;
height: 40;
anchors.horizontalCenter: parent.horizontalCenter;
Rectangle
{
id: iconoRec
width: 80;
anchors.verticalCenter: parent.verticalCenter;
Image
{
id: icono
source: decoration
smooth: true
anchors.verticalCenter: parent.verticalCenter;
anchors.horizontalCenter: parent.horizontalCenter;
fillMode: Image.PreserveAspectFit
}
}
Text
{
anchors {left: iconoRec.right; verticalCenter: parent.verticalCenter }
text: display;
color: intanciaRow.ListView.isCurrentItem ? "white" : "#E30B0B";
font.pointSize: 10;
font.bold: true;
}
MouseArea
{
id: instanciasListViewMouseArea
anchors.fill: parent
// En caso de hacer clic, se guarda la información correspondiente al servidor
onClicked:
{
instanciasListView.currentIndex = index;
}
// En caso de doble clic, hacemos lo mismo y además lanzamos la conexión
onDoubleClicked:
{
instanciasListView.currentIndex = index;
aceptarBoton.clicked();
}
}
}
Component.onCompleted:
{
instanciasListView.currentIndex = 0;
positionViewAtIndex( instanciasListView.currentIndex, ListView.Center);
}
Timer
{
interval: 500; running: true; repeat: false
onTriggered:
{
if ( 1 == instanciasListView.count )
aceptarBoton.clicked();
}
}
}
}
}
}
Column
{
id: botones
// Botones Aceptar y Cancelar
width: parent.width - 20
spacing: 10;
anchors.horizontalCenter: parent.horizontalCenter;
anchors.bottom: parent.bottom
anchors.margins: 50
Row
{
id: botonesRow
width: parent.width
anchors.horizontalCenter: parent.horizontalCenter
Rectangle
{
id: aceptarBoton
width: 90
height: conectarAceptarLabel.height + 8
anchors.left: parent.left
border.width: 2
border.color: "lightgrey"
radius: 10
signal clicked
Text {
id: conectarAceptarLabel
text: "Aceptar"
color: aceptarRegion.pressed? "grey" : "#E30B0B"
anchors.centerIn: aceptarBoton
font.bold: true
}
MouseArea {
id: aceptarRegion
anchors.fill: aceptarBoton
onClicked: aceptarBoton.clicked()
}
onClicked:
{
// Nos conectamos
theInstances.setInstance( instanciasListView.currentIndex );
theInstances.accept();
}
}
Rectangle {
id: cancelarBoton
width: 90
height: conectarAceptarLabel.height + 8
border.width: 2
border.color: "lightgrey"
radius: 10
anchors.right: parent.right
Text {
id: cancelLabel
text: "Cancelar"
color: cancelRegion.pressed? "grey" : "#E30B0B"
anchors.centerIn: cancelarBoton
font.bold: true
}
MouseArea {
id: cancelRegion
anchors.fill: cancelarBoton
onClicked: theInstances.reject()
}
}
}
}
}