mirror of
https://gitlab.com/ultrasonic/ultrasonic.git
synced 2025-04-17 09:42:25 +03:00
Merge branch 'sleep-timer' into 'develop'
#1270 add sleep timer See merge request ultrasonic/ultrasonic!1177
This commit is contained in:
commit
1089e82489
@ -0,0 +1,40 @@
|
||||
package org.moire.ultrasonic.dialog
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.widget.Button
|
||||
import android.widget.NumberPicker
|
||||
import org.moire.ultrasonic.R
|
||||
|
||||
class SleepTimePickerDialog(context: Context, private val onTimeSetListener: OnTimeSetListener) :
|
||||
|
||||
Dialog(context) {
|
||||
|
||||
private val minMinutes: Int = 1
|
||||
private val maxxMinutes: Int = 90
|
||||
private val presetMinutes: Int = 30
|
||||
|
||||
private lateinit var minutePicker: NumberPicker
|
||||
|
||||
interface OnTimeSetListener {
|
||||
fun onTimeSet(minutes: Int)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.sleep_minutes_picker)
|
||||
|
||||
minutePicker = findViewById(R.id.minutePicker)
|
||||
val setButton = findViewById<Button>(R.id.setButton)
|
||||
|
||||
minutePicker.minValue = minMinutes
|
||||
minutePicker.maxValue = maxxMinutes
|
||||
minutePicker.value = presetMinutes
|
||||
|
||||
setButton.setOnClickListener {
|
||||
onTimeSetListener.onTimeSet(minutePicker.value)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
}
|
@ -71,6 +71,7 @@ import kotlin.math.min
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import org.koin.android.ext.android.inject
|
||||
import org.koin.androidx.scope.ScopeFragment
|
||||
@ -84,6 +85,7 @@ import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline
|
||||
import org.moire.ultrasonic.data.ActiveServerProvider.Companion.shouldUseId3Tags
|
||||
import org.moire.ultrasonic.data.RatingUpdate
|
||||
import org.moire.ultrasonic.databinding.CurrentPlayingBinding
|
||||
import org.moire.ultrasonic.dialog.SleepTimePickerDialog
|
||||
import org.moire.ultrasonic.domain.Identifiable
|
||||
import org.moire.ultrasonic.domain.MusicDirectory
|
||||
import org.moire.ultrasonic.domain.Track
|
||||
@ -713,6 +715,24 @@ class PlayerFragment :
|
||||
toggleFullScreenAlbumArt()
|
||||
return true
|
||||
}
|
||||
R.id.menu_item_sleep -> {
|
||||
val timePickerDialog = SleepTimePickerDialog(
|
||||
requireContext(),
|
||||
object : SleepTimePickerDialog.OnTimeSetListener {
|
||||
override fun onTimeSet(minutes: Int) {
|
||||
CoroutineScope(Dispatchers.Main).launch {
|
||||
delay(minutes * 60 * 1000L)
|
||||
launch(CommunicationError.getHandler(context)) {
|
||||
mediaPlayerManager.pause()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
timePickerDialog.show()
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.menu_item_clear_playlist -> {
|
||||
mediaPlayerManager.isShufflePlayEnabled = false
|
||||
mediaPlayerManager.clear()
|
||||
|
31
ultrasonic/src/main/res/drawable/time_sleep.xml
Normal file
31
ultrasonic/src/main/res/drawable/time_sleep.xml
Normal file
@ -0,0 +1,31 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="14dp"
|
||||
android:height="14dp"
|
||||
android:viewportWidth="14"
|
||||
android:viewportHeight="14">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="m0,0h14v14h-14z"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="m13.5,7c0,1.286 -0.381,2.542 -1.095,3.611 -0.714,1.069 -1.729,1.902 -2.917,2.394 -1.188,0.492 -2.495,0.621 -3.756,0.37 -1.261,-0.251 -2.419,-0.87 -3.328,-1.779s-1.528,-2.067 -1.779,-3.328c-0.251,-1.261 -0.122,-2.568 0.37,-3.756 0.492,-1.188 1.325,-2.203 2.394,-2.917 1.069,-0.714 2.326,-1.095 3.611,-1.095"
|
||||
android:strokeLineJoin="round"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000001"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="m7,4.5v2.5l-2.54,2.96"
|
||||
android:strokeLineJoin="round"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000001"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="m10,0.5h3.5l-3.5,4h3.5"
|
||||
android:strokeLineJoin="round"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000001"
|
||||
android:strokeLineCap="round"/>
|
||||
</group>
|
||||
</vector>
|
24
ultrasonic/src/main/res/layout/sleep_minutes_picker.xml
Normal file
24
ultrasonic/src/main/res/layout/sleep_minutes_picker.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp">
|
||||
|
||||
<NumberPicker
|
||||
android:id="@+id/minutePicker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/setButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/minutePicker"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/set_minutes_until_sleep" />
|
||||
|
||||
</RelativeLayout>
|
@ -4,6 +4,11 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
>
|
||||
|
||||
<item
|
||||
a:id="@+id/menu_item_sleep"
|
||||
a:icon="@drawable/time_sleep"
|
||||
app:showAsAction="ifRoom"
|
||||
a:title="@string/set_sleep_timer"/>
|
||||
<item
|
||||
a:id="@+id/menu_item_toggle_list"
|
||||
a:icon="@drawable/media_toggle_list"
|
||||
|
@ -458,6 +458,8 @@
|
||||
to the controller</string>
|
||||
<string name="shortcut_play_random_songs_short">Random songs</string>
|
||||
<string name="shortcut_play_random_songs_long">Play random songs</string>
|
||||
<string name="set_sleep_timer">set sleep timer</string>
|
||||
<string name="set_minutes_until_sleep">Set minutes until sleep</string>
|
||||
|
||||
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user