<?xml version="1.0" encoding="utf-8" ?>
<!--
  ~ Copyright (C) 2021 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>
    <style name="NotificationBodyTitleText" parent="@android:TextAppearance.DeviceDefault.Large">
        <item name="android:maxLines">1</item>
        <item name="android:ellipsize">end</item>
        <item name="android:textAlignment">viewStart</item>
    </style>

    <style name="NotificationBodyContentText" parent="@android:TextAppearance.DeviceDefault.Small">
        <item name="android:maxLines">1</item>
        <item name="android:ellipsize">end</item>
        <item name="android:textAlignment">viewStart</item>
    </style>

    <style name="NotificationActionViewLayout">
        <item name="android:layout_gravity">center</item>
        <item name="android:layout_marginLeft">8dp</item>
        <item name="android:layout_marginRight">8dp</item>
        <item name="android:layout_marginTop">8dp</item>
        <item name="android:layout_marginBottom">8dp</item>
    </style>

    <style name="NotificationActionButtonBase" parent="@android:Widget.DeviceDefault.Button.Borderless.Colored">
        <item name="android:minWidth">@dimen/action_button_min_width</item>
        <item name="android:gravity">center</item>
        <item name="android:textSize">32sp</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:textColor">@color/notification_accent_color</item>
        <item name="android:maxLines">1</item>
        <item name="android:ellipsize">end</item>
        <item name="android:background">@drawable/action_button_background</item>
    </style>

    <style name="NotificationActionButton1" parent="NotificationActionButtonBase">
        <item name="android:background">@drawable/play_button_background</item>
    </style>

    <style name="NotificationActionButtonText" parent="@android:TextAppearance.DeviceDefault.Large">
        <item name="android:textColor">?android:attr/textColorPrimary</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:maxLines">1</item>
        <item name="android:ellipsize">end</item>
    </style>

    <style name="ClearAllButton" parent="@android:Widget.DeviceDefault.Button.Borderless.Colored">
        <item name="android:minWidth">@dimen/clear_all_button_min_width</item>
        <item name="android:paddingStart">@dimen/clear_all_button_padding</item>
        <item name="android:paddingEnd">@dimen/clear_all_button_padding</item>
        <item name="android:textColor">?android:attr/textColorPrimary</item>
        <item name="android:gravity">center</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:background">@drawable/clear_all_button_background</item>
    </style>
</resources>