Skip to content
Snippets Groups Projects
Commit dc0c8d99 authored by Duncan McNamara's avatar Duncan McNamara
Browse files

Rename PlaylistActivity to HeaderMediaListActivity

parent 5c4a6844
No related branches found
No related tags found
1 merge request!1337Album view rework based on #2170
......@@ -9,6 +9,8 @@ import androidx.test.espresso.contrib.DrawerActions.*
import androidx.test.espresso.matcher.RootMatchers.*
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.rule.ActivityTestRule
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ObsoleteCoroutinesApi
import org.hamcrest.Matchers.*
import org.junit.Rule
import org.junit.Test
......@@ -20,12 +22,14 @@ import org.videolan.vlc.databinding.AudioBrowserItemBinding
import org.videolan.vlc.gui.audio.AudioBrowserAdapter
import org.videolan.vlc.gui.audio.AudioBrowserFragment
class PlaylistActivityUITest: BaseUITest() {
@ObsoleteCoroutinesApi
@ExperimentalCoroutinesApi
class HeaderMediaListActivityUITest: BaseUITest() {
@Rule
@JvmField
val activityTestRule = ActivityTestRule(PlaylistActivity::class.java, true, false)
val activityTestRule = ActivityTestRule(HeaderMediaListActivity::class.java, true, false)
lateinit var activity: PlaylistActivity
lateinit var activity: HeaderMediaListActivity
override fun beforeTest() {
// TODO: Hack because of IO Dispatcher used in MediaParsingService channel
......
......@@ -472,7 +472,7 @@
android:theme="@style/Theme.VLC"
android:windowSoftInputMode="adjustPan"/>
<activity
android:name=".gui.PlaylistActivity"
android:name=".gui.HeaderMediaListActivity"
android:theme="@style/Theme.VLC.NoStatus"/>
<activity
android:name=".gui.InfoActivity"
......
......@@ -75,7 +75,9 @@ import org.videolan.vlc.viewmodels.mobile.PlaylistViewModel
import org.videolan.vlc.viewmodels.mobile.getViewModel
import java.util.*
open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<MediaLibraryItem>, IListEventsHandler, ActionMode.Callback, View.OnClickListener, CtxActionReceiver, Filterable, SearchView.OnQueryTextListener, MenuItem.OnActionExpandListener {
@ObsoleteCoroutinesApi
@ExperimentalCoroutinesApi
open class HeaderMediaListActivity : AudioPlayerContainerActivity(), IEventsHandler<MediaLibraryItem>, IListEventsHandler, ActionMode.Callback, View.OnClickListener, CtxActionReceiver, Filterable, SearchView.OnQueryTextListener, MenuItem.OnActionExpandListener {
private lateinit var searchView: SearchView
private lateinit var itemTouchHelperCallback: SwipeDragItemTouchHelperCallback
......@@ -142,7 +144,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
}
}
if (cover != null) {
binding.cover = BitmapDrawable(this@PlaylistActivity.resources, cover)
binding.cover = BitmapDrawable(this@HeaderMediaListActivity.resources, cover)
binding.appbar.setExpanded(true, true)
if (savedInstanceState != null) {
if (fabVisibility)
......@@ -161,7 +163,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
val lp = binding.fab.layoutParams as CoordinatorLayout.LayoutParams
lp.anchorId = R.id.songs
lp.anchorGravity = Gravity.BOTTOM or Gravity.END
lp.behavior = FloatingActionButtonBehavior(this@PlaylistActivity, null)
lp.behavior = FloatingActionButtonBehavior(this@HeaderMediaListActivity, null)
binding.fab.layoutParams = lp
binding.fab.show()
}
......@@ -429,13 +431,13 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
for (item in items) {
val deleteAction = kotlinx.coroutines.Runnable {
lifecycleScope.launch {
MediaUtils.deleteItem(this@PlaylistActivity, item) {
UiTools.snacker(this@PlaylistActivity, getString(R.string.msg_delete_failed, it.title))
MediaUtils.deleteItem(this@HeaderMediaListActivity, item) {
UiTools.snacker(this@HeaderMediaListActivity, getString(R.string.msg_delete_failed, it.title))
}
if (isStarted()) viewModel.refresh()
}
}
if (Permissions.checkWritePermission(this@PlaylistActivity, item, deleteAction)) deleteAction.run()
if (Permissions.checkWritePermission(this@HeaderMediaListActivity, item, deleteAction)) deleteAction.run()
}
}
}
......@@ -449,7 +451,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
if (parentPath != null && FileUtils.deleteFile(path) && media.id > 0L && !foldersToReload.contains(parentPath)) {
foldersToReload.add(parentPath)
} else
UiTools.snacker(this@PlaylistActivity, getString(R.string.msg_delete_failed, media.title))
UiTools.snacker(this@HeaderMediaListActivity, getString(R.string.msg_delete_failed, media.title))
}
for (folder in foldersToReload) mediaLibrary.reload(folder)
}
......@@ -473,7 +475,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
}
}
var removedMessage = if (indexes.size>1) getString(R.string.removed_from_playlist_anonymous) else getString(R.string.remove_playlist_item,list.first().title)
UiTools.snackerWithCancel(this@PlaylistActivity, removedMessage, action = {}) {
UiTools.snackerWithCancel(this@HeaderMediaListActivity, removedMessage, action = {}) {
for ((key, value) in itemsRemoved) {
playlist.add(value, key)
}
......
......@@ -194,7 +194,7 @@ class PlaylistFragment : BaseAudioBrowser<PlaylistsViewModel>(), SwipeRefreshLay
override fun onClick(v: View, position: Int, item: MediaLibraryItem) {
if (actionMode == null) {
val i = Intent(activity, PlaylistActivity::class.java)
val i = Intent(activity, HeaderMediaListActivity::class.java)
i.putExtra(AudioBrowserFragment.TAG_ITEM, item)
startActivity(i)
} else super.onClick(v, position, item)
......
......@@ -42,6 +42,7 @@ import org.videolan.vlc.R
import org.videolan.vlc.gui.ContentActivity
import org.videolan.vlc.gui.PlaylistActivity
import org.videolan.vlc.gui.helpers.UiTools
import org.videolan.vlc.gui.HeaderMediaListActivity
import org.videolan.vlc.gui.view.FastScroller
import org.videolan.vlc.gui.view.RecyclerSectionItemGridDecoration
import org.videolan.vlc.media.MediaUtils
......@@ -210,7 +211,7 @@ class AudioAlbumsSongsFragment : BaseAudioBrowser<AlbumSongsViewModel>(), SwipeR
return
}
if (item is Album) {
val i = Intent(activity, PlaylistActivity::class.java)
val i = Intent(activity, HeaderMediaListActivity::class.java)
i.putExtra(AudioBrowserFragment.TAG_ITEM, item)
startActivity(i)
} else {
......
......@@ -50,7 +50,7 @@ import org.videolan.tools.putSingle
import org.videolan.vlc.R
import org.videolan.vlc.gui.AudioPlayerContainerActivity
import org.videolan.vlc.gui.ContentActivity
import org.videolan.vlc.gui.PlaylistActivity
import org.videolan.vlc.gui.HeaderMediaListActivity
import org.videolan.vlc.gui.SecondaryActivity
import org.videolan.vlc.gui.helpers.UiTools
import org.videolan.vlc.gui.view.EmptyLoadingState
......@@ -362,7 +362,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
i.putExtra(TAG_ITEM, item)
}
MediaLibraryItem.TYPE_ALBUM -> {
i = Intent(activity, PlaylistActivity::class.java)
i = Intent(activity, HeaderMediaListActivity::class.java)
i.putExtra(TAG_ITEM, item)
}
else -> return
......
......@@ -24,16 +24,20 @@ import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ObsoleteCoroutinesApi
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.interfaces.media.Album
import org.videolan.medialibrary.interfaces.media.MediaWrapper
import org.videolan.medialibrary.interfaces.media.Playlist
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.vlc.gui.PlaylistActivity
import org.videolan.vlc.gui.HeaderMediaListActivity
import org.videolan.vlc.providers.medialibrary.MedialibraryProvider
import org.videolan.vlc.providers.medialibrary.TracksProvider
import org.videolan.vlc.viewmodels.MedialibraryViewModel
@ExperimentalCoroutinesApi
class PlaylistViewModel(context: Context, val playlist: MediaLibraryItem) : MedialibraryViewModel(context) {
val tracksProvider = TracksProvider(playlist, context, this)
......@@ -60,4 +64,6 @@ class PlaylistViewModel(context: Context, val playlist: MediaLibraryItem) : Medi
}
}
internal fun PlaylistActivity.getViewModel(playlist: MediaLibraryItem) = ViewModelProvider(this, PlaylistViewModel.Factory(this, playlist)).get(PlaylistViewModel::class.java)
\ No newline at end of file
@ObsoleteCoroutinesApi
@ExperimentalCoroutinesApi
internal fun HeaderMediaListActivity.getViewModel(playlist: MediaLibraryItem) = ViewModelProvider(this, PlaylistViewModel.Factory(this, playlist)).get(PlaylistViewModel::class.java)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment