diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt index b466c5ac..fe0f292d 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt @@ -17,6 +17,7 @@ import com.futo.platformplayer.api.media.platforms.js.JSClient import com.futo.platformplayer.api.media.structures.IPager import com.futo.platformplayer.constructs.TaskHandler import com.futo.platformplayer.engine.exceptions.PluginException +import com.futo.platformplayer.engine.exceptions.ScriptCaptchaRequiredException import com.futo.platformplayer.exceptions.ChannelException import com.futo.platformplayer.exceptions.RateLimitException import com.futo.platformplayer.logging.Logger diff --git a/app/src/main/java/com/futo/platformplayer/views/subscriptions/SubscriptionBar.kt b/app/src/main/java/com/futo/platformplayer/views/subscriptions/SubscriptionBar.kt index a456cba0..1fd859b6 100644 --- a/app/src/main/java/com/futo/platformplayer/views/subscriptions/SubscriptionBar.kt +++ b/app/src/main/java/com/futo/platformplayer/views/subscriptions/SubscriptionBar.kt @@ -2,12 +2,14 @@ package com.futo.platformplayer.views.subscriptions import android.content.Context import android.util.AttributeSet +import android.view.View import android.widget.LinearLayout import androidx.lifecycle.findViewTreeLifecycleOwner import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView import com.futo.platformplayer.R import com.futo.platformplayer.Settings +import com.futo.platformplayer.UIDialogs import com.futo.platformplayer.api.media.models.channels.SerializedChannel import com.futo.platformplayer.constructs.Event1 import com.futo.platformplayer.models.Subscription @@ -24,7 +26,8 @@ import kotlinx.coroutines.launch class SubscriptionBar : LinearLayout { private var _adapterView: AnyAdapterView? = null; - private var _subGroups: AnyAdapterView + private var _subGroups: AnyAdapterView; + private var _subGroupsExplore: SubscriptionExploreButton; private val _tagsContainer: LinearLayout; private val _groups: ArrayList; @@ -64,7 +67,25 @@ class SubscriptionBar : LinearLayout { onHoldGroup.emit(g); } } + _subGroupsExplore = findViewById(R.id.subgroup_explore); _tagsContainer = findViewById(R.id.container_tags); + + _subGroupsExplore.onClick.subscribe { + UIDialogs.showDialog(context, R.drawable.ic_subscriptions, "Subscription Groups", + "Subscription groups are an easy way to navigate your subscriptions.\n\nDefine your own subsets, and in the near future share them with others.", null, 0, + UIDialogs.Action("Hide Bar", { + Settings.instance.subscriptions.showSubscriptionGroups = false; + Settings.instance.save(); + reloadGroups(); + + UIDialogs.showDialogOk(context, R.drawable.ic_quiz, "Subscription groups can be re-enabled in settings") + }), + UIDialogs.Action("Create", { + onToggleGroup.emit(SubscriptionGroup.Add()); //Shortcut.. + }, UIDialogs.ActionStyle.PRIMARY)) + }; + + updateExplore(); } private fun groupClicked(g: SubscriptionGroup) { @@ -100,6 +121,8 @@ class SubscriptionBar : LinearLayout { _groups.clear(); _groups.addAll(results); _subGroups.notifyContentChanged(); + + updateExplore(); } private fun getGroups(): List { return if(Settings.instance.subscriptions.showSubscriptionGroups) @@ -110,6 +133,18 @@ class SubscriptionBar : LinearLayout { else listOf(); } + fun updateExplore() { + val show = Settings.instance.subscriptions.showSubscriptionGroups && + _groups.all { it is SubscriptionGroup.Add }; + if(show) { + _subGroupsExplore.visibility = View.VISIBLE; + _subGroups.view.visibility = View.GONE; + } + else { + _subGroupsExplore.visibility = View.GONE; + _subGroups.view.visibility = View.VISIBLE; + } + } fun setToggles(vararg buttons: Toggle) { _tagsContainer.removeAllViews(); diff --git a/app/src/main/java/com/futo/platformplayer/views/subscriptions/SubscriptionExploreButton.kt b/app/src/main/java/com/futo/platformplayer/views/subscriptions/SubscriptionExploreButton.kt new file mode 100644 index 00000000..8478250e --- /dev/null +++ b/app/src/main/java/com/futo/platformplayer/views/subscriptions/SubscriptionExploreButton.kt @@ -0,0 +1,45 @@ +package com.futo.platformplayer.views.subscriptions + +import android.content.Context +import android.graphics.drawable.Animatable +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.FrameLayout +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import com.futo.platformplayer.* +import com.futo.platformplayer.api.media.models.channels.IPlatformChannel +import com.futo.platformplayer.constructs.Event0 +import com.futo.platformplayer.constructs.Event1 +import com.futo.platformplayer.constructs.TaskHandler +import com.futo.platformplayer.models.Subscription +import com.futo.platformplayer.states.StateApp +import com.futo.platformplayer.states.StatePlatform +import com.futo.platformplayer.states.StateSubscriptions +import com.google.android.material.imageview.ShapeableImageView +import com.google.android.material.shape.CornerFamily +import com.google.android.material.shape.ShapeAppearanceModel + +class SubscriptionExploreButton : ConstraintLayout { + val onClick = Event0(); + + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + inflate(context, R.layout.view_subscription_group_bar_explore, this); + + val dp10 = 10.dp(resources); + findViewById(R.id.image) + .apply { + adjustViewBounds = true + scaleType = ImageView.ScaleType.CENTER_CROP; + shapeAppearanceModel = ShapeAppearanceModel.builder().setAllCorners(CornerFamily.ROUNDED, dp10.toFloat()).build() + } + + findViewById(R.id.root).setOnClickListener { + onClick.emit(); + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/background_button_explore.xml b/app/src/main/res/drawable/background_button_explore.xml new file mode 100644 index 00000000..857401f1 --- /dev/null +++ b/app/src/main/res/drawable/background_button_explore.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/background_button_explore_inner.xml b/app/src/main/res/drawable/background_button_explore_inner.xml new file mode 100644 index 00000000..e41a4df8 --- /dev/null +++ b/app/src/main/res/drawable/background_button_explore_inner.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sub_group_demo.png b/app/src/main/res/drawable/sub_group_demo.png new file mode 100644 index 00000000..92f7f438 Binary files /dev/null and b/app/src/main/res/drawable/sub_group_demo.png differ diff --git a/app/src/main/res/layout/dialog_multi_button.xml b/app/src/main/res/layout/dialog_multi_button.xml index 87365f8c..786a7cce 100644 --- a/app/src/main/res/layout/dialog_multi_button.xml +++ b/app/src/main/res/layout/dialog_multi_button.xml @@ -27,7 +27,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/failed_to_retrieve_data_are_you_connected" - android:textSize="14dp" + android:textSize="15dp" android:textColor="@color/white" android:fontFamily="@font/inter_regular" android:textAlignment="center" @@ -43,7 +43,7 @@ android:textAlignment="center" android:layout_marginStart="30dp" android:layout_marginEnd="30dp" - android:textSize="9dp" + android:textSize="11dp" android:layout_height="wrap_content" /> + + diff --git a/app/src/main/res/layout/view_subscription_group_bar_explore.xml b/app/src/main/res/layout/view_subscription_group_bar_explore.xml new file mode 100644 index 00000000..ca368be9 --- /dev/null +++ b/app/src/main/res/layout/view_subscription_group_bar_explore.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 15658694..efff3f0d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -569,7 +569,7 @@ Playlist copied as local playlist Are you sure you want to delete the downloaded videos? Create new playlist - Create new subscription group + Create new group Expected media content, found Failed to load post. replies