feat: more options in anime and manga side
This commit is contained in:
parent
7951c2cf37
commit
2dc3035a7c
18 changed files with 657 additions and 53 deletions
|
@ -1022,7 +1022,49 @@ query (${"$"}page: Int = 1, ${"$"}id: Int, ${"$"}type: MediaType, ${"$"}isAdult:
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
private fun trendingMovie(): String{
|
||||||
|
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: ANIME, format: MOVIE, onList:${PrefManager.getVal<Boolean>(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}"""
|
||||||
|
}
|
||||||
|
private fun topRatedAnime(): String{
|
||||||
|
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: ANIME,onList:${PrefManager.getVal<Boolean>(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}"""
|
||||||
|
}
|
||||||
|
private fun mostFavAnime(): String{
|
||||||
|
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: ANIME,onList:${PrefManager.getVal<Boolean>(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}"""
|
||||||
|
}
|
||||||
|
suspend fun loadAnimeList(): Query.AnimeList?{
|
||||||
|
return executeQuery<Query.AnimeList>(
|
||||||
|
"""{
|
||||||
|
trendingMovie:${trendingMovie()}
|
||||||
|
topRated:${topRatedAnime()}
|
||||||
|
mostFav:${mostFavAnime()}
|
||||||
|
}""".trimIndent(), force = true
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun trendingManga(): String{
|
||||||
|
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, onList:${PrefManager.getVal<Boolean>(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}"""
|
||||||
|
}
|
||||||
|
private fun trendingManhwa(): String{
|
||||||
|
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, countryOfOrigin:KR onList:${PrefManager.getVal<Boolean>(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}"""
|
||||||
|
}
|
||||||
|
private fun topRatedManga(): String{
|
||||||
|
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: MANGA,onList:${PrefManager.getVal<Boolean>(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}"""
|
||||||
|
}
|
||||||
|
private fun mostFavManga(): String{
|
||||||
|
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: MANGA,onList:${PrefManager.getVal<Boolean>(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}"""
|
||||||
|
}
|
||||||
|
suspend fun loadMangaList(): Query.MangaList?{
|
||||||
|
return executeQuery<Query.MangaList>(
|
||||||
|
"""{
|
||||||
|
trendingManga:${trendingManga()}
|
||||||
|
trendingManhwa:${trendingManhwa()}
|
||||||
|
topRated:${topRatedManga()}
|
||||||
|
mostFav:${mostFavManga()}
|
||||||
|
}""".trimIndent(), force = true
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
suspend fun recentlyUpdated(
|
suspend fun recentlyUpdated(
|
||||||
smaller: Boolean = true,
|
smaller: Boolean = true,
|
||||||
greater: Long = 0,
|
greater: Long = 0,
|
||||||
|
|
|
@ -156,6 +156,7 @@ class AnilistAnimeViewModel : ViewModel() {
|
||||||
suspend fun loadUpdated() = updated.postValue(Anilist.query.recentlyUpdated())
|
suspend fun loadUpdated() = updated.postValue(Anilist.query.recentlyUpdated())
|
||||||
|
|
||||||
private val animePopular = MutableLiveData<SearchResults?>(null)
|
private val animePopular = MutableLiveData<SearchResults?>(null)
|
||||||
|
|
||||||
fun getPopular(): LiveData<SearchResults?> = animePopular
|
fun getPopular(): LiveData<SearchResults?> = animePopular
|
||||||
suspend fun loadPopular(
|
suspend fun loadPopular(
|
||||||
type: String,
|
type: String,
|
||||||
|
@ -192,6 +193,30 @@ class AnilistAnimeViewModel : ViewModel() {
|
||||||
)
|
)
|
||||||
|
|
||||||
var loaded: Boolean = false
|
var loaded: Boolean = false
|
||||||
|
|
||||||
|
private val popularMovies: MutableLiveData<MutableList<Media>> =
|
||||||
|
MutableLiveData<MutableList<Media>>(null)
|
||||||
|
fun getMovies(): LiveData<MutableList<Media>> = popularMovies
|
||||||
|
|
||||||
|
private val topRated: MutableLiveData<MutableList<Media>> =
|
||||||
|
MutableLiveData<MutableList<Media>>(null)
|
||||||
|
fun getTopRated(): LiveData<MutableList<Media>> = topRated
|
||||||
|
|
||||||
|
private val mostFav: MutableLiveData<MutableList<Media>> =
|
||||||
|
MutableLiveData<MutableList<Media>>(null)
|
||||||
|
fun getMostFav(): LiveData<MutableList<Media>> = mostFav
|
||||||
|
suspend fun loadAll() {
|
||||||
|
val response = Anilist.query.loadAnimeList()
|
||||||
|
|
||||||
|
val trendingMovie = response?.data?.trendingMovie?.media?.map { Media(it) }?.toMutableList()
|
||||||
|
popularMovies.postValue(trendingMovie ?: arrayListOf())
|
||||||
|
|
||||||
|
val topRatedList = response?.data?.topRated?.media?.map { Media(it) }?.toMutableList()
|
||||||
|
topRated.postValue(topRatedList ?: arrayListOf())
|
||||||
|
|
||||||
|
val mostFavList = response?.data?.mostFav?.media?.map { Media(it) }?.toMutableList()
|
||||||
|
mostFav.postValue(mostFavList ?: arrayListOf())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AnilistMangaViewModel : ViewModel() {
|
class AnilistMangaViewModel : ViewModel() {
|
||||||
|
@ -268,6 +293,37 @@ class AnilistMangaViewModel : ViewModel() {
|
||||||
)
|
)
|
||||||
|
|
||||||
var loaded: Boolean = false
|
var loaded: Boolean = false
|
||||||
|
|
||||||
|
private val popularManga: MutableLiveData<MutableList<Media>> =
|
||||||
|
MutableLiveData<MutableList<Media>>(null)
|
||||||
|
fun getPopularManga(): LiveData<MutableList<Media>> = popularManga
|
||||||
|
|
||||||
|
private val popularManhwa: MutableLiveData<MutableList<Media>> =
|
||||||
|
MutableLiveData<MutableList<Media>>(null)
|
||||||
|
fun getPopularManhwa(): LiveData<MutableList<Media>> = popularManhwa
|
||||||
|
|
||||||
|
private val topRated: MutableLiveData<MutableList<Media>> =
|
||||||
|
MutableLiveData<MutableList<Media>>(null)
|
||||||
|
fun getTopRated(): LiveData<MutableList<Media>> = topRated
|
||||||
|
|
||||||
|
private val mostFav: MutableLiveData<MutableList<Media>> =
|
||||||
|
MutableLiveData<MutableList<Media>>(null)
|
||||||
|
fun getMostFav(): LiveData<MutableList<Media>> = mostFav
|
||||||
|
suspend fun loadAll() {
|
||||||
|
val response = Anilist.query.loadMangaList()
|
||||||
|
|
||||||
|
val trendingManga = response?.data?.trendingManga?.media?.map { Media(it) }?.toMutableList()
|
||||||
|
popularManga.postValue(trendingManga ?: arrayListOf())
|
||||||
|
|
||||||
|
val trendingManhwa = response?.data?.trendingManhwa?.media?.map { Media(it) }?.toMutableList()
|
||||||
|
popularManhwa.postValue(trendingManhwa ?: arrayListOf())
|
||||||
|
|
||||||
|
val topRatedList = response?.data?.topRated?.media?.map { Media(it) }?.toMutableList()
|
||||||
|
topRated.postValue(topRatedList ?: arrayListOf())
|
||||||
|
|
||||||
|
val mostFavList = response?.data?.mostFav?.media?.map { Media(it) }?.toMutableList()
|
||||||
|
mostFav.postValue(mostFavList ?: arrayListOf())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AnilistSearch : ViewModel() {
|
class AnilistSearch : ViewModel() {
|
||||||
|
|
|
@ -152,7 +152,31 @@ class Query {
|
||||||
@SerialName("mangaMediaList") val mangaMediaList: ani.dantotsu.connections.anilist.api.MediaListCollection?
|
@SerialName("mangaMediaList") val mangaMediaList: ani.dantotsu.connections.anilist.api.MediaListCollection?
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@Serializable
|
||||||
|
data class AnimeList(
|
||||||
|
@SerialName("data")
|
||||||
|
val data: Data?
|
||||||
|
) {
|
||||||
|
@Serializable
|
||||||
|
data class Data(
|
||||||
|
@SerialName("trendingMovie") val trendingMovie: ani.dantotsu.connections.anilist.api.Page?,
|
||||||
|
@SerialName("topRated") val topRated: ani.dantotsu.connections.anilist.api.Page?,
|
||||||
|
@SerialName("mostFav") val mostFav: ani.dantotsu.connections.anilist.api.Page?,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@Serializable
|
||||||
|
data class MangaList(
|
||||||
|
@SerialName("data")
|
||||||
|
val data: Data?
|
||||||
|
) {
|
||||||
|
@Serializable
|
||||||
|
data class Data(
|
||||||
|
@SerialName("trendingManga") val trendingManga: ani.dantotsu.connections.anilist.api.Page?,
|
||||||
|
@SerialName("trendingManhwa") val trendingManhwa: ani.dantotsu.connections.anilist.api.Page?,
|
||||||
|
@SerialName("topRated") val topRated: ani.dantotsu.connections.anilist.api.Page?,
|
||||||
|
@SerialName("mostFav") val mostFav: ani.dantotsu.connections.anilist.api.Page?,
|
||||||
|
)
|
||||||
|
}
|
||||||
@Serializable
|
@Serializable
|
||||||
data class ToggleFollow(
|
data class ToggleFollow(
|
||||||
@SerialName("data")
|
@SerialName("data")
|
||||||
|
|
|
@ -207,6 +207,21 @@ class AnimeFragment : Fragment() {
|
||||||
animePageAdapter.updateRecent(MediaAdaptor(0, it, requireActivity()))
|
animePageAdapter.updateRecent(MediaAdaptor(0, it, requireActivity()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
model.getMovies().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
animePageAdapter.updateMovies(MediaAdaptor(0, it, requireActivity()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model.getTopRated().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
animePageAdapter.updateTopRated(MediaAdaptor(0, it, requireActivity()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model.getMostFav().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
animePageAdapter.updateMostFav(MediaAdaptor(0, it, requireActivity()))
|
||||||
|
}
|
||||||
|
}
|
||||||
if (animePageAdapter.trendingViewPager != null) {
|
if (animePageAdapter.trendingViewPager != null) {
|
||||||
animePageAdapter.updateHeight()
|
animePageAdapter.updateHeight()
|
||||||
model.getTrending().observe(viewLifecycleOwner) {
|
model.getTrending().observe(viewLifecycleOwner) {
|
||||||
|
@ -264,6 +279,7 @@ class AnimeFragment : Fragment() {
|
||||||
model.loaded = true
|
model.loaded = true
|
||||||
model.loadTrending(1)
|
model.loadTrending(1)
|
||||||
model.loadUpdated()
|
model.loadUpdated()
|
||||||
|
model.loadAll()
|
||||||
model.loadPopular(
|
model.loadPopular(
|
||||||
"ANIME", sort = Anilist.sortBy[1], onList = PrefManager.getVal(
|
"ANIME", sort = Anilist.sortBy[1], onList = PrefManager.getVal(
|
||||||
PrefName.PopularAnimeList
|
PrefName.PopularAnimeList
|
||||||
|
|
|
@ -212,7 +212,55 @@ class AnimePageAdapter : RecyclerView.Adapter<AnimePageAdapter.AnimePageViewHold
|
||||||
binding.animePopular.visibility = View.VISIBLE
|
binding.animePopular.visibility = View.VISIBLE
|
||||||
binding.animePopular.startAnimation(setSlideUp())
|
binding.animePopular.startAnimation(setSlideUp())
|
||||||
}
|
}
|
||||||
|
fun updateMovies(adaptor: MediaAdaptor) {
|
||||||
|
binding.animeMoviesProgressBar.visibility = View.GONE
|
||||||
|
binding.animeMoviesRecyclerView.adapter = adaptor
|
||||||
|
binding.animeMoviesRecyclerView.layoutManager =
|
||||||
|
LinearLayoutManager(
|
||||||
|
binding.animeMoviesRecyclerView.context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.animeMoviesRecyclerView.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
binding.animeMovies.visibility = View.VISIBLE
|
||||||
|
binding.animeMovies.startAnimation(setSlideUp())
|
||||||
|
binding.animeMoviesRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateTopRated(adaptor: MediaAdaptor) {
|
||||||
|
binding.animeTopRatedProgressBar.visibility = View.GONE
|
||||||
|
binding.animeTopRatedRecyclerView.adapter = adaptor
|
||||||
|
binding.animeTopRatedRecyclerView.layoutManager =
|
||||||
|
LinearLayoutManager(
|
||||||
|
binding.animeTopRatedRecyclerView.context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.animeTopRatedRecyclerView.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
binding.animeTopRated.visibility = View.VISIBLE
|
||||||
|
binding.animeTopRated.startAnimation(setSlideUp())
|
||||||
|
binding.animeTopRatedRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
}
|
||||||
|
fun updateMostFav(adaptor: MediaAdaptor) {
|
||||||
|
binding.animeMostFavProgressBar.visibility = View.GONE
|
||||||
|
binding.animeMostFavRecyclerView.adapter = adaptor
|
||||||
|
binding.animeMostFavRecyclerView.layoutManager =
|
||||||
|
LinearLayoutManager(
|
||||||
|
binding.animeMostFavRecyclerView.context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.animeMostFavRecyclerView.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
binding.animeMostFav.visibility = View.VISIBLE
|
||||||
|
binding.animeMostFav.startAnimation(setSlideUp())
|
||||||
|
binding.animeMostFavRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
}
|
||||||
fun updateAvatar() {
|
fun updateAvatar() {
|
||||||
if (Anilist.avatar != null && ready.value == true) {
|
if (Anilist.avatar != null && ready.value == true) {
|
||||||
trendingBinding.userAvatar.loadImage(Anilist.avatar)
|
trendingBinding.userAvatar.loadImage(Anilist.avatar)
|
||||||
|
|
|
@ -165,6 +165,26 @@ class MangaFragment : Fragment() {
|
||||||
mangaPageAdapter.updateNovel(MediaAdaptor(0, it, requireActivity()))
|
mangaPageAdapter.updateNovel(MediaAdaptor(0, it, requireActivity()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
model.getPopularManga().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
mangaPageAdapter.updateTrendingManga(MediaAdaptor(0, it, requireActivity()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model.getPopularManhwa().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
mangaPageAdapter.updateTrendingManhwa(MediaAdaptor(0, it, requireActivity()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model.getTopRated().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
mangaPageAdapter.updateTopRated(MediaAdaptor(0, it, requireActivity()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model.getMostFav().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
mangaPageAdapter.updateMostFav(MediaAdaptor(0, it, requireActivity()))
|
||||||
|
}
|
||||||
|
}
|
||||||
if (mangaPageAdapter.trendingViewPager != null) {
|
if (mangaPageAdapter.trendingViewPager != null) {
|
||||||
mangaPageAdapter.updateHeight()
|
mangaPageAdapter.updateHeight()
|
||||||
model.getTrending().observe(viewLifecycleOwner) {
|
model.getTrending().observe(viewLifecycleOwner) {
|
||||||
|
@ -238,6 +258,7 @@ class MangaFragment : Fragment() {
|
||||||
model.loaded = true
|
model.loaded = true
|
||||||
model.loadTrending()
|
model.loadTrending()
|
||||||
model.loadTrendingNovel()
|
model.loadTrendingNovel()
|
||||||
|
model.loadAll()
|
||||||
model.loadPopular(
|
model.loadPopular(
|
||||||
"MANGA", sort = Anilist.sortBy[1], onList = PrefManager.getVal(
|
"MANGA", sort = Anilist.sortBy[1], onList = PrefManager.getVal(
|
||||||
PrefName.PopularMangaList
|
PrefName.PopularMangaList
|
||||||
|
|
|
@ -180,6 +180,70 @@ class MangaPageAdapter : RecyclerView.Adapter<MangaPageAdapter.MangaPageViewHold
|
||||||
LayoutAnimationController(setSlideIn(), 0.25f)
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updateTrendingManga(adaptor: MediaAdaptor) {
|
||||||
|
binding.mangaTrendingMangaProgressBar.visibility = View.GONE
|
||||||
|
binding.mangaTrendingMangaRecyclerView.adapter = adaptor
|
||||||
|
binding.mangaTrendingMangaRecyclerView.layoutManager =
|
||||||
|
LinearLayoutManager(
|
||||||
|
binding.mangaTrendingMangaRecyclerView.context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.mangaTrendingMangaRecyclerView.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
binding.mangaTrendingManga.visibility = View.VISIBLE
|
||||||
|
binding.mangaTrendingManga.startAnimation(setSlideUp())
|
||||||
|
binding.mangaTrendingMangaRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
}
|
||||||
|
fun updateTrendingManhwa(adaptor: MediaAdaptor) {
|
||||||
|
binding.mangaTrendingManhwaProgressBar.visibility = View.GONE
|
||||||
|
binding.mangaTrendingManhwaRecyclerView.adapter = adaptor
|
||||||
|
binding.mangaTrendingManhwaRecyclerView.layoutManager =
|
||||||
|
LinearLayoutManager(
|
||||||
|
binding.mangaNovelRecyclerView.context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.mangaTrendingManhwaRecyclerView.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
binding.mangaTrendingManhwa.visibility = View.VISIBLE
|
||||||
|
binding.mangaTrendingManhwa.startAnimation(setSlideUp())
|
||||||
|
binding.mangaTrendingManhwaRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
}
|
||||||
|
fun updateTopRated(adaptor: MediaAdaptor) {
|
||||||
|
binding.mangaTopRatedProgressBar.visibility = View.GONE
|
||||||
|
binding.mangaTopRatedRecyclerView.adapter = adaptor
|
||||||
|
binding.mangaTopRatedRecyclerView.layoutManager =
|
||||||
|
LinearLayoutManager(
|
||||||
|
binding.mangaTopRatedRecyclerView.context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.mangaTopRatedRecyclerView.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
binding.mangaTopRated.visibility = View.VISIBLE
|
||||||
|
binding.mangaTopRated.startAnimation(setSlideUp())
|
||||||
|
binding.mangaTopRatedRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
}
|
||||||
|
fun updateMostFav(adaptor: MediaAdaptor) {
|
||||||
|
binding.mangaMostFavProgressBar.visibility = View.GONE
|
||||||
|
binding.mangaMostFavRecyclerView.adapter = adaptor
|
||||||
|
binding.mangaMostFavRecyclerView.layoutManager =
|
||||||
|
LinearLayoutManager(
|
||||||
|
binding.mangaMostFavRecyclerView.context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.mangaMostFavRecyclerView.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
binding.mangaMostFav.visibility = View.VISIBLE
|
||||||
|
binding.mangaMostFav.startAnimation(setSlideUp())
|
||||||
|
binding.mangaMostFavRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
}
|
||||||
fun updateNovel(adaptor: MediaAdaptor) {
|
fun updateNovel(adaptor: MediaAdaptor) {
|
||||||
binding.mangaNovelProgressBar.visibility = View.GONE
|
binding.mangaNovelProgressBar.visibility = View.GONE
|
||||||
binding.mangaNovelRecyclerView.adapter = adaptor
|
binding.mangaNovelRecyclerView.adapter = adaptor
|
||||||
|
@ -195,8 +259,6 @@ class MangaPageAdapter : RecyclerView.Adapter<MangaPageAdapter.MangaPageViewHold
|
||||||
binding.mangaNovel.startAnimation(setSlideUp())
|
binding.mangaNovel.startAnimation(setSlideUp())
|
||||||
binding.mangaNovelRecyclerView.layoutAnimation =
|
binding.mangaNovelRecyclerView.layoutAnimation =
|
||||||
LayoutAnimationController(setSlideIn(), 0.25f)
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
binding.mangaPopular.visibility = View.VISIBLE
|
|
||||||
binding.mangaPopular.startAnimation(setSlideUp())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateAvatar() {
|
fun updateAvatar() {
|
||||||
|
|
|
@ -52,7 +52,7 @@ class AnimeWatchAdapter(
|
||||||
private val fragment: AnimeWatchFragment,
|
private val fragment: AnimeWatchFragment,
|
||||||
private val watchSources: WatchSources
|
private val watchSources: WatchSources
|
||||||
) : RecyclerView.Adapter<AnimeWatchAdapter.ViewHolder>() {
|
) : RecyclerView.Adapter<AnimeWatchAdapter.ViewHolder>() {
|
||||||
|
private var autoSelect = true
|
||||||
var subscribe: MediaDetailsActivity.PopImageButton? = null
|
var subscribe: MediaDetailsActivity.PopImageButton? = null
|
||||||
private var _binding: ItemAnimeWatchBinding? = null
|
private var _binding: ItemAnimeWatchBinding? = null
|
||||||
|
|
||||||
|
@ -437,7 +437,8 @@ class AnimeWatchAdapter(
|
||||||
val sourceFound = media.anime.episodes!!.isNotEmpty()
|
val sourceFound = media.anime.episodes!!.isNotEmpty()
|
||||||
binding.animeSourceNotFound.isGone = sourceFound
|
binding.animeSourceNotFound.isGone = sourceFound
|
||||||
binding.faqbutton.isGone = sourceFound
|
binding.faqbutton.isGone = sourceFound
|
||||||
if (!sourceFound && PrefManager.getVal(PrefName.SearchSources)) {
|
|
||||||
|
if (!sourceFound && PrefManager.getVal(PrefName.SearchSources) && autoSelect) {
|
||||||
if (binding.animeSource.adapter.count > media.selected!!.sourceIndex + 1) {
|
if (binding.animeSource.adapter.count > media.selected!!.sourceIndex + 1) {
|
||||||
val nextIndex = media.selected!!.sourceIndex + 1
|
val nextIndex = media.selected!!.sourceIndex + 1
|
||||||
binding.animeSource.setText(binding.animeSource.adapter
|
binding.animeSource.setText(binding.animeSource.adapter
|
||||||
|
@ -453,6 +454,7 @@ class AnimeWatchAdapter(
|
||||||
fragment.loadEpisodes(nextIndex, false)
|
fragment.loadEpisodes(nextIndex, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
binding.animeSource.setOnClickListener { autoSelect = false }
|
||||||
} else {
|
} else {
|
||||||
binding.animeSourceContinue.visibility = View.GONE
|
binding.animeSourceContinue.visibility = View.GONE
|
||||||
binding.animeSourceNotFound.visibility = View.GONE
|
binding.animeSourceNotFound.visibility = View.GONE
|
||||||
|
|
|
@ -55,12 +55,12 @@ class FeedFragment : Fragment() {
|
||||||
if (userId == -1) userId = null
|
if (userId == -1) userId = null
|
||||||
global = arguments?.getBoolean("global", false) ?: false
|
global = arguments?.getBoolean("global", false) ?: false
|
||||||
|
|
||||||
val navBar = if (userId != null)
|
val navBar = if (userId != null) {
|
||||||
(activity as ProfileActivity).navBar
|
(activity as ProfileActivity).navBar
|
||||||
else
|
}else{
|
||||||
(activity as FeedActivity).navBar
|
(activity as FeedActivity).navBar
|
||||||
|
}
|
||||||
binding.listRecyclerView.setBaseline(navBar)
|
binding.listRecyclerView.setBaseline(navBar)
|
||||||
|
|
||||||
binding.listRecyclerView.adapter = adapter
|
binding.listRecyclerView.adapter = adapter
|
||||||
binding.listRecyclerView.layoutManager =
|
binding.listRecyclerView.layoutManager =
|
||||||
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
|
@ -72,10 +72,11 @@ class FeedFragment : Fragment() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
if (this::binding.isInitialized) {
|
if (this::binding.isInitialized) {
|
||||||
binding.root.requestLayout()
|
binding.root.requestLayout()
|
||||||
val navBar = if (userId != null)
|
val navBar = if (userId != null) {
|
||||||
(activity as ProfileActivity).navBar
|
(activity as ProfileActivity).navBar
|
||||||
else
|
}else{
|
||||||
(activity as FeedActivity).navBar
|
(activity as FeedActivity).navBar
|
||||||
|
}
|
||||||
binding.listRecyclerView.setBaseline(navBar)
|
binding.listRecyclerView.setBaseline(navBar)
|
||||||
if (!loadedFirstTime) {
|
if (!loadedFirstTime) {
|
||||||
activity.lifecycleScope.launch(Dispatchers.IO) {
|
activity.lifecycleScope.launch(Dispatchers.IO) {
|
||||||
|
|
|
@ -454,7 +454,10 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
|
||||||
settingsShowYt.setOnCheckedChangeListener { _, isChecked ->
|
settingsShowYt.setOnCheckedChangeListener { _, isChecked ->
|
||||||
PrefManager.setVal(PrefName.ShowYtButton, isChecked)
|
PrefManager.setVal(PrefName.ShowYtButton, isChecked)
|
||||||
}
|
}
|
||||||
|
settingsIncludeAnimeList.isChecked = PrefManager.getVal(PrefName.IncludeAnimeList)
|
||||||
|
settingsIncludeAnimeList.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
PrefManager.setVal(PrefName.IncludeAnimeList, isChecked)
|
||||||
|
}
|
||||||
var previousEp: View = when (PrefManager.getVal<Int>(PrefName.AnimeDefaultView)) {
|
var previousEp: View = when (PrefManager.getVal<Int>(PrefName.AnimeDefaultView)) {
|
||||||
0 -> settingsEpList
|
0 -> settingsEpList
|
||||||
1 -> settingsEpGrid
|
1 -> settingsEpGrid
|
||||||
|
@ -541,6 +544,11 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
|
||||||
settingsChpCompact.setOnClickListener {
|
settingsChpCompact.setOnClickListener {
|
||||||
uiChp(1, it)
|
uiChp(1, it)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settingsIncludeMangaList.isChecked = PrefManager.getVal(PrefName.IncludeMangaList)
|
||||||
|
settingsIncludeMangaList.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
PrefManager.setVal(PrefName.IncludeMangaList, isChecked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bindingExtensions = ActivitySettingsExtensionsBinding.bind(binding.root).apply {
|
bindingExtensions = ActivitySettingsExtensionsBinding.bind(binding.root).apply {
|
||||||
|
|
|
@ -77,6 +77,8 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files
|
||||||
MangaListSortOrder(Pref(Location.UI, String::class, "score")),
|
MangaListSortOrder(Pref(Location.UI, String::class, "score")),
|
||||||
CommentSortOrder(Pref(Location.UI, String::class, "newest")),
|
CommentSortOrder(Pref(Location.UI, String::class, "newest")),
|
||||||
FollowerLayout(Pref(Location.UI, Int::class, 0)),
|
FollowerLayout(Pref(Location.UI, Int::class, 0)),
|
||||||
|
IncludeAnimeList(Pref(Location.UI, Boolean::class, true)),
|
||||||
|
IncludeMangaList(Pref(Location.UI, Boolean::class, true)),
|
||||||
|
|
||||||
//Player
|
//Player
|
||||||
DefaultSpeed(Pref(Location.Player, Int::class, 5)),
|
DefaultSpeed(Pref(Location.Player, Int::class, 5)),
|
||||||
|
|
|
@ -140,13 +140,13 @@ class ProfileStatsWidget : AppWidgetProvider() {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
setTextColor(R.id.userLabel, titleTextColor)
|
setTextColor(R.id.userLabel, titleTextColor)
|
||||||
setTextColor(R.id.topLeftItem, statsTextColor)
|
setTextColor(R.id.topLeftItem, titleTextColor)
|
||||||
setTextColor(R.id.topLeftLabel, statsTextColor)
|
setTextColor(R.id.topLeftLabel, statsTextColor)
|
||||||
setTextColor(R.id.topRightItem, statsTextColor)
|
setTextColor(R.id.topRightItem, titleTextColor)
|
||||||
setTextColor(R.id.topRightLabel, statsTextColor)
|
setTextColor(R.id.topRightLabel, statsTextColor)
|
||||||
setTextColor(R.id.bottomLeftItem, statsTextColor)
|
setTextColor(R.id.bottomLeftItem, titleTextColor)
|
||||||
setTextColor(R.id.bottomLeftLabel, statsTextColor)
|
setTextColor(R.id.bottomLeftLabel, statsTextColor)
|
||||||
setTextColor(R.id.bottomRightItem, statsTextColor)
|
setTextColor(R.id.bottomRightItem, titleTextColor)
|
||||||
setTextColor(R.id.bottomRightLabel, statsTextColor)
|
setTextColor(R.id.bottomRightLabel, statsTextColor)
|
||||||
|
|
||||||
setImageViewBitmap(
|
setImageViewBitmap(
|
||||||
|
|
|
@ -181,7 +181,6 @@
|
||||||
android:id="@+id/settingsShowYt"
|
android:id="@+id/settingsShowYt"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:checked="true"
|
android:checked="true"
|
||||||
android:drawableStart="@drawable/ic_round_play_circle_24"
|
android:drawableStart="@drawable/ic_round_play_circle_24"
|
||||||
android:drawablePadding="16dp"
|
android:drawablePadding="16dp"
|
||||||
|
@ -195,5 +194,23 @@
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
app:thumbTint="@color/button_switch_track" />
|
app:thumbTint="@color/button_switch_track" />
|
||||||
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
|
android:id="@+id/settingsIncludeAnimeList"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
|
android:checked="true"
|
||||||
|
android:drawableStart="@drawable/ic_round_movie_filter_24"
|
||||||
|
android:drawablePadding="16dp"
|
||||||
|
android:elegantTextHeight="true"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:minHeight="64dp"
|
||||||
|
android:text="@string/include_list"
|
||||||
|
android:textAlignment="viewStart"
|
||||||
|
android:textColor="?attr/colorOnBackground"
|
||||||
|
app:cornerRadius="0dp"
|
||||||
|
app:drawableTint="?attr/colorPrimary"
|
||||||
|
app:showText="false"
|
||||||
|
app:thumbTint="@color/button_switch_track" />
|
||||||
</ani.dantotsu.others.Xpandable>
|
</ani.dantotsu.others.Xpandable>
|
||||||
</merge>
|
</merge>
|
|
@ -158,7 +158,23 @@
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
app:iconSize="24dp"
|
app:iconSize="24dp"
|
||||||
app:iconTint="?attr/colorPrimary" />
|
app:iconTint="?attr/colorPrimary" />
|
||||||
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
|
android:id="@+id/settingsIncludeMangaList"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:checked="true"
|
||||||
|
android:drawableStart="@drawable/ic_round_movie_filter_24"
|
||||||
|
android:drawablePadding="16dp"
|
||||||
|
android:elegantTextHeight="true"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:minHeight="64dp"
|
||||||
|
android:text="@string/include_list"
|
||||||
|
android:textAlignment="viewStart"
|
||||||
|
android:textColor="?attr/colorOnBackground"
|
||||||
|
app:cornerRadius="0dp"
|
||||||
|
app:drawableTint="?attr/colorPrimary"
|
||||||
|
app:showText="false"
|
||||||
|
app:thumbTint="@color/button_switch_track" />
|
||||||
<View
|
<View
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
|
|
|
@ -218,6 +218,126 @@
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/animeMovies"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/trending_movies"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:visibility="invisible"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="250dp">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/animeMoviesProgressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/animeMoviesRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/animeTopRated"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/top_rated"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:visibility="invisible"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="250dp">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/animeTopRatedProgressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/animeTopRatedRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/animeMostFav"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/most_favourite"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:visibility="invisible"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="250dp">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/animeMostFavProgressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/animeMostFavRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/animePopular"
|
android:id="@+id/animePopular"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -125,6 +125,82 @@
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/mangaTrendingManga"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/trending_manga"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="250dp">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/mangaTrendingMangaProgressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/mangaTrendingMangaRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/mangaTrendingManhwa"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/trending_manhwa"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="250dp">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/mangaTrendingManhwaProgressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/mangaTrendingManhwaRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/mangaNovel"
|
android:id="@+id/mangaNovel"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -163,6 +239,82 @@
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/mangaTopRated"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/top_rated"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="250dp">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/mangaTopRatedProgressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/mangaTopRatedRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/mangaMostFav"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/most_favourite"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="250dp">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/mangaMostFavProgressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/mangaMostFavRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="250dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/mangaPopular"
|
android:id="@+id/mangaPopular"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<RelativeLayout
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
android:orientation="vertical"
|
||||||
android:theme="@style/Theme.Dantotsu.AppWidgetContainer"
|
android:theme="@style/Theme.Dantotsu.AppWidgetContainer">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/backgroundView"
|
android:id="@+id/backgroundView"
|
||||||
|
@ -12,24 +11,26 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:scaleType="fitXY"
|
android:scaleType="fitXY"
|
||||||
android:src="@drawable/widget_stats_rounded"
|
android:src="@drawable/widget_stats_rounded"
|
||||||
tools:ignore="ContentDescription"/>
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/headerLayout"
|
android:id="@+id/headerLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:gravity="center_horizontal"
|
|
||||||
android:layout_margin="4dp"
|
android:layout_margin="4dp"
|
||||||
android:orientation="horizontal"
|
android:baselineAligned="false"
|
||||||
android:baselineAligned="false">
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/userAvatar"
|
android:id="@+id/userAvatar"
|
||||||
android:layout_width="32dp"
|
android:layout_width="32dp"
|
||||||
android:layout_height="32dp"
|
android:layout_height="32dp"
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:src="@drawable/ic_dantotsu_round"
|
android:src="@drawable/ic_dantotsu_round"
|
||||||
tools:ignore="ContentDescription"/>
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/userLabel"
|
android:id="@+id/userLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -37,26 +38,28 @@
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:textSize="18sp"
|
android:text="@string/loading"
|
||||||
android:text="@string/loading"/>
|
android:textSize="18sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_below="@id/headerLayout"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"
|
|
||||||
android:padding="4dp"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:background="@drawable/widget_stats_rounded"
|
android:background="@drawable/widget_stats_rounded"
|
||||||
android:layout_below="@id/headerLayout">
|
android:gravity="center"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="4dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:orientation="horizontal"
|
android:layout_weight="1"
|
||||||
android:baselineAligned="false">
|
android:baselineAligned="false"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/topLeft"
|
android:id="@+id/topLeft"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -65,20 +68,22 @@
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:ignore="NestedWeights">
|
tools:ignore="NestedWeights">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/topLeftItem"
|
android:id="@+id/topLeftItem"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/loading"/>
|
android:text="@string/loading" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/topLeftLabel"
|
android:id="@+id/topLeftLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"
|
|
||||||
android:fontFamily="@font/poppins_semi_bold"
|
android:fontFamily="@font/poppins_semi_bold"
|
||||||
|
android:gravity="center"
|
||||||
android:text="@string/anime_watched" />
|
android:text="@string/anime_watched" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
@ -96,21 +101,23 @@
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/topRightItem"
|
android:id="@+id/topRightItem"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/loading"/>
|
android:text="@string/loading" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/topRightLabel"
|
android:id="@+id/topRightLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"
|
|
||||||
android:fontFamily="@font/poppins_semi_bold"
|
android:fontFamily="@font/poppins_semi_bold"
|
||||||
android:text="@string/episodes_watched_n"/>
|
android:gravity="center"
|
||||||
|
android:text="@string/episodes_watched_n" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
@ -125,10 +132,11 @@
|
||||||
android:id="@+id/bottomLeft"
|
android:id="@+id/bottomLeft"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:orientation="horizontal"
|
android:layout_weight="1"
|
||||||
android:baselineAligned="false">
|
android:baselineAligned="false"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -136,21 +144,23 @@
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:ignore="NestedWeights">
|
tools:ignore="NestedWeights">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/bottomLeftItem"
|
android:id="@+id/bottomLeftItem"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/loading"/>
|
android:text="@string/loading" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/bottomLeftLabel"
|
android:id="@+id/bottomLeftLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/poppins_semi_bold"
|
|
||||||
android:text="@string/manga_read"
|
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"/>
|
android:fontFamily="@font/poppins_semi_bold"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/manga_read" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
|
@ -167,21 +177,23 @@
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/bottomRightItem"
|
android:id="@+id/bottomRightItem"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/loading"/>
|
android:text="@string/loading" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/bottomRightLabel"
|
android:id="@+id/bottomRightLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"
|
|
||||||
android:fontFamily="@font/poppins_semi_bold"
|
android:fontFamily="@font/poppins_semi_bold"
|
||||||
android:text="@string/chapters_read_n"/>
|
android:gravity="center"
|
||||||
|
android:text="@string/chapters_read_n" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -839,4 +839,9 @@ Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exerc
|
||||||
<string name="title_color">Title Color</string>
|
<string name="title_color">Title Color</string>
|
||||||
<string name="stat_text_color">Stats Text Color</string>
|
<string name="stat_text_color">Stats Text Color</string>
|
||||||
<string name="placeholder">Placeholder</string>
|
<string name="placeholder">Placeholder</string>
|
||||||
|
<string name="trending_movies">Trending Movies</string>
|
||||||
|
<string name="include_list">Include list</string>
|
||||||
|
<string name="top_rated">Top rated</string>
|
||||||
|
<string name="most_favourite">Most Favourite</string>
|
||||||
|
<string name="trending_manhwa">Trending Manhwa</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue