Browse Source

#15: Enabled "Add to playlist" in the search screen. Localized strings and improved UI.

housekeeping/remove-warnings
Antoine POPINEAU 4 years ago
parent
commit
d796fca26b
No known key found for this signature in database
GPG Key ID: A78AC64694F84063
  1. 5
      app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt
  2. 12
      app/src/main/java/com/github/apognu/otter/activities/SearchActivity.kt
  3. 1
      app/src/main/java/com/github/apognu/otter/adapters/SearchAdapter.kt
  4. 2
      app/src/main/java/com/github/apognu/otter/fragments/AddToPlaylistDialog.kt
  5. 8
      app/src/main/res/layout/dialog_add_to_playlist.xml
  6. 2
      app/src/main/res/menu/row_track.xml
  7. 3
      app/src/main/res/values-fr/strings.xml
  8. 3
      app/src/main/res/values/strings.xml

5
app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt

@ -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)
}
} }
} }
} }

12
app/src/main/java/com/github/apognu/otter/activities/SearchActivity.kt

@ -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) {

1
app/src/main/java/com/github/apognu/otter/adapters/SearchAdapter.kt

@ -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))
} }

2
app/src/main/java/com/github/apognu/otter/fragments/AddToPlaylistDialog.kt

@ -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()

8
app/src/main/res/layout/dialog_add_to_playlist.xml

@ -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" />

2
app/src/main/res/menu/row_track.xml

@ -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"

3
app/src/main/res/values-fr/strings.xml

@ -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>

3
app/src/main/res/values/strings.xml

@ -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…
Cancel
Save