#15: Enabled "Add to playlist" in the search screen. Localized strings and improved UI.
This commit is contained in:
parent
54d4dc2235
commit
d796fca26b
|
@ -19,6 +19,7 @@ import androidx.core.graphics.drawable.toDrawable
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.github.apognu.otter.Otter
|
import com.github.apognu.otter.Otter
|
||||||
import com.github.apognu.otter.R
|
import com.github.apognu.otter.R
|
||||||
|
@ -380,7 +381,9 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
is Command.RefreshTrack -> refreshCurrentTrack(command.track)
|
is Command.RefreshTrack -> refreshCurrentTrack(command.track)
|
||||||
|
|
||||||
is Command.AddToPlaylist -> AddToPlaylistDialog.show(this@MainActivity, lifecycleScope, command.track)
|
is Command.AddToPlaylist -> if (lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) {
|
||||||
|
AddToPlaylistDialog.show(this@MainActivity, lifecycleScope, command.track)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,12 @@ package com.github.apognu.otter.activities
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.github.apognu.otter.R
|
import com.github.apognu.otter.R
|
||||||
import com.github.apognu.otter.adapters.SearchAdapter
|
import com.github.apognu.otter.adapters.SearchAdapter
|
||||||
|
import com.github.apognu.otter.fragments.AddToPlaylistDialog
|
||||||
import com.github.apognu.otter.fragments.AlbumsFragment
|
import com.github.apognu.otter.fragments.AlbumsFragment
|
||||||
import com.github.apognu.otter.fragments.ArtistsFragment
|
import com.github.apognu.otter.fragments.ArtistsFragment
|
||||||
import com.github.apognu.otter.repositories.*
|
import com.github.apognu.otter.repositories.*
|
||||||
|
@ -47,6 +49,16 @@ class SearchActivity : AppCompatActivity() {
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
|
||||||
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
|
CommandBus.get().collect { command ->
|
||||||
|
when (command) {
|
||||||
|
is Command.AddToPlaylist -> if (lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) {
|
||||||
|
AddToPlaylistDialog.show(this@SearchActivity, lifecycleScope, command.track)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
lifecycleScope.launch(Dispatchers.IO) {
|
||||||
EventBus.get().collect { message ->
|
EventBus.get().collect { message ->
|
||||||
when (message) {
|
when (message) {
|
||||||
|
|
|
@ -215,6 +215,7 @@ class SearchAdapter(private val context: Context?, private val listener: OnSearc
|
||||||
R.id.track_add_to_queue -> CommandBus.send(Command.AddToQueue(listOf(track)))
|
R.id.track_add_to_queue -> CommandBus.send(Command.AddToQueue(listOf(track)))
|
||||||
R.id.track_play_next -> CommandBus.send(Command.PlayNext(track))
|
R.id.track_play_next -> CommandBus.send(Command.PlayNext(track))
|
||||||
R.id.track_pin -> CommandBus.send(Command.PinTrack(track))
|
R.id.track_pin -> CommandBus.send(Command.PinTrack(track))
|
||||||
|
R.id.track_add_to_playlist -> CommandBus.send(Command.AddToPlaylist(track))
|
||||||
R.id.queue_remove -> CommandBus.send(Command.RemoveFromQueue(track))
|
R.id.queue_remove -> CommandBus.send(Command.RemoveFromQueue(track))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import kotlinx.coroutines.launch
|
||||||
object AddToPlaylistDialog {
|
object AddToPlaylistDialog {
|
||||||
fun show(activity: Activity, lifecycleScope: CoroutineScope, track: Track) {
|
fun show(activity: Activity, lifecycleScope: CoroutineScope, track: Track) {
|
||||||
val dialog = AlertDialog.Builder(activity).run {
|
val dialog = AlertDialog.Builder(activity).run {
|
||||||
setTitle("Add track to playlist")
|
setTitle(activity.getString(R.string.playlist_add_to))
|
||||||
setView(activity.layoutInflater.inflate(R.layout.dialog_add_to_playlist, null))
|
setView(activity.layoutInflater.inflate(R.layout.dialog_add_to_playlist, null))
|
||||||
|
|
||||||
create()
|
create()
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="8dp"
|
android:layout_marginHorizontal="16dp"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:hint="New playlist..."
|
android:hint="@string/playlist_add_to_new"
|
||||||
app:boxStrokeColor="@color/controlForeground"
|
app:boxStrokeColor="@color/controlForeground"
|
||||||
app:hintTextColor="@color/controlForeground"
|
app:hintTextColor="@color/controlForeground"
|
||||||
app:placeholderTextColor="@color/controlForeground">
|
app:placeholderTextColor="@color/controlForeground">
|
||||||
|
@ -30,9 +30,9 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_marginHorizontal="8dp"
|
android:layout_marginHorizontal="16dp"
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:text="Create playlist"
|
android:text="@string/playlist_add_to_create"
|
||||||
android:textColor="@color/controlForeground"
|
android:textColor="@color/controlForeground"
|
||||||
app:rippleColor="@color/ripple" />
|
app:rippleColor="@color/ripple" />
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/track_add_to_playlist"
|
android:id="@+id/track_add_to_playlist"
|
||||||
android:title="Add to playlist" />
|
android:title="@string/playlist_add_to" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/track_pin"
|
android:id="@+id/track_pin"
|
||||||
|
|
|
@ -113,6 +113,9 @@
|
||||||
<item quantity="one">%1$d piste • %2$s</item>
|
<item quantity="one">%1$d piste • %2$s</item>
|
||||||
<item quantity="other">%1$d pistes • %2$s</item>
|
<item quantity="other">%1$d pistes • %2$s</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<string name="playlist_add_to">Ajouter à une playlist</string>
|
||||||
|
<string name="playlist_add_to_new">Nouvelle playlist...</string>
|
||||||
|
<string name="playlist_add_to_create">Créer playlist</string>
|
||||||
<string name="filters">Filtres</string>
|
<string name="filters">Filtres</string>
|
||||||
<string name="fiters_all">Toute la musique</string>
|
<string name="fiters_all">Toute la musique</string>
|
||||||
<string name="filters_my_music">Ma musique</string>
|
<string name="filters_my_music">Ma musique</string>
|
||||||
|
|
|
@ -114,6 +114,9 @@
|
||||||
<item quantity="one">%1$d track • %2$s"</item>
|
<item quantity="one">%1$d track • %2$s"</item>
|
||||||
<item quantity="other">%1$d tracks • %2$s"</item>
|
<item quantity="other">%1$d tracks • %2$s"</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<string name="playlist_add_to">Add to playlist</string>
|
||||||
|
<string name="playlist_add_to_new">New playlist…</string>
|
||||||
|
<string name="playlist_add_to_create">Create playlist</string>
|
||||||
<string name="filters">Filters</string>
|
<string name="filters">Filters</string>
|
||||||
<string name="fiters_all">All music</string>
|
<string name="fiters_all">All music</string>
|
||||||
<string name="filters_my_music">My music</string>
|
<string name="filters_my_music">My music</string>
|
||||||
|
|
Loading…
Reference in New Issue