diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt index 2c5ab8589..14bad2579 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt @@ -20,8 +20,8 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity import code.name.monkey.retromusic.activities.tageditor.AbsTagEditorActivity import code.name.monkey.retromusic.activities.tageditor.AlbumTagEditorActivity -import code.name.monkey.retromusic.adapter.album.HorizontalAlbumAdapter import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter +import code.name.monkey.retromusic.album.album.HorizontalAlbumAdapter import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog import code.name.monkey.retromusic.dialogs.DeleteSongsDialog import code.name.monkey.retromusic.extensions.ripAlpha diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt index 980e98655..f9b917225 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt @@ -20,8 +20,8 @@ import code.name.monkey.appthemehelper.util.MaterialUtil import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity -import code.name.monkey.retromusic.adapter.album.AlbumAdapter -import code.name.monkey.retromusic.adapter.album.HorizontalAlbumAdapter +import code.name.monkey.retromusic.album.album.AlbumAdapter +import code.name.monkey.retromusic.album.album.HorizontalAlbumAdapter import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog import code.name.monkey.retromusic.extensions.ripAlpha diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index ac724d2e0..116c73500 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -117,6 +117,14 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP } } + fun setDetailsFragments(fragment: Fragment, tag: String) { + supportFragmentManager.beginTransaction() + .add(R.id.fragment_container, fragment, tag) + .addToBackStack(tag) + .commit() + currentFragment = fragment as MainActivityFragmentCallbacks + } + private fun restoreCurrentFragment() { currentFragment = supportFragmentManager.findFragmentById(R.id.fragment_container) as MainActivityFragmentCallbacks } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt index dc38bf15f..4ce778201 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt @@ -10,7 +10,7 @@ import androidx.appcompat.widget.AppCompatTextView import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.adapter.album.AlbumFullWidthAdapter +import code.name.monkey.retromusic.album.album.AlbumFullWidthAdapter import code.name.monkey.retromusic.adapter.artist.ArtistAdapter import code.name.monkey.retromusic.adapter.song.SongAdapter import code.name.monkey.retromusic.extensions.show diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt deleted file mode 100644 index 1a85231f9..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt +++ /dev/null @@ -1,71 +0,0 @@ -package code.name.monkey.retromusic.adapter.album - -import android.graphics.drawable.Drawable -import android.view.View -import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity -import code.name.monkey.appthemehelper.util.ColorUtil -import code.name.monkey.appthemehelper.util.MaterialValueHelper -import code.name.monkey.retromusic.glide.RetroMusicColoredTarget -import code.name.monkey.retromusic.glide.SongGlideRequest -import code.name.monkey.retromusic.helper.HorizontalAdapterHelper -import code.name.monkey.retromusic.interfaces.CabHolder -import code.name.monkey.retromusic.model.Album -import code.name.monkey.retromusic.util.MusicUtil -import com.bumptech.glide.Glide -import java.util.* - -class HorizontalAlbumAdapter( - activity: AppCompatActivity, - dataSet: ArrayList, - usePalette: Boolean, - cabHolder: CabHolder? -) : AlbumAdapter( - activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, usePalette, cabHolder -) { - - override fun createViewHolder(view: View, viewType: Int): ViewHolder { - val params = view.layoutParams as ViewGroup.MarginLayoutParams - HorizontalAdapterHelper.applyMarginToLayoutParams(activity, params, viewType) - return ViewHolder(view) - } - - override fun setColors(color: Int, holder: ViewHolder) { - holder.title?.setTextColor(MaterialValueHelper.getPrimaryTextColor(activity, ColorUtil.isColorLight(color))) - holder.text?.setTextColor(MaterialValueHelper.getSecondaryTextColor(activity, ColorUtil.isColorLight(color))) - } - - override fun loadAlbumCover(album: Album, holder: ViewHolder) { - if (holder.image == null) return - - SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) - .checkIgnoreMediaStore(activity).generatePalette(activity).build() - .into(object : RetroMusicColoredTarget(holder.image!!) { - override fun onLoadCleared(placeholder: Drawable?) { - super.onLoadCleared(placeholder) - setColors(albumArtistFooterColor, holder) - } - - override fun onColorReady(color: Int) { - if (usePalette) setColors(color, holder) - else setColors(albumArtistFooterColor, holder) - } - }) - } - - override fun getAlbumText(album: Album): String? { - return MusicUtil.getYearString(album.year) - } - - override fun getItemViewType(position: Int): Int { - return HorizontalAdapterHelper.getItemViewtype(position, itemCount) - } - - override fun getItemCount(): Int { - return dataSet.size - } - - companion object { - val TAG: String = AlbumAdapter::class.java.simpleName - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/album/AlbumDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/album/AlbumDetailsFragment.kt new file mode 100644 index 000000000..8ff674f90 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/album/AlbumDetailsFragment.kt @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2019 Hemanth Savarala. + * + * Licensed under the GNU General Public License v3 + * + * This is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by + * the Free Software Foundation either version 3 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + */ + +package code.name.monkey.retromusic.album + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.retromusic.App +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter +import code.name.monkey.retromusic.album.album.HorizontalAlbumAdapter +import code.name.monkey.retromusic.extensions.show +import code.name.monkey.retromusic.extensions.withArgs +import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment +import code.name.monkey.retromusic.glide.ArtistGlideRequest +import code.name.monkey.retromusic.glide.RetroMusicColoredTarget +import code.name.monkey.retromusic.glide.SongGlideRequest +import code.name.monkey.retromusic.interfaces.CabHolder +import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks +import code.name.monkey.retromusic.model.Album +import code.name.monkey.retromusic.model.Artist +import code.name.monkey.retromusic.mvp.presenter.AlbumDetailsPresenter +import code.name.monkey.retromusic.mvp.presenter.AlbumDetailsView +import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.RetroColorUtil +import com.afollestad.materialcab.MaterialCab +import com.bumptech.glide.Glide +import kotlinx.android.synthetic.main.activity_album.* +import kotlinx.android.synthetic.main.activity_album_content.* +import javax.inject.Inject + +/** + * Created by hemanths on 2019-12-15. + */ + +class AlbumDetailsFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, AlbumDetailsView, CabHolder { + @Inject + lateinit var albumDetailsPresenter: AlbumDetailsPresenter + + private lateinit var album: Album + private lateinit var cab: MaterialCab + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_album_details, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + mainActivity.toggleBottomNavigationView(true) + + App.musicComponent.inject(this) + albumDetailsPresenter.attachView(this) + + ActivityCompat.startPostponedEnterTransition(requireActivity()) + + val albumId: Int? = arguments?.getInt(EXTRA_BUNDLE_ALBUM_ID) + if (albumId != null) { + albumDetailsPresenter.loadAlbum(albumId) + } + } + + companion object { + private const val EXTRA_BUNDLE_ALBUM_ID: String = "extra_bundle_album_id" + + fun newInstance(albumId: Int): AlbumDetailsFragment = AlbumDetailsFragment().withArgs { + putInt(EXTRA_BUNDLE_ALBUM_ID, albumId) + } + } + + override fun handleBackPress(): Boolean { + return true + } + + override fun album(album: Album) { + if (album.songs.isNullOrEmpty()) { + requireActivity().onBackPressed() + return + } + this.album = album + loadAlbumCover(album) + + albumTitle.text = album.title + if (MusicUtil.getYearString(album.year) == "-") { + albumText.text = String.format("%s • %s", album.artistName, MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(requireContext(), album.songs))) + } else { + albumText.text = String.format("%s • %s • %s", album.artistName, MusicUtil.getYearString(album.year), MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(requireContext(), album.songs))) + } + + albumDetailsPresenter.loadMore(album.artistId) + + val simpleSongAdapter = SimpleSongAdapter(requireActivity() as AppCompatActivity, java.util.ArrayList(), R.layout.item_song, this) + recyclerView.apply { + layoutManager = LinearLayoutManager(context) + itemAnimator = DefaultItemAnimator() + isNestedScrollingEnabled = false + adapter = simpleSongAdapter + } + + } + + private fun loadAlbumCover(album: Album) { + SongGlideRequest.Builder.from(Glide.with(requireContext()), album.safeGetFirstSong()) + .checkIgnoreMediaStore(requireContext()) + .generatePalette(requireContext()) + .build() + .dontAnimate() + .dontTransform() + .into(object : RetroMusicColoredTarget(image) { + override fun onColorReady(color: Int) { + setColors(color) + } + }) + } + + private fun setColors(color: Int) { + + } + + override fun complete() { + ActivityCompat.postponeEnterTransition(requireActivity()) + } + + override fun loadArtistImage(artist: Artist) { + ArtistGlideRequest.Builder.from(Glide.with(requireContext()), artist) + .generatePalette(requireContext()).build() + .dontAnimate() + .dontTransform().into(object : RetroMusicColoredTarget(artistImage as ImageView) { + override fun onColorReady(color: Int) { + + } + }) + + } + + override fun moreAlbums(albums: ArrayList) { + moreTitle.show() + moreRecyclerView.show() + moreTitle.text = String.format(getString(R.string.label_more_from), album.artistName) + + val albumAdapter = HorizontalAlbumAdapter(requireActivity() as AppCompatActivity, albums, false, null) + moreRecyclerView.layoutManager = GridLayoutManager(requireContext(), 1, GridLayoutManager.HORIZONTAL, false) + moreRecyclerView.adapter = albumAdapter + } + + override fun openCab(menuRes: Int, callback: MaterialCab.Callback): MaterialCab { + cab.let { + if (it.isActive) it.finish() + } + cab = MaterialCab(requireActivity() as AppCompatActivity, R.id.cab_stub) + .setMenu(menuRes) + .setCloseDrawableRes(R.drawable.ic_close_white_24dp) + .setBackgroundColor(RetroColorUtil.shiftBackgroundColorForLightText(ATHUtil.resolveColor(requireContext(), R.attr.colorSurface))) + .start(callback) + return cab + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/album/AlbumDetailsInterface.kt b/app/src/main/java/code/name/monkey/retromusic/album/AlbumDetailsInterface.kt new file mode 100644 index 000000000..89f627a7f --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/album/AlbumDetailsInterface.kt @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2019 Hemanth Savarala. + * + * Licensed under the GNU General Public License v3 + * + * This is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by + * the Free Software Foundation either version 3 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + */ + +package code.name.monkey.retromusic.album + +/** + * Created by hemanths on 2019-12-15. + */ +interface AlbumDetailsInterface { + fun onAlbumClick(albumId: Int) +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/album/album/AlbumAdapter.kt similarity index 93% rename from app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt rename to app/src/main/java/code/name/monkey/retromusic/album/album/AlbumAdapter.kt index 3c064e4c9..9f9c6cf37 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/album/album/AlbumAdapter.kt @@ -1,4 +1,4 @@ -package code.name.monkey.retromusic.adapter.album +package code.name.monkey.retromusic.album.album import android.app.ActivityOptions import android.content.res.ColorStateList @@ -13,6 +13,7 @@ import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder +import code.name.monkey.retromusic.album.AlbumDetailsInterface import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -22,7 +23,6 @@ import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil -import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import com.bumptech.glide.Glide import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView @@ -32,7 +32,8 @@ open class AlbumAdapter( dataSet: ArrayList, protected var itemLayoutRes: Int, usePalette: Boolean, - cabHolder: CabHolder? + cabHolder: CabHolder?, + private val albumDetailsInterface: AlbumDetailsInterface? = null ) : AbsMultiSelectAdapter( activity, cabHolder, @@ -174,14 +175,11 @@ open class AlbumAdapter( if (isInQuickSelectMode) { toggleChecked(adapterPosition) } else { - val activityOptions = ActivityOptions.makeSceneTransitionAnimation( - activity, image, activity.getString( + val activityOptions = ActivityOptions.makeSceneTransitionAnimation(activity, image, activity.getString( R.string.transition_album_art - ) - ) - NavigationUtil.goToAlbumOptions( - activity, dataSet[adapterPosition].id, activityOptions - ) + )) + albumDetailsInterface?.onAlbumClick(dataSet[adapterPosition].id) + //NavigationUtil.goToAlbumOptions(activity, dataSet[adapterPosition].id, activityOptions) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/album/album/AlbumCoverPagerAdapter.kt similarity index 98% rename from app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt rename to app/src/main/java/code/name/monkey/retromusic/album/album/AlbumCoverPagerAdapter.kt index 3560ba701..d4b240bdb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/album/album/AlbumCoverPagerAdapter.kt @@ -1,4 +1,4 @@ -package code.name.monkey.retromusic.adapter.album +package code.name.monkey.retromusic.album.album import android.os.Bundle import android.view.* diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/album/album/AlbumFullWidthAdapter.kt similarity index 98% rename from app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt rename to app/src/main/java/code/name/monkey/retromusic/album/album/AlbumFullWidthAdapter.kt index a3cc654f1..cf03015ad 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/album/album/AlbumFullWidthAdapter.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package code.name.monkey.retromusic.adapter.album +package code.name.monkey.retromusic.album.album import android.app.* import android.util.DisplayMetrics diff --git a/app/src/main/java/code/name/monkey/retromusic/album/album/HorizontalAlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/album/album/HorizontalAlbumAdapter.kt new file mode 100644 index 000000000..93a6b1d31 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/album/album/HorizontalAlbumAdapter.kt @@ -0,0 +1,71 @@ +package code.name.monkey.retromusic.album.album + +import android.graphics.drawable.Drawable +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import code.name.monkey.appthemehelper.util.ColorUtil +import code.name.monkey.appthemehelper.util.MaterialValueHelper +import code.name.monkey.retromusic.glide.RetroMusicColoredTarget +import code.name.monkey.retromusic.glide.SongGlideRequest +import code.name.monkey.retromusic.helper.HorizontalAdapterHelper +import code.name.monkey.retromusic.interfaces.CabHolder +import code.name.monkey.retromusic.model.Album +import code.name.monkey.retromusic.util.MusicUtil +import com.bumptech.glide.Glide +import java.util.* + +class HorizontalAlbumAdapter( + activity: AppCompatActivity, + dataSet: ArrayList, + usePalette: Boolean, + cabHolder: CabHolder? +) : AlbumAdapter( + activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, usePalette, cabHolder, null +) { + + override fun createViewHolder(view: View, viewType: Int): ViewHolder { + val params = view.layoutParams as ViewGroup.MarginLayoutParams + HorizontalAdapterHelper.applyMarginToLayoutParams(activity, params, viewType) + return ViewHolder(view) + } + + override fun setColors(color: Int, holder: ViewHolder) { + holder.title?.setTextColor(MaterialValueHelper.getPrimaryTextColor(activity, ColorUtil.isColorLight(color))) + holder.text?.setTextColor(MaterialValueHelper.getSecondaryTextColor(activity, ColorUtil.isColorLight(color))) + } + + override fun loadAlbumCover(album: Album, holder: ViewHolder) { + if (holder.image == null) return + + SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) + .checkIgnoreMediaStore(activity).generatePalette(activity).build() + .into(object : RetroMusicColoredTarget(holder.image!!) { + override fun onLoadCleared(placeholder: Drawable?) { + super.onLoadCleared(placeholder) + setColors(albumArtistFooterColor, holder) + } + + override fun onColorReady(color: Int) { + if (usePalette) setColors(color, holder) + else setColors(albumArtistFooterColor, holder) + } + }) + } + + override fun getAlbumText(album: Album): String? { + return MusicUtil.getYearString(album.year) + } + + override fun getItemViewType(position: Int): Int { + return HorizontalAdapterHelper.getItemViewtype(position, itemCount) + } + + override fun getItemCount(): Int { + return dataSet.size + } + + companion object { + val TAG: String = AlbumAdapter::class.java.simpleName + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt b/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt index 97df4e048..3945f16af 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt @@ -15,6 +15,7 @@ package code.name.monkey.retromusic.dagger import code.name.monkey.retromusic.activities.* +import code.name.monkey.retromusic.album.AlbumDetailsFragment import code.name.monkey.retromusic.dagger.module.* import code.name.monkey.retromusic.fragments.mainactivity.* import code.name.monkey.retromusic.fragments.mainactivity.home.BannerHomeFragment @@ -59,4 +60,6 @@ interface MusicComponent { fun inject(searchActivity: SearchActivity) fun inject(bannerHomeFragment: BannerHomeFragment) + + fun inject(albumDetailsFragment: AlbumDetailsFragment) } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExt.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExt.kt new file mode 100644 index 000000000..ade2e5d12 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExt.kt @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2019 Hemanth Savarala. + * + * Licensed under the GNU General Public License v3 + * + * This is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by + * the Free Software Foundation either version 3 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + */ + +package code.name.monkey.retromusic.extensions + +import android.os.Bundle +import androidx.fragment.app.Fragment + +/** + * Created by hemanths on 2019-12-15. + */ + +inline fun T.withArgs(argsBuilder: Bundle.() -> Unit): T = this.apply { arguments = Bundle().apply(argsBuilder) } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt index ed5d2c926..835a8861b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt @@ -4,8 +4,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.annotation.NonNull -import androidx.annotation.StringRes import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -18,11 +16,17 @@ import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.* abstract class AbsLibraryPagerRecyclerViewFragment, LM : RecyclerView.LayoutManager> : AbsLibraryPagerFragment(), AppBarLayout.OnOffsetChangedListener { protected var adapter: A? = null + protected var layoutManager: LM? = null - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + protected abstract fun createLayoutManager(): LM + + protected abstract fun createAdapter(): A + + protected open val emptyMessage: Int + get() = R.string.empty + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_main_activity_recycler_view, container, false) } @@ -53,8 +57,6 @@ abstract class AbsLibraryPagerRecyclerViewFragment, }) } - protected open val emptyMessage: Int - @StringRes get() = R.string.empty private fun getEmojiByUnicode(unicode: Int): String { return String(Character.toChars(unicode)) @@ -82,10 +84,6 @@ abstract class AbsLibraryPagerRecyclerViewFragment, layoutManager = createLayoutManager() } - protected abstract fun createLayoutManager(): LM - - @NonNull - protected abstract fun createAdapter(): A override fun onOffsetChanged(p0: AppBarLayout?, i: Int) { container.setPadding( diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt index 7f926dade..7cc45b1bf 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt @@ -5,7 +5,9 @@ import android.view.View import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.adapter.album.AlbumAdapter +import code.name.monkey.retromusic.album.AlbumDetailsFragment +import code.name.monkey.retromusic.album.AlbumDetailsInterface +import code.name.monkey.retromusic.album.album.AlbumAdapter import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.mvp.presenter.AlbumsPresenter @@ -13,7 +15,7 @@ import code.name.monkey.retromusic.mvp.presenter.AlbumsView import code.name.monkey.retromusic.util.PreferenceUtil import javax.inject.Inject -open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), AlbumsView { +open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), AlbumsView, AlbumDetailsInterface { @Inject lateinit var albumsPresenter: AlbumsPresenter @@ -57,7 +59,7 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file