31
Velneo vDevelop
Scripts
Lenguajes
JavaScript
VInstances
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.

Indice de funciones

De información

model instancesModel( void )

De selección

void setInstance( Number index )
void accept( void )
void reject( void )

De marco

void setWindowTitle( String szTitle )
void setWindowIcon( String szPath )

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

Ejemlpo de QML para la lista de instancias en Velneo
1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
//
3
// Instances.qml
4
//
5
// Ejemplo de Qml para la lista de instancias en Velneo.
6
//
7
// En el ejemplo se carga la lista de instancias y se muestra al usuario para que seleccione. Si únicamente
8
// hay una instancia, se carga ésta de forma automática.
9
//
10
11
import QtQuick 2.15
12
13
Rectangle
14
{
15
width: 480
16
height: 460
17
18
Component.onCompleted:
19
{
20
// Indicamos el título y el icono de la ventana
21
theInstances.setWindowTitle("Selecciona la aplicación");
22
theInstances.setWindowIcon("icono.png");
23
}
24
25
Item
26
{
27
x: 10
28
y: 5
29
30
Image
31
{
32
width: 60
33
height: 30
34
source: "logo.png"
35
36
fillMode: Image.PreserveAspectFit
37
smooth: true
38
asynchronous: true
39
}
40
}
41
42
Item
43
{
44
width: parent.width - 20
45
height: parent.height - 100
46
anchors.horizontalCenter: parent.horizontalCenter
47
y: 40
48
49
Column
50
{
51
// Lista de instancias
52
id: instancesList
53
54
anchors.top: parent.top
55
width: parent.width
56
height: parent.height
57
spacing: 10
58
59
Text
60
{
61
text: "Lista de aplicaciones"
62
font.bold: true
63
}
64
65
Rectangle
66
{
67
id: instancesListRec
68
69
width: parent.width
70
height: parent.height - 20
71
border.color: "lightgrey"
72
border.width: 2
73
radius: 10
74
75
ListView
76
{
77
id: instanciasListView
78
anchors.fill: parent
79
80
signal clicked
81
82
clip: true
83
focus: true
84
85
Keys.onReturnPressed:
86
{
87
aceptarBoton.clicked(Qt.LeftButton);
88
}
89
90
highlight:
91
Rectangle
92
{
93
width: parent.width;
94
height: 40;
95
anchors.horizontalCenter: parent.horizontalCenter;
96
color: "#E30B0B";
97
radius: 10;
98
99
y: instanciasListView.currentItem.y
100
Behavior on y {
101
SpringAnimation {
102
spring: 3
103
damping: 0.2
104
}
105
}
106
}
107
108
highlightFollowsCurrentItem: false;
109
110
model: theInstances.instancesModel()
111
112
delegate:
113
Row
114
{
115
id: intanciaRow
116
117
width: parent.width -10;
118
height: 40;
119
anchors.horizontalCenter: parent.horizontalCenter;
120
121
Rectangle
122
{
123
id: iconoRec
124
width: 80;
125
anchors.verticalCenter: parent.verticalCenter;
126
127
Image
128
{
129
id: icono
130
source: decoration
131
smooth: true
132
anchors.verticalCenter: parent.verticalCenter;
133
anchors.horizontalCenter: parent.horizontalCenter;
134
fillMode: Image.PreserveAspectFit
135
}
136
}
137
138
Text
139
{
140
anchors {left: iconoRec.right; verticalCenter: parent.verticalCenter }
141
text: display;
142
color: intanciaRow.ListView.isCurrentItem ? "white" : "#E30B0B";
143
font.pointSize: 10;
144
font.bold: true;
145
}
146
147
MouseArea
148
{
149
id: instanciasListViewMouseArea
150
anchors.fill: parent
151
152
// En caso de hacer clic, se guarda la información correspondiente al servidor
153
onClicked:
154
{
155
instanciasListView.currentIndex = index;
156
}
157
158
// En caso de doble clic, hacemos lo mismo y además lanzamos la conexión
159
onDoubleClicked:
160
{
161
instanciasListView.currentIndex = index;
162
aceptarBoton.clicked();
163
}
164
}
165
}
166
167
Component.onCompleted:
168
{
169
instanciasListView.currentIndex = 0;
170
positionViewAtIndex( instanciasListView.currentIndex, ListView.Center);
171
}
172
173
Timer
174
{
175
interval: 500; running: true; repeat: false
176
onTriggered:
177
{
178
if ( 1 == instanciasListView.count )
179
aceptarBoton.clicked();
180
}
181
}
182
}
183
}
184
}
185
}
186
187
Column
188
{
189
id: botones
190
// Botones Aceptar y Cancelar
191
width: parent.width - 20
192
spacing: 10;
193
anchors.horizontalCenter: parent.horizontalCenter;
194
anchors.bottom: parent.bottom
195
anchors.margins: 50
196
197
Row
198
{
199
id: botonesRow
200
201
width: parent.width
202
anchors.horizontalCenter: parent.horizontalCenter
203
204
Rectangle
205
{
206
id: aceptarBoton
207
width: 90
208
height: conectarAceptarLabel.height + 8
209
anchors.left: parent.left
210
border.width: 2
211
border.color: "lightgrey"
212
radius: 10
213
214
signal clicked
215
216
Text {
217
id: conectarAceptarLabel
218
text: "Aceptar"
219
color: aceptarRegion.pressed? "grey" : "#E30B0B"
220
anchors.centerIn: aceptarBoton
221
font.bold: true
222
}
223
224
MouseArea {
225
id: aceptarRegion
226
anchors.fill: aceptarBoton
227
onClicked: aceptarBoton.clicked()
228
}
229
230
onClicked:
231
{
232
// Nos conectamos
233
theInstances.setInstance( instanciasListView.currentIndex );
234
theInstances.accept();
235
}
236
}
237
238
Rectangle {
239
id: cancelarBoton
240
width: 90
241
height: conectarAceptarLabel.height + 8
242
border.width: 2
243
border.color: "lightgrey"
244
radius: 10
245
anchors.right: parent.right
246
247
Text {
248
id: cancelLabel
249
text: "Cancelar"
250
color: cancelRegion.pressed? "grey" : "#E30B0B"
251
anchors.centerIn: cancelarBoton
252
font.bold: true
253
}
254
MouseArea {
255
id: cancelRegion
256
anchors.fill: cancelarBoton
257
onClicked: theInstances.reject()
258
}
259
}
260
}
261
}
262
}
Copied!
Última actualización 2mo ago