1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
3
* Linux Desktop Testing Project http://ldtp.freedesktop.org
6
* S. Aishwariya <aishwariyabhavan@yahoo.com >
7
* K. Sree Kamakshi <poorvakrishna@yahoo.com >
8
* Nagappan Alagappan <nagappan@gmail.com>
10
* Copyright 2004 - 2006 Novell, Inc.
11
* Copyright 2007 - 2008 Nagappan Alagappan
13
* This program is free software; you can redistribute it and/or
14
* modify it under the terms of the GNU Lesser General Public
15
* License as published by the Free Software Foundation; either
16
* version 2 of the License, or (at your option) any later version.
18
* This program is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
* Lesser General Public License for more details.
23
* You should have received a copy of the GNU Lesser General Public
24
* License along with this program; if not, write to the
25
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
26
* Boston, MA 02110, USA.
31
#include "ldtp-utils.h"
32
#include "ldtp-error.h"
33
#include "ldtp-logger.h"
34
#include "ldtp-command.h"
35
#include "ldtp-gui-comp.h"
38
is_object_slider (Accessible *object, FILE *log_fp)
40
if (wait_till_object_state_contains (object, SLIDER, log_fp) != 0) {
42
error = LDTP_ERROR_INVALID_OBJECT_STATE;
43
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
50
is_slider_horizontal (Accessible *object)
52
AccessibleStateSet *state;
53
state = Accessible_getStateSet (object);
55
Check if the slider is horizontal or vertical
57
if (AccessibleStateSet_contains (state, SPI_STATE_HORIZONTAL))
58
return TRUE; //Horizontal State
60
return FALSE; //Vertical State
64
is_slider_vertical (Accessible *object)
66
AccessibleStateSet *state;
67
state = Accessible_getStateSet (object);
69
Check if the slider is horizontal or vertical
71
if (AccessibleStateSet_contains (state, SPI_STATE_VERTICAL))
72
return TRUE; //Vertical State
74
return FALSE; //Not vertical State
78
set_value (Accessible *object, long numvalue, FILE *log_fp)
81
SPIBoolean flag = FALSE;
82
AccessibleValue *accessible_value;
84
g_print ("Slider value to be set: %ld\n", numvalue);
85
accessible_value = Accessible_getValue (object);
86
if (accessible_value) {
87
flag = AccessibleValue_setCurrentValue (accessible_value, numvalue);
88
Accessible_unref (accessible_value);
91
return LDTP_ERROR_SUCCESS;
93
error = LDTP_ERROR_UNABLE_TO_SET_SLIDER_VALUE;
94
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
100
set_max (Accessible *object, FILE *log_fp)
103
SPIBoolean flag = FALSE;
105
AccessibleValue *value = NULL;
107
if (is_object_slider (object, log_fp) == TRUE) {
108
value = Accessible_getValue (object);
110
error = LDTP_ERROR_SLIDER_SET_MAX_FAILED;
111
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
116
The slider is set to maximum value
119
val = AccessibleValue_getMaximumValue (value);
120
flag = AccessibleValue_setCurrentValue (value, val);
121
Accessible_unref (value);
124
return LDTP_ERROR_SUCCESS;
126
error = LDTP_ERROR_SLIDER_SET_MAX_FAILED;
127
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
133
set_min (Accessible *object, FILE *log_fp)
136
AccessibleValue *value = NULL;
140
if (is_object_slider (object, log_fp) == FALSE) {
141
error = LDTP_ERROR_SLIDER_SET_MIN_FAILED;
142
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
145
value = Accessible_getValue(object);
146
val = AccessibleValue_getMinimumValue (value);
149
The slider is set to minimum value
151
flag = AccessibleValue_setCurrentValue (value, val);
152
Accessible_unref (value);
154
return LDTP_ERROR_SUCCESS;
156
error = LDTP_ERROR_SLIDER_SET_MIN_FAILED;
157
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
163
get_slider_value (Accessible *object, FILE *log_fp)
165
double current_val = -1;
166
if (is_object_slider (object, log_fp)) {
167
AccessibleValue *value = NULL;
168
value = Accessible_getValue (object);
170
current_val = AccessibleValue_getCurrentValue (value);
171
Accessible_unref (value);
178
get_min_value (Accessible *object)
181
AccessibleValue *accessible;
184
accessible = Accessible_getValue (object);
186
value = AccessibleValue_getMinimumValue (accessible);
187
Accessible_unref (accessible);
193
get_min_increment (Accessible *object)
196
AccessibleValue *accessible;
199
accessible = Accessible_getValue (object);
201
value = AccessibleValue_getMinimumIncrement (accessible);
202
Accessible_unref (accessible);
208
get_max_value (Accessible *object)
211
AccessibleValue *accessible;
214
accessible = Accessible_getValue (object);
216
value = AccessibleValue_getMaximumValue (accessible);
217
Accessible_unref (accessible);
223
decrease (Accessible *object, long num, FILE *log_fp)
227
AccessibleValue *value = NULL;
228
SPIBoolean flag = FALSE;
229
if (is_object_slider (object, log_fp)) {
230
value = Accessible_getValue (object);
232
return LDTP_ERROR_UNABLE_TO_DECREASE_SLIDER_VALUE;
234
val = AccessibleValue_getCurrentValue (value) - 1;
236
Decrease the value of the slider
239
flag = AccessibleValue_setCurrentValue (value, val);
240
ldtp_nsleep (0, 15000);
244
Accessible_unref (value);
246
return LDTP_ERROR_SUCCESS;
249
error = LDTP_ERROR_UNABLE_TO_DECREASE_SLIDER_VALUE;
250
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
256
increase (Accessible *object, long num, FILE *log_fp)
260
AccessibleValue *value = NULL;
261
SPIBoolean flag = FALSE;
262
if (is_object_slider (object, log_fp)) {
263
value = Accessible_getValue (object);
265
return LDTP_ERROR_UNABLE_TO_DECREASE_SLIDER_VALUE;
267
val = AccessibleValue_getCurrentValue (value) + 1;
269
Increase the value of the slider
272
flag = AccessibleValue_setCurrentValue (value, val);
273
ldtp_nsleep (0, 15000);
277
Accessible_unref (value);
279
return LDTP_ERROR_SUCCESS;
282
error = LDTP_ERROR_UNABLE_TO_INCREASE_SLIDER_VALUE;
283
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), log_fp);
289
slider_main (LDTPClientContext* cctxt, int command)
294
case LDTP_CMD_SETMAX:
295
error = set_max (cctxt->gui_handle->handle, cctxt->log_fp);
297
case LDTP_CMD_SETMIN:
298
error = set_min (cctxt->gui_handle->handle, cctxt->log_fp);
300
case LDTP_CMD_SETVALUE:
301
if (cctxt->req->arg_list && cctxt->req->arg_list->data)
302
value = strtod (cctxt->req->arg_list->data, NULL);
303
error = set_value (cctxt->gui_handle->handle, value,
306
case LDTP_CMD_GETSLIDERVALUE: {
307
double current_val = -1;
308
current_val = get_slider_value (cctxt->gui_handle->handle, cctxt->log_fp);
309
if (current_val != -1) {
310
cctxt->resp->data = g_strdup_printf ("%lf", current_val);
311
cctxt->resp->data_len = g_utf8_strlen (cctxt->resp->data, -1);
312
error = LDTP_ERROR_SUCCESS;
315
error = LDTP_ERROR_UNABLE_TO_GET_SLIDER_VALUE;
316
log_msg (LDTP_LOG_CAUSE, ldtp_error_get_message (error), cctxt->log_fp);
320
case LDTP_CMD_INCREASE: {
322
if (cctxt->req->arg_list && cctxt->req->arg_list->data)
323
num = atol (cctxt->req->arg_list->data);
324
error = increase (cctxt->gui_handle->handle, num, cctxt->log_fp);
327
case LDTP_CMD_DECREASE: {
329
if (cctxt->req->arg_list && cctxt->req->arg_list->data)
330
num = atol (cctxt->req->arg_list->data);
331
error = decrease(cctxt->gui_handle->handle, num, cctxt->log_fp);
334
case LDTP_CMD_GETMINVALUE:
335
value = get_min_value (cctxt->gui_handle->handle);
336
cctxt->resp->data = g_strdup_printf ("%lf", value);
337
if (cctxt->resp->data)
338
cctxt->resp->data_len = g_utf8_strlen (cctxt->resp->data, -1);
340
error = LDTP_ERROR_SUCCESS;
342
error = LDTP_ERROR_UNABLE_TO_GET_VALUE;
344
#ifdef ENABLE_NEWROLES
345
// NOT supported by SLE10
346
case LDTP_CMD_GETMININCREMENT:
347
value = get_min_increment (cctxt->gui_handle->handle);
348
cctxt->resp->data = g_strdup_printf ("%lf", value);
349
if (cctxt->resp->data)
350
cctxt->resp->data_len = g_utf8_strlen (cctxt->resp->data, -1);
352
error = LDTP_ERROR_SUCCESS;
354
error = LDTP_ERROR_UNABLE_TO_GET_VALUE;
357
case LDTP_CMD_GETMAXVALUE:
358
value = get_max_value (cctxt->gui_handle->handle);
359
cctxt->resp->data = g_strdup_printf ("%lf", value);
360
if (cctxt->resp->data)
361
cctxt->resp->data_len = g_utf8_strlen (cctxt->resp->data, -1);
363
error = LDTP_ERROR_SUCCESS;
365
error = LDTP_ERROR_UNABLE_TO_GET_VALUE;
367
case LDTP_CMD_GETOBJECTSIZE:
368
cctxt->resp->data_len = 0;
369
cctxt->resp->data = get_size (cctxt->gui_handle->handle, &error);
370
if (cctxt->resp->data) {
371
cctxt->resp->data_len = g_utf8_strlen (cctxt->resp->data, -1);
374
case LDTP_CMD_VERIFYSLIDER:
375
if (is_object_slider (cctxt->gui_handle->handle, cctxt->log_fp))
376
error = LDTP_ERROR_SUCCESS;
378
error = LDTP_ERROR_INVALID_OBJECT_STATE;
380
case LDTP_CMD_VERIFYSLIDERVERTICAL:
381
if (is_slider_vertical (cctxt->gui_handle->handle))
382
error = LDTP_ERROR_SUCCESS;
384
error = LDTP_ERROR_NOT_VERTICAL_SLIDER;
386
case LDTP_CMD_VERIFYSLIDERHORIZONTAL:
387
if (is_slider_horizontal (cctxt->gui_handle->handle))
388
error = LDTP_ERROR_SUCCESS;
390
error = LDTP_ERROR_NOT_HORIZONTAL_SLIDER;
393
error = LDTP_ERROR_COMMAND_NOT_IMPLEMENTED;