mirror of
https://github.com/rebelonion/Dantotsu.git
synced 2026-01-21 14:43:56 +00:00
Merge branch 'dev' into zephyr
This commit is contained in:
@@ -15,6 +15,7 @@ import android.os.Looper
|
||||
import android.provider.Settings
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.View.OnClickListener
|
||||
import android.view.ViewGroup
|
||||
import android.view.animation.AnticipateInterpolator
|
||||
import android.widget.TextView
|
||||
@@ -54,6 +55,7 @@ import ani.dantotsu.others.CustomBottomDialog
|
||||
import ani.dantotsu.profile.ProfileActivity
|
||||
import ani.dantotsu.profile.activity.FeedActivity
|
||||
import ani.dantotsu.profile.activity.NotificationActivity
|
||||
import ani.dantotsu.settings.ExtensionsActivity
|
||||
import ani.dantotsu.settings.saving.PrefManager
|
||||
import ani.dantotsu.settings.saving.PrefManager.asLiveBool
|
||||
import ani.dantotsu.settings.saving.PrefName
|
||||
@@ -228,17 +230,6 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
val preferences: SourcePreferences = Injekt.get()
|
||||
if (preferences.animeExtensionUpdatesCount()
|
||||
.get() > 0 || preferences.mangaExtensionUpdatesCount().get() > 0
|
||||
) {
|
||||
Toast.makeText(
|
||||
this,
|
||||
"You have extension updates available!",
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
}
|
||||
|
||||
binding.root.isMotionEventSplittingEnabled = false
|
||||
|
||||
lifecycleScope.launch {
|
||||
@@ -282,6 +273,16 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
binding.root.doOnAttach {
|
||||
initActivity(this)
|
||||
val preferences: SourcePreferences = Injekt.get()
|
||||
if (preferences.animeExtensionUpdatesCount()
|
||||
.get() > 0 || preferences.mangaExtensionUpdatesCount().get() > 0
|
||||
) {
|
||||
snackString(R.string.extension_updates_available)
|
||||
?.setDuration(Snackbar.LENGTH_LONG)
|
||||
?.setAction(R.string.review) {
|
||||
startActivity(Intent(this, ExtensionsActivity::class.java))
|
||||
}
|
||||
}
|
||||
window.navigationBarColor = ContextCompat.getColor(this, android.R.color.transparent)
|
||||
selectedOption = if (fragment != null) {
|
||||
when (fragment) {
|
||||
@@ -482,7 +483,7 @@ class MainActivity : AppCompatActivity() {
|
||||
dialogView.findViewById<TextInputEditText>(R.id.userAgentTextBox)?.hint = "Password"
|
||||
val subtitleTextView = dialogView.findViewById<TextView>(R.id.subtitle)
|
||||
subtitleTextView?.visibility = View.VISIBLE
|
||||
subtitleTextView?.text = "Enter your password to decrypt the file"
|
||||
subtitleTextView?.text = getString(R.string.enter_password_to_decrypt_file)
|
||||
|
||||
val dialog = AlertDialog.Builder(this, R.style.MyPopup)
|
||||
.setTitle("Enter Password")
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.util.Log
|
||||
import androidx.browser.customtabs.CustomTabsIntent
|
||||
import ani.dantotsu.R
|
||||
import ani.dantotsu.client
|
||||
import ani.dantotsu.connections.comments.CommentsAPI
|
||||
import ani.dantotsu.currContext
|
||||
import ani.dantotsu.openLinkInBrowser
|
||||
import ani.dantotsu.settings.saving.PrefManager
|
||||
@@ -117,6 +118,9 @@ object Anilist {
|
||||
episodesWatched = null
|
||||
chapterRead = null
|
||||
PrefManager.removeVal(PrefName.AnilistToken)
|
||||
//logout from comments api
|
||||
CommentsAPI.logout()
|
||||
|
||||
}
|
||||
|
||||
suspend inline fun <reified T : Any> executeQuery(
|
||||
|
||||
@@ -1022,7 +1022,49 @@ query (${"$"}page: Int = 1, ${"$"}id: Int, ${"$"}type: MediaType, ${"$"}isAdult:
|
||||
}
|
||||
return null
|
||||
}
|
||||
private fun trendingMovie(): String{
|
||||
return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: ANIME, format: MOVIE){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){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){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,countryOfOrigin:JP){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){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){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){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(
|
||||
smaller: Boolean = true,
|
||||
greater: Long = 0,
|
||||
|
||||
@@ -156,6 +156,7 @@ class AnilistAnimeViewModel : ViewModel() {
|
||||
suspend fun loadUpdated() = updated.postValue(Anilist.query.recentlyUpdated())
|
||||
|
||||
private val animePopular = MutableLiveData<SearchResults?>(null)
|
||||
|
||||
fun getPopular(): LiveData<SearchResults?> = animePopular
|
||||
suspend fun loadPopular(
|
||||
type: String,
|
||||
@@ -192,6 +193,30 @@ class AnilistAnimeViewModel : ViewModel() {
|
||||
)
|
||||
|
||||
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() {
|
||||
@@ -268,6 +293,37 @@ class AnilistMangaViewModel : ViewModel() {
|
||||
)
|
||||
|
||||
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() {
|
||||
|
||||
@@ -152,7 +152,31 @@ class Query {
|
||||
@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
|
||||
data class ToggleFollow(
|
||||
@SerialName("data")
|
||||
|
||||
@@ -24,7 +24,7 @@ import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
object CommentsAPI {
|
||||
val address: String = "https://1224665.xyz:443"
|
||||
private const val ADDRESS: String = "https://1224665.xyz:443"
|
||||
var authToken: String? = null
|
||||
var userId: String? = null
|
||||
var isBanned: Boolean = false
|
||||
@@ -33,7 +33,7 @@ object CommentsAPI {
|
||||
var totalVotes: Int = 0
|
||||
|
||||
suspend fun getCommentsForId(id: Int, page: Int = 1, tag: Int?, sort: String?): CommentResponse? {
|
||||
var url = "$address/comments/$id/$page"
|
||||
var url = "$ADDRESS/comments/$id/$page"
|
||||
val request = requestBuilder()
|
||||
tag?.let {
|
||||
url += "?tag=$it"
|
||||
@@ -61,7 +61,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun getRepliesFromId(id: Int, page: Int = 1): CommentResponse? {
|
||||
val url = "$address/comments/parent/$id/$page"
|
||||
val url = "$ADDRESS/comments/parent/$id/$page"
|
||||
val request = requestBuilder()
|
||||
val json = try {
|
||||
request.get(url)
|
||||
@@ -83,7 +83,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun getSingleComment(id: Int): Comment? {
|
||||
val url = "$address/comments/$id"
|
||||
val url = "$ADDRESS/comments/$id"
|
||||
val request = requestBuilder()
|
||||
val json = try {
|
||||
request.get(url)
|
||||
@@ -105,7 +105,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun vote(commentId: Int, voteType: Int): Boolean {
|
||||
val url = "$address/comments/vote/$commentId/$voteType"
|
||||
val url = "$ADDRESS/comments/vote/$commentId/$voteType"
|
||||
val request = requestBuilder()
|
||||
val json = try {
|
||||
request.post(url)
|
||||
@@ -121,7 +121,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun comment(mediaId: Int, parentCommentId: Int?, content: String, tag: Int?): Comment? {
|
||||
val url = "$address/comments"
|
||||
val url = "$ADDRESS/comments"
|
||||
val body = FormBody.Builder()
|
||||
.add("user_id", userId ?: return null)
|
||||
.add("media_id", mediaId.toString())
|
||||
@@ -169,7 +169,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun deleteComment(commentId: Int): Boolean {
|
||||
val url = "$address/comments/$commentId"
|
||||
val url = "$ADDRESS/comments/$commentId"
|
||||
val request = requestBuilder()
|
||||
val json = try {
|
||||
request.delete(url)
|
||||
@@ -185,7 +185,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun editComment(commentId: Int, content: String): Boolean {
|
||||
val url = "$address/comments/$commentId"
|
||||
val url = "$ADDRESS/comments/$commentId"
|
||||
val body = FormBody.Builder()
|
||||
.add("content", content)
|
||||
.build()
|
||||
@@ -204,7 +204,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun banUser(userId: String): Boolean {
|
||||
val url = "$address/ban/$userId"
|
||||
val url = "$ADDRESS/ban/$userId"
|
||||
val request = requestBuilder()
|
||||
val json = try {
|
||||
request.post(url)
|
||||
@@ -225,7 +225,7 @@ object CommentsAPI {
|
||||
mediaTitle: String,
|
||||
reportedId: String
|
||||
): Boolean {
|
||||
val url = "$address/report/$commentId"
|
||||
val url = "$ADDRESS/report/$commentId"
|
||||
val body = FormBody.Builder()
|
||||
.add("username", username)
|
||||
.add("mediaName", mediaTitle)
|
||||
@@ -247,7 +247,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
suspend fun getNotifications(client: OkHttpClient): NotificationResponse? {
|
||||
val url = "$address/notification/reply"
|
||||
val url = "$ADDRESS/notification/reply"
|
||||
val request = requestBuilder(client)
|
||||
val json = try {
|
||||
request.get(url)
|
||||
@@ -268,7 +268,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
private suspend fun getUserDetails(client: OkHttpClient? = null): User? {
|
||||
val url = "$address/user"
|
||||
val url = "$ADDRESS/user"
|
||||
val request = if (client != null) requestBuilder(client) else requestBuilder()
|
||||
val json = try {
|
||||
request.get(url)
|
||||
@@ -310,7 +310,7 @@ object CommentsAPI {
|
||||
}
|
||||
|
||||
}
|
||||
val url = "$address/authenticate"
|
||||
val url = "$ADDRESS/authenticate"
|
||||
val token = PrefManager.getVal(PrefName.AnilistToken, null as String?) ?: return
|
||||
repeat(MAX_RETRIES) {
|
||||
try {
|
||||
@@ -348,6 +348,17 @@ object CommentsAPI {
|
||||
snackString("Failed to login after multiple attempts")
|
||||
}
|
||||
|
||||
fun logout() {
|
||||
PrefManager.removeVal(PrefName.CommentAuthResponse)
|
||||
PrefManager.removeVal(PrefName.CommentTokenExpiry)
|
||||
authToken = null
|
||||
userId = null
|
||||
isBanned = false
|
||||
isAdmin = false
|
||||
isMod = false
|
||||
totalVotes = 0
|
||||
}
|
||||
|
||||
private suspend fun authRequest(
|
||||
token: String,
|
||||
url: String,
|
||||
|
||||
@@ -207,6 +207,21 @@ class AnimeFragment : Fragment() {
|
||||
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) {
|
||||
animePageAdapter.updateHeight()
|
||||
model.getTrending().observe(viewLifecycleOwner) {
|
||||
@@ -264,6 +279,7 @@ class AnimeFragment : Fragment() {
|
||||
model.loaded = true
|
||||
model.loadTrending(1)
|
||||
model.loadUpdated()
|
||||
model.loadAll()
|
||||
model.loadPopular(
|
||||
"ANIME", sort = Anilist.sortBy[1], onList = PrefManager.getVal(
|
||||
PrefName.PopularAnimeList
|
||||
|
||||
@@ -212,7 +212,55 @@ class AnimePageAdapter : RecyclerView.Adapter<AnimePageAdapter.AnimePageViewHold
|
||||
binding.animePopular.visibility = View.VISIBLE
|
||||
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() {
|
||||
if (Anilist.avatar != null && ready.value == true) {
|
||||
trendingBinding.userAvatar.loadImage(Anilist.avatar)
|
||||
|
||||
@@ -165,6 +165,26 @@ class MangaFragment : Fragment() {
|
||||
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) {
|
||||
mangaPageAdapter.updateHeight()
|
||||
model.getTrending().observe(viewLifecycleOwner) {
|
||||
@@ -238,6 +258,7 @@ class MangaFragment : Fragment() {
|
||||
model.loaded = true
|
||||
model.loadTrending()
|
||||
model.loadTrendingNovel()
|
||||
model.loadAll()
|
||||
model.loadPopular(
|
||||
"MANGA", sort = Anilist.sortBy[1], onList = PrefManager.getVal(
|
||||
PrefName.PopularMangaList
|
||||
|
||||
@@ -178,8 +178,73 @@ class MangaPageAdapter : RecyclerView.Adapter<MangaPageAdapter.MangaPageViewHold
|
||||
trendingBinding.titleContainer.startAnimation(setSlideUp())
|
||||
binding.mangaListContainer.layoutAnimation =
|
||||
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) {
|
||||
binding.mangaNovelProgressBar.visibility = View.GONE
|
||||
binding.mangaNovelRecyclerView.adapter = adaptor
|
||||
|
||||
@@ -52,7 +52,7 @@ class AnimeWatchAdapter(
|
||||
private val fragment: AnimeWatchFragment,
|
||||
private val watchSources: WatchSources
|
||||
) : RecyclerView.Adapter<AnimeWatchAdapter.ViewHolder>() {
|
||||
|
||||
private var autoSelect = true
|
||||
var subscribe: MediaDetailsActivity.PopImageButton? = null
|
||||
private var _binding: ItemAnimeWatchBinding? = null
|
||||
|
||||
@@ -437,7 +437,8 @@ class AnimeWatchAdapter(
|
||||
val sourceFound = media.anime.episodes!!.isNotEmpty()
|
||||
binding.animeSourceNotFound.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) {
|
||||
val nextIndex = media.selected!!.sourceIndex + 1
|
||||
binding.animeSource.setText(binding.animeSource.adapter
|
||||
@@ -453,6 +454,7 @@ class AnimeWatchAdapter(
|
||||
fragment.loadEpisodes(nextIndex, false)
|
||||
}
|
||||
}
|
||||
binding.animeSource.setOnClickListener { autoSelect = false }
|
||||
} else {
|
||||
binding.animeSourceContinue.visibility = View.GONE
|
||||
binding.animeSourceNotFound.visibility = View.GONE
|
||||
|
||||
@@ -75,7 +75,7 @@ class CommentsFragment : Fragment() {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
activity = requireActivity() as MediaDetailsActivity
|
||||
|
||||
binding.commentsList.setBaseline(activity.navBar, activity.binding.commentInputLayout)
|
||||
binding.commentsListContainer.setBaseline(activity.navBar, activity.binding.commentInputLayout)
|
||||
|
||||
//get the media id from the intent
|
||||
val mediaId = arguments?.getInt("mediaId") ?: -1
|
||||
@@ -370,7 +370,6 @@ class CommentsFragment : Fragment() {
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
tag = null
|
||||
binding.commentsList.setBaseline(activity.navBar, activity.binding.commentInputLayout)
|
||||
section.groups.forEach {
|
||||
if (it is CommentItem && it.containsGif()) {
|
||||
it.notifyChanged()
|
||||
|
||||
@@ -55,12 +55,12 @@ class FeedFragment : Fragment() {
|
||||
if (userId == -1) userId = null
|
||||
global = arguments?.getBoolean("global", false) ?: false
|
||||
|
||||
val navBar = if (userId != null)
|
||||
(activity as ProfileActivity).navBar
|
||||
else
|
||||
(activity as FeedActivity).navBar
|
||||
val navBar = if (userId != null) {
|
||||
(activity as ProfileActivity).navBar
|
||||
}else{
|
||||
(activity as FeedActivity).navBar
|
||||
}
|
||||
binding.listRecyclerView.setBaseline(navBar)
|
||||
|
||||
binding.listRecyclerView.adapter = adapter
|
||||
binding.listRecyclerView.layoutManager =
|
||||
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||
@@ -72,10 +72,11 @@ class FeedFragment : Fragment() {
|
||||
super.onResume()
|
||||
if (this::binding.isInitialized) {
|
||||
binding.root.requestLayout()
|
||||
val navBar = if (userId != null)
|
||||
val navBar = if (userId != null) {
|
||||
(activity as ProfileActivity).navBar
|
||||
else
|
||||
}else{
|
||||
(activity as FeedActivity).navBar
|
||||
}
|
||||
binding.listRecyclerView.setBaseline(navBar)
|
||||
if (!loadedFirstTime) {
|
||||
activity.lifecycleScope.launch(Dispatchers.IO) {
|
||||
|
||||
@@ -492,7 +492,10 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
|
||||
settingsShowYt.setOnCheckedChangeListener { _, 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)) {
|
||||
0 -> settingsEpList
|
||||
1 -> settingsEpGrid
|
||||
@@ -579,6 +582,11 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
|
||||
settingsChpCompact.setOnClickListener {
|
||||
uiChp(1, it)
|
||||
}
|
||||
|
||||
settingsIncludeMangaList.isChecked = PrefManager.getVal(PrefName.IncludeMangaList)
|
||||
settingsIncludeMangaList.setOnCheckedChangeListener { _, isChecked ->
|
||||
PrefManager.setVal(PrefName.IncludeMangaList, isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
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")),
|
||||
CommentSortOrder(Pref(Location.UI, String::class, "newest")),
|
||||
FollowerLayout(Pref(Location.UI, Int::class, 0)),
|
||||
IncludeAnimeList(Pref(Location.UI, Boolean::class, true)),
|
||||
IncludeMangaList(Pref(Location.UI, Boolean::class, true)),
|
||||
|
||||
//Player
|
||||
DefaultSpeed(Pref(Location.Player, Int::class, 5)),
|
||||
|
||||
@@ -138,13 +138,13 @@ class ProfileStatsWidget : AppWidgetProvider() {
|
||||
)
|
||||
)
|
||||
setTextColor(R.id.userLabel, titleTextColor)
|
||||
setTextColor(R.id.topLeftItem, statsTextColor)
|
||||
setTextColor(R.id.topLeftItem, titleTextColor)
|
||||
setTextColor(R.id.topLeftLabel, statsTextColor)
|
||||
setTextColor(R.id.topRightItem, statsTextColor)
|
||||
setTextColor(R.id.topRightItem, titleTextColor)
|
||||
setTextColor(R.id.topRightLabel, statsTextColor)
|
||||
setTextColor(R.id.bottomLeftItem, statsTextColor)
|
||||
setTextColor(R.id.bottomLeftItem, titleTextColor)
|
||||
setTextColor(R.id.bottomLeftLabel, statsTextColor)
|
||||
setTextColor(R.id.bottomRightItem, statsTextColor)
|
||||
setTextColor(R.id.bottomRightItem, titleTextColor)
|
||||
setTextColor(R.id.bottomRightLabel, statsTextColor)
|
||||
|
||||
setImageViewBitmap(
|
||||
|
||||
@@ -15,7 +15,7 @@ class ExtensionUpdateNotifier(private val context: Context) {
|
||||
Notifications.CHANNEL_EXTENSIONS_UPDATE,
|
||||
) {
|
||||
setContentTitle(
|
||||
"Extension updates available"
|
||||
context.getString(R.string.extension_updates_available)
|
||||
)
|
||||
val extNames = names.joinToString(", ")
|
||||
setContentText(extNames)
|
||||
|
||||
@@ -181,7 +181,6 @@
|
||||
android:id="@+id/settingsShowYt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:checked="true"
|
||||
android:drawableStart="@drawable/ic_round_play_circle_24"
|
||||
android:drawablePadding="16dp"
|
||||
@@ -195,5 +194,23 @@
|
||||
app:drawableTint="?attr/colorPrimary"
|
||||
app:showText="false"
|
||||
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>
|
||||
</merge>
|
||||
@@ -158,7 +158,23 @@
|
||||
app:iconPadding="16dp"
|
||||
app:iconSize="24dp"
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
tools:visibility="gone"/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/commentsListContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
@@ -218,6 +218,126 @@
|
||||
|
||||
</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
|
||||
android:id="@+id/animePopular"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -125,6 +125,84 @@
|
||||
|
||||
</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:visibility="invisible"
|
||||
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:visibility="invisible"
|
||||
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
|
||||
android:id="@+id/mangaNovel"
|
||||
android:layout_width="match_parent"
|
||||
@@ -133,6 +211,7 @@
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:padding="8dp"
|
||||
android:text="@string/trending_novel"
|
||||
android:visibility="invisible"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<FrameLayout
|
||||
@@ -163,6 +242,84 @@
|
||||
|
||||
</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:visibility="invisible"
|
||||
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:visibility="invisible"
|
||||
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
|
||||
android:id="@+id/mangaPopular"
|
||||
android:layout_width="match_parent"
|
||||
@@ -180,6 +337,7 @@
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:padding="8dp"
|
||||
android:text="@string/popular_manga"
|
||||
android:visibility="invisible"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
@@ -191,7 +349,6 @@
|
||||
android:text="@string/include_media_in_list"
|
||||
android:textSize="12sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:theme="@style/Theme.Dantotsu.AppWidgetContainer"
|
||||
android:orientation="vertical">
|
||||
android:orientation="vertical"
|
||||
android:theme="@style/Theme.Dantotsu.AppWidgetContainer">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/backgroundView"
|
||||
@@ -12,24 +11,26 @@
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/widget_stats_rounded"
|
||||
tools:ignore="ContentDescription"/>
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/headerLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:gravity="center_horizontal"
|
||||
android:layout_margin="4dp"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false">
|
||||
android:baselineAligned="false"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/userAvatar"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_dantotsu_round"
|
||||
tools:ignore="ContentDescription"/>
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userLabel"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -37,26 +38,28 @@
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="8dp"
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:textSize="18sp"
|
||||
android:text="@string/loading"/>
|
||||
android:text="@string/loading"
|
||||
android:textSize="18sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/headerLayout"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:padding="4dp"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/widget_stats_rounded"
|
||||
android:layout_below="@id/headerLayout">
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:padding="4dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false">
|
||||
android:layout_weight="1"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/topLeft"
|
||||
android:layout_width="match_parent"
|
||||
@@ -65,20 +68,22 @@
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
tools:ignore="NestedWeights">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/topLeftItem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:text="@string/loading"/>
|
||||
android:text="@string/loading" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/topLeftLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:fontFamily="@font/poppins_semi_bold"
|
||||
android:gravity="center"
|
||||
android:text="@string/anime_watched" />
|
||||
</LinearLayout>
|
||||
|
||||
@@ -96,21 +101,23 @@
|
||||
android:layout_gravity="center"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/topRightItem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:text="@string/loading"/>
|
||||
android:text="@string/loading" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/topRightLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:fontFamily="@font/poppins_semi_bold"
|
||||
android:text="@string/episodes_watched_n"/>
|
||||
android:gravity="center"
|
||||
android:text="@string/episodes_watched_n" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -125,10 +132,11 @@
|
||||
android:id="@+id/bottomLeft"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false">
|
||||
android:layout_weight="1"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -136,21 +144,23 @@
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
tools:ignore="NestedWeights">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottomLeftItem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:text="@string/loading"/>
|
||||
android:text="@string/loading" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottomLeftLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/poppins_semi_bold"
|
||||
android:text="@string/manga_read"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"/>
|
||||
android:fontFamily="@font/poppins_semi_bold"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_read" />
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
@@ -167,21 +177,23 @@
|
||||
android:layout_gravity="center"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottomRightItem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:text="@string/loading"/>
|
||||
android:text="@string/loading" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottomRightLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:fontFamily="@font/poppins_semi_bold"
|
||||
android:text="@string/chapters_read_n"/>
|
||||
android:gravity="center"
|
||||
android:text="@string/chapters_read_n" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,34 +1,30 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en-rUS">
|
||||
|
||||
<string name="repo" translatable="false">rebelonion/Dantotsu</string>
|
||||
<string name="repo">rebelonion/Dantotsu</string>
|
||||
<string name="preference_file_key" translatable="false">dantotsuprefs</string>
|
||||
|
||||
<string name="app_name" translatable="false">Dantotsu</string>
|
||||
<string name="app_name">Dantotsu</string>
|
||||
<string name="slogan">The NEW Best Anime & Manga app for Android.</string>
|
||||
|
||||
<string name="login">Login</string>
|
||||
<string name="logout">Logout</string>
|
||||
|
||||
|
||||
<string name="dantotsu" translatable="false">https://dantotsu.app/</string>
|
||||
<string name="discord" translatable="false">https://discord.gg/4HPZ5nAWwM</string>
|
||||
<string name="github" translatable="false">https://github.com/rebelonion/Dantotsu</string>
|
||||
<string name="telegram" translatable="false" tools:ignore="Typos">https://t.me/+gzBCQExtLQo1YTNh </string>
|
||||
<string name="coffee" translatable="false">https://www.buymeacoffee.com/rebelonion</string>
|
||||
|
||||
<string name="discord">https://discord.gg/4HPZ5nAWwM</string>
|
||||
<string name="github">https://github.com/rebelonion/Dantotsu</string>
|
||||
<string name="telegram" tools:ignore="Typos">https://t.me/+gzBCQExtLQo1YTNh </string>
|
||||
|
||||
<string name="anilist_link">https://anilist.co/user/%1$s/</string>
|
||||
|
||||
<string name="discord_link">https://discord.com/users/%1$s/</string>
|
||||
|
||||
<string name="home">Home</string>
|
||||
<string name="anime">Anime</string>
|
||||
<string name="browse_anime">Browse Anime</string>
|
||||
<string name="manga">Manga</string>
|
||||
<string name="browse_manga">Browse Manga</string>
|
||||
<string name="novels">Novels</string>
|
||||
<string name="info">Info</string>
|
||||
<string name="watch">Watch</string>
|
||||
<string name="read">Read</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="language_code" translatable="false">LANG</string>
|
||||
|
||||
<string name="anime_list">Anime List</string>
|
||||
<string name="manga_list">Manga List</string>
|
||||
@@ -53,10 +49,8 @@
|
||||
<string name="popular_manga">Popular Manga</string>
|
||||
|
||||
<string name="username">Username</string>
|
||||
<string name="chapters_read">Chapters Read</string>
|
||||
<string name="chapters_read_n">Chapters\nRead</string>
|
||||
<string name="episodes_watched">Episodes Watched</string>
|
||||
<string name="episodes_watched_n">Episodes\nWatched</string>
|
||||
<string name="chapters_read">"Chapters Read "</string>
|
||||
<string name="episodes_watched">"Episodes Watched "</string>
|
||||
<string name="continue_reading">Continue Reading</string>
|
||||
<string name="continue_watching">Continue Watching</string>
|
||||
<string name="recommended">Recommended</string>
|
||||
@@ -82,9 +76,6 @@
|
||||
<item>All</item>
|
||||
</string-array>
|
||||
|
||||
<string name="no_notifications">No more notifications</string>
|
||||
<string name="followers">Followers</string>
|
||||
|
||||
<string name="status">STATUS</string>
|
||||
<string-array name="status" translatable="false">
|
||||
<item>PLANNING</item>
|
||||
@@ -125,9 +116,6 @@
|
||||
<string name="format">Format</string>
|
||||
<string name="status_title">Status</string>
|
||||
<string name="total_eps">Total Episodes</string>
|
||||
<string name="episodes"> Episode(s)</string>
|
||||
<string name="chapters"> Chapter(s)</string>
|
||||
<string name="total_divider"> | %1$s</string>
|
||||
<string name="total_chaps">Total Chapters</string>
|
||||
<string name="ep_duration">Average Duration</string>
|
||||
<string name="min">" min"</string>
|
||||
@@ -141,8 +129,6 @@
|
||||
<string name="characters">Characters</string>
|
||||
<string name="relations">Relations</string>
|
||||
<string name="staff">Staff</string>
|
||||
<string name="favourites">Favourites</string>
|
||||
<string name="popularity">Popularity</string>
|
||||
|
||||
<string name="roles">Roles</string>
|
||||
<string name="details">Details</string>
|
||||
@@ -180,7 +166,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="extensions">Extensions</string>
|
||||
<string name="player_settings">Player Settings</string>
|
||||
<string name="recentlyListOnly">Only show my content in \"Recently Updated\"</string>
|
||||
<string name="recentlyListOnly">Only show My Shows in Recently Updated</string>
|
||||
<string name="download_manager_select">Download Manager</string>
|
||||
<string name="downloadInSd">Download in SD card</string>
|
||||
<string name="noSdFound">No SD card was Found.</string>
|
||||
@@ -249,8 +235,6 @@
|
||||
<string name="sub_window_color_select">Subtitle Window Color</string>
|
||||
<string name="sub_window_color_info">"The subtitle window is the part left and right from them. (where the background isn\'t)"</string>
|
||||
<string name="sub_color_info"><b>Note:</b> Changing above settings only affects Soft-Subtitles!</string>
|
||||
<string name="sub_alpha">Subtitle Transparency</string>
|
||||
<string name="sub_text_example">Example Subtitle</string>
|
||||
<string name="sub_font_select">Subtitle Font</string>
|
||||
<string name="subtitle_font_size">Subtitle Size</string>
|
||||
|
||||
@@ -310,7 +294,6 @@
|
||||
<string name="animations">Animations</string>
|
||||
<string name="banner_animations">Banner Animations</string>
|
||||
<string name="layout_animations">Layout Animations</string>
|
||||
<string name="trending_scroller">Trending Scroller</string>
|
||||
<string name="animation_speed">Overall Speed</string>
|
||||
<string name="empty_fav">Looks like you don\'t like anything,\nTry liking a show to keep it here.</string>
|
||||
<string name="fav_anime">Favourite Anime</string>
|
||||
@@ -353,7 +336,12 @@
|
||||
<string name="reload">Reload</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="skip">Skip</string>
|
||||
<string name="show_skip_time_stamp_button">Show Skip Time Stamp Button</string>
|
||||
<string name="always_load_time_stamps">Always Load Time Stamps</string>
|
||||
<string name="timestamps">Time Stamps</string>
|
||||
<string name="other">Other</string>
|
||||
<string name="auto_skip_op_ed">Auto Skip OP / ED</string>
|
||||
<string name="requires_time_stamps_to_be_enabled">Requires Time Stamps to be Enabled</string>
|
||||
<string name="total_repeats">TOTAL REPEATS</string>
|
||||
<string name="custom_lists">Custom Lists</string>
|
||||
<string name="donate_desc">Want to support Dantotsu\'s Maintainer?\nConsider Donating</string>
|
||||
@@ -371,8 +359,7 @@
|
||||
<string name="planned_anime">Planned Anime</string>
|
||||
<string name="planned_manga">Planned Manga</string>
|
||||
<string name="image_long_clicking">Open image by Long Clicking</string>
|
||||
<string name="always_continue_content">Always continue previous items</string>
|
||||
<string name="search_source_list">Search next available source</string>
|
||||
<string name="always_continue_shows">Always continue Shows</string>
|
||||
<string name="timestamp_proxy_desc">Useful if you are getting Handshake Fails</string>
|
||||
<string name="timestamp_proxy">Use Proxy for Timestamps</string>
|
||||
<string name="check_app_updates">Always check for App Updates</string>
|
||||
@@ -401,37 +388,18 @@
|
||||
\n\n_It is not required to sync both MAL and Anilist accounts._
|
||||
</string>
|
||||
<string name="notification_for_checking_subscriptions">Show notification for Checking Subscriptions</string>
|
||||
<string name="use_alarm_manager">Use Alarm Manager</string>
|
||||
<string name="use_alarm_manager_reliable">Use Alarm Manager for reliable Notifications</string>
|
||||
<string name="use_alarm_manager_confirm">Using Alarm Manger can help fight against battery optimization, but may consume more battery. It also requires the Alarm Manager permission.</string>
|
||||
<string name="use">Use</string>
|
||||
<string name="use_alarm_manager">Use Alarm Manager for reliable Notifications</string>
|
||||
<string name="checking_subscriptions">Notification for Checking Subscriptions</string>
|
||||
<string name="subscriptions_checking_time_s">Subscriptions Update Frequency : %1$s</string>
|
||||
<string name="subscriptions_checking_time">Subscriptions Update Frequency</string>
|
||||
<string name="subscriptions_info">Amount of time for Dantotsu to periodically check for new Episodes/Chapters\n(Less time will cause more battery consumption)</string>
|
||||
<string name="do_not_update">Don\'t Update</string>
|
||||
<string name="loading_chap_number">Loading Chapter %1$s</string>
|
||||
<string name="loading_next_chap">Loading Next Chapter</string>
|
||||
<string name="grid">Grid</string>
|
||||
<string name="sort_by_release_date">Sort by Release Date</string>
|
||||
<string name="crop_borders">Crop Borders</string>
|
||||
<string name="note">NOTE</string>
|
||||
|
||||
<string name="discord_dantotsu_button">Display dantotsu in the second button</string>
|
||||
<string name="discord_anilist_button">Display your AniList profile instead</string>
|
||||
<string name="discord_custom_button">Set up your own custom button</string>
|
||||
<string name="discord_rich_presence">Discord Rich Presence</string>
|
||||
<string name="stream_on_dantotsu">Stream on Dantotsu</string>
|
||||
<string name="view_my_anilist">View My AniList</string>
|
||||
<string name="button_text">Button Text</string>
|
||||
<string name="button_link">Button Link</string>
|
||||
<string name="discord_custom_sample">Sample</string>
|
||||
|
||||
<string name="installing_extension">Installing extension</string>
|
||||
<string name="installation_failed">Installation failed: %1$s</string>
|
||||
<string name="installation_complete">Installation complete</string>
|
||||
<string name="extension_has_been_installed">The extension has been successfully installed.</string>
|
||||
<string name="extension_installed">Extension installed</string>
|
||||
<string name="error_message">Error: %1$s</string>
|
||||
<string name="install_step">Step: %1$s</string>
|
||||
|
||||
<string name="jobless_message">DAMN! YOU TRULY ARE JOBLESS\nYOU REACHED THE END</string>
|
||||
<string name="file_manager_not_found">Couldn\'t find any File Manager to open SD card</string>
|
||||
@@ -439,28 +407,21 @@
|
||||
<string name="long_click_to_check_update">You Long Click the button to check for App Update</string>
|
||||
<string name="saved_to_path">Saved to:\n%s</string>
|
||||
<string name="setting_progress">Setting progress to %1$d</string>
|
||||
<string name="login_anilist_account">Please Login into AniList account!</string>
|
||||
<string name="login_anilist_account">Please Login into anilist account!</string>
|
||||
<string name="congrats_vro">Congrats Vro</string>
|
||||
<string name="please_reload">Please Reload.</string>
|
||||
<string name="copied_text">Copied "%1$s"</string>
|
||||
<string name="back_to_exit">Press BACK again to exit</string>
|
||||
<string name="back_to_exit">Please perform BACK again to Exit</string>
|
||||
<string name="no_internet_connection">No Internet Connection</string>
|
||||
<string name="anilist_not_found">Seems like that wasn\'t found on Anilist.</string>
|
||||
<string name="disabled_auto_skip">Disabled Auto Skipping OP & ED</string>
|
||||
<string name="auto_skip">Auto Skipping OP & ED</string>
|
||||
<string name="show_skip_time_stamp_button">Show Skip Time Stamp Button</string>
|
||||
<string name="always_load_time_stamps">Always Load Time Stamps</string>
|
||||
<string name="auto_hide_time_stamps">Auto Hide Time Stamps</string>string
|
||||
<string name="timestamps">Time Stamps</string>
|
||||
<string name="auto_skip_op_ed">Auto Skip OP / ED</string>
|
||||
<string name="requires_time_stamps_to_be_enabled">Requires Time Stamps to be Enabled</string>
|
||||
<string name="hide_skip_button">Make the skip time stamp button disappear after 5 seconds</string>
|
||||
<string name="copied_to_clipboard">Copied to Clipboard</string>
|
||||
<string name="first_episode">This is the 1st Episode!</string>
|
||||
<string name="reset_auto_update">You can long click List Editor button to Reset Auto Update</string>
|
||||
<string name="autoplay_cancelled">Autoplay cancelled, no Interaction for more than 1 Hour.</string>
|
||||
<string name="auto_select_server_error">Couldn\'t auto select the server, Please try again!</string>
|
||||
<string name="stream_selection_empty">No streams available! Try another source.</string>
|
||||
<string name="stream_selection_empty">No streams available for content. Try another source.</string>
|
||||
<string name="logging_in_mal">Logging in MAL</string>
|
||||
<string name="getting_user_data">Getting User Data</string>
|
||||
<string name="no_next_episode">No next Episode Found!</string>
|
||||
@@ -532,21 +493,19 @@
|
||||
<string name="read_on_dantotsu">Read on Dantotsu</string>
|
||||
<string name="watch_on_dantotsu">Watch on Dantotsu</string>
|
||||
<string name="view_profile_in_dantotsu">View Profile in Dantotsu</string>
|
||||
<string name="continue_episode">Continue : Episode %1$s%2$s\n%3$s</string>
|
||||
<string name="filler_tag"> - Filler</string>
|
||||
<string name="continue_chapter">Continue : %1$s\n%2$s</string>
|
||||
<string name="continue_episode">"Continue : Episode "</string>
|
||||
<string name="continue_chapter">"Continue : "</string>
|
||||
<string name="episode">"Episode "</string>
|
||||
<string name="episode_num">"Episode %1$s"</string>
|
||||
<string name="chapter">"Chapter "</string>
|
||||
<string name="chapter_num">"Chapter %1$s"</string>
|
||||
<string name="just_released">- just got released!</string>
|
||||
<string name="checking_subscriptions_title">Checking Subscriptions</string>
|
||||
<string name="user_list">%1$s\'s %2$s List</string>
|
||||
|
||||
<string name="speed">Speed</string>
|
||||
<string name="auto_update">Auto Update progress for %1$s?</string>
|
||||
<string name="continue_from">Continue from %1$s?</string>
|
||||
<string name="title_update_progress">Update progress on AniList?</string>
|
||||
<string name="title_update_progress">Update progress on anilist?</string>
|
||||
<string name="incognito_will_not_update">Incognito mode will still ignore progress.</string>
|
||||
<string name="dont_ask_again">"Don\'t ask again for %1$s"</string>
|
||||
<string name="default_speed">Default Speed</string>
|
||||
@@ -556,11 +515,15 @@
|
||||
<string name="outline_type">Outline Type</string>
|
||||
<string name="subtitle_font">Subtitle Font</string>
|
||||
|
||||
<string name="discord_nothing_button">Display only the first button</string>
|
||||
<string name="discord_dantotsu_button">Display dantotsu in the second button</string>
|
||||
<string name="discord_anilist_button">Display your AniList profile instead</string>
|
||||
<string name="discord_rich_presence">Discord Rich Presence</string>
|
||||
<string name="stream_on_dantotsu">Stream on Dantotsu</string>
|
||||
<string name="view_my_anilist">View My AniList</string>
|
||||
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="reset">Reset</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="no_chapter">No Chapter</string>
|
||||
<string name="content_18">Turn on 18+ Content from your Anilist Settings</string>
|
||||
@@ -684,7 +647,6 @@
|
||||
<string name="NSFWExtention">NSFW Extensions</string>
|
||||
<string name="skip_loading_extension_icons">Skip loading extension icons</string>
|
||||
<string name="use_material_you">Material You</string>
|
||||
<string name="use_app_theme">Use App Theme</string>
|
||||
<string name="extension_specific_dns">Extension-specific DNS</string>
|
||||
<string name="theme_">Theme:</string>
|
||||
<string name="user_agent">User Agent</string>
|
||||
@@ -702,10 +664,9 @@
|
||||
<string name="configure">Configure</string>
|
||||
<string name="add_widget">Add widget</string>
|
||||
<string name="app_widget_description">This is an app widget description</string>
|
||||
<string name="upcoming_anime">Upcoming Anime</string>
|
||||
<string name="airing_image">Airing Image</string>
|
||||
<string name="anime_downloads">animeDownloads</string>
|
||||
<string name="purge_anime_downloads">Delete all Anime downloads</string>
|
||||
<string name="purge_anime_downloads">Delete all anime downloads</string>
|
||||
<string name="purge_manga_downloads">Delete all Manga Downloads</string>
|
||||
<string name="purge_novel_downloads">Delete all Novel Downloads</string>
|
||||
<string name="requires_android_12">Requires Android 12+</string>
|
||||
@@ -729,7 +690,6 @@
|
||||
<string name="no_fav_manga">User has no favorite Manga</string>
|
||||
<string name="fav_character">Favourite Characters</string>
|
||||
<string name="fav_staff">Favorite Staff</string>
|
||||
|
||||
<string name="stats">Stats</string>
|
||||
<string name="days_watched">Days watched</string>
|
||||
<string name="total_anime">Total Anime</string>
|
||||
@@ -739,33 +699,7 @@
|
||||
<string name="manga_mean_score">Manga Mean Score</string>
|
||||
<string name="about_me">About me</string>
|
||||
<string name="follow">Follow</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="unfollow">Unfollow</string>
|
||||
<string name="follows_you">Follows you</string>
|
||||
<string name="mutual">Mutual</string>
|
||||
<string name="success">Success</string>
|
||||
|
||||
<string name="upcoming">Upcoming</string>
|
||||
<string name="no_shows_to_display">No shows to display</string>
|
||||
<string name="extension_name">Extension Name</string>
|
||||
<string name="extension_version">version</string>
|
||||
<string name="enter_password_to_decrypt_file">Enter your password to decrypt the file</string>
|
||||
<string name="show_rotate_button">Show Rotate Button</string>
|
||||
<string name="default_manga_settings">Default Manga Settings</string>
|
||||
<string name="use_dark_theme">Use Dark Theme</string>
|
||||
<string name="use_oled_theme">Use OLED Theme</string>
|
||||
<string name="scanlators">Scanlators</string>
|
||||
<string name="exporting_requires_encryption">Exporting credentials requires a password for encryption.</string>
|
||||
<string name="manga_queue">Manga Queue (WIP)</string>
|
||||
<string name="anime_queue">Anime Queue (WIP)</string>
|
||||
<string name="no_offline_manga_found">No offline manga found</string>
|
||||
<string name="sort">Sort</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="scanlator">Scanlator</string>
|
||||
<string name="set_cookies">Set Cookies</string>
|
||||
<string name="open_website">Open Website</string>
|
||||
|
||||
<string name="lorem_ipsum" translatable="false">
|
||||
<string name="lorem_ipsum">
|
||||
|
||||
Lorem ipsum dolor sit amet. Est consectetur sint qui internos optio nam Quis excepturi qui voluptatem animi. Qui labore quasi vel suscipit deleniti et doloremque omnis in velit suscipit et quasi eaque. Et doloribus recusandae id laudantium Quis qui natus velit in voluptatem voluptatem!
|
||||
|
||||
@@ -785,74 +719,4 @@ Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exerc
|
||||
<string name="anilist_notifications_checking_time">Anilist notifications update frequency : %1$s</string>
|
||||
<string name="comment_notification_checking_time">Comment notifications update frequency : %1$s</string>
|
||||
<string name="activities">Activities</string>
|
||||
|
||||
<string name="incorrect_password">Incorrect password</string>
|
||||
<string name="password_cannot_be_empty">Password cannot be empty</string>
|
||||
<string name="unknown_file_type">Unknown file type</string>
|
||||
<string name="error_importing_settings">Error importing settings</string>
|
||||
<string name="download_manager">Download Manager</string>
|
||||
<string name="enter_password">Enter Password</string>
|
||||
|
||||
<string name="you_cursed">youwu have been cuwsed :pwayge:</string>
|
||||
<string name="cursed_yt" translatable="false">https://www.youtube.com/watch?v=dQw4w9WgXcQ</string>
|
||||
<string name="purge_confirm">Are you sure you want to purge all %1$s downloads?</string>
|
||||
|
||||
<string name="delete_fail_reason">Failed to delete because of… %1$s</string>
|
||||
|
||||
<string name="hide_replies">Hide replies</string>
|
||||
<string name="view_reply">View reply</string>
|
||||
<string name="view_replies">View replies</string>
|
||||
<string name="view_replies_count">View %1$d replies</string>
|
||||
<string name="replying_to">Replying to %1$s</string>
|
||||
|
||||
<string name="delete_comment">Delete Comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure you want to delete this comment?</string>
|
||||
<string name="comment_deleted">Comment Deleted</string>
|
||||
|
||||
<string name="ban_user">Ban User</string>
|
||||
<string name="ban_user_confirm">Are you sure you want to ban this user?</string>
|
||||
<string name="user_banned">User Banned</string>
|
||||
|
||||
<string name="report_comment">Report Comment</string>
|
||||
<string name="report_comment_confirm">Only report comments that violate the rules. Are you sure you want to report this comment?</string>
|
||||
<string name="comment_reported">Comment Reported</string>
|
||||
|
||||
<string name="list">List</string>
|
||||
<string name="grid">Grid</string>
|
||||
<string name="compact">Compact</string>
|
||||
|
||||
<string name="webview_not_installed">WebView not installed</string>
|
||||
|
||||
<string name="video_quality">Quality: %1$dp</string>
|
||||
<string name="size_unknown">Unknown Size</string>
|
||||
<string name="mb_size">%1$s MB</string>
|
||||
<string name="button_import">Import…</string>
|
||||
<string name="button_export">Export…</string>
|
||||
<string name="no_location_selected">No location selected</string>
|
||||
<string name="enjoying_app">Enjoying the App?</string>
|
||||
<string name="consider_donating">Consider donating!</string>
|
||||
<string name="no_moners">no moners :(</string>
|
||||
<string name="you_be_rich">That\'s alright, you\'ll be a rich man soon :prayge:</string>
|
||||
<string name="donate">donate :)</string>
|
||||
<string name="do_it">Do it!</string>
|
||||
<string name="password">Password</string>
|
||||
|
||||
<string name="search_title">Search %1$s</string>
|
||||
|
||||
<string name="profile_stats_widget">Track progress directly from your home screen</string>
|
||||
<string name="anime_watched">Anime\nWatched</string>
|
||||
<string name="manga_read">Manga\nRead</string>
|
||||
<string name="loading">Loading…</string>
|
||||
<string name="user_stats">%1$s\'s Stats</string>
|
||||
|
||||
<string name="please">Please</string>
|
||||
<string name="log_in">log in</string>
|
||||
<string name="or_join">or join</string>
|
||||
|
||||
<string name="top_background_color">Top background color</string>
|
||||
<string name="bottom_background_color">Bottom Background Color</string>
|
||||
<string name="countdown_text_color">Countdown Text Color</string>
|
||||
<string name="title_color">Title Color</string>
|
||||
<string name="stat_text_color">Stats Text Color</string>
|
||||
<string name="placeholder">Placeholder</string>
|
||||
</resources>
|
||||
@@ -3,10 +3,10 @@
|
||||
android:description="@string/profile_stats_widget"
|
||||
android:initialKeyguardLayout="@layout/statistics_widget"
|
||||
android:initialLayout="@layout/statistics_widget"
|
||||
android:targetCellWidth="3"
|
||||
android:targetCellWidth="2"
|
||||
android:targetCellHeight="2"
|
||||
android:minResizeWidth="180dp"
|
||||
android:minResizeHeight="110dp"
|
||||
android:minResizeWidth="130dp"
|
||||
android:minResizeHeight="220dp"
|
||||
android:previewImage="@drawable/statistics_widget_preview"
|
||||
android:previewLayout="@layout/statistics_widget"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
android:description="@string/profile_stats_widget"
|
||||
android:initialKeyguardLayout="@layout/statistics_widget"
|
||||
android:initialLayout="@layout/statistics_widget"
|
||||
android:minWidth="180dp"
|
||||
android:minHeight="110dp"
|
||||
android:minResizeWidth="180dp"
|
||||
android:minResizeHeight="110dp"
|
||||
android:minWidth="130dp"
|
||||
android:minHeight="220dp"
|
||||
android:minResizeWidth="130dp"
|
||||
android:minResizeHeight="220dp"
|
||||
android:previewImage="@drawable/statistics_widget_preview"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:updatePeriodMillis="86400000"
|
||||
|
||||
Reference in New Issue
Block a user