feat: Add home screen music playback widget and some updates in Turkish localization (#98)

This commit is contained in:
eddyizm 2025-10-07 21:28:10 -07:00 committed by GitHub
commit f1d19142fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 1862 additions and 2 deletions

View file

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/titleTextColor"
android:pathData="M7,7h10v3l4,-4 -4,-4v3L5,5v6h2L7,7zM17,17H7v-3l-4,4 4,4v-3h12v-6h-2v4z" />
<path
android:fillColor="@color/titleTextColor"
android:pathData="M12,9h-2v2h1v6h2V9h-1z" />
</vector>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="@color/widget_bg" />
</shape>

View file

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="64dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:background="@drawable/widget_bg">
<ImageView
android:id="@+id/album_art"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:scaleType="centerCrop"
android:contentDescription="@string/widget_content_desc_album_art"/>
<LinearLayout
android:id="@+id/texts"
android:orientation="vertical"
android:layout_toRightOf="@id/album_art"
android:layout_toEndOf="@id/album_art"
android:layout_toLeftOf="@id/controls"
android:layout_toStartOf="@id/controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="8dp">
<TextView
android:id="@+id/title"
android:maxLines="1"
android:ellipsize="end"
android:textStyle="bold"
android:textSize="14sp"
android:textColor="@color/widget_title"
android:includeFontPadding="false"
android:freezesText="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/subtitle"
android:maxLines="1"
android:ellipsize="end"
android:textSize="12sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/album"
android:maxLines="1"
android:ellipsize="end"
android:textSize="11sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:visibility="gone"/>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="2dp"
android:indeterminate="false"
android:max="1000"
android:progress="0"
android:progressBackgroundTint="@color/widget_subtitle"
android:progressTint="@color/widget_icon_tint"/>
<LinearLayout
android:id="@+id/timing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal">
<TextView
android:id="@+id/time_elapsed"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/widget_time_elapsed_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="10sp"
android:includeFontPadding="false"/>
<TextView
android:id="@+id/time_total"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:text="@string/widget_time_duration_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="10sp"
android:includeFontPadding="false"/>
</LinearLayout>
<LinearLayout
android:id="@+id/controls_secondary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="4dp"
android:visibility="gone">
<ImageButton
android:id="@+id/btn_shuffle"
android:layout_width="36dp"
android:layout_height="36dp"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_shuffle"
android:src="@drawable/ic_shuffle"
android:tint="@color/widget_icon_tint"/>
<ImageButton
android:id="@+id/btn_repeat"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="4dp"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_repeat"
android:src="@drawable/ic_repeat"
android:tint="@color/widget_icon_tint"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/controls"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:orientation="horizontal"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ImageButton
android:id="@+id/btn_prev"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_skip_previous"
android:contentDescription="@string/widget_content_desc_prev"
android:tint="@color/widget_icon_tint"/>
<ImageButton
android:id="@+id/btn_play_pause"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_play"
android:contentDescription="@string/widget_content_desc_play_pause"
android:tint="@color/widget_icon_tint"/>
<ImageButton
android:id="@+id/btn_next"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_skip_next"
android:contentDescription="@string/widget_content_desc_next"
android:tint="@color/widget_icon_tint"/>
</LinearLayout>
</RelativeLayout>

View file

@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="200dp"
android:orientation="vertical"
android:padding="16dp"
android:background="@drawable/widget_bg">
<LinearLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false">
<ImageView
android:id="@+id/album_art"
android:layout_width="150dp"
android:layout_height="150dp"
android:scaleType="centerCrop"
android:contentDescription="@string/widget_content_desc_album_art" />
<LinearLayout
android:id="@+id/text_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_vertical">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/widget_title"
android:includeFontPadding="false"
android:freezesText="true" />
<TextView
android:id="@+id/subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textSize="14sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true" />
<TextView
android:id="@+id/album"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textSize="13sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true"
android:visibility="invisible" />
</LinearLayout>
</LinearLayout>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="6dp"
android:layout_marginTop="16dp"
android:indeterminate="false"
android:max="1000"
android:progress="0"
android:progressBackgroundTint="@color/widget_subtitle"
android:progressTint="@color/widget_icon_tint" />
<LinearLayout
android:id="@+id/timing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:orientation="horizontal">
<TextView
android:id="@+id/time_elapsed"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/widget_time_elapsed_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="12sp" />
<TextView
android:id="@+id/time_total"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:text="@string/widget_time_duration_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginBottom="4dp"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/btn_prev"
android:layout_width="0dp"
android:layout_height="52dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_prev"
android:src="@drawable/ic_skip_previous"
android:tint="@color/widget_icon_tint" />
<ImageButton
android:id="@+id/btn_play_pause"
android:layout_width="0dp"
android:layout_height="56dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_play_pause"
android:src="@drawable/ic_play"
android:tint="@color/widget_icon_tint" />
<ImageButton
android:id="@+id/btn_next"
android:layout_width="0dp"
android:layout_height="52dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_next"
android:src="@drawable/ic_skip_next"
android:tint="@color/widget_icon_tint" />
</LinearLayout>
<LinearLayout
android:id="@+id/controls_secondary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<ImageButton
android:id="@+id/btn_shuffle"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_shuffle"
android:src="@drawable/ic_shuffle"
android:tint="@color/widget_icon_tint" />
<ImageButton
android:id="@+id/btn_repeat"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_repeat"
android:src="@drawable/ic_repeat"
android:tint="@color/widget_icon_tint" />
</LinearLayout>
</LinearLayout>

View file

@ -0,0 +1,198 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="172dp"
android:padding="16dp"
android:orientation="vertical"
android:background="@drawable/widget_bg">
<LinearLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:baselineAligned="false"
android:gravity="center_vertical">
<FrameLayout
android:id="@+id/album_art_container"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center_vertical">
<ImageView
android:id="@+id/album_art"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:contentDescription="@string/widget_content_desc_album_art" />
</FrameLayout>
<LinearLayout
android:id="@+id/text_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_vertical">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/widget_title"
android:includeFontPadding="false"
android:freezesText="true" />
<TextView
android:id="@+id/subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textSize="14sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true" />
<TextView
android:id="@+id/album"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textSize="13sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true"
android:visibility="invisible" />
</LinearLayout>
</LinearLayout>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="6dp"
android:layout_marginTop="12dp"
android:indeterminate="false"
android:max="1000"
android:progress="0"
android:progressBackgroundTint="@color/widget_subtitle"
android:progressTint="@color/widget_icon_tint" />
<LinearLayout
android:id="@+id/timing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal">
<TextView
android:id="@+id/time_elapsed"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/widget_time_elapsed_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="12sp" />
<TextView
android:id="@+id/time_total"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:text="@string/widget_time_duration_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/controls_secondary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageButton
android:id="@+id/btn_shuffle"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_shuffle"
android:src="@drawable/ic_shuffle"
android:tint="@color/widget_icon_tint" />
<LinearLayout
android:id="@+id/controls"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:layout_weight="3"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/btn_prev"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_prev"
android:src="@drawable/ic_skip_previous"
android:tint="@color/widget_icon_tint" />
<ImageButton
android:id="@+id/btn_play_pause"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_play_pause"
android:src="@drawable/ic_play"
android:tint="@color/widget_icon_tint" />
<ImageButton
android:id="@+id/btn_next"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_next"
android:src="@drawable/ic_skip_next"
android:tint="@color/widget_icon_tint" />
</LinearLayout>
<ImageButton
android:id="@+id/btn_repeat"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_repeat"
android:src="@drawable/ic_repeat"
android:tint="@color/widget_icon_tint" />
</LinearLayout>
</LinearLayout>

View file

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="120dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingTop="8dp"
android:paddingBottom="12dp"
android:orientation="horizontal"
android:baselineAligned="false"
android:background="@drawable/widget_bg">
<FrameLayout
android:id="@+id/album_art_container"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_vertical">
<ImageView
android:id="@+id/album_art"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:contentDescription="@string/widget_content_desc_album_art" />
</FrameLayout>
<LinearLayout
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="12dp"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:id="@+id/text_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="@color/widget_title"
android:includeFontPadding="false"
android:freezesText="true" />
<LinearLayout
android:id="@+id/subtitle_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:baselineAligned="false">
<TextView
android:id="@+id/subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textSize="13sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true" />
<TextView
android:id="@+id/album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:gravity="end"
android:textAlignment="viewEnd"
android:textSize="12sp"
android:textColor="@color/widget_subtitle"
android:includeFontPadding="false"
android:freezesText="true"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_marginTop="4dp"
android:indeterminate="false"
android:max="1000"
android:progress="0"
android:progressBackgroundTint="@color/widget_subtitle"
android:progressTint="@color/widget_icon_tint" />
<LinearLayout
android:id="@+id/timing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal">
<TextView
android:id="@+id/time_elapsed"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/widget_time_elapsed_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="10sp" />
<TextView
android:id="@+id/time_total"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:text="@string/widget_time_duration_placeholder"
android:textColor="@color/widget_subtitle"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/controls_secondary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/btn_shuffle"
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_marginEnd="1dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_shuffle"
android:src="@drawable/ic_shuffle"
android:tint="@color/widget_icon_tint" />
<LinearLayout
android:id="@+id/controls"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/btn_prev"
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_prev"
android:src="@drawable/ic_skip_previous"
android:tint="@color/widget_icon_tint" />
<ImageButton
android:id="@+id/btn_play_pause"
android:layout_width="0dp"
android:layout_height="34dp"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_play_pause"
android:src="@drawable/ic_play"
android:tint="@color/widget_icon_tint" />
<ImageButton
android:id="@+id/btn_next"
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_next"
android:src="@drawable/ic_skip_next"
android:tint="@color/widget_icon_tint" />
</LinearLayout>
<ImageButton
android:id="@+id/btn_repeat"
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_marginStart="1dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:contentDescription="@string/widget_content_desc_repeat"
android:src="@drawable/ic_repeat"
android:tint="@color/widget_icon_tint" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="64dp"
android:paddingLeft="8dp"
android:paddingTop="0dp"
android:paddingRight="0dp"
android:paddingBottom="8dp"
android:background="@drawable/widget_bg">
<ImageView
android:id="@+id/album_art"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_splash_logo"
android:contentDescription="@string/widget_content_desc_album_art"/>
<LinearLayout
android:id="@+id/texts"
android:orientation="vertical"
android:layout_toEndOf="@id/album_art"
android:layout_toStartOf="@id/controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="8dp">
<TextView
android:id="@+id/title"
android:maxLines="1"
android:ellipsize="end"
android:textStyle="bold"
android:textSize="14sp"
android:textColor="@color/widget_title"
android:text="@string/widget_not_playing"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/subtitle"
android:maxLines="1"
android:ellipsize="end"
android:textSize="12sp"
android:textColor="@color/widget_subtitle"
android:text="@string/widget_placeholder_subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/controls"
android:layout_alignParentEnd="true"
android:orientation="horizontal"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ImageButton android:id="@+id/btn_prev"
android:layout_width="48dp" android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_skip_previous"
android:tint="@color/widget_icon_tint"
android:contentDescription="@string/widget_content_desc_prev"/>
<ImageButton android:id="@+id/btn_play_pause"
android:layout_width="48dp" android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_play"
android:tint="@color/widget_icon_tint"
android:contentDescription="@string/widget_content_desc_play_pause"/>
<ImageButton android:id="@+id/btn_next"
android:layout_width="48dp" android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_skip_next"
android:tint="@color/widget_icon_tint"
android:contentDescription="@string/widget_content_desc_next"/>
</LinearLayout>
</RelativeLayout>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="widget_bg">#CC000000</color>
<color name="widget_title">#FFFFFFFF</color>
<color name="widget_subtitle">#B3FFFFFF</color>
<color name="widget_icon_tint">#FFFFFFFF</color>
</resources>

View file

@ -90,6 +90,7 @@
<string name="exo_download_notification_channel_name">İndirilenler</string>
<string name="filter_info_selection">İki veya daha fazla filtre seçin</string>
<string name="filter_title">Filtre</string>
<string name="filter_artist">Sanatçıları filtrele</string>
<string name="filter_title_expanded">Türleri filtrele</string>
<string name="generic_list_page_count">(%1$d)</string>
<string name="generic_list_page_count_unknown">(+%1$d)</string>
@ -116,6 +117,7 @@
<string name="home_sync_starred_download">İndir</string>
<string name="home_sync_starred_subtitle">Bu parçaların indirilmesi önemli miktarda veri kullanabilir</string>
<string name="home_sync_starred_title">Eşitlenecek bazı yıldızlı parçalar var gibi görünüyor</string>
<string name="home_sync_starred_albums_subtitle">Yıldız ile işaretlenen albümler çevrimdışı kullanılabilir olacak</string>
<string name="home_title_best_of">En iyiler</string>
<string name="home_title_discovery">Keşfet</string>
<string name="home_title_discovery_shuffle_all_button">Tümünü karıştır</string>
@ -164,6 +166,7 @@
<string name="menu_add_button">Ekle</string>
<string name="menu_add_to_playlist_button">Çalma listesine ekle</string>
<string name="menu_download_all_button">Tümünü indir</string>
<string name="menu_rate_album">Albümü oyla</string>
<string name="menu_download_label">İndir</string>
<string name="menu_filter_all">Tümü</string>
<string name="menu_filter_download">İndirilenler</string>
@ -192,6 +195,7 @@
<string name="menu_sort_year">Yıl</string>
<string name="player_playback_speed">%1$.2fx</string>
<string name="player_queue_clean_all_button">Çalma sırasını temizle</string>
<string name="player_queue_save_queue_success">Kayıtlı oynatma sırası</string>
<string name="player_server_priority">Sunucu önceliği</string>
<string name="player_unknown_format">Bilinmeyen format</string>
<string name="player_transcoding">Dönüştürme</string>
@ -311,6 +315,7 @@
<string name="settings_podcast_summary">Etkinleştirildiğinde podcast bölümü görüntülenir. Tam etkili olması için uygulamayı yeniden başlatın.</string>
<string name="settings_audio_quality">Ses kalitesini göster</string>
<string name="settings_audio_quality_summary">Her ses parçası için bit hızı ve ses formatı gösterilecektir.</string>
<string name="settings_song_rating_summary">" "</string>
<string name="settings_item_rating">Öğe değerlemesini göster</string>
<string name="settings_item_rating_summary">Etkinleştirildiğinde, öğenin puanı ve favori olarak işaretlenip işaretlenmediği görüntülenir.</string>
<string name="settings_queue_syncing_countdown">Eşitleme zamanlayıcısı</string>
@ -340,6 +345,7 @@
<string name="settings_summary_transcoding_download">Dönüştürülmüş medyayı indir. Etkinleştirilirse indirme uç noktası kullanılmaz, bunun yerine aşağıdaki ayarlar geçerli olur. \n\n “İndirmeler için dönüştürme formatı” “Doğrudan indir” olarak ayarlanırsa dosyanın bit hızı değiştirilmez.</string>
<string name="settings_summary_transcoding_estimate_content_length">Dosya anlık olarak dönüştürüldüğünde, istemci genellikle parçanın süresini göstermez. Bu işlevi destekleyen sunuculardan çalınan parçanın süresini tahmin etmeleri istenebilir,
ancak yanıt süreleri daha uzun olabilir.</string>
<string name="settings_sync_starred_albums_for_offline_use_title">Çevrimdışı kullanım için yıldızlı albümleri senkronize et</string>
<string name="settings_sync_starred_tracks_for_offline_use_summary">Etkinleştirildiğinde, yıldızlı parçalar çevrimdışı kullanım için indirilecektir.</string>
<string name="settings_sync_starred_tracks_for_offline_use_title">Çevrimdışı kullanım için yıldızlı parçaları eşitle</string>
<string name="settings_theme">Tema</string>
@ -395,6 +401,8 @@
<string name="starred_sync_dialog_positive_button">Devam et ve indir</string>
<string name="starred_sync_dialog_summary">Yıldızlı parçaların indirilmesi yüksek miktarda veri gerektirebilir.</string>
<string name="starred_sync_dialog_title">Yıldızlı parçaları eşitle</string>
<string name="starred_album_sync_dialog_summary">Yıldızlı albümleri indirmek yüksek miktarda veri kullanımı gerektirebilir.</string>
<string name="starred_album_sync_dialog_title">Yıldızlı albümleri senkronize et</string>
<string name="streaming_cache_storage_dialog_sub_summary">Değişikliklerin geçerli olması için uygulamayı yeniden başlatın.</string>
<string name="streaming_cache_storage_dialog_summary">Önbelleğe alınmış dosyaların hedefini bir depolamadan diğerine değiştirmek, önceki depolamadaki önbellek dosyalarının silinmesine yol açabilir.</string>
<string name="streaming_cache_storage_dialog_title">Depolama seçeneğini seç</string>
@ -433,4 +441,16 @@
<string name="undraw_page">unDraw</string>
<string name="undraw_thanks">İllüstrasyonlarıyla bu uygulamayı daha güzel hale getirmemize yardımcı olan unDrawa özel teşekkürler.</string>
<string name="undraw_url">https://undraw.co/</string>
<string name="home_sync_starred_albums_title">Yıldızlı Albümleri Senkronize Et</string>
<string name="widget_label">Tempo Widget</string>
<string name="widget_not_playing">Şu an oynatılmıyor</string>
<string name="widget_placeholder_subtitle">Tempoyu aç</string>
<string name="widget_time_elapsed_placeholder">0:00</string>
<string name="widget_time_duration_placeholder">0:00</string>
<string name="widget_content_desc_album_art">Albüm kapağı</string>
<string name="widget_content_desc_play_pause">Çal/Duraklat</string>
<string name="widget_content_desc_next">Sonraki parça</string>
<string name="widget_content_desc_prev">Önceki parça</string>
<string name="settings_song_rating">Şarkının yıldız derecelendirmesini göster</string>
<string name="settings_sync_starred_albums_for_offline_use_summary">"Etkinleştirildiğinde yıldızlı albümler çevrimdışı kullanım için indirilecek. "</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Light theme: bright card with dark content -->
<color name="widget_bg">#CCFFFFFF</color>
<color name="widget_title">#DE000000</color>
<color name="widget_subtitle">#99000000</color>
<color name="widget_icon_tint">#DE000000</color>
<color name="widget_icon_tint_active">#FF6750A4</color>
</resources>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="widget_medium_min_height_dp">100</integer>
<integer name="widget_large_min_height_dp">160</integer>
<integer name="widget_expanded_min_height_dp">220</integer>
</resources>

View file

@ -472,6 +472,17 @@
<string name="undraw_page">unDraw</string>
<string name="undraw_thanks">A special thanks goes to unDraw without whose illustrations we could not have made this application more beautiful.</string>
<string name="undraw_url">https://undraw.co/</string>
<string name="widget_label">Tempo Widget</string>
<string name="widget_not_playing">Not playing</string>
<string name="widget_placeholder_subtitle">Open Tempo</string>
<string name="widget_time_elapsed_placeholder">0:00</string>
<string name="widget_time_duration_placeholder">0:00</string>
<string name="widget_content_desc_album_art">Album artwork</string>
<string name="widget_content_desc_play_pause">Play or pause</string>
<string name="widget_content_desc_next">Next track</string>
<string name="widget_content_desc_prev">Previous track</string>
<string name="widget_content_desc_shuffle">Toggle shuffle</string>
<string name="widget_content_desc_repeat">Change repeat mode</string>
<plurals name="home_sync_starred_albums_count">
<item quantity="one">%d album to sync</item>
<item quantity="other">%d albums to sync</item>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="64dp"
android:updatePeriodMillis="0"
android:resizeMode="horizontal|vertical"
android:initialLayout="@layout/widget_layout_compact"
android:previewImage="@drawable/ic_splash_logo"
android:previewLayout="@layout/widget_preview_compact"
android:widgetCategory="home_screen|keyguard" />