<!--
  Copyright 2013 The Android Open Source Project

  Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0

  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.
  -->

<resources>

    <!-- Activity themes -->

    <style name="Theme.Base" parent="android:Theme.Holo.Light" />

    <style name="Theme.Sample" parent="Theme.Base" />

    <style name="AppTheme" parent="Theme.Sample" />
    <!-- Widget styling -->

    <style name="Widget" />

    <style name="Widget.SampleContentContainer">
        <item name="android:paddingTop">@dimen/vertical_page_margin</item>
        <item name="android:paddingBottom">@dimen/vertical_page_margin</item>
        <item name="android:paddingLeft">@dimen/horizontal_page_margin</item>
        <item name="android:paddingRight">@dimen/horizontal_page_margin</item>
    </style>

    <style name="Widget.SampleMessage">
        <item name="android:textAppearance">?android:textAppearanceMedium</item>
        <item name="android:lineSpacingMultiplier">1.1</item>
    </style>

    <style name="Widget.SampleDashboard.Grid" parent="Widget">
        <item name="android:stretchMode">columnWidth</item>
        <item name="android:columnWidth">200dp</item>
        <item name="android:numColumns">auto_fit</item>
        <item name="android:drawSelectorOnTop">true</item>
        <item name="android:horizontalSpacing">@dimen/margin_medium</item>
        <item name="android:verticalSpacing">@dimen/margin_medium</item>
    </style>

    <style name="Widget.SampleDashboard.Item" parent="Widget">
        <item name="android:background">@drawable/sample_dashboard_item_background</item>
        <item name="android:paddingTop">@dimen/margin_small</item>
        <item name="android:paddingLeft">@dimen/margin_medium</item>
        <item name="android:paddingRight">@dimen/margin_medium</item>
        <item name="android:paddingBottom">@dimen/margin_medium</item>
    </style>

    <style name="Widget.SampleDashboard.Item.Title" parent="Widget">
        <item name="android:layout_marginBottom">@dimen/margin_tiny</item>
        <item name="android:textAppearance">?android:textAppearanceLarge</item>
        <item name="android:textColor">#09c</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">24sp</item>
    </style>

    <style name="Widget.SampleDashboard.Item.Description" parent="Widget">
        <item name="android:textAppearance">?android:textAppearanceSmall</item>
        <item name="android:fontFamily">sans-serif-light</item>
    </style>
</resources>
