channel rows order fix + upd channel sorting
This commit is contained in:
parent
25d5eaa33a
commit
6c537cbacf
|
@ -216,6 +216,10 @@ public class VideoGroup {
|
|||
return mPosition;
|
||||
}
|
||||
|
||||
public void setPosition(int position) {
|
||||
mPosition = position;
|
||||
}
|
||||
|
||||
public int getAction() {
|
||||
return mAction;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ import com.liskovsoft.mediaserviceinterfaces.HubService;
|
|||
import com.liskovsoft.mediaserviceinterfaces.data.MediaGroup;
|
||||
import com.liskovsoft.mediaserviceinterfaces.data.MediaItem;
|
||||
import com.liskovsoft.sharedutils.helpers.Helpers;
|
||||
import com.liskovsoft.sharedutils.helpers.MessageHelpers;
|
||||
import com.liskovsoft.sharedutils.mylogger.Log;
|
||||
import com.liskovsoft.smartyoutubetv2.common.R;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video;
|
||||
|
@ -41,6 +40,7 @@ public class ChannelPresenter extends BasePresenter<ChannelView> implements Vide
|
|||
private Disposable mUpdateAction;
|
||||
private Disposable mScrollAction;
|
||||
private MediaGroup mLastScrollGroup;
|
||||
private int mSortIdx;
|
||||
|
||||
private interface OnChannelId {
|
||||
void onChannelId(String channelId);
|
||||
|
@ -175,6 +175,7 @@ public class ChannelPresenter extends BasePresenter<ChannelView> implements Vide
|
|||
private void disposeActions() {
|
||||
RxHelper.disposeActions(mUpdateAction, mScrollAction);
|
||||
mServiceManager.disposeActions();
|
||||
mSortIdx = 0;
|
||||
}
|
||||
|
||||
private void updateRows(String channelId) {
|
||||
|
@ -211,8 +212,6 @@ public class ChannelPresenter extends BasePresenter<ChannelView> implements Vide
|
|||
ViewManager.instance(getContext()).startView(ChannelView.class);
|
||||
}
|
||||
|
||||
moveToTopIfNeeded(mediaGroups);
|
||||
|
||||
for (MediaGroup mediaGroup : mediaGroups) {
|
||||
if (mediaGroup.getMediaItems() == null) {
|
||||
Log.e(TAG, "updateRowsHeader: MediaGroup is empty. Group Name: " + mediaGroup.getTitle());
|
||||
|
@ -266,16 +265,6 @@ public class ChannelPresenter extends BasePresenter<ChannelView> implements Vide
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort channel content: move Uploads on top.
|
||||
*/
|
||||
private void moveToTopIfNeeded(List<MediaGroup> mediaGroups) {
|
||||
moveToTop(mediaGroups, R.string.playlists_row_name);
|
||||
moveToTop(mediaGroups, R.string.popular_uploads_row_name);
|
||||
moveToTop(mediaGroups, R.string.uploads_row_name);
|
||||
moveToTop(mediaGroups, R.string.live_now_row_name);
|
||||
}
|
||||
|
||||
private void moveToTop(List<MediaGroup> mediaGroups, int rowNameResId) {
|
||||
if (rowNameResId <= 0) {
|
||||
return;
|
||||
|
@ -351,15 +340,25 @@ public class ChannelPresenter extends BasePresenter<ChannelView> implements Vide
|
|||
return;
|
||||
}
|
||||
|
||||
Observable<List<MediaGroup>> channelObserve = mHubService.getContentService().getChannelSortingObserve(mChannelId);
|
||||
Disposable result = channelObserve.subscribe(
|
||||
Observable<List<MediaGroup>> sorting = mHubService.getContentService().getChannelSortingObserve(mChannelId);
|
||||
Disposable result = sorting.subscribe(
|
||||
items -> {
|
||||
AppDialogPresenter dialogPresenter = AppDialogPresenter.instance(getContext());
|
||||
List<OptionItem> options = new ArrayList<>();
|
||||
int idx = 0;
|
||||
for (MediaGroup group : items) {
|
||||
final int tempIdx = idx;
|
||||
options.add(UiOptionItem.from(group.getTitle(), item -> {
|
||||
Observable<MediaGroup> continuation = mHubService.getContentService().continueGroupObserve(group);
|
||||
Disposable result2 = continuation.subscribe(mediaGroup -> {
|
||||
VideoGroup replace = VideoGroup.from(mediaGroup);
|
||||
replace.setPosition(0);
|
||||
replace.setAction(VideoGroup.ACTION_REPLACE);
|
||||
getView().update(replace);
|
||||
mSortIdx = tempIdx;
|
||||
});
|
||||
}, mSortIdx == idx));
|
||||
idx++;
|
||||
options.add(UiOptionItem.from(group.getTitle(), item -> MessageHelpers.showMessage(getContext(), group.toString()), idx == 1));
|
||||
}
|
||||
dialogPresenter.appendRadioCategory(getContext().getString(R.string.channels_section_sorting), options);
|
||||
dialogPresenter.showDialog();
|
||||
|
|
|
@ -7,4 +7,4 @@ android.jetifier.blacklist=bcprov
|
|||
android.enableR8.fullMode=true
|
||||
# Minification ram usage fix
|
||||
#org.gradle.jvmargs=-Xmx1024m
|
||||
org.gradle.jvmargs=-Xmx1500m
|
||||
org.gradle.jvmargs=-Xmx2000m
|
|
@ -9,6 +9,7 @@ import androidx.leanback.widget.ClassPresenterSelector;
|
|||
import androidx.leanback.widget.HeaderItem;
|
||||
import androidx.leanback.widget.ListRow;
|
||||
import androidx.leanback.widget.ListRowPresenter;
|
||||
import androidx.leanback.widget.ObjectAdapter;
|
||||
import androidx.leanback.widget.OnItemViewSelectedListener;
|
||||
import androidx.leanback.widget.Presenter;
|
||||
import androidx.leanback.widget.Row;
|
||||
|
@ -121,6 +122,15 @@ public abstract class MultipleRowsFragment extends RowsSupportFragment implement
|
|||
setPosition(0);
|
||||
}
|
||||
|
||||
private void remove(int idx) {
|
||||
if (mRowsAdapter != null && mRowsAdapter.size() > idx) {
|
||||
ListRow row = (ListRow) mRowsAdapter.get(idx);
|
||||
mRowsAdapter.remove(row);
|
||||
VideoGroupObjectAdapter group = (VideoGroupObjectAdapter) row.getAdapter();
|
||||
mVideoGroupAdapters.values().remove(group);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
if (mRowsAdapter == null) {
|
||||
|
@ -137,10 +147,19 @@ public abstract class MultipleRowsFragment extends RowsSupportFragment implement
|
|||
return;
|
||||
}
|
||||
|
||||
// Correct position depending on the search bar presence
|
||||
if (group.getPosition() != -1 && mSearchBarCallback != null) {
|
||||
group.setPosition(group.getPosition() + 1);
|
||||
}
|
||||
|
||||
int action = group.getAction();
|
||||
|
||||
if (action == VideoGroup.ACTION_REPLACE) {
|
||||
clear();
|
||||
if (group.getPosition() == -1) {
|
||||
clear();
|
||||
} else {
|
||||
remove(group.getPosition());
|
||||
}
|
||||
} else if (action == VideoGroup.ACTION_REMOVE) {
|
||||
VideoGroupObjectAdapter adapter = mVideoGroupAdapters.get(group.getId());
|
||||
if (adapter != null) {
|
||||
|
|
Loading…
Reference in New Issue