<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Eclipse Public License, Version 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.eclipse.org/org/documents/epl-v10.php
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<xsd:schema
    targetNamespace="http://schemas.android.com/sdk/android/layout-devices/1"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:c="http://schemas.android.com/sdk/android/layout-devices/1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1">

    <!-- The root element layout-devices defines a sequence of 0..n device elements. -->

    <xsd:element name="layout-devices" type="c:layoutDevicesType" />

    <xsd:complexType name="layoutDevicesType">
        <xsd:annotation>
            <xsd:documentation xml:lang="en">
                The "layout-devices" element is the root element of this schema.

                It must contain zero or more "device" elements that each define the configurations
                available for a given device.

                These definitions are used in the Graphical Layout Editor in the
                Android Development Tools (ADT) plugin for Eclipse.
            </xsd:documentation>
        </xsd:annotation>

        <xsd:sequence>
            <!-- layout-devices defines a sequence of 0..n device elements. -->
            <xsd:element name="device" minOccurs="0" maxOccurs="unbounded">

                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        A device element must contain at most one "default" element
                        followed by one or more "config" elements.

                        The "default" element defines all the default parameters
                        inherited by the following "config" elements.
                        Each "config" element can override the default values, if any.

                        A "device" element also has a required "name" attribute that
                        represents the user-interface name of this device.
                    </xsd:documentation>
                </xsd:annotation>

                <xsd:complexType>
                    <!-- device defines a choice of 0..1 default element
                    and 1..n config elements. -->

                    <xsd:sequence>
                        <xsd:element name="default" type="c:parametersType"
                                     minOccurs="0"  maxOccurs="1" />
                        <xsd:element name="config"  type="c:configType"
                                     minOccurs="1"  maxOccurs="unbounded" />
                    </xsd:sequence>

                    <xsd:attribute name="name" type="xsd:normalizedString" use="required" />
                </xsd:complexType>

            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- The type of a device>default element.
         This is overridden by configType below for the device>config element.
    -->
    <xsd:complexType name="parametersType">
        <xsd:annotation>
            <xsd:documentation xml:lang="en">
                The parametersType define all the parameters that can happen either in a
                "default" element or in a named "config" element.
                Each parameter element can appear once at most.

                Parameters here are the same as those used to specify alternate Android
                resources, as documented by
                http://d.android.com/guide/topics/resources/resources-i18n.html#AlternateResources
            </xsd:documentation>
        </xsd:annotation>

        <xsd:all>
            <!-- parametersType says that 0..1 of each of these elements must be declared. -->

            <xsd:element name="country-code" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the configuration is for a particular Mobile Country Code.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:float">
                        <xsd:minInclusive value="100" />
                        <xsd:maxInclusive value="999" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="network-code" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the configuration is for a particular Mobile Network Code.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:float">
                        <xsd:minExclusive value="0" />
                        <xsd:maxExclusive value="1000" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="screen-size" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies that the configuration is for a particular class of screen.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="small" />
                        <xsd:enumeration value="normal" />
                        <xsd:enumeration value="large" />
                        <xsd:enumeration value="xlarge" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="screen-ratio" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies that the configuration is for a taller/wider than traditional
                        screen. This is based purely on the aspect ration of the screen: QVGA,
                        HVGA, and VGA are notlong; WQVGA, WVGA, FWVGA are long. Note that long
                        may mean either wide or tall, depending on the current orientation.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="long" />
                        <xsd:enumeration value="notlong" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="screen-orientation" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies that the configuration is for a screen that is tall (port) or
                        wide (land).
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="port" />
                        <xsd:enumeration value="land" />
                        <xsd:enumeration value="square" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="pixel-density" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the screen density the configuration is defined for. The medium
                        density of traditional HVGA screens (mdpi) is defined to be approximately
                        160dpi; low density (ldpi) is 120, and high density (hdpi) is 240. There
                        is thus a 4:3 scaling factor between each density, so a 9x9 bitmap in ldpi
                        would be 12x12 is mdpi and 16x16 in hdpi.
                        The special nodpi density that can be used in resource qualifiers is not
                        a valid keyword here.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="ldpi" />
                        <xsd:enumeration value="mdpi" />
                        <xsd:enumeration value="tvdpi" />
                        <xsd:enumeration value="hdpi" />
                        <xsd:enumeration value="xhdpi" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="touch-type" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the touch type the configuration is defined for.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="notouch" />
                        <xsd:enumeration value="stylus" />
                        <xsd:enumeration value="finger" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="keyboard-state" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        If your configuration uses a soft keyboard, use the keyssoft value.
                        If it doesn't and has a real keyboard, use keysexposed or keyshidden.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="keysexposed" />
                        <xsd:enumeration value="keyshidden" />
                        <xsd:enumeration value="keyssoft" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="text-input-method" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the primary text input method the configuration is designed for.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="nokeys" />
                        <xsd:enumeration value="qwerty" />
                        <xsd:enumeration value="12key" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="nav-state" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies whether the primary non-touchscreen navigation control is
                        exposed or hidden.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="navexposed" />
                        <xsd:enumeration value="navhidden" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="nav-method" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the primary non-touchscreen navigation method the configuration
                        is designed for.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:token">
                        <xsd:enumeration value="dpad" />
                        <xsd:enumeration value="trackball" />
                        <xsd:enumeration value="wheel" />
                        <xsd:enumeration value="nonav" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="screen-dimension" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the device screen resolution, in pixels.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence minOccurs="2" maxOccurs="2">

                        <xsd:element name="size">
                            <xsd:simpleType>
                                <xsd:restriction base="xsd:positiveInteger" />
                            </xsd:simpleType>
                        </xsd:element>

                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="xdpi" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the actual density in X of the device screen.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:float">
                        <xsd:minExclusive value="0" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="ydpi" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation xml:lang="en">
                        Specifies the actual density in Y of the device screen.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:float">
                        <xsd:minExclusive value="0" />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

        </xsd:all>
    </xsd:complexType>

    <!-- The type definition of a device>config element.
         This type is basically all the element defined by parametersType and an extra
         required "name" attribute for the user-interface configuration name.
    -->
    <xsd:complexType name="configType">
        <xsd:annotation>
            <xsd:documentation>
                The configType defines the content of a "config" element in a "device" element.

                A "config" element can have all the parameters elements defined by
                "parameterType". It also has a required "name" attribute that indicates the
                user-interface name for this configuration.
            </xsd:documentation>
        </xsd:annotation>

        <xsd:complexContent>
            <xsd:extension base="c:parametersType">
                <xsd:attribute name="name" type="xsd:normalizedString" use="required" />
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

</xsd:schema>
