diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt index 2870f4d7..aeee8376 100644 --- a/app/src/main/java/com/futo/platformplayer/Settings.kt +++ b/app/src/main/java/com/futo/platformplayer/Settings.kt @@ -413,6 +413,9 @@ class Settings : FragmentedStorageFileJson() { @FormField(R.string.default_comment_section, FieldForm.DROPDOWN, -1, 0) @DropdownFieldOptionsId(R.array.comment_sections) var defaultCommentSection: Int = 0; + + @FormField(R.string.bad_reputation_comments_fading, FieldForm.TOGGLE, R.string.bad_reputation_comments_fading_description, 0) + var badReputationCommentsFading: Boolean = true; } @FormField(R.string.downloads, "group", R.string.configure_downloading_of_videos, 7) diff --git a/app/src/main/java/com/futo/platformplayer/UIDialogs.kt b/app/src/main/java/com/futo/platformplayer/UIDialogs.kt index 920150c1..a32c1b80 100644 --- a/app/src/main/java/com/futo/platformplayer/UIDialogs.kt +++ b/app/src/main/java/com/futo/platformplayer/UIDialogs.kt @@ -190,8 +190,10 @@ class UIDialogs { view.findViewById(R.id.dialog_text_code).apply { if(code == null) this.visibility = View.GONE; - else + else { this.text = code; + this.visibility = View.VISIBLE; + } }; view.findViewById(R.id.dialog_buttons).apply { val buttons = actions.map { act -> diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/CreatorsFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/CreatorsFragment.kt index 88844108..b62098a7 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/CreatorsFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/CreatorsFragment.kt @@ -6,8 +6,10 @@ import android.view.View import android.view.ViewGroup import android.widget.AdapterView import android.widget.ArrayAdapter +import android.widget.EditText import android.widget.FrameLayout import android.widget.Spinner +import androidx.core.widget.addTextChangedListener import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.futo.platformplayer.R @@ -21,9 +23,13 @@ class CreatorsFragment : MainFragment() { private var _spinnerSortBy: Spinner? = null; private var _overlayContainer: FrameLayout? = null; + private var _containerSearch: FrameLayout? = null; + private var _editSearch: EditText? = null; override fun onCreateMainView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { val view = inflater.inflate(R.layout.fragment_creators, container, false); + _containerSearch = view.findViewById(R.id.container_search); + _editSearch = view.findViewById(R.id.edit_search); val adapter = SubscriptionAdapter(inflater, getString(R.string.confirm_delete_subscription)); adapter.onClick.subscribe { platformUser -> navigate(platformUser) }; @@ -44,6 +50,10 @@ class CreatorsFragment : MainFragment() { _spinnerSortBy = spinnerSortBy; + _editSearch?.addTextChangedListener { + adapter.query = it.toString(); + } + val recyclerView = view.findViewById(R.id.recycler_subscriptions); recyclerView.adapter = adapter; recyclerView.layoutManager = LinearLayoutManager(view.context); @@ -54,6 +64,8 @@ class CreatorsFragment : MainFragment() { super.onDestroyMainView(); _spinnerSortBy = null; _overlayContainer = null; + _editSearch = null; + _containerSearch = null; } companion object { diff --git a/app/src/main/java/com/futo/platformplayer/views/adapters/CommentViewHolder.kt b/app/src/main/java/com/futo/platformplayer/views/adapters/CommentViewHolder.kt index 89c3c1bb..68103c99 100644 --- a/app/src/main/java/com/futo/platformplayer/views/adapters/CommentViewHolder.kt +++ b/app/src/main/java/com/futo/platformplayer/views/adapters/CommentViewHolder.kt @@ -117,7 +117,8 @@ class CommentViewHolder : ViewHolder { val rating = comment.rating; if (rating is RatingLikeDislikes) { - _layoutComment.alpha = if (rating.dislikes > 2 && rating.dislikes.toFloat() / (rating.likes + rating.dislikes).toFloat() >= 0.7f) 0.5f else 1.0f; + _layoutComment.alpha = if (Settings.instance.comments.badReputationCommentsFading && + rating.dislikes > 2 && rating.dislikes.toFloat() / (rating.likes + rating.dislikes).toFloat() >= 0.7f) 0.5f else 1.0f; } else { _layoutComment.alpha = 1.0f; } diff --git a/app/src/main/java/com/futo/platformplayer/views/adapters/CommentWithReferenceViewHolder.kt b/app/src/main/java/com/futo/platformplayer/views/adapters/CommentWithReferenceViewHolder.kt index f0581abd..c47db9f6 100644 --- a/app/src/main/java/com/futo/platformplayer/views/adapters/CommentWithReferenceViewHolder.kt +++ b/app/src/main/java/com/futo/platformplayer/views/adapters/CommentWithReferenceViewHolder.kt @@ -23,7 +23,6 @@ import com.futo.platformplayer.views.pills.PillRatingLikesDislikes import com.futo.polycentric.core.Opinion import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import userpackage.Protocol import java.util.IdentityHashMap class CommentWithReferenceViewHolder : ViewHolder { @@ -135,7 +134,8 @@ class CommentWithReferenceViewHolder : ViewHolder { val rating = comment.rating; if (rating is RatingLikeDislikes) { - _layoutComment.alpha = if (rating.dislikes > 2 && rating.dislikes.toFloat() / (rating.likes + rating.dislikes).toFloat() >= 0.7f) 0.5f else 1.0f; + _layoutComment.alpha = if (Settings.instance.comments.badReputationCommentsFading && + rating.dislikes > 2 && rating.dislikes.toFloat() / (rating.likes + rating.dislikes).toFloat() >= 0.7f) 0.5f else 1.0f; } else { _layoutComment.alpha = 1.0f; } diff --git a/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt b/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt index f7a63d53..fe33c0da 100644 --- a/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt +++ b/app/src/main/java/com/futo/platformplayer/views/adapters/SubscriptionAdapter.kt @@ -15,11 +15,16 @@ class SubscriptionAdapter : RecyclerView.Adapter { var onClick = Event1(); var onSettings = Event1(); - var sortBy: Int = 3 + var sortBy: Int = 5 set(value) { field = value updateDataset() } + var query: String? = null + set(value) { + field = value; + updateDataset(); + } constructor(inflater: LayoutInflater, confirmationMessage: String) : super() { _inflater = inflater; @@ -53,6 +58,7 @@ class SubscriptionAdapter : RecyclerView.Adapter { } private fun updateDataset() { + val queryLower = query?.lowercase() ?: ""; _sortedDataset = when (sortBy) { 0 -> StateSubscriptions.instance.getSubscriptions().sortedBy({ u -> u.channel.name.lowercase() }) 1 -> StateSubscriptions.instance.getSubscriptions().sortedByDescending({ u -> u.channel.name.lowercase() }) @@ -61,7 +67,9 @@ class SubscriptionAdapter : RecyclerView.Adapter { 4 -> StateSubscriptions.instance.getSubscriptions().sortedBy { it.playbackSeconds } 5 -> StateSubscriptions.instance.getSubscriptions().sortedByDescending { it.playbackSeconds } else -> throw IllegalStateException("Invalid sorting algorithm selected."); - }.toList(); + } + .filter { (queryLower.isNullOrBlank() || it.channel.name.lowercase().contains(queryLower)) } + .toList(); notifyDataSetChanged(); } diff --git a/app/src/main/res/layout/dialog_multi_button.xml b/app/src/main/res/layout/dialog_multi_button.xml index 70c9e86e..87365f8c 100644 --- a/app/src/main/res/layout/dialog_multi_button.xml +++ b/app/src/main/res/layout/dialog_multi_button.xml @@ -50,7 +50,7 @@ android:layout_width="match_parent" android:textColor="#AAAAAA" android:fontFamily="monospace" - android:text="source.getVideoDetails(...)" + android:text="" android:textAlignment="center" android:layout_marginStart="30dp" android:layout_marginEnd="30dp" @@ -58,6 +58,7 @@ android:padding="5dp" android:background="#111111" android:textSize="8dp" + android:visibility="gone" android:layout_height="wrap_content" tools:ignore="HardcodedText" /> diff --git a/app/src/main/res/layout/fragment_creators.xml b/app/src/main/res/layout/fragment_creators.xml index f8bc6aa0..b39ad6f4 100644 --- a/app/src/main/res/layout/fragment_creators.xml +++ b/app/src/main/res/layout/fragment_creators.xml @@ -16,33 +16,67 @@ - + android:orientation="vertical"> - + + android:visibility="visible" + android:layout_margin="10dp"> - + + + + + + android:gravity="center_vertical"> + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 72462219..d04340d8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -368,6 +368,8 @@ Default quality while previewing a video in a feed Primary Language Default Comment Section + Bad Reputation Comment Fading + If comments with a very bad reputation should be faded. Disabling may worsen experience. Reinstall Embedded Plugins Remove Cached Version Remove the last downloaded version