<?xml version="1.0" encoding="utf-8"?>
<!--
	Project:
			HomeScreen PlusPlus UI
	Author:
			Chi-Tai Dang
	Version:
			2.2
	Purpose:
			Customization
	Copyright:
			2006 - 2008, Chi-Tai Dang
-->
<xsd:schema targetNamespace="http://www.chi-tai.info/HomeScreen"
			xmlns:bs="http://www.chi-tai.info/HomeScreen"
			xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			attributeFormDefault="qualified"
			elementFormDefault="qualified" >
				
	<xsd:element name="Window">
    	<xsd:complexType>
      		<xsd:choice minOccurs="1" maxOccurs="unbounded">
				<xsd:element name="image" type="bs:imageType" minOccurs="0" />
        		<xsd:element name="Row" type="bs:RowType" />
				<xsd:element name="TrayIcons" type="bs:TrayIconsType" />
			</xsd:choice>
      <xsd:attribute name="animatebg" form="unqualified" type="xsd:hexBinary" use="optional" />
			<xsd:attribute name="absolute" 	form="unqualified" type="bs:absolute" use="optional" />
			<xsd:attribute name="animate" 	form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="custombg" 	form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="fontsize" 	form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="fontfamily" form="unqualified" type="xsd:string" use="optional" />
	    <xsd:attribute name="gesture" 	form="unqualified" type="bs:boolnum" use="optional" />
			<xsd:attribute name="imagesrc" 	form="unqualified" type="xsd:string" />
			<xsd:attribute name="itemselect" form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="selmode" 	form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="vga" 	form="unqualified" type="xsd:positiveInteger" use="optional" />
			<xsd:attribute name="mode" 	form="unqualified" type="xsd:integer" use="optional" />
		</xsd:complexType>
	</xsd:element>
	
	<xsd:complexType name="RowType">
    	<xsd:sequence minOccurs="1" maxOccurs="unbounded">
			<xsd:element name="image" type="bs:imageType" minOccurs="0" />
      		<xsd:element name="View" type="bs:ViewType" />
		</xsd:sequence>
		<xsd:attribute name="absolute" 		form="unqualified" type="bs:absolute" use="optional" />
		<xsd:attribute name="animate" 		form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="fontfamily" 	form="unqualified" type="xsd:string" use="optional" />
		<xsd:attribute name="fontsize" 		form="unqualified" type="xsd:integer" use="optional" />
	   <xsd:attribute name="gesture" 		form="unqualified" type="bs:boolnum" use="optional" />
		<xsd:attribute name="itemrepos" 	form="unqualified" type="bs:boolnum" use="optional" />
		<xsd:attribute name="itemselect" 	form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="name" 				form="unqualified" type="xsd:string" use="optional" />
		<xsd:attribute name="rowtoggle" 	form="unqualified" type="bs:boolnum" use="optional" />
		<xsd:attribute name="selmode" 		form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="seperator" 	form="unqualified" type="bs:boolnum" use="optional" />
	</xsd:complexType>

	<xsd:complexType name="ViewType">
		<xsd:sequence minOccurs="1" maxOccurs="unbounded">
			<xsd:element name="image" type="bs:imageType" minOccurs="0" />
			<xsd:element name="Item" type="bs:ItemType" />
		</xsd:sequence>
			<xsd:attribute name="animate" 		form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="extend" 			form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="height" 			form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="fontsize" 		form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="fontfamily" 	form="unqualified" type="xsd:string" use="optional" />
	    <xsd:attribute name="gesture" 		form="unqualified" type="bs:boolnum" use="optional" />
			<xsd:attribute name="itemselect" 	form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="multi" 			form="unqualified" type="bs:boolnum" use="optional" />
			<xsd:attribute name="absolute" 		form="unqualified" type="bs:absolute" use="optional" />
			<xsd:attribute name="adaptwidth" 	form="unqualified" type="bs:boolnum" use="optional" />
			<xsd:attribute name="selmode" 		form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="slide" 			form="unqualified" type="bs:boolnum" use="optional" />
	</xsd:complexType>

	<xsd:complexType name="ItemType" >
		<xsd:sequence>
			<xsd:element name="image" 		type="bs:imageType" minOccurs="0" maxOccurs="2" />
			<xsd:element name="imagealt" 	type="bs:imageType" minOccurs="0" maxOccurs="1" />
			<xsd:element name="label" 		type="bs:labelType" minOccurs="0" maxOccurs="1" />
			<xsd:element name="registry" 	type="bs:registryType" minOccurs="0" maxOccurs="1" />
		</xsd:sequence>
			<xsd:attribute name="absolute" 		form="unqualified" type="bs:absolute" use="optional" />
	    <xsd:attribute name="type" 				form="unqualified" type="bs:drawtype" use="optional" />
	    <xsd:attribute name="class" 			form="unqualified" type="bs:classtype" use="required" />
	    <xsd:attribute name="left" 				form="unqualified" type="xsd:integer" use="optional" />
	    <xsd:attribute name="ontap" 			form="unqualified" type="bs:actiontype" use="optional" />
	    <xsd:attribute name="onhold" 			form="unqualified" type="bs:actiontype" use="optional" />
	    <xsd:attribute name="gesture" 		form="unqualified" type="bs:boolnum" use="optional" />
	    <xsd:attribute name="text" 				form="unqualified" type="xsd:string" use="optional" />
			<xsd:attribute name="itemselect" 	form="unqualified" type="bs:boolnum" use="optional" />
	    <xsd:attribute name="index" 			form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="index_1" 		form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="index_2" 		form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="index_3" 		form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="index_4" 		form="unqualified" type="xsd:integer" use="optional" />
	    <xsd:attribute name="subindex" 		form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="subindex_1" 	form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="subindex_2" 	form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="subindex_3" 	form="unqualified" type="xsd:integer" use="optional" />
      <xsd:attribute name="subindex_4" 	form="unqualified" type="xsd:integer" use="optional" />
	    <xsd:attribute name="index1" 			form="unqualified" type="xsd:integer" use="optional" />
	    <xsd:attribute name="subindex1" 	form="unqualified" type="xsd:integer" use="optional" />
	    <xsd:attribute name="title" 			form="unqualified" type="xsd:string" use="optional" />
	    <xsd:attribute name="path" 				form="unqualified" type="xsd:string" use="optional" />
	    <xsd:attribute name="path1" 			form="unqualified" type="xsd:string" use="optional" />
	    <xsd:attribute name="msg" 				form="unqualified" type="xsd:integer" use="optional" />
			<xsd:attribute name="selmode" 		form="unqualified" type="xsd:integer" use="optional" />
	    <xsd:attribute name="unload" 			form="unqualified" type="bs:boolnum" use="optional" />
	</xsd:complexType>

	<xsd:complexType name="imageType" >
		<xsd:attribute name="src" form="unqualified" type="xsd:string" use="optional" />
		<xsd:attribute name="left" form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="top" form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="transparent" form="unqualified" type="xsd:hexBinary" use="optional" />
		<xsd:attribute name="vga" form="unqualified" type="bs:boolnum" use="optional" />
		<xsd:attribute name="width" form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="height" form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="resize" form="unqualified" type="xsd:integer" use="optional" />
		<xsd:attribute name="smallicon" form="unqualified" type="bs:boolnum" use="optional" />
		<xsd:attribute name="color" form="unqualified" type="xsd:hexBinary" use="optional" />
	</xsd:complexType>
  
	<xsd:complexType name="registryType" >
		<xsd:attribute name="key_value" form="unqualified" type="xsd:string"    use="required" />
		<xsd:attribute name="mask"      form="unqualified" type="xsd:hexBinary" use="optional" />
		<xsd:attribute name="shift"     form="unqualified" type="xsd:integer"   use="optional" />
	</xsd:complexType>
	
	<xsd:complexType name="labelType" >
		<xsd:sequence>
			<xsd:element name="registry" type="bs:registryType" minOccurs="0" maxOccurs="1" />
		</xsd:sequence>
		<xsd:attribute name="align" 	form="unqualified" 	type="bs:align" 	use="optional" />
		<xsd:attribute name="bold" 	form="unqualified" 	type="bs:boolnum" 	use="optional" />
		<xsd:attribute name="color" 	form="unqualified" 	type="xsd:hexBinary" 	use="optional" />
		<xsd:attribute name="fontsize" 	form="unqualified" 	type="xsd:integer" 	use="optional" />
		<xsd:attribute name="fontfamily" form="unqualified" 	type="xsd:string" 	use="optional" />
		<xsd:attribute name="format" 	form="unqualified" 	type="bs:lineformat" 	use="optional" />
		<xsd:attribute name="height" 	form="unqualified" 	type="xsd:integer" />
		<xsd:attribute name="left" 	form="unqualified" 	type="xsd:integer" 	use="optional" />
		<xsd:attribute name="prefixed" 	form="unqualified" 	type="bs:boolnum" 	use="optional" />
		<xsd:attribute name="suppress0" form="unqualified" 	type="bs:boolnum" 	use="optional" />
		<xsd:attribute name="text" 	form="unqualified" 	type="xsd:string" 	use="optional" />
		<xsd:attribute name="toggleBoldFont" form="unqualified" type="bs:boolnum" 	use="optional" />
		<xsd:attribute name="toggleSmallFont" form="unqualified" type="bs:boolnum" 	use="optional" />
		<xsd:attribute name="top" 	form="unqualified" 	type="xsd:integer" 	use="optional" />
		<xsd:attribute name="valign" 	form="unqualified" 	type="bs:valign" 	use="optional" />
		<xsd:attribute name="width" 	form="unqualified" 	type="xsd:positiveInteger" use="optional" />
	</xsd:complexType>
  
  	<xsd:simpleType name="boolnum" >
		<xsd:restriction base="xsd:integer" >
			<xsd:enumeration value="0"/>
			<xsd:enumeration value="1"/>
		</xsd:restriction>
  	</xsd:simpleType>
  
  	<xsd:simpleType name="absolute" >
		<xsd:restriction base="xsd:integer" >
			<xsd:enumeration value="0"/>
			<xsd:enumeration value="1"/>
			<xsd:enumeration value="2"/>
			<xsd:enumeration value="3"/>
		</xsd:restriction>
  	</xsd:simpleType>
  
  	<xsd:simpleType name="align">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="left" />
			<xsd:enumeration value="right" />
			<xsd:enumeration value="center" />
		</xsd:restriction>
  	</xsd:simpleType>
  
  	<xsd:simpleType name="valign">
		<xsd:restriction base="xsd:string" >
			<xsd:enumeration value="top" />
			<xsd:enumeration value="middle" />
			<xsd:enumeration value="bottom" />
		</xsd:restriction>
  	</xsd:simpleType>
  
  	<xsd:simpleType name="lineformat">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="singleline" />
			<xsd:enumeration value="wordbreak" />
		</xsd:restriction>
  	</xsd:simpleType>
  
  	<xsd:simpleType name="drawtype">
		<xsd:restriction base="xsd:string" >
			<xsd:enumeration value="lefticon" />
			<xsd:enumeration value="icon" />
			<xsd:enumeration value="iconbattery" />
			<xsd:enumeration value="iconvalue" />
			<xsd:enumeration value="value" />
			<xsd:enumeration value="lefticonvalue" />
			<xsd:enumeration value="iconcpuutil" />
		</xsd:restriction>
  	</xsd:simpleType>
  
  	<xsd:simpleType name="classtype">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="battery_ac_icons" />
			<xsd:enumeration value="battery_meter" />
			<xsd:enumeration value="mobile_operator_homezone" />
			<xsd:enumeration value="sim_zone_info" />
			<xsd:enumeration value="cpuspeed" />
			<xsd:enumeration value="mobile_operator" />
			<xsd:enumeration value="calltimes_out_sms" />
			<xsd:enumeration value="calltimes_in_sms" />
			<xsd:enumeration value="calltimes_inout_sms" />
			<xsd:enumeration value="calltimes_out" />
			<xsd:enumeration value="calltimes_in" />
			<xsd:enumeration value="calltimes_inout" />
			<xsd:enumeration value="calltimes_out_day" />
			<xsd:enumeration value="calltimes_in_day" />
			<xsd:enumeration value="calltimes_inout_day" />
			<xsd:enumeration value="calltimes_out_month" />
			<xsd:enumeration value="calltimes_in_month" />
			<xsd:enumeration value="calltimes_inout_month" />
			<xsd:enumeration value="sms_out" />
			<xsd:enumeration value="sms_in" />
			<xsd:enumeration value="sms_inout" />
			<xsd:enumeration value="cpu_utilization" />
			<xsd:enumeration value="memory_program" />
			<xsd:enumeration value="temperature" />
			<xsd:enumeration value="powerdrain" />
			<xsd:enumeration value="phone_signal" />
			<xsd:enumeration value="memory_data" />
			<xsd:enumeration value="memory_sdcard" />
			<xsd:enumeration value="powerdrain" />
			<xsd:enumeration value="wifi_state" />
			<xsd:enumeration value="wifi_networks" />
			<xsd:enumeration value="wifi_ip_info" />
			<xsd:enumeration value="cell_broadcast_message" />
			<xsd:enumeration value="row_status" />
			<xsd:enumeration value="data_summed_up" />
			<xsd:enumeration value="data_month" />
			<xsd:enumeration value="data_month_sent" />
			<xsd:enumeration value="data_month_received" />
			<xsd:enumeration value="data_day" />
			<xsd:enumeration value="data_day_sent" />
			<xsd:enumeration value="data_day_received" />
			<xsd:enumeration value="data_traffic_remain" />
			<xsd:enumeration value="data_connection_count" />
			<xsd:enumeration value="data_conn" />
			<xsd:enumeration value="data_duration_month" />
			<xsd:enumeration value="data_duration_day" />
			<xsd:enumeration value="registry_tracker" />
			<xsd:enumeration value="date" />
			<xsd:enumeration value="clock" />
			<xsd:enumeration value="clock_digit" />
			<xsd:enumeration value="clock_seperator" />
			<xsd:enumeration value="clock_alarm" />
			<xsd:enumeration value="clock_apm" />
			<xsd:enumeration value="clock_seconds" />
			<xsd:enumeration value="clock_seconds_sep" />
			<xsd:enumeration value="start_app" />
			<xsd:enumeration value="space" />
			<xsd:enumeration value="tPlug" />
		</xsd:restriction>
  	</xsd:simpleType>
  
  	<xsd:simpleType name="actiontype">
		  <xsd:restriction base="xsd:string">
        <xsd:enumeration value="DoN" />
        <xsd:enumeration value="DoNothing" />
			  <xsd:enumeration value="ToggleNextRow" />
			  <xsd:enumeration value="OpenOptions" />
			  <xsd:enumeration value="ToggleBold" />
			  <xsd:enumeration value="ToggleView" />
			  <xsd:enumeration value="CommMgrApp" />
			  <xsd:enumeration value="TerminateCommMgrApp" />
			  <xsd:enumeration value="ToggleCpuSpeed" />
			  <xsd:enumeration value="ToggleCpuWakeup" />
			  <xsd:enumeration value="ToggleTemperature" />
			  <xsd:enumeration value="TogglePowerMode" />
	      <xsd:enumeration value="ToggleA2DP" />
	      <xsd:enumeration value="ToggleBluetooth" />
	      <xsd:enumeration value="TogglePhone" />
	      <xsd:enumeration value="ToggleWiFi" />
	      <xsd:enumeration value="ToggleFlight" />
			  <xsd:enumeration value="CtlPnl" />
	      <xsd:enumeration value="Phone" />
	      <xsd:enumeration value="PhoneMissed" />
	      <xsd:enumeration value="InboxSms" />
	      <xsd:enumeration value="InboxMms" />
	      <xsd:enumeration value="InboxMail" />
	      <xsd:enumeration value="StartApp" />
	      <xsd:enumeration value="SoftReset" />
	      <xsd:enumeration value="DeviceLock" />
	      <xsd:enumeration value="DisplayOff" />
	      <xsd:enumeration value="MenuBlueTooth" />
	      <xsd:enumeration value="MenuPhone" />
	      <xsd:enumeration value="MenuWiFi" />
			  <xsd:enumeration value="MenuDataConnections" />
	      <xsd:enumeration value="Message" />
	      <xsd:enumeration value="TaskList" />
	      <xsd:enumeration value="View" />
		  </xsd:restriction>
  	</xsd:simpleType>

    <xsd:complexType name="TrayIconsType">
		<xsd:sequence minOccurs="1" maxOccurs="unbounded">
			<xsd:element name="Icon" type="bs:IconType" />
		</xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="IconType" >
		<xsd:attribute name="id" form="unqualified" type="bs:TrayIconIDs" use="optional" />
		<xsd:attribute name="name" form="unqualified" type="xsd:string" use="required" />
    </xsd:complexType>

	<xsd:simpleType name="TrayIconIDs">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="phone_on" />
			<xsd:enumeration value="phone_off" />
			<xsd:enumeration value="bluetooth_on" />
			<xsd:enumeration value="bluetooth_off" />
			<xsd:enumeration value="wifi_on" />
			<xsd:enumeration value="wifi_off" />
			<xsd:enumeration value="devicelock" />
			<xsd:enumeration value="display_off" />
			<xsd:enumeration value="context_menu" />
		</xsd:restriction>
    </xsd:simpleType>
  
</xsd:schema>