Working with User Objects

From HSYCO
Jump to navigation Jump to search

User objects are used to send commands to the server. There are few different user objects:

Commands can be dealt with from Java or JavaScript in the events environment.

Every user object has a name and a parameter, that are sent to the server, and a repeat mode. If this mode is enabled, the behaviour will change:

  • No repeat mode - the command is sent on the mouse up or touch up events
Working with User.1.gif
  • Repeat mode enabled - three types of commands are sent:
    • down: on mouse down or touch down events
    • repeat: if the button is still pressed, a repeat command is sent every second
    • up: on mouse up or touch up events, for a short press (less than a second, so no repeat commands have been sent yet)
    • stop: on mouse up or touch up events, for a long press (more than a second, so at least a repeat command has been sent)
Working with User.2.gif


A UserList object has a list of items, each behaving like a user object.


While programming keep in mind that due to connection errors or user inputs (e.g. changing page) communication could be interrupted, so in the case of a user object with repeat mode enabled, the final command (up or stop) could be lost


Example

In this example we're going to use three user buttons to control a dimmer:

  • on/off: no repeat, switches the dimmer on and off
  • +: repeat mode, while pressed will increase the dimmer's value
  • -: repeat mode, while pressed will decrease the dimmer's value
Final results: index.hsm:
Working with Forms.3.gifWorking with Forms.3.png File:Working with Forms.4.png

(#skin blue)
(#language en)
(#size 200x200)

(header Test Form)

(menu)
    (input!myinput x20y17; width:150px)
    (time!mytime x20y58; width:150px)
    (text!mytext x20y112;)
(endofmenu)

The javascript code in events.txt:
function userCommand(session, userid, name, value) : {
	// if we're receiving the input's value...
	if (name == "myinput") {
		uiSet("mytext","text","input: "+value);
	}
	// if we're receiving the time's value...
	else if (name == "mytime") {
		uiSet("mytext","text","time: "+value);
	}
	return ""; // any returned string causes the log of an [OK] status
}