Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e73c4b9d authored by Roman Birg's avatar Roman Birg
Browse files

SystemUI: attach a queue to media player notifications



Extend media player notificatoins to attach a queue below them, set via
the MediaController.setQueue() API, when available.

Long pressing on the notificaiton will reveal an option to disable the
queue.

The queue is currently hardcoded to be limited to 3 items.

Ticket: CYNGNOS-217
Change-Id: I3b8503cb47af2d36f031d06aefc1bfbe7ed80010
Signed-off-by: default avatarRoman Birg <roman@cyngn.com>
parent 9788452a
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright (C) 2015 The CyanogenMod 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.
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/notification_guts_media_bg_color"/>
        </shape>
    </item>


</layer-list>
+44 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright (C) 2015 The CyanogenMod 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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <ripple android:color="?android:colorControlHighlight">
        <item android:state_pressed="true">
            <shape android:shape="rectangle">
                <solid android:color="@color/queue_background_pressed"/>
            </shape>
        </item>
    </ripple>
    <ripple android:color="?android:colorControlHighlight">
        <item android:state_selected="true">
            <shape android:shape="rectangle">
                <solid android:color="@color/queue_background_pressed"/>
            </shape>
        </item>
    </ripple>
    <ripple android:color="?android:colorControlHighlight">
        <item android:state_focused="true">
            <shape android:shape="rectangle">
                <solid android:color="@color/queue_background_pressed"/>
            </shape>
        </item>
    </ripple>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/queue_background"/>
        </shape>
    </item>
</selector>
+23 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright (C) 2015 The CyanogenMod 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.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <gradient
        android:type="linear"
        android:angle="270"
        android:startColor="#FF000000"
        android:endColor="@color/queue_background"/>
</shape>
+22 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright (C) 2015 The CyanogenMod 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.
-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?android:attr/colorControlHighlight">
    <item android:id="@+id/mask">
        <color android:color="@color/queue_background_pressed"/>
    </item>
</ripple>
+137 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright (C) 2015 The CyanogenMod 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.
-->

<com.android.systemui.statusbar.MediaNotificationGuts
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/notification_guts"
    android:visibility="gone"
    android:clickable="true"
    android:gravity="top|start">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clipToPadding="false"
        android:clipChildren="false"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:background="@drawable/notification_guts_bg"
            android:elevation="2dp"
            android:layout_height="@android:dimen/notification_large_icon_height"
            android:orientation="horizontal">

            <ImageView
                android:id="@android:id/icon"
                android:layout_width="@android:dimen/notification_large_icon_width"
                android:layout_height="@android:dimen/notification_large_icon_height"
                android:layout_weight="0"
                android:padding="8dp"
                android:scaleType="centerInside"/>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center_vertical"
                android:orientation="vertical"
                android:paddingStart="8dp"
                android:paddingEnd="8dp"
                android:layout_weight="1">
                <TextView
                    android:id="@+id/pkgname"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|start"
                    android:layout_weight="1"
                    android:textAppearance="@*android:style/TextAppearance.Material.Notification.Title"
                    android:textColor="@color/notification_guts_title_color"/>
                <DateTimeView
                    android:id="@+id/timestamp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="0"
                    android:layout_gravity="center_vertical|start"
                    android:textAppearance="@*android:style/TextAppearance.Material.Notification.Time"
                    android:textColor="@color/notification_guts_text_color"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/debug_info"
                    android:layout_weight="0"
                    android:textAppearance="@*android:style/TextAppearance.Material.Notification.Time"
                    android:layout_gravity="bottom|start"
                    android:visibility="gone"
                    android:textColor="@color/notification_guts_text_color"/>
            </LinearLayout>

            <ImageButton
                style="@android:style/Widget.Material.Light.Button.Borderless.Small"
                android:id="@+id/notification_inspect_app_provided_settings"
                android:layout_width="52dp"
                android:layout_height="match_parent"
                android:layout_weight="0"
                android:gravity="center"
                android:src="@drawable/notification_guts_ic_settings"
                android:visibility="gone"/>

            <ImageButton
                style="@android:style/Widget.Material.Light.Button.Borderless.Small"
                android:id="@+id/notification_inspect_filter_notification"
                android:layout_width="52dp"
                android:layout_height="match_parent"
                android:layout_weight="0"
                android:gravity="center"
                android:src="@drawable/notification_guts_ic_ringer_mute"
                android:visibility="gone"/>

            <ImageButton
                style="@android:style/Widget.Material.Light.Button.Borderless.Small"
                android:id="@+id/notification_inspect_item"
                android:layout_width="52dp"
                android:layout_height="match_parent"
                android:layout_weight="0"
                android:gravity="center"
                android:contentDescription="@string/status_bar_notification_inspect_item_title"
                android:src="@drawable/ic_info"/>
        </LinearLayout>
        <LinearLayout
            android:id="@+id/queue_group"
            android:padding="8dp"
            android:background="@drawable/notification_guts_queue_bg"
            android:elevation="0dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_height="wrap_content"
                android:id="@+id/switch_label"
                android:layout_marginStart="@android:dimen/notification_large_icon_width"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="@string/play_queue_extention"/>
            <Switch
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:id="@+id/queue_switch"/>

        </LinearLayout>

    </LinearLayout>

</com.android.systemui.statusbar.MediaNotificationGuts>
Loading