mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-08-03 14:50:49 +00:00
Subscription settings from creators tab
This commit is contained in:
parent
e6997004ff
commit
aeaaace3a4
5 changed files with 46 additions and 7 deletions
|
@ -6,10 +6,12 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.AdapterView
|
import android.widget.AdapterView
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
|
import android.widget.FrameLayout
|
||||||
import android.widget.Spinner
|
import android.widget.Spinner
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.futo.platformplayer.R
|
import com.futo.platformplayer.R
|
||||||
|
import com.futo.platformplayer.UISlideOverlays
|
||||||
import com.futo.platformplayer.views.adapters.SubscriptionAdapter
|
import com.futo.platformplayer.views.adapters.SubscriptionAdapter
|
||||||
|
|
||||||
class CreatorsFragment : MainFragment() {
|
class CreatorsFragment : MainFragment() {
|
||||||
|
@ -18,13 +20,16 @@ class CreatorsFragment : MainFragment() {
|
||||||
override val hasBottomBar: Boolean get() = true;
|
override val hasBottomBar: Boolean get() = true;
|
||||||
|
|
||||||
private var _spinnerSortBy: Spinner? = null;
|
private var _spinnerSortBy: Spinner? = null;
|
||||||
|
private var _overlayContainer: FrameLayout? = null;
|
||||||
|
|
||||||
override fun onCreateMainView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
override fun onCreateMainView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
val view = inflater.inflate(R.layout.fragment_creators, container, false);
|
val view = inflater.inflate(R.layout.fragment_creators, container, false);
|
||||||
|
|
||||||
val adapter = SubscriptionAdapter(inflater, getString(R.string.confirm_delete_subscription));
|
val adapter = SubscriptionAdapter(inflater, getString(R.string.confirm_delete_subscription));
|
||||||
adapter.onClick.subscribe { platformUser -> navigate<ChannelFragment>(platformUser) };
|
adapter.onClick.subscribe { platformUser -> navigate<ChannelFragment>(platformUser) };
|
||||||
|
adapter.onSettings.subscribe { sub -> _overlayContainer?.let { UISlideOverlays.showSubscriptionOptionsOverlay(sub, it) } }
|
||||||
|
|
||||||
|
_overlayContainer = view.findViewById(R.id.overlay_container);
|
||||||
val spinnerSortBy: Spinner = view.findViewById(R.id.spinner_sortby);
|
val spinnerSortBy: Spinner = view.findViewById(R.id.spinner_sortby);
|
||||||
spinnerSortBy.adapter = ArrayAdapter(view.context, R.layout.spinner_item_simple, resources.getStringArray(R.array.subscriptions_sortby_array)).also {
|
spinnerSortBy.adapter = ArrayAdapter(view.context, R.layout.spinner_item_simple, resources.getStringArray(R.array.subscriptions_sortby_array)).also {
|
||||||
it.setDropDownViewResource(R.layout.spinner_dropdownitem_simple);
|
it.setDropDownViewResource(R.layout.spinner_dropdownitem_simple);
|
||||||
|
@ -48,6 +53,7 @@ class CreatorsFragment : MainFragment() {
|
||||||
override fun onDestroyMainView() {
|
override fun onDestroyMainView() {
|
||||||
super.onDestroyMainView();
|
super.onDestroyMainView();
|
||||||
_spinnerSortBy = null;
|
_spinnerSortBy = null;
|
||||||
|
_overlayContainer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -14,6 +14,7 @@ class SubscriptionAdapter : RecyclerView.Adapter<SubscriptionViewHolder> {
|
||||||
private val _confirmationMessage: String;
|
private val _confirmationMessage: String;
|
||||||
|
|
||||||
var onClick = Event1<Subscription>();
|
var onClick = Event1<Subscription>();
|
||||||
|
var onSettings = Event1<Subscription>();
|
||||||
var sortBy: Int = 3
|
var sortBy: Int = 3
|
||||||
set(value) {
|
set(value) {
|
||||||
field = value;
|
field = value;
|
||||||
|
@ -33,12 +34,16 @@ class SubscriptionAdapter : RecyclerView.Adapter<SubscriptionViewHolder> {
|
||||||
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): SubscriptionViewHolder {
|
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): SubscriptionViewHolder {
|
||||||
val holder = SubscriptionViewHolder(viewGroup);
|
val holder = SubscriptionViewHolder(viewGroup);
|
||||||
holder.onClick.subscribe(onClick::emit);
|
holder.onClick.subscribe(onClick::emit);
|
||||||
|
holder.onSettings.subscribe(onSettings::emit);
|
||||||
holder.onTrash.subscribe {
|
holder.onTrash.subscribe {
|
||||||
val sub = holder.subscription ?: return@subscribe;
|
val sub = holder.subscription ?: return@subscribe;
|
||||||
UIDialogs.showConfirmationDialog(_inflater.context, _confirmationMessage, {
|
UIDialogs.showConfirmationDialog(_inflater.context, _confirmationMessage, {
|
||||||
StateSubscriptions.instance.removeSubscription(sub.channel.url);
|
StateSubscriptions.instance.removeSubscription(sub.channel.url);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
holder.onSettings.subscribe {
|
||||||
|
onSettings.emit(it);
|
||||||
|
};
|
||||||
|
|
||||||
return holder;
|
return holder;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import com.futo.platformplayer.logging.Logger
|
||||||
import com.futo.platformplayer.polycentric.PolycentricCache
|
import com.futo.platformplayer.polycentric.PolycentricCache
|
||||||
import com.futo.platformplayer.R
|
import com.futo.platformplayer.R
|
||||||
import com.futo.platformplayer.Settings
|
import com.futo.platformplayer.Settings
|
||||||
|
import com.futo.platformplayer.UIDialogs
|
||||||
import com.futo.platformplayer.states.StateApp
|
import com.futo.platformplayer.states.StateApp
|
||||||
import com.futo.platformplayer.api.media.PlatformID
|
import com.futo.platformplayer.api.media.PlatformID
|
||||||
import com.futo.platformplayer.models.Subscription
|
import com.futo.platformplayer.models.Subscription
|
||||||
|
@ -18,6 +19,7 @@ import com.futo.platformplayer.constructs.Event1
|
||||||
import com.futo.platformplayer.constructs.TaskHandler
|
import com.futo.platformplayer.constructs.TaskHandler
|
||||||
import com.futo.platformplayer.dp
|
import com.futo.platformplayer.dp
|
||||||
import com.futo.platformplayer.selectBestImage
|
import com.futo.platformplayer.selectBestImage
|
||||||
|
import com.futo.platformplayer.states.StateSubscriptions
|
||||||
import com.futo.platformplayer.toHumanBytesSpeed
|
import com.futo.platformplayer.toHumanBytesSpeed
|
||||||
import com.futo.platformplayer.toHumanTimeIndicator
|
import com.futo.platformplayer.toHumanTimeIndicator
|
||||||
import com.futo.platformplayer.views.others.CreatorThumbnail
|
import com.futo.platformplayer.views.others.CreatorThumbnail
|
||||||
|
@ -29,6 +31,7 @@ class SubscriptionViewHolder : ViewHolder {
|
||||||
private val _textName: TextView;
|
private val _textName: TextView;
|
||||||
private val _creatorThumbnail: CreatorThumbnail;
|
private val _creatorThumbnail: CreatorThumbnail;
|
||||||
private val _buttonTrash: ImageButton;
|
private val _buttonTrash: ImageButton;
|
||||||
|
private val _buttonSettings: ImageButton;
|
||||||
private val _platformIndicator : PlatformIndicator;
|
private val _platformIndicator : PlatformIndicator;
|
||||||
private val _textMeta: TextView;
|
private val _textMeta: TextView;
|
||||||
|
|
||||||
|
@ -45,6 +48,7 @@ class SubscriptionViewHolder : ViewHolder {
|
||||||
|
|
||||||
var onClick = Event1<Subscription>();
|
var onClick = Event1<Subscription>();
|
||||||
var onTrash = Event0();
|
var onTrash = Event0();
|
||||||
|
var onSettings = Event1<Subscription>();
|
||||||
|
|
||||||
constructor(viewGroup: ViewGroup) : super(LayoutInflater.from(viewGroup.context).inflate(R.layout.list_subscription, viewGroup, false)) {
|
constructor(viewGroup: ViewGroup) : super(LayoutInflater.from(viewGroup.context).inflate(R.layout.list_subscription, viewGroup, false)) {
|
||||||
_layoutSubscription = itemView.findViewById(R.id.layout_subscription);
|
_layoutSubscription = itemView.findViewById(R.id.layout_subscription);
|
||||||
|
@ -52,6 +56,7 @@ class SubscriptionViewHolder : ViewHolder {
|
||||||
_textMeta = itemView.findViewById(R.id.text_meta);
|
_textMeta = itemView.findViewById(R.id.text_meta);
|
||||||
_creatorThumbnail = itemView.findViewById(R.id.creator_thumbnail);
|
_creatorThumbnail = itemView.findViewById(R.id.creator_thumbnail);
|
||||||
_buttonTrash = itemView.findViewById(R.id.button_trash);
|
_buttonTrash = itemView.findViewById(R.id.button_trash);
|
||||||
|
_buttonSettings = itemView.findViewById(R.id.button_settings);
|
||||||
_platformIndicator = itemView.findViewById(R.id.platform);
|
_platformIndicator = itemView.findViewById(R.id.platform);
|
||||||
|
|
||||||
_layoutSubscription.setOnClickListener {
|
_layoutSubscription.setOnClickListener {
|
||||||
|
@ -64,6 +69,11 @@ class SubscriptionViewHolder : ViewHolder {
|
||||||
_buttonTrash.setOnClickListener {
|
_buttonTrash.setOnClickListener {
|
||||||
onTrash.emit();
|
onTrash.emit();
|
||||||
};
|
};
|
||||||
|
_buttonSettings.setOnClickListener {
|
||||||
|
subscription?.let {
|
||||||
|
onSettings.emit(it);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun bind(sub: Subscription) {
|
fun bind(sub: Subscription) {
|
||||||
|
|
|
@ -55,4 +55,11 @@
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||||
|
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/overlay_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:elevation="100dp"
|
||||||
|
android:visibility="gone" />
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@ -56,13 +56,24 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/button_settings"
|
||||||
|
android:layout_width="50dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
app:srcCompat="@drawable/ic_settings"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:paddingStart="5dp"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:paddingBottom="5dp"
|
||||||
|
android:paddingEnd="0dp" />
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/button_trash"
|
android:id="@+id/button_trash"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="60dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="40dp"
|
||||||
app:srcCompat="@drawable/ic_trash_18dp"
|
app:srcCompat="@drawable/ic_trash"
|
||||||
android:paddingStart="20dp"
|
android:scaleType="fitCenter"
|
||||||
android:paddingTop="10dp"
|
android:paddingStart="5dp"
|
||||||
android:paddingBottom="10dp"
|
android:paddingTop="5dp"
|
||||||
android:paddingEnd="20dp" />
|
android:paddingBottom="5dp"
|
||||||
|
android:paddingEnd="5dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
Loading…
Add table
Add a link
Reference in a new issue