<?xml version="1.0" encoding="utf-8"?>
<!--
     Copyright (C) 2014 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>

    <!-- Like in themes_base.xml, the namespace "*.AppCompat.Base" is used to
     define base styles for the platform version. The "*.AppCompat"
     variants are for direct use or use as parent styles by the app. -->
    <eat-comment/>

    <style name="Base.Widget.AppCompat.ActionBar.TabView"
           parent="android:Widget.Material.ActionBar.TabView">
    </style>

    <style name="Base.Widget.AppCompat.Light.ActionBar.TabView"
           parent="android:Widget.Material.Light.ActionBar.TabView">
    </style>

    <style name="Base.Widget.AppCompat.ActionBar.TabText"
           parent="android:Widget.Material.ActionBar.TabText">
    </style>

    <style name="Base.Widget.AppCompat.Light.ActionBar.TabText"
           parent="android:Widget.Material.Light.ActionBar.TabText">
    </style>

    <style name="Base.Widget.AppCompat.Light.ActionBar.TabText.Inverse"
           parent="android:Widget.Material.Light.ActionBar.TabText">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu"
           parent="android:TextAppearance.Material.Widget.ActionBar.Menu">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title"
           parent="android:TextAppearance.Material.Widget.ActionBar.Title">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
           parent="android:TextAppearance.Material.Widget.ActionBar.Subtitle">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
           parent="android:TextAppearance.Material.Widget.ActionBar.Title.Inverse">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle.Inverse"
           parent="android:TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Title"
           parent="android:TextAppearance.Material.Widget.ActionMode.Title">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Subtitle"
           parent="android:TextAppearance.Material.Widget.ActionMode.Subtitle">
    </style>

    <!-- Action Button Styles -->

    <style name="Base.Widget.AppCompat.ActionButton"
           parent="android:Widget.Material.ActionButton">
    </style>

    <style name="Base.Widget.AppCompat.ActionButton.CloseMode"
           parent="android:Widget.Material.ActionButton.CloseMode">
    </style>

    <style name="Base.Widget.AppCompat.ActionButton.Overflow"
           parent="android:Widget.Material.ActionButton.Overflow">
    </style>

    <!--
        Widget.AppCompat.Toolbar style is purposely ommitted. This is because the support
        Toolbar implementation is used on ALL platforms and relies on the unbundled attrs.
        The supporting Toolbar styles below only use basic attrs so work fine.
    -->

    <style name="Base.Widget.AppCompat.Toolbar.Button.Navigation"
           parent="android:Widget.Material.Toolbar.Button.Navigation">
    </style>

    <style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Title"
           parent="android:TextAppearance.Material.Widget.ActionBar.Title">
    </style>

    <style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Subtitle"
           parent="android:TextAppearance.Material.Widget.ActionBar.Subtitle">
    </style>

    <!-- Spinner Widgets -->

    <style name="Base.Widget.AppCompat.ListView.DropDown"
           parent="android:Widget.Material.ListView.DropDown"/>

    <style name="Base.Widget.AppCompat.DropDownItem.Spinner"
           parent="android:Widget.Material.DropDownItem.Spinner"/>

    <style name="Base.Widget.AppCompat.Spinner" parent="android:Widget.Material.Spinner" />

    <style name="Base.Widget.AppCompat.Spinner.Underlined" parent="android:Widget.Material.Spinner.Underlined" />

    <style name="Base.Widget.AppCompat.Spinner.DropDown.ActionBar" parent="android:Widget.Material.Spinner">
        <item name="spinnerMode">dropdown</item>
        <item name="disableChildrenWhenDisabled">true</item>
        <item name="popupPromptView">@layout/abc_simple_dropdown_hint</item>
    </style>

    <style name="Base.Widget.AppCompat.ListView.Menu"
           parent="android:Widget.Material.ListView" />

    <!-- Popup Menu -->

    <style name="Base.Widget.AppCompat.ListPopupWindow" parent="android:Widget.Material.ListPopupWindow">
    </style>

    <style name="Base.Widget.AppCompat.PopupMenu" parent="android:Widget.Material.PopupMenu">
    </style>

    <style name="Base.Widget.AppCompat.Light.PopupMenu"
        parent="android:Widget.Material.Light.PopupMenu">
    </style>

    <style name="Base.Widget.AppCompat.PopupMenu.Overflow">
        <item name="android:dropDownHorizontalOffset">-4dip</item>
        <item name="android:overlapAnchor">true</item>
    </style>

    <style name="Base.Widget.AppCompat.Light.PopupMenu.Overflow">
        <item name="android:dropDownHorizontalOffset">-4dip</item>
        <item name="android:overlapAnchor">true</item>
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Large"
        parent="android:TextAppearance.Material.Widget.PopupMenu.Large">
    </style>

    <style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Small"
        parent="android:TextAppearance.Material.Widget.PopupMenu.Small">
    </style>

    <style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Large"
        parent="android:TextAppearance.Material.Widget.PopupMenu.Large">
    </style>

    <style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"
        parent="android:TextAppearance.Material.Widget.PopupMenu.Small">
    </style>

    <!-- Search View result styles -->

    <style name="Base.TextAppearance.AppCompat.SearchResult.Title"
           parent="android:TextAppearance.Material.SearchResult.Title">
    </style>

    <style name="Base.TextAppearance.AppCompat.SearchResult.Subtitle"
           parent="android:TextAppearance.Material.SearchResult.Subtitle">
    </style>

    <style name="Base.Widget.AppCompat.AutoCompleteTextView" parent="android:Widget.Material.AutoCompleteTextView" />

    <style name="Base.Widget.AppCompat.RatingBar" parent="android:Widget.Material.RatingBar" />

    <style name="Base.Widget.AppCompat.Button" parent="android:Widget.Material.Button" />

    <style name="Base.Widget.AppCompat.Button.Small" parent="android:Widget.Material.Button.Small" />

    <!-- Progress Bar -->

    <style name="Base.Widget.AppCompat.ProgressBar.Horizontal"
           parent="android:Widget.Material.ProgressBar.Horizontal">
    </style>

    <style name="Base.Widget.AppCompat.ProgressBar"
           parent="android:Widget.Material.ProgressBar">
    </style>

    <style name="Base.Widget.AppCompat.TextView.SpinnerItem" parent="android:Widget.Material.TextView.SpinnerItem" />

    <style name="Base.TextAppearance.AppCompat.Widget.TextView.SpinnerItem" parent="android:TextAppearance.Material.Widget.TextView.SpinnerItem" />

</resources>
