diff --git a/app/src/main/java/org/mosad/teapod/activity/main/fragments/HomeFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/HomeFragment.kt index f220469..cf0fc0f 100644 --- a/app/src/main/java/org/mosad/teapod/activity/main/fragments/HomeFragment.kt +++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/HomeFragment.kt @@ -1,27 +1,24 @@ package org.mosad.teapod.activity.main.fragments -import android.graphics.drawable.Drawable import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView import androidx.fragment.app.Fragment import com.bumptech.glide.Glide -import com.bumptech.glide.request.target.CustomTarget -import com.bumptech.glide.request.transition.Transition import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch -import org.mosad.teapod.activity.main.MainActivity import org.mosad.teapod.R +import org.mosad.teapod.activity.main.MainActivity import org.mosad.teapod.databinding.FragmentHomeBinding import org.mosad.teapod.parser.AoDParser import org.mosad.teapod.util.ItemMedia import org.mosad.teapod.util.StorageController import org.mosad.teapod.util.adapter.MediaItemAdapter import org.mosad.teapod.util.decoration.MediaItemDecoration +import org.mosad.teapod.util.setDrawableTop import org.mosad.teapod.util.showFragment class HomeFragment : Fragment() { @@ -31,6 +28,7 @@ class HomeFragment : Fragment() { private lateinit var adapterNewEpisodes: MediaItemAdapter private lateinit var adapterNewSimulcasts: MediaItemAdapter private lateinit var adapterNewTitles: MediaItemAdapter + private lateinit var adapterTopTen: MediaItemAdapter private lateinit var highlightMedia: ItemMedia @@ -60,9 +58,9 @@ class HomeFragment : Fragment() { .into(binding.imageHighlight) if (StorageController.myList.contains(highlightMedia.id)) { - loadIntoCompoundDrawable(R.drawable.ic_baseline_check_24, binding.textHighlightMyList) + binding.textHighlightMyList.setDrawableTop(R.drawable.ic_baseline_check_24) } else { - loadIntoCompoundDrawable(R.drawable.ic_baseline_add_24, binding.textHighlightMyList) + binding.textHighlightMyList.setDrawableTop(R.drawable.ic_baseline_add_24) } } } @@ -72,6 +70,7 @@ class HomeFragment : Fragment() { binding.recyclerNewEpisodes.addItemDecoration(MediaItemDecoration(9)) binding.recyclerNewSimulcasts.addItemDecoration(MediaItemDecoration(9)) binding.recyclerNewTitles.addItemDecoration(MediaItemDecoration(9)) + binding.recyclerTopTen.addItemDecoration(MediaItemDecoration(9)) // my list val myListMedia = StorageController.myList.map { elementId -> @@ -93,6 +92,10 @@ class HomeFragment : Fragment() { // new titles adapterNewTitles = MediaItemAdapter(AoDParser.newTitlesList) binding.recyclerNewTitles.adapter = adapterNewTitles + + // top ten + adapterTopTen = MediaItemAdapter(AoDParser.topTenList) + binding.recyclerTopTen.adapter = adapterTopTen } private fun initActions() { @@ -109,10 +112,10 @@ class HomeFragment : Fragment() { binding.textHighlightMyList.setOnClickListener { if (StorageController.myList.contains(highlightMedia.id)) { StorageController.myList.remove(highlightMedia.id) - loadIntoCompoundDrawable(R.drawable.ic_baseline_add_24, binding.textHighlightMyList) + binding.textHighlightMyList.setDrawableTop(R.drawable.ic_baseline_add_24) } else { StorageController.myList.add(highlightMedia.id) - loadIntoCompoundDrawable(R.drawable.ic_baseline_check_24, binding.textHighlightMyList) + binding.textHighlightMyList.setDrawableTop(R.drawable.ic_baseline_check_24) } StorageController.saveMyList(requireContext()) @@ -138,6 +141,10 @@ class HomeFragment : Fragment() { adapterNewTitles.onItemClick = { mediaId, _ -> activity?.showFragment(MediaFragment(mediaId)) } + + adapterTopTen.onItemClick = { mediaId, _ -> + activity?.showFragment(MediaFragment(mediaId)) + } } /** @@ -157,18 +164,4 @@ class HomeFragment : Fragment() { adapterMyList.notifyDataSetChanged() } - private fun loadIntoCompoundDrawable(drawable: Int, textView: TextView) { - Glide.with(requireContext()) - .load(drawable) - .into(object : CustomTarget(48, 48) { - override fun onLoadCleared(drawable: Drawable?) { - textView.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null) - } - - override fun onResourceReady(res: Drawable, transition: Transition?) { - textView.setCompoundDrawablesWithIntrinsicBounds(null, res, null, null) - } - - }) - } } \ No newline at end of file diff --git a/app/src/main/java/org/mosad/teapod/activity/main/fragments/MediaFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/MediaFragment.kt index 6d781e9..ed3f42f 100644 --- a/app/src/main/java/org/mosad/teapod/activity/main/fragments/MediaFragment.kt +++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/MediaFragment.kt @@ -56,7 +56,7 @@ class MediaFragment(private val mediaId: Int) : Fragment() { // only notify adapter, if initialized if (this::adapterRecEpisodes.isInitialized) { // TODO find a better solution for this - media.episodes.forEachIndexed() { index, episode -> + media.episodes.forEachIndexed { index, episode -> adapterRecEpisodes.updateWatchedState(episode.watched, index) } adapterRecEpisodes.notifyDataSetChanged() @@ -94,7 +94,12 @@ class MediaFragment(private val mediaId: Int) : Fragment() { adapterRecEpisodes = EpisodeItemAdapter(media.episodes) recyclerEpisodes.adapter = adapterRecEpisodes - binding.textEpisodesOrRuntime.text = getString(R.string.text_episodes_count, media.info.episodesCount) + // episodes count + binding.textEpisodesOrRuntime.text = resources.getQuantityString( + R.plurals.text_episodes_count, + media.info.episodesCount, + media.info.episodesCount + ) // get next episode nextEpisode = if (media.episodes.firstOrNull{ !it.watched } != null) { @@ -109,7 +114,11 @@ class MediaFragment(private val mediaId: Int) : Fragment() { recyclerEpisodes.visibility = View.GONE if (tmdb.runtime > 0) { - textEpisodesOrRuntime.text = getString(R.string.text_runtime, tmdb.runtime) + textEpisodesOrRuntime.text = resources.getQuantityString( + R.plurals.text_runtime, + tmdb.runtime, + tmdb.runtime + ) } else { textEpisodesOrRuntime.visibility = View.GONE } diff --git a/app/src/main/java/org/mosad/teapod/activity/onboarding/OnboardingActivity.kt b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnboardingActivity.kt index 5a691b1..4493b82 100644 --- a/app/src/main/java/org/mosad/teapod/activity/onboarding/OnboardingActivity.kt +++ b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnboardingActivity.kt @@ -53,6 +53,10 @@ class OnboardingActivity : AppCompatActivity() { } } + fun btnNextClick(@Suppress("UNUSED_PARAMETER")v: View) { + //nextFragment() // currently not used in Teapod + } + fun btnSkipClick(@Suppress("UNUSED_PARAMETER")v: View) { //launchMainActivity() // currently not used in Teapod } diff --git a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt index a8a5716..217708d 100644 --- a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt +++ b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt @@ -53,6 +53,7 @@ object AoDParser { val newEpisodesList = arrayListOf() val newSimulcastsList = arrayListOf() val newTitlesList = arrayListOf() + val topTenList = arrayListOf() fun login(): Boolean = runBlocking { @@ -236,6 +237,19 @@ object AoDParser { } } + // get top ten from AoD + topTenList.clear() + resHome.select("h2:contains(Anime Top 10)").next().select("li").forEach { + val mediaId = it.select("a.thumbs").attr("href") + .substringAfterLast("/").toIntOrNull() + val mediaImage = it.select("a.thumbs > img").attr("src") + val mediaTitle = it.select("a").text() + + if (mediaId != null) { + topTenList.add(ItemMedia(mediaId, mediaTitle, mediaImage)) + } + } + // if highlights is empty, add a random new title if (highlightsList.isEmpty()) { if (newTitlesList.isNotEmpty()) { diff --git a/app/src/main/java/org/mosad/teapod/util/Utils.kt b/app/src/main/java/org/mosad/teapod/util/Utils.kt new file mode 100644 index 0000000..1b9e7f8 --- /dev/null +++ b/app/src/main/java/org/mosad/teapod/util/Utils.kt @@ -0,0 +1,7 @@ +package org.mosad.teapod.util + +import android.widget.TextView + +fun TextView.setDrawableTop(drawable: Int) { + this.setCompoundDrawablesWithIntrinsicBounds(0, drawable, 0, 0) +} diff --git a/app/src/main/res/layout/button_rewind.xml b/app/src/main/res/layout/button_rewind.xml index 9aad6be..7b625d3 100644 --- a/app/src/main/res/layout/button_rewind.xml +++ b/app/src/main/res/layout/button_rewind.xml @@ -10,7 +10,7 @@ android:layout_height="48dp" android:layout_alignParentEnd="true" android:background="@drawable/ic_baseline_rewind_10_24" - android:contentDescription="@string/forward_10" /> + android:contentDescription="@string/rewind_10" /> + + + + + + + diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 6b9e96e..eb144bf 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -11,14 +11,22 @@ Neue Episoden Neue Simulcasts Neue Titel + Top 10 Suche nach Filmen und Serien Abspielen - %1$d Episoden + + %d Episode + %d Episoden + %1$d Minuten + + %d Minute + %d Minuten + Flg. %1$d %2$s Flg. %1$d %2$s (OmU) diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml deleted file mode 100644 index ef95257..0000000 --- a/app/src/main/res/values/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 16dp - 16dp - 16dp - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39decf5..665db70 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,6 +11,7 @@ New episodes New simulcasts New titles + Top 10 Search for movies and series @@ -23,8 +24,16 @@ Shouya Ishida starts bullying the new girl in class … 2016 6 - %1$d episodes + 1$d episodes + + %d episode + %d episodes + %1$d Minutes + + %d Minute + %d Minutes + Ep. %1$d %2$s Ep. %1$d %2$s (Sub) episode poster diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index afed577..c7b34c8 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -41,10 +41,6 @@ @color/controlHighlightDark - -