== Introduction ==
The Dynamic Configurable start screen feature allows the {{UBIK Service engineer }} user to tailor the buttons on the start screen according to the needs of the customer.
== Setup ==
* The first step is to configure the start screen data using an xml in order for UBIK® {{UBIK}} to recognize the different tabs and buttons. The xml file , which must have the name '''css_config.xml''', should be placed in a subfolder under the "UBIK" [[UI_Configuration_(Mobile_Client)|UI Configurations folder on the device's SD card]].
* After the folder is configured, the next step is to validate the XML configuration file against the [http://wiki.augmensys.com/index.php/File:Start_Screen_Configuration_Schema.zip schema] using an online validator. A solution can be found at [http://www.utilities-online.info/xsdvalidation/ Online XML Schema Validator]. The schema used to validate against will be found inside the UBIK Folder and is named ConfigurableStartScreenSchema.The following xml shows an example configuration (also can be downloaded as [http://wiki{{FileLink|Start_Screen_Configuration.augmensys.com/index.php/File:zip|Start_Screen_Configuration.zip }} an xml file]):
<source lang="xml">
<StartScreenConfiguration>
<Tab caption="Content">
<ContentBrowserButton caption="Content Browser"/>
<ContentBrowserButton caption="Events" UBIK-UID="31aaa5c9-85dd-4243-9cf8-89d712d32405" iconPath="/sdcard/Augmensys/events.png"/>
</Tab>
<Tab caption="AR1">
<MapsButton/>
<POIViewButton caption="AR View"/>
<CustomIntentButton caption="Map of Linz" iconPath="/sdcard/Augmensys/linz.png">
<TargetURI>
https://www.google.com/maps/place/Linz/@48.295065,14.327405,12z/data=!3m1!4b1!4m2!3m1!1s0x47739595fa99854d:0x7c53292c577975c4
</TargetURI>
</CustomIntentButton>
<CustomIntentButton caption="Skype">
<TargetClass>
com.skype.raider.Main
</TargetClass>
</CustomIntentButton>
<CustomIntentButton caption="Maps">
<TargetClass>
com.augmensys.ubik.demo.lib.ui.activities.ar.map.UBIKMapActivityDemo
</TargetClass>
</CustomIntentButton>
<TargetMapsButton caption="Flow Controller 213" UBIK-UID="2ccd91c0-9cee-42f3-9d1d-be745908457d"/>
</Tab>
<Tab caption="AR2">
<IDMarkerScanButton caption="ID Marker Scan"/>
<ARNavigationButton caption="Flow Controller 213" UBIK-UID="2ccd91c0-9cee-42f3-9d1d-be745908457d"/>
<NavigationMapsButton caption="Flow Controller 213" UBIK-UID="2ccd91c0-9cee-42f3-9d1d-be745908457d"/>
<DemoMapsButton caption="Flow Controller 213" UBIK-UID="2ccd91c0-9cee-42f3-9d1d-be745908457d"/>
<RFIDScanButton caption="RFID Scan" />
</Tab>
</StartScreenConfiguration>
</source>
{{Hint|The config file has to be named '''css_config.xml'''. }} == Tab Groups groups ==The user can configure tab groups in the XML, however the allowed number of tabs to configure may vary depending on the screen size of the device. As parameters, the caption is mandatoryThey will be used as groupings for buttons.
== Buttons ==
Buttons should be placed inside tab elements and can be parameterized. Buttons are configurable in terms of
* Icon(Parameter: ''iconPath'')* Caption(Parameter: ''caption'')* Group/tab(name of tab group)* Action + Parameters Object UID if needed(Parameter: ''UBIK-UID'')
For now, the supported button types are as follows: ({{Hint|The buttons demonstrated in the screenshots icons are the results of the example XML configuration.)specified by their relative paths under '''''SD_CARD''/Android/data/''APP_PACKAGE_NAME''/files/UIConfigurations/CSSButtonIcons''' }}
* Content Browser Button The supported button types are as follows: Opens a content browser for displaying an object or the root if no object/uid is specified.<br/>[[File:UI_Android_CSS_Buttons_Content_Browser.jpg|border|alt=Content Browser Button|Content Browser Button]][[File:UI_Android_CSS_Buttons_Content_Browser_Events.jpg|border|alt=Content Browser Button For Events|Content Browser Button For Events]]* Custom Intent Button (using a customized intent URI or target class) : Launches a certain application for the specified Intent.<br/>[[File:UI_Android_CSS_Buttons_Custom_Intent.jpg|border|alt=Custom Intent Button|Custom Intent Button]]
* Maps Button : Opens {{UBIK}} map.<br/gallery heights="100">[[File:UI_Android_CSS_Buttons_MapsUI_Android_CSS_Buttons_Content_Browser.jpgjpg|border|alt=Maps Button|Maps Content Browser Button]]* Target Maps Button File: Opens {{UBIK}} map for a target objectUI_Android_CSS_Buttons_Custom_Intent.png|Custom Intent Button<br/>[[File:UI_Android_CSS_Buttons_Target_MapsUI_Android_CSS_Buttons_Maps.jpg|border|alt=Target Maps ButtonFile:UI_Android_CSS_Buttons_Maps.jpg|Target Maps Button]]* ID Marker Scan Button : Starts ID marker scanning.<br/>[[File:UI_Android_CSS_Buttons_ID_Marker_Scan.jpg|border|alt=ID Marker Scan Button|ID Marker Scan Button]]* QR Scan Button : Starts QR code scanning.<br/>[[File:UI_Android_CSS_Buttons_QR_Code_Scan.jpg|border|alt=QR Code Scan Button|QR Code Scan Button]]* POI View Button : Opens {{UBIK}} POI view.<br/>[[File:UI_Android_CSS_Buttons_POI_View.jpg|border|alt=POI View ButtonFile:UI_Android_CSS_Buttons_Config_AR.jpg|POI View Button]]* Configurable AR Button File: Opens the markerless viewUI_Android_CSS_Buttons_Config_Image.jpg|Configurable Image Marker Button<br/>[[File:UI_Android_CSS_Buttons_Config_ARUI_Android_CSS_Buttons_Nav_Maps.jpg|border|alt=Configurable AR Navigation ButtonFile:UI_Android_CSS_Buttons_AR_Navigation.jpg|Configurable AR Navigation Button]]* Configurable Image Marker Button File: Opens the ID marker 3D viewUI_Android_CSS_Buttons_Barcode.png|Barcode Scan Button<br/>[[File:UI_Android_CSS_Buttons_Config_ImageUI_Android_CSS_Buttons_RFID_Scan.jpg|borderRFID Scan ButtonFile:UI_Android_CSS_Buttons_OCR_Scan.png|alt=Configurable Image Marker OCR Scan Button{{Version/AndroidSince|Configurable Image Marker Button]]2.5.0}}</gallery>
* AR Navigation POI View Button : Opens {{UBIK}} POI view with the AR navigation support.
<br/>[[File:UI_Android_CSS_Buttons_AR_Navigation.jpg|border|alt=AR Navigation Button|AR Navigation Button]]
* AR Navigation Maps Button : Starts navigating to the specified object.
<br/>[[File:UI_Android_CSS_Buttons_Nav_Maps.jpg|border|alt=Navigation Button|Navigation Button]]
Additionally, {| class="wikitable sortable" | width = "70%"|-! Button parameter configurations should maintain !! Purpose !! Parameters|-| ''ContentBrowserButton''|| Opens a content browser for displaying an object or the following guidelinesroot if no object/uid is specified. || ''UBIK-UID'':UID of object to be shown on map* When either |-| ''[[Custom_Intent_Button|CustomIntentButton]]'' || Launches a certain application or URI for the caption parameter specified intent (using a customized intent URI or target class). || ''TargetClass'': name of an activity or an application<br />''TargetURI'': link information|-| ''MapsButton''|| Opens {{UBIK}} map. || -|-| ''TargetMapsButton''|| Opens {{UBIK}} map for a target object. || ''UBIK-UID'': UID of object to be shown on map|-| ''ID MarkerScanButton''|| Starts ID marker scanning. || -|-| ''QRScanButton''|| Starts QR code scanning. || -|-| ''POIViewButton''|| Opens {{UBIK}} POI view. || -|-| ''ConfigurableARButton''|| Opens the icon parameter ID marker 3D view. || -|-| ''ConfigurableImageMarkerButton''|| Opens the markerless view. || -|-| ''ARNavigationPOIViewButton''|| Opens {{UBIK}} POI view with the AR navigation support. || ''UBIK-UID'': UID of object to be navigated to|-| ''ARNavigationMapsButton''|| Opens {{UBIK}} map for the specified object.Starts navigating to the specified object. || ''UBIK-UID'': UID of object to be navigated to|-| ''BarcodeScanButton''|| Starts barcode scanning. || -|-| ''RFIDScanButton''|| Starts RFID scanning. || -|-| ''OCRScanButton''|| Starts OCR scanning. {{Version/AndroidSince|2.5.0}} || -|} === Color of Buttons === If no user is not explicitly customized logged in the xml file, buttons are de-saturated. Once a user is logged in the buttons are colored according to following behaviour:* If default caption buttons are used the buttons are colored programmatically. The button and icons, specific to each the color can be customized by the Development.* If custom buttons are used (specified by the parameter "iconPath") the original color of the buttonis retained. [[Category:Android|Configure Start Screen Content]][[Category:How-To|Configure Start Screen Content]][[Category:Publishing|Configure Start Screen Content]] == Configuration guidelines == * See [[UI_Configuration_(Mobile_Client)]]* The '''maximum number of tabs is 6'''. Once this limit is exceeded, the configuration is invalid and won't be shown.* The captions of tabs are optional. In case there's only one tab, the tab will be invisible.* The '''buttons''' should always be '''nested inside tabs'''. Otherwise, the configuration is also invalid.* Captions and icons of buttons are optional. Default values are usedfor the unspecified ones.* While configuring the [[Custom Intent Button|custom intent button]], either one should always specify one and only one of the target class or and the target URI should be specified. Otherwise, but not both the button is invalid and not neither. The later two cases will result in an errorwill be shown.* The configuration of the ''UBIK-UID '' parameter is obligatory should always be specified for AR Navigation POI View Button, AR Navigation Maps View Button, RAG Navigation Demo Maps View Button and Demo Navigation Target Maps View Button. {{Attention|The configuration is only applied when the app starts. Close the app completely (not only move it to the background) and restart it to make sure the configuration is read.}}
== Results ==
The result is that the tabs and buttons configured in the XML file will be visible and open the right activity once they are clicked.
The following screenshots demonstrate the results of the example XML configuration.<br/>[[File:UI_Android_CSS_Buttons_Tab1.png|500px|border|alt=The First Tab|The First Tab]]<br/>[[File:UI_Android_CSS_Buttons_Tab2.png|500px|border|alt=The Second Tab|The Second Tab]]<br/>[[File:UI_Android_CSS_Buttons_Tab3.png|500px|border|alt=The Third Tab|The Third Tab]] After users log in, the buttons are enabled and colored. Upon being clicked, they should trigger different actions.<br/>[[File:UI_Android_CSS_Buttons_After_Login.png|500px|border|alt=Buttons After Login|Buttons After Login]] == See also ==* [[UI_Configuration_(Mobile_Client)]]* [[Custom_Intent_Button]] [[Category:How-ToAndroid|Configure Start Screen Content]][[Category:UBIK ClientHow-To|Configure Start Screen Content]][[Category:UBIK AndroidPublishing|Configure Start Screen Content]]