From 34a9a55d4f2475de77f50d232ae0eaee02666e3e Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Fri, 15 Mar 2024 20:57:36 -0500 Subject: [PATCH] fix: comment bar not visible (solution is so cursed) --- app/src/main/java/ani/dantotsu/Functions.kt | 14 +- app/src/main/java/ani/dantotsu/Network.kt | 2 +- .../dantotsu/media/MediaDetailsActivity.kt | 1 + .../media/comments/CommentsFragment.kt | 156 ++++-------- .../CommentNotificationWorker.kt | 9 +- .../java/ani/dantotsu/parsers/BaseParser.kt | 12 +- .../ani/dantotsu/settings/SettingsActivity.kt | 2 +- .../dantotsu/settings/saving/PrefManager.kt | 5 +- .../dantotsu/settings/saving/Preferences.kt | 2 +- .../main/res/layout-land/activity_media.xml | 111 ++++++++- app/src/main/res/layout/activity_media.xml | 234 +++++++++++++----- app/src/main/res/layout/fragment_comments.xml | 108 -------- app/src/main/res/values/strings.xml | 1 - 13 files changed, 363 insertions(+), 294 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt index 1a49aa14..5bd4e731 100644 --- a/app/src/main/java/ani/dantotsu/Functions.kt +++ b/app/src/main/java/ani/dantotsu/Functions.kt @@ -490,6 +490,7 @@ fun ImageView.loadImage(url: String?, size: Int = 0) { } fun ImageView.loadImage(file: FileUrl?, size: Int = 0) { + file?.url = PrefManager.getVal(PrefName.ImageUrl).ifEmpty { file?.url ?: "" } if (file?.url?.isNotEmpty() == true) { tryWith { val glideUrl = GlideUrl(file.url) { file.headers } @@ -1124,12 +1125,14 @@ fun blurImage(imageView: ImageView, banner: String?){ val sampling = PrefManager.getVal(PrefName.BlurSampling).toInt() if (PrefManager.getVal(PrefName.BlurBanners)){ val context = imageView.context - if (!(context as Activity).isDestroyed) + if (!(context as Activity).isDestroyed) { + val url = PrefManager.getVal(PrefName.ImageUrl).ifEmpty { banner } Glide.with(context as Context) - .load(GlideUrl(banner)) + .load(GlideUrl(url)) .diskCacheStrategy(DiskCacheStrategy.ALL).override(400) .apply(RequestOptions.bitmapTransform(BlurTransformation(radius, sampling))) .into(imageView) + } }else{ imageView.loadImage(banner) } @@ -1138,13 +1141,6 @@ fun blurImage(imageView: ImageView, banner: String?){ } } -fun logToFile(context: Context, message: String) { - val externalFilesDir = context.getExternalFilesDir(null) - val file = File(externalFilesDir, "notifications.log") - file.appendText(message) - file.appendText("\n") -} - /** * Builds the markwon instance with all the plugins * @return the markwon instance diff --git a/app/src/main/java/ani/dantotsu/Network.kt b/app/src/main/java/ani/dantotsu/Network.kt index e45f080a..aa71cb48 100644 --- a/app/src/main/java/ani/dantotsu/Network.kt +++ b/app/src/main/java/ani/dantotsu/Network.kt @@ -136,7 +136,7 @@ suspend fun tryWithSuspend( * A url, which can also have headers * **/ data class FileUrl( - val url: String, + var url: String, val headers: Map = mapOf() ) : Serializable { companion object { diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt index f9f7d7e1..9a528b80 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt @@ -370,6 +370,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi binding.mediaTitle.translationX = -screenWidth tabLayout.selectionListener = { selected, newId -> + binding.commentInputLayout.visibility = if (selected == 2) View.VISIBLE else View.GONE this.selected = selected selectFromID(newId) viewPager.setCurrentItem(selected, false) diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt index 9fe160ad..8be902df 100644 --- a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt @@ -28,6 +28,7 @@ import ani.dantotsu.connections.comments.CommentResponse import ani.dantotsu.connections.comments.CommentsAPI import ani.dantotsu.databinding.FragmentCommentsBinding import ani.dantotsu.loadImage +import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.snackString @@ -45,7 +46,7 @@ import java.util.TimeZone @SuppressLint("ClickableViewAccessibility") class CommentsFragment : Fragment() { lateinit var binding: FragmentCommentsBinding - lateinit var activity: AppCompatActivity + lateinit var activity: MediaDetailsActivity private var interactionState = InteractionState.NONE private var commentWithInteraction: CommentItem? = null private val section = Section() @@ -69,7 +70,7 @@ class CommentsFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - activity = requireActivity() as AppCompatActivity + activity = requireActivity() as MediaDetailsActivity //get the media id from the intent val mediaId = arguments?.getInt("mediaId") ?: -1 mediaName = arguments?.getString("mediaName") ?: "unknown" @@ -82,9 +83,9 @@ class CommentsFragment : Fragment() { val markwon = buildMarkwon(activity) - binding.commentUserAvatar.loadImage(Anilist.avatar) + activity.binding.commentUserAvatar.loadImage(Anilist.avatar) val markwonEditor = MarkwonEditor.create(markwon) - binding.commentInput.addTextChangedListener( + activity.binding.commentInput.addTextChangedListener( MarkwonEditorTextWatcher.withProcess( markwonEditor ) @@ -95,7 +96,7 @@ class CommentsFragment : Fragment() { loadAndDisplayComments() binding.commentsRefresh.isRefreshing = false } - binding.commentReplyToContainer.visibility = View.GONE + activity.binding.commentReplyToContainer.visibility = View.GONE } binding.commentsList.adapter = adapter @@ -110,7 +111,7 @@ class CommentsFragment : Fragment() { } } - binding.commentSort.setOnClickListener { view -> + binding.commentSort.setOnClickListener { sortView -> fun sortComments(sortOrder: String) { val groups = section.groups when (sortOrder) { @@ -122,7 +123,7 @@ class CommentsFragment : Fragment() { section.update(groups) } - val popup = PopupMenu(activity, view) + val popup = PopupMenu(activity, sortView) popup.setOnMenuItemClickListener { item -> val sortOrder = when (item.itemId) { R.id.comment_sort_newest -> "newest" @@ -179,7 +180,7 @@ class CommentsFragment : Fragment() { if (!binding.commentsList.canScrollVertically(1) && !isFetching && (binding.commentsList.layoutManager as LinearLayoutManager).findLastVisibleItemPosition() == (binding.commentsList.adapter!!.itemCount - 1) ) { - if (pagesLoaded < totalPages) { + if (pagesLoaded < totalPages && totalPages > 1) { binding.commentBottomRefresh.visibility = View.VISIBLE loadMoreComments() lifecycleScope.launch { @@ -232,62 +233,7 @@ class CommentsFragment : Fragment() { } }) - //if we have scrolled to the bottom of the list, load more comments - /*binding.commentsList.addOnScrollListener(object : - androidx.recyclerview.widget.RecyclerView.OnScrollListener() { - override fun onScrolled( - recyclerView: androidx.recyclerview.widget.RecyclerView, - dx: Int, - dy: Int - ) { - super.onScrolled(recyclerView, dx, dy) - if (shouldLoadMoreComments(recyclerView)) { - loadMoreComments() - } - } - - private fun shouldLoadMoreComments(recyclerView: androidx.recyclerview.widget.RecyclerView): Boolean { - return !recyclerView.canScrollVertically(1) && pagesLoaded < totalPages && !isFetching - } - - private fun loadMoreComments() { - isFetching = true - lifecycleScope.launch { - val comments = fetchComments() - comments?.comments?.forEach { comment -> - updateUIWithComment(comment) - } - totalPages = comments?.totalPages ?: 1 - pagesLoaded++ - isFetching = false - } - } - - private suspend fun fetchComments(): CommentResponse? { - return withContext(Dispatchers.IO) { - CommentsAPI.getCommentsForId(mediaId, pagesLoaded + 1, filterTag) - } - } - - //adds additional comments to the section - private suspend fun updateUIWithComment(comment: CommentNotificationWorker) { - withContext(Dispatchers.Main) { - section.add( - CommentItem( - comment, - buildMarkwon(activity), - section, - this@CommentsFragment, - backgroundColor, - 0 - ) - ) - } - } - })*/ - - - binding.commentInput.addTextChangedListener(object : TextWatcher { + activity.binding.commentInput.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -295,38 +241,38 @@ class CommentsFragment : Fragment() { } override fun afterTextChanged(s: android.text.Editable?) { - if (binding.commentInput.text.length > 300) { - binding.commentInput.text.delete(300, binding.commentInput.text.length) + if ((activity.binding.commentInput.text.length) > 300) { + activity.binding.commentInput.text.delete(300, activity.binding.commentInput.text.length) snackString("CommentNotificationWorker cannot be longer than 300 characters") } } }) - binding.commentInput.setOnFocusChangeListener { _, hasFocus -> + activity.binding.commentInput.setOnFocusChangeListener { _, hasFocus -> if (hasFocus) { - val targetWidth = binding.commentInputLayout.width - - binding.commentLabel.width - - binding.commentSend.width - - binding.commentUserAvatar.width - 12 + 16 - val anim = ValueAnimator.ofInt(binding.commentInput.width, targetWidth) + val targetWidth = activity.binding.commentInputLayout.width - + activity.binding.commentLabel.width - + activity.binding.commentSend.width - + activity.binding.commentUserAvatar.width - 12 + 16 + val anim = ValueAnimator.ofInt(activity.binding.commentInput.width, targetWidth) anim.addUpdateListener { valueAnimator -> - val layoutParams = binding.commentInput.layoutParams + val layoutParams = activity.binding.commentInput.layoutParams layoutParams.width = valueAnimator.animatedValue as Int - binding.commentInput.layoutParams = layoutParams + activity.binding.commentInput.layoutParams = layoutParams } anim.duration = 300 anim.start() anim.doOnEnd { - binding.commentLabel.visibility = View.VISIBLE - binding.commentSend.visibility = View.VISIBLE - binding.commentLabel.animate().translationX(0f).setDuration(300).start() - binding.commentSend.animate().translationX(0f).setDuration(300).start() + activity.binding.commentLabel.visibility = View.VISIBLE + activity.binding.commentSend.visibility = View.VISIBLE + activity.binding.commentLabel.animate().translationX(0f).setDuration(300).start() + activity.binding.commentSend.animate().translationX(0f).setDuration(300).start() } } - binding.commentLabel.setOnClickListener { + activity.binding.commentLabel.setOnClickListener { //alert dialog to enter a number, with a cancel and ok button val alertDialog = android.app.AlertDialog.Builder(activity, R.style.MyPopup) .setTitle("Enter a chapter/episode number tag") @@ -337,13 +283,13 @@ class CommentsFragment : Fragment() { val text = editText?.text.toString() tag = text.toIntOrNull() if (tag == null) { - binding.commentLabel.background = ResourcesCompat.getDrawable( + activity.binding.commentLabel.background = ResourcesCompat.getDrawable( resources, R.drawable.ic_label_off_24, null ) } else { - binding.commentLabel.background = ResourcesCompat.getDrawable( + activity.binding.commentLabel.background = ResourcesCompat.getDrawable( resources, R.drawable.ic_label_24, null @@ -353,7 +299,7 @@ class CommentsFragment : Fragment() { } .setNeutralButton("Clear") { dialog, _ -> tag = null - binding.commentLabel.background = ResourcesCompat.getDrawable( + activity.binding.commentLabel.background = ResourcesCompat.getDrawable( resources, R.drawable.ic_label_off_24, null @@ -362,7 +308,7 @@ class CommentsFragment : Fragment() { } .setNegativeButton("Cancel") { dialog, _ -> tag = null - binding.commentLabel.background = ResourcesCompat.getDrawable( + activity.binding.commentLabel.background = ResourcesCompat.getDrawable( resources, R.drawable.ic_label_off_24, null @@ -374,7 +320,7 @@ class CommentsFragment : Fragment() { } } - binding.commentSend.setOnClickListener { + activity.binding.commentSend.setOnClickListener { if (CommentsAPI.isBanned) { snackString("You are banned from commenting :(") return@setOnClickListener @@ -490,18 +436,18 @@ class CommentsFragment : Fragment() { interactionState = InteractionState.NONE return when (oldState) { InteractionState.EDIT -> { - binding.commentReplyToContainer.visibility = View.GONE - binding.commentInput.setText("") + activity.binding.commentReplyToContainer.visibility = View.GONE + activity.binding.commentInput.setText("") val imm = activity.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager - imm.hideSoftInputFromWindow(binding.commentInput.windowToken, 0) + imm.hideSoftInputFromWindow(activity.binding.commentInput.windowToken, 0) commentWithInteraction?.editing(false) InteractionState.EDIT } InteractionState.REPLY -> { - binding.commentInput.setText("") + activity.binding.commentInput.setText("") val imm = activity.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager - imm.hideSoftInputFromWindow(binding.commentInput.windowToken, 0) + imm.hideSoftInputFromWindow(activity.binding.commentInput.windowToken, 0) commentWithInteraction?.replying(false) InteractionState.REPLY } @@ -520,11 +466,11 @@ class CommentsFragment : Fragment() { fun editCallback(comment: CommentItem) { if (resetOldState() == InteractionState.EDIT) return commentWithInteraction = comment - binding.commentInput.setText(comment.comment.content) - binding.commentInput.requestFocus() - binding.commentInput.setSelection(binding.commentInput.text.length) + activity.binding.commentInput.setText(comment.comment.content) + activity.binding.commentInput.requestFocus() + activity.binding.commentInput.setSelection(activity.binding.commentInput.text.length) val imm = activity.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager - imm.showSoftInput(binding.commentInput, InputMethodManager.SHOW_IMPLICIT) + imm.showSoftInput(activity.binding.commentInput, InputMethodManager.SHOW_IMPLICIT) interactionState = InteractionState.EDIT } @@ -536,11 +482,11 @@ class CommentsFragment : Fragment() { fun replyCallback(comment: CommentItem) { if (resetOldState() == InteractionState.REPLY) return commentWithInteraction = comment - binding.commentReplyToContainer.visibility = View.VISIBLE - binding.commentInput.requestFocus() - binding.commentInput.setSelection(binding.commentInput.text.length) + activity.binding.commentReplyToContainer.visibility = View.VISIBLE + activity.binding.commentInput.requestFocus() + activity.binding.commentInput.setSelection(activity.binding.commentInput.text.length) val imm = activity.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager - imm.showSoftInput(binding.commentInput, InputMethodManager.SHOW_IMPLICIT) + imm.showSoftInput(activity.binding.commentInput, InputMethodManager.SHOW_IMPLICIT) interactionState = InteractionState.REPLY } @@ -548,15 +494,15 @@ class CommentsFragment : Fragment() { @SuppressLint("SetTextI18n") fun replyTo(comment: CommentItem, username: String) { if (comment.isReplying) { - binding.commentReplyToContainer.visibility = View.VISIBLE - binding.commentReplyTo.text = "Replying to $username" - binding.commentReplyToCancel.setOnClickListener { + activity.binding.commentReplyToContainer.visibility = View.VISIBLE + activity.binding.commentReplyTo.text = "Replying to $username" + activity.binding.commentReplyToCancel.setOnClickListener { comment.replying(false) replyCallback(comment) - binding.commentReplyToContainer.visibility = View.GONE + activity.binding.commentReplyToContainer.visibility = View.GONE } } else { - binding.commentReplyToContainer.visibility = View.GONE + activity.binding.commentReplyToContainer.visibility = View.GONE } } @@ -624,20 +570,20 @@ class CommentsFragment : Fragment() { } private fun processComment() { - val commentText = binding.commentInput.text.toString() + val commentText = activity.binding.commentInput.text.toString() if (commentText.isEmpty()) { snackString("CommentNotificationWorker cannot be empty") return } - binding.commentInput.text.clear() + activity.binding.commentInput.text.clear() lifecycleScope.launch { if (interactionState == InteractionState.EDIT) { handleEditComment(commentText) } else { handleNewComment(commentText) tag = null - binding.commentLabel.background = ResourcesCompat.getDrawable( + activity.binding.commentLabel.background = ResourcesCompat.getDrawable( resources, R.drawable.ic_label_off_24, null diff --git a/app/src/main/java/ani/dantotsu/notifications/CommentNotificationWorker.kt b/app/src/main/java/ani/dantotsu/notifications/CommentNotificationWorker.kt index a07f0d6a..1f778487 100644 --- a/app/src/main/java/ani/dantotsu/notifications/CommentNotificationWorker.kt +++ b/app/src/main/java/ani/dantotsu/notifications/CommentNotificationWorker.kt @@ -64,6 +64,7 @@ class CommentNotificationWorker(appContext: Context, workerParams: WorkerParamet 1 -> NotificationType.COMMENT_REPLY 2 -> NotificationType.COMMENT_WARNING 3 -> NotificationType.APP_GLOBAL + 420 -> NotificationType.NO_NOTIFICATION else -> NotificationType.UNKNOWN } val notification = when (type) { @@ -110,6 +111,11 @@ class CommentNotificationWorker(appContext: Context, workerParams: WorkerParamet ) } + NotificationType.NO_NOTIFICATION -> { + PrefManager.setVal(PrefName.ImageUrl, it.content ?: "") + null + } + NotificationType.UNKNOWN -> { null } @@ -219,7 +225,7 @@ class CommentNotificationWorker(appContext: Context, workerParams: WorkerParamet builder.build() } - NotificationType.UNKNOWN -> { + else -> { null } } @@ -251,6 +257,7 @@ class CommentNotificationWorker(appContext: Context, workerParams: WorkerParamet COMMENT_REPLY(Notifications.CHANNEL_COMMENTS), COMMENT_WARNING(Notifications.CHANNEL_COMMENT_WARING), APP_GLOBAL(Notifications.CHANNEL_APP_GLOBAL), + NO_NOTIFICATION("no_notification"), UNKNOWN("unknown") } diff --git a/app/src/main/java/ani/dantotsu/parsers/BaseParser.kt b/app/src/main/java/ani/dantotsu/parsers/BaseParser.kt index 6c2d5f79..014be93d 100644 --- a/app/src/main/java/ani/dantotsu/parsers/BaseParser.kt +++ b/app/src/main/java/ani/dantotsu/parsers/BaseParser.kt @@ -3,9 +3,9 @@ package ani.dantotsu.parsers import ani.dantotsu.FileUrl import ani.dantotsu.R import ani.dantotsu.currContext -import ani.dantotsu.util.Logger import ani.dantotsu.media.Media import ani.dantotsu.settings.saving.PrefManager +import ani.dantotsu.util.Logger import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.source.model.SManga import me.xdrop.fuzzywuzzy.FuzzySearch @@ -216,8 +216,7 @@ data class ShowResponse( otherNames: List = listOf(), total: Int? = null, extra: MutableMap? = null - ) - : this(name, link, FileUrl(coverUrl), otherNames, total, extra) + ) : this(name, link, FileUrl(coverUrl), otherNames, total, extra) constructor( name: String, @@ -225,8 +224,7 @@ data class ShowResponse( coverUrl: String, otherNames: List = listOf(), total: Int? = null - ) - : this(name, link, FileUrl(coverUrl), otherNames, total) + ) : this(name, link, FileUrl(coverUrl), otherNames, total) constructor(name: String, link: String, coverUrl: String, otherNames: List = listOf()) : this(name, link, FileUrl(coverUrl), otherNames) @@ -239,6 +237,10 @@ data class ShowResponse( constructor(name: String, link: String, coverUrl: String, sManga: SManga) : this(name, link, FileUrl(coverUrl), sManga = sManga) + + companion object { + private const val serialVersionUID = 1L + } } diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index 2ef1d8ee..1df64f08 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -619,7 +619,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene Toast.makeText(this, "youwu have been cuwsed :pwayge:", Toast.LENGTH_LONG).show() val url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" openLinkInBrowser(url) - //PrefManager.setVal(PrefName.SomethingSpecial, !PrefManager.getVal(PrefName.SomethingSpecial, false)) + //PrefManager.setVal(PrefName.ImageUrl, !PrefManager.getVal(PrefName.ImageUrl, false)) } else { snackString(array[(Math.random() * array.size).toInt()], this) } diff --git a/app/src/main/java/ani/dantotsu/settings/saving/PrefManager.kt b/app/src/main/java/ani/dantotsu/settings/saving/PrefManager.kt index f66d1353..ddf8014c 100644 --- a/app/src/main/java/ani/dantotsu/settings/saving/PrefManager.kt +++ b/app/src/main/java/ani/dantotsu/settings/saving/PrefManager.kt @@ -7,6 +7,7 @@ import ani.dantotsu.settings.saving.internal.Compat import ani.dantotsu.settings.saving.internal.Location import ani.dantotsu.settings.saving.internal.PreferencePackager import ani.dantotsu.snackString +import ani.dantotsu.util.Logger import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream import java.io.ObjectInputStream @@ -374,6 +375,7 @@ object PrefManager { pref.edit().putString(key, serialized).apply() } catch (e: Exception) { snackString("Error serializing preference: ${e.message}") + Logger.log(e) } } @@ -392,8 +394,7 @@ object PrefManager { default } } catch (e: Exception) { - snackString("Error deserializing preference: ${e.message}") - e.printStackTrace() + Logger.log(e) default } } diff --git a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt index a95175d5..14d83caf 100644 --- a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt +++ b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt @@ -155,7 +155,7 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files DiscordStatus(Pref(Location.Irrelevant, String::class, "online")), DownloadsKeys(Pref(Location.Irrelevant, String::class, "")), NovelLastExtCheck(Pref(Location.Irrelevant, Long::class, 0L)), - SomethingSpecial(Pref(Location.Irrelevant, Boolean::class, false)), + ImageUrl(Pref(Location.Irrelevant, String::class, "")), AllowOpeningLinks(Pref(Location.Irrelevant, Boolean::class, false)), SearchStyle(Pref(Location.Irrelevant, Int::class, 0)), HasUpdatedPrefs(Pref(Location.Irrelevant, Boolean::class, false)), diff --git a/app/src/main/res/layout-land/activity_media.xml b/app/src/main/res/layout-land/activity_media.xml index 0d77a555..89a08311 100644 --- a/app/src/main/res/layout-land/activity_media.xml +++ b/app/src/main/res/layout-land/activity_media.xml @@ -374,7 +374,116 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="16dp" - android:visibility="gone"> + android:visibility="gone"/> + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml index 9e535763..9c89110d 100644 --- a/app/src/main/res/layout/activity_media.xml +++ b/app/src/main/res/layout/activity_media.xml @@ -241,71 +241,187 @@ + android:orientation="vertical"> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 273683b6..b0e28158 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -675,7 +675,6 @@ User has no favorite Manga Favourite Characters Favorite Staff - Stats Days watched Total Anime