diff --git a/app/app.iml b/app/app.iml index d1399de..8b4c814 100644 --- a/app/app.iml +++ b/app/app.iml @@ -135,7 +135,6 @@ - diff --git a/app/src/main/java/com/example/mear/activities/MainActivity.kt b/app/src/main/java/com/example/mear/activities/MainActivity.kt index c775225..cd404ff 100644 --- a/app/src/main/java/com/example/mear/activities/MainActivity.kt +++ b/app/src/main/java/com/example/mear/activities/MainActivity.kt @@ -38,7 +38,8 @@ import kotlinx.coroutines.runBlocking class MainActivity : AppCompatActivity() { private var musicService: MusicService? = null - private var serviceBinded: Boolean? = null + private var serviceBinded: Boolean? = false + private var repeatOn: Boolean? = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -100,6 +101,9 @@ class MainActivity : AppCompatActivity() { ShuffleTracks.setOnClickListener { toggleShuffle() } + RepeatTrack.setOnClickListener { + toggleRepeat() + } SettingsLink.setOnClickListener { val intent = Intent(this, SettingsActivity::class.java) try { @@ -134,6 +138,25 @@ class MainActivity : AppCompatActivity() { } } } + private fun toggleRepeat() { + val repeatText = RepeatTrack.text.toString() + val on = resources.getString(R.string.repeat_on) + val off = resources.getString(R.string.repeat_off) + when (repeatText) { + on -> { + repeatOn = false + RepeatTrack.text = off + } + off -> { + repeatOn = true + RepeatTrack.text = on + } + else -> { + repeatOn = false + RepeatTrack.text = off + } + } + } private fun playSongTrack() { PlayTrack.isEnabled = false @@ -153,7 +176,7 @@ class MainActivity : AppCompatActivity() { private fun playNextSongTrack() { NextTrack.isEnabled = false try { - val controls = PlayControls(shuffleOn!!) + val controls = PlayControls(shuffleOn!!, repeatOn!!) musicService!!.playNextTrack(controls) configureTrackDisplay() @@ -167,7 +190,7 @@ class MainActivity : AppCompatActivity() { private fun playPreviousSongTrack() { PreviousTrack.isEnabled = false try { - val controls = PlayControls(shuffleOn!!) + val controls = PlayControls(shuffleOn!!, repeatOn!!) musicService!!.playPreviousTrack(controls) configureTrackDisplay() @@ -335,5 +358,4 @@ class MainActivity : AppCompatActivity() { private var musicHandler: Handler? = Handler() private var shuffleOn: Boolean? = false - } diff --git a/app/src/main/java/com/example/mear/models/PlayControls.kt b/app/src/main/java/com/example/mear/models/PlayControls.kt index d019999..7973ab1 100644 --- a/app/src/main/java/com/example/mear/models/PlayControls.kt +++ b/app/src/main/java/com/example/mear/models/PlayControls.kt @@ -1,4 +1,4 @@ package com.example.mear.models -data class PlayControls(val shuffleOn: Boolean) { +data class PlayControls(val shuffleOn: Boolean, val repeatOn: Boolean) { } \ No newline at end of file diff --git a/app/src/main/java/com/example/mear/playback/service/MusicService.kt b/app/src/main/java/com/example/mear/playback/service/MusicService.kt index 46cf891..153beae 100644 --- a/app/src/main/java/com/example/mear/playback/service/MusicService.kt +++ b/app/src/main/java/com/example/mear/playback/service/MusicService.kt @@ -24,6 +24,7 @@ class MusicService: Service() { private var trackPlayer: MediaPlayer? = null private var currentSongIndex: Int? = null private var shuffleOn: Boolean? = false + private var repeatOn: Boolean? = false private val mBinder = LocalBinder() private val seconds = 4 @@ -131,6 +132,7 @@ class MusicService: Service() { } fun configureControl(controls: PlayControls) { shuffleOn = controls.shuffleOn + repeatOn = controls.repeatOn } fun playNextTrack(controls: PlayControls) { try { @@ -159,6 +161,9 @@ class MusicService: Service() { private fun fetchSongIndex(playType: PlayTypes): Int { var songIndex: Int? = currentSongIndex + if (repeatOn!!) { + return songIndex!! + } val songCount = retrieveSongCount() try { @@ -259,9 +264,9 @@ class MusicService: Service() { private fun retrieveSongCount(): Int? { try { - var db = DatabaseManager(this) + //var db = DatabaseManager(this) var trackDb = TrackRepository(this) - val count = trackDb.getSongCount() + val count = TrackRepository(this).getSongCount() return count } diff --git a/app/src/main/res/layout/fragment_track_flow.xml b/app/src/main/res/layout/fragment_track_flow.xml index 2b4b066..c3f3eec 100644 --- a/app/src/main/res/layout/fragment_track_flow.xml +++ b/app/src/main/res/layout/fragment_track_flow.xml @@ -24,7 +24,7 @@ android:layout_marginTop="8dp" android:layout_marginEnd="4dp" android:layout_marginBottom="8dp" - android:text="ROff" + android:text="@string/repeat_off" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 92bd98a..d031cf3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,6 +10,8 @@ SOn SOff + ROn + ROff Settings 0:00