{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
{sub-section:description|text=}{sub-section}\\ 

{table:id=|class=servoy sReturnTypes}{tr:style=height: 30px;}{th}Return Types{th}{tr}{tr}{td}{span:class=sWordList}[JSInsetList]{span}{span:class=sWordList}[JSList]{span}{span:class=sWordList}[SolutionHelper]{span}{td}{tr}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Property Summary{th}{tr}{tbody}{tr}{td}[SolutionHelper]{td}{td}[#solutionHelper]
Mobile helper is used as a complementary tool to solution model.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}void{td}{td}[#call]\(telNumber)
Initiate a phone call{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#email]\(emailAddress)
Initiate an email sending{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#getCurrentPosition]\(successCallback, errorHandler, options)
Wrapper function around HTML5 getCurrentPosition.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getUsedStorageSpace]\()
Retrieves amount of used bytes from browser local storage.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#isOnline]\()
Returns whether mobile device is online.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#syncData]\()
Synchronizes data between Mobile Client and Servoy Application Server.{td}{tr}{tbody}{table}\\ 

{table:id=property|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=solutionHelper|class=node}{tr:id=name}{td}h6.solutionHelper{td}{tr}{tr:id=des}{td}{sub-section:solutionHelper_des|trigger=button|text=}{sub-section}{sub-section:solutionHelper_des|trigger=none|class=sIndent}Mobile helper is used as a complementary tool to solution model.
Components/solution structure in mobile client needs special tags which are not supported by solution model API,
but this mobile helper can be used to apply them. For example a button can be the right header button or the left header button and so on.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:solutionHelper_snc|trigger=button|text=}{sub-section}{sub-section:solutionHelper_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:solutionHelper_prs|trigger=button|text=}{sub-section}{sub-section:solutionHelper_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:solutionHelper_ret|trigger=button|text=}{sub-section}{sub-section:solutionHelper_ret|trigger=none|class=sIndent}[SolutionHelper]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:solutionHelper_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:solutionHelper_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:solutionHelper_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:solutionHelper_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:solutionHelper_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:solutionHelper_sam|trigger=none}{code:language=javascript}
var f = solutionModel.newForm("created_by_sm_1","udm","contacts",null,false,100,380);

var backMethod;
var b = f.newButton("back",0,0,10,10,backMethod = f.newMethod("function goBack() { history.back(); }"));
plugins.mobile.solutionHelper.markLeftHeaderButton(b);
plugins.mobile.solutionHelper.setIconType(b,plugins.mobile.SolutionHelper.ICON_BACK);

b = f.newButton("doSomething",0,0,10,10,f.newMethod("function goForward() { globals.doSomething(); }"));
plugins.mobile.solutionHelper.markRightHeaderButton(b);
plugins.mobile.solutionHelper.setIconType(b,plugins.mobile.SolutionHelper.ICON_FORWARD);

var lbl = f.newLabel("Generated form",0,0,10,10);
plugins.mobile.solutionHelper.markHeaderText(lbl);

b = f.newButton("ok",0,0,10,10,backMethod);
plugins.mobile.solutionHelper.setIconType(b,plugins.mobile.SolutionHelper.ICON_CHECK);
plugins.mobile.solutionHelper.markFooterItem(b);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=call|class=node}{tr:id=name}{td}h6.call{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}call{span}{span:id=iets|style=float: left;}\(telNumber){span}{td}{tr}{tr:id=des}{td}{sub-section:call_des|trigger=button|text=}{sub-section}{sub-section:call_des|trigger=none|class=sIndent}Initiate a phone call{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:call_snc|trigger=button|text=}{sub-section}{sub-section:call_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:call_prs|trigger=button|text=}{sub-section}{sub-section:call_prs|trigger=none|class=sIndent}\{[String]} telNumber -- telephone number to call
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:call_ret|trigger=button|text=}{sub-section}{sub-section:call_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:call_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:call_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:call_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:call_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:call_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:call_sam|trigger=none}{code:language=javascript}
plugins.mobile.call("+490111111")
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=email|class=node}{tr:id=name}{td}h6.email{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}email{span}{span:id=iets|style=float: left;}\(emailAddress){span}{td}{tr}{tr:id=des}{td}{sub-section:email_des|trigger=button|text=}{sub-section}{sub-section:email_des|trigger=none|class=sIndent}Initiate an email sending{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:email_snc|trigger=button|text=}{sub-section}{sub-section:email_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:email_prs|trigger=button|text=}{sub-section}{sub-section:email_prs|trigger=none|class=sIndent}\{[String]} emailAddress -- destination email address
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:email_ret|trigger=button|text=}{sub-section}{sub-section:email_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:email_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:email_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:email_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:email_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:email_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:email_sam|trigger=none}{code:language=javascript}
plugins.mobile.email("[email protected]")
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getCurrentPosition|class=node}{tr:id=name}{td}h6.getCurrentPosition{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}getCurrentPosition{span}{span:id=iets|style=float: left;}\(successCallback, errorHandler, options){span}{td}{tr}{tr:id=des}{td}{sub-section:getCurrentPosition_des|trigger=button|text=}{sub-section}{sub-section:getCurrentPosition_des|trigger=none|class=sIndent}Wrapper function around HTML5 getCurrentPosition. Method will call successCallback method with a Position object parameter if GPS position was retrieved. Otherwise will call errorHandler with an error parameter. This method has dummy implementation in developer. 
NOTE: For options you can specify (a) Accuracy of the returned location information (b) Timeout for retrieving the location information and (c) Use of cached location information{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getCurrentPosition_snc|trigger=button|text=}{sub-section}{sub-section:getCurrentPosition_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getCurrentPosition_prs|trigger=button|text=}{sub-section}{sub-section:getCurrentPosition_prs|trigger=none|class=sIndent}\{[Function]} successCallback -- Method to be called if the coordinates are retrieved.
\{[Function]} errorHandler -- Method to be called if an error occurs while retrieving GPS coordinates. Can be null.
\{[Object]} options -- JSON string with different options that are supported by HTML5 function (accuracy, timeout, caching).
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getCurrentPosition_ret|trigger=button|text=}{sub-section}{sub-section:getCurrentPosition_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getCurrentPosition_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getCurrentPosition_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getCurrentPosition_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getCurrentPosition_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getCurrentPosition_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getCurrentPosition_sam|trigger=none}{code:language=javascript}
plugins.mobile.getCurrentPosition(forms.myform.showLocation,scopes.globals.errorHandler,{timeout:5000});
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUsedStorageSpace|class=node}{tr:id=name}{td}h6.getUsedStorageSpace{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getUsedStorageSpace{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getUsedStorageSpace_des|trigger=button|text=}{sub-section}{sub-section:getUsedStorageSpace_des|trigger=none|class=sIndent}Retrieves amount of used bytes from browser local storage. The storage amount depends on used browser, but, from specification, the browser should allow at least 5MB of local storage. Note: Some browsers take two bytes per character.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getUsedStorageSpace_snc|trigger=button|text=}{sub-section}{sub-section:getUsedStorageSpace_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getUsedStorageSpace_prs|trigger=button|text=}{sub-section}{sub-section:getUsedStorageSpace_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getUsedStorageSpace_ret|trigger=button|text=}{sub-section}{sub-section:getUsedStorageSpace_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getUsedStorageSpace_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getUsedStorageSpace_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getUsedStorageSpace_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getUsedStorageSpace_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getUsedStorageSpace_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getUsedStorageSpace_sam|trigger=none}{code:language=javascript}
var usedSpace = plugins.mobile.getUsedStorageSpace()
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=isOnline|class=node}{tr:id=name}{td}h6.isOnline{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}isOnline{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:isOnline_des|trigger=button|text=}{sub-section}{sub-section:isOnline_des|trigger=none|class=sIndent}Returns whether mobile device is online. Returns true in developer implementation.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:isOnline_snc|trigger=button|text=}{sub-section}{sub-section:isOnline_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:isOnline_prs|trigger=button|text=}{sub-section}{sub-section:isOnline_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:isOnline_ret|trigger=button|text=}{sub-section}{sub-section:isOnline_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:isOnline_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:isOnline_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:isOnline_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:isOnline_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:isOnline_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:isOnline_sam|trigger=none}{code:language=javascript}
plugins.mobile.isOnline()
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=syncData|class=node}{tr:id=name}{td}h6.syncData{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}syncData{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:syncData_des|trigger=button|text=}{sub-section}{sub-section:syncData_des|trigger=none|class=sIndent}Synchronizes data between Mobile Client and Servoy Application Server.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:syncData_snc|trigger=button|text=}{sub-section}{sub-section:syncData_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:syncData_prs|trigger=button|text=}{sub-section}{sub-section:syncData_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:syncData_ret|trigger=button|text=}{sub-section}{sub-section:syncData_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:syncData_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:syncData_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:syncData_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:syncData_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:syncData_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:syncData_sam|trigger=none}{code:language=javascript}
plugins.mobile.syncData()
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}