implemented dynamic tabs

This commit is contained in:
h4h13 2019-07-22 20:56:37 +05:30
parent 0c23f313b6
commit 67ea2a40a9
39 changed files with 871 additions and 162 deletions

View file

@ -3,11 +3,11 @@ package code.name.monkey.retromusic.fragments.mainactivity
import android.os.Bundle
import androidx.recyclerview.widget.GridLayoutManager
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.album.AlbumAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment
import code.name.monkey.retromusic.model.Album
import code.name.monkey.retromusic.mvp.contract.AlbumContract
import code.name.monkey.retromusic.mvp.presenter.AlbumPresenter
import code.name.monkey.retromusic.adapter.album.AlbumAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment
import code.name.monkey.retromusic.util.PreferenceUtil
open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager>(), AlbumContract.AlbumView {
@ -95,23 +95,9 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
presenter = AlbumPresenter(this)
}
override fun setMenuVisibility(menuVisible: Boolean) {
super.setMenuVisibility(menuVisible)
if (menuVisible) {
libraryFragment.setTitle(
if (PreferenceUtil.getInstance().tabTitles())
R.string.library
else
R.string.albums)
}
}
override fun onResume() {
super.onResume()
libraryFragment.setTitle(
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.albums)
if (adapter!!.dataSet.isEmpty()) {
presenter.subscribe()
}

View file

@ -3,11 +3,11 @@ package code.name.monkey.retromusic.fragments.mainactivity
import android.os.Bundle
import androidx.recyclerview.widget.GridLayoutManager
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment
import code.name.monkey.retromusic.model.Artist
import code.name.monkey.retromusic.mvp.contract.ArtistContract
import code.name.monkey.retromusic.mvp.presenter.ArtistPresenter
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment
import code.name.monkey.retromusic.util.PreferenceUtil
import java.util.*
@ -86,22 +86,8 @@ class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Artist
presenter.loadArtists()
}
override fun setMenuVisibility(menuVisible: Boolean) {
super.setMenuVisibility(menuVisible)
if (menuVisible) {
libraryFragment.setTitle(
if (PreferenceUtil.getInstance().tabTitles())
R.string.library
else
R.string.artists)
}
}
override fun onResume() {
super.onResume()
libraryFragment.setTitle(
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.artists)
if (adapter!!.dataSet.isEmpty()) {
presenter.subscribe()
}

View file

@ -0,0 +1,86 @@
/*
* 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.fragments.mainactivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.GenreAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment
import code.name.monkey.retromusic.model.Genre
import code.name.monkey.retromusic.mvp.contract.GenreContract
import code.name.monkey.retromusic.mvp.presenter.GenrePresenter
class GenresFragment : AbsLibraryPagerRecyclerViewFragment<GenreAdapter, LinearLayoutManager>(), GenreContract.GenreView {
override fun loading() {
}
override fun showData(list: ArrayList<Genre>) {
adapter?.swapDataSet(list)
}
override fun showEmptyView() {
}
override fun completed() {
}
override fun createLayoutManager(): LinearLayoutManager {
return LinearLayoutManager(activity)
}
override fun createAdapter(): GenreAdapter {
val dataSet = if (adapter == null) ArrayList() else adapter!!.dataSet
return GenreAdapter(libraryFragment.mainActivity, dataSet, R.layout.item_list_no_image)
}
override val emptyMessage: Int
get() = R.string.no_genres
private lateinit var presenter: GenrePresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
presenter = GenrePresenter(this)
}
override fun onResume() {
super.onResume()
if (adapter!!.dataSet.isEmpty()) {
presenter.subscribe()
}
}
override fun onDestroy() {
presenter.unsubscribe()
super.onDestroy()
}
override fun onMediaStoreChanged() {
presenter.loadGenre()
}
companion object {
fun newInstance(): GenresFragment {
return GenresFragment()
}
}
}

View file

@ -1,7 +1,6 @@
package code.name.monkey.retromusic.fragments.mainactivity;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@ -26,10 +25,11 @@ import com.google.android.material.card.MaterialCardView;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.appthemehelper.common.ATHToolbarActivity;
import code.name.monkey.appthemehelper.util.ATHUtil;
import code.name.monkey.appthemehelper.util.ColorUtil;
import code.name.monkey.appthemehelper.util.TintHelper;
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
import code.name.monkey.retromusic.R;
@ -137,6 +137,9 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
case R.id.action_playlist:
selectedFragment(PlaylistsFragment.Companion.newInstance());
break;
case R.id.action_genre:
selectedFragment(GenresFragment.Companion.newInstance());
break;
}
}
@ -144,13 +147,13 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
private void setupToolbar() {
int primaryColor = ThemeStore.Companion.primaryColor(getContext());
TintHelper.setTintAuto(contentContainer, primaryColor, true);
appBarLayout.setBackgroundColor(primaryColor);
toolbar.setBackgroundColor(RetroColorUtil.toolbarColor(getMainActivity()));
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
toolbar.setOnClickListener(v -> {
Pair<View, String> pair = new Pair<>(toolbarContainer, getString(R.string.transition_toolbar));
NavigationUtil.goToSearch(getMainActivity(), pair);
});
appBarLayout.setBackgroundColor(primaryColor);
appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) ->
getMainActivity().setLightStatusbar(!ATHUtil.INSTANCE.isWindowBackgroundDark(getContext())));
getMainActivity().setSupportActionBar(toolbar);
@ -187,12 +190,12 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
if (cab != null && cab.isActive()) {
cab.finish();
}
//noinspection ConstantConditions
cab = new MaterialCab(getMainActivity(), R.id.cab_stub)
.setMenu(menuRes)
.setCloseDrawableRes(R.drawable.ic_close_white_24dp)
.setBackgroundColor(
RetroColorUtil.shiftBackgroundColorForLightText(ThemeStore.Companion.primaryColor(getActivity())))
RetroColorUtil.shiftBackgroundColorForLightText(ThemeStore.Companion.primaryColor(Objects.requireNonNull(getActivity()))))
.start(callback);
return cab;
}

View file

@ -5,12 +5,11 @@ import android.view.Menu
import android.view.MenuInflater
import androidx.recyclerview.widget.LinearLayoutManager
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.playlist.PlaylistAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment
import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.mvp.contract.PlaylistContract
import code.name.monkey.retromusic.mvp.presenter.PlaylistPresenter
import code.name.monkey.retromusic.adapter.playlist.PlaylistAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment
import code.name.monkey.retromusic.util.PreferenceUtil
import java.util.*
@ -36,16 +35,8 @@ class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, L
R.layout.item_list, libraryFragment)
}
override fun setMenuVisibility(menuVisible: Boolean) {
super.setMenuVisibility(menuVisible)
if (menuVisible) {
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.playlists)
}
}
override fun onResume() {
super.onResume()
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.playlists)
if (adapter!!.dataSet.isEmpty()) {
presenter.subscribe()
}

View file

@ -2,14 +2,13 @@ package code.name.monkey.retromusic.fragments.mainactivity
import android.os.Bundle
import androidx.recyclerview.widget.GridLayoutManager
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.mvp.contract.SongContract
import code.name.monkey.retromusic.mvp.presenter.SongPresenter
import code.name.monkey.retromusic.adapter.song.ShuffleButtonSongAdapter
import code.name.monkey.retromusic.adapter.song.SongAdapter
import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.mvp.contract.SongContract
import code.name.monkey.retromusic.mvp.presenter.SongPresenter
import code.name.monkey.retromusic.util.PreferenceUtil
import java.util.*
@ -81,23 +80,11 @@ class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<SongAdap
override fun onResume() {
super.onResume()
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.songs)
if (adapter!!.dataSet.isEmpty()) {
presenter.subscribe()
}
}
override fun setMenuVisibility(menuVisible: Boolean) {
super.setMenuVisibility(menuVisible)
if (menuVisible) {
libraryFragment.setTitle(
if (PreferenceUtil.getInstance().tabTitles())
R.string.library
else
R.string.songs)
}
}
override fun onDestroy() {
presenter.unsubscribe()
super.onDestroy()

View file

@ -71,8 +71,9 @@ abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
var dialogFragment: DialogFragment? = null// Dialog creation could not be handled here. Try with the super method.
// The dialog was created (it was one of our custom Preferences), show the dialog for it
when (preference) {
is NowPlayingScreenPreference -> dialogFragment = NowPlayingScreenPreferenceDialog.newInstance(preference.key)
is AlbumCoverStylePreference -> dialogFragment = AlbumCoverStylePreferenceDialog.newInstance(preference.key)
is LibraryPreference -> dialogFragment = LibraryPreferenceDialog.newInstance()
is NowPlayingScreenPreference -> dialogFragment = NowPlayingScreenPreferenceDialog.newInstance( )
is AlbumCoverStylePreference -> dialogFragment = AlbumCoverStylePreferenceDialog.newInstance()
is MaterialListPreference -> {
preference.entries
dialogFragment = MaterialListPreferenceDialog.newInstance(preference)