Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove unused video queue code #2021

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package org.jellyfin.androidtv.constant
object LiveTvOption {
const val LIVE_TV_GUIDE_OPTION_ID = 1000
const val LIVE_TV_RECORDINGS_OPTION_ID = 2000
const val VIDEO_QUEUE_OPTION_ID = 3000
const val LIVE_TV_SCHEDULE_OPTION_ID = 4000
const val LIVE_TV_SERIES_OPTION_ID = 5000
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import static org.koin.java.KoinJavaComponent.inject;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
Expand Down Expand Up @@ -73,7 +72,6 @@ public class ItemListActivity extends FragmentActivity {
private int BUTTON_SIZE;
// Use fake UUID's to avoid crashing when converting to SDK
public static final String FAV_SONGS = "11111111-0000-0000-0000-000000000001";
public static final String VIDEO_QUEUE = "11111111-0000-0000-0000-000000000002";

private TextView mTitle;
private TextView mGenreRow;
Expand Down Expand Up @@ -206,24 +204,7 @@ protected void onResume() {
mAudioEventListener.onPlaybackStateChange(mediaManager.getValue().isPlayingAudio() ? PlaybackController.PlaybackState.PLAYING : PlaybackController.PlaybackState.IDLE, mediaManager.getValue().getCurrentAudioItem());

if (!firstTime && dataRefreshService.getValue().getLastPlayback() > lastUpdated.getTimeInMillis()) {
if (mItemId.equals(VIDEO_QUEUE)) {
//update this in case it changed - delay to allow for the changes
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mItems = mediaManager.getValue().getCurrentVideoQueue();
if (mItems != null && mItems.size() > 0) {
mItemList.clear();
mCurrentRow = null;
mItemList.addItems(mItems);
lastUpdated = Calendar.getInstance();
} else {
//nothing left in queue
finish();
}
}
}, 750);
} else if (MediaType.Video.equals(mBaseItem.getMediaType())) {
if (MediaType.Video.equals(mBaseItem.getMediaType())) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Expand Down Expand Up @@ -342,27 +323,6 @@ private void loadItem(String id) {
item.setIsFolder(true);
setBaseItem(item);
break;
case VIDEO_QUEUE:
BaseItemDto queue = new BaseItemDto();
queue.setId(VIDEO_QUEUE);
queue.setName(getString(R.string.lbl_current_queue));
queue.setOverview(getString(R.string.desc_current_video_queue));
queue.setPlayAccess(PlayAccess.Full);
queue.setMediaType(MediaType.Video);
queue.setBaseItemType(BaseItemType.Playlist);
queue.setIsFolder(true);
if (mediaManager.getValue().getCurrentVideoQueue() != null) {
long runtime = 0;
int children = 0;
for (BaseItemDto video : mediaManager.getValue().getCurrentVideoQueue()) {
runtime += video.getRunTimeTicks() != null ? video.getRunTimeTicks() : 0;
children += 1;
}
queue.setCumulativeRunTimeTicks(runtime);
queue.setChildCount(children);
}
setBaseItem(queue);
break;
default:
apiClient.getValue().GetItemAsync(id, KoinJavaComponent.<UserRepository>get(UserRepository.class).getCurrentUser().getValue().getId().toString(), new Response<BaseItemDto>() {
@Override
Expand Down Expand Up @@ -405,13 +365,6 @@ public void setBaseItem(BaseItemDto item) {
favSongs.setLimit(150);
apiClient.getValue().GetItemsAsync(favSongs, itemResponse);
break;
case VIDEO_QUEUE:
//Show current queue
mTitle.setText(mBaseItem.getName());
mItemList.addItems(mediaManager.getValue().getCurrentVideoQueue());
mItems.addAll(mediaManager.getValue().getCurrentVideoQueue());
updateBackdrop();
break;
default:
PlaylistItemQuery playlistSongs = new PlaylistItemQuery();
playlistSongs.setId(mBaseItem.getId());
Expand Down Expand Up @@ -478,9 +431,6 @@ private void updatePoster(BaseItemDto item){
case FAV_SONGS:
mPoster.setImageResource(R.drawable.favorites);
break;
case VIDEO_QUEUE:
mPoster.setImageResource(R.drawable.ic_video_queue);
break;
default:
Double aspect = ImageUtils.getImageAspectRatio(item, false);
String primaryImageUrl = ImageUtils.getPrimaryImageUrl(item);
Expand Down Expand Up @@ -574,15 +524,8 @@ public void onClick(View v) {
@Override
public void onClick(View v) {
if (mItems.size() > 0) {
if (mBaseItem.getId().equals(VIDEO_QUEUE)
|| mBaseItem.getId().equals(FAV_SONGS)
|| mBaseItem.getBaseItemType() == BaseItemType.Playlist
|| mBaseItem.getBaseItemType() == BaseItemType.MusicAlbum) {
play(mItems, true);
} else {
//use server retrieval in order to get all items
PlaybackHelper.retrieveAndPlay(mBaseItem.getId(), true, mActivity);
}
//use server retrieval in order to get all items
PlaybackHelper.retrieveAndPlay(mBaseItem.getId(), true, mActivity);
} else {
Utils.showToast(mActivity, R.string.msg_no_playable_items);
}
Expand All @@ -609,64 +552,26 @@ public void onClick(final View v) {
}

if (!mItemId.equals(FAV_SONGS)) {
if (!mItemId.equals(VIDEO_QUEUE)) {
//Favorite
TextUnderButton fav = TextUnderButton.create(this, R.drawable.ic_heart, buttonSize,2, getString(R.string.lbl_favorite), new View.OnClickListener() {
@Override
public void onClick(final View v) {
UserItemDataDto data = mBaseItem.getUserData();
apiClient.getValue().UpdateFavoriteStatusAsync(mBaseItem.getId(), KoinJavaComponent.<UserRepository>get(UserRepository.class).getCurrentUser().getValue().getId().toString(), !data.getIsFavorite(), new Response<UserItemDataDto>() {
@Override
public void onResponse(UserItemDataDto response) {
mBaseItem.setUserData(response);
((TextUnderButton)v).setActivated(response.getIsFavorite());
dataRefreshService.getValue().setLastFavoriteUpdate(System.currentTimeMillis());
}
});
}
});
fav.setActivated(mBaseItem.getUserData().getIsFavorite());
mButtonRow.addView(fav);
fav.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) mScrollView.smoothScrollTo(0, 0);
});
}

if (mBaseItem.getBaseItemType() == BaseItemType.Playlist) {
if (VIDEO_QUEUE.equals(mBaseItem.getId())) {
mButtonRow.addView(TextUnderButton.create(this, R.drawable.ic_save, buttonSize, 2, getString(R.string.lbl_save_as_playlist), new View.OnClickListener() {
@Override
public void onClick(View v) {
mediaManager.getValue().saveVideoQueue(mActivity);
}
}));
}

if (mBaseItem.getId().equals(VIDEO_QUEUE)) {
TextUnderButton delete = TextUnderButton.create(this, R.drawable.ic_trash, buttonSize, 0, getString(R.string.lbl_delete), new View.OnClickListener() {
//Favorite
TextUnderButton fav = TextUnderButton.create(this, R.drawable.ic_heart, buttonSize,2, getString(R.string.lbl_favorite), new View.OnClickListener() {
@Override
public void onClick(final View v) {
UserItemDataDto data = mBaseItem.getUserData();
apiClient.getValue().UpdateFavoriteStatusAsync(mBaseItem.getId(), KoinJavaComponent.<UserRepository>get(UserRepository.class).getCurrentUser().getValue().getId().toString(), !data.getIsFavorite(), new Response<UserItemDataDto>() {
@Override
public void onClick(final View v) {
new AlertDialog.Builder(mActivity)
.setTitle(R.string.lbl_clear_queue)
.setMessage(R.string.clear_expanded)
.setPositiveButton(R.string.lbl_clear, (dialog, whichButton) -> {
mediaManager.getValue().setCurrentVideoQueue(new ArrayList<BaseItemDto>());
dataRefreshService.getValue().setLastVideoQueueChange(System.currentTimeMillis());
finish();
})
.setNegativeButton(R.string.btn_cancel, (dialog, which) -> {
})
.show()
.getButton(AlertDialog.BUTTON_NEGATIVE).requestFocus();
public void onResponse(UserItemDataDto response) {
mBaseItem.setUserData(response);
((TextUnderButton)v).setActivated(response.getIsFavorite());
dataRefreshService.getValue().setLastFavoriteUpdate(System.currentTimeMillis());
}
});

mButtonRow.addView(delete);
delete.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) mScrollView.smoothScrollTo(0, 0);
});
}
}
});
fav.setActivated(mBaseItem.getUserData().getIsFavorite());
mButtonRow.addView(fav);
fav.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) mScrollView.smoothScrollTo(0, 0);
});
}

if (mBaseItem.getAlbumArtists() != null && mBaseItem.getAlbumArtists().size() > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -437,23 +437,6 @@ public void onResponse(BaseItemDto response) {
activity.startActivity(recordings);
break;

case LiveTvOption.VIDEO_QUEUE_OPTION_ID:
Intent queueIntent = new Intent(activity, ItemListActivity.class);
queueIntent.putExtra("ItemId", ItemListActivity.VIDEO_QUEUE);
//Resume first item if needed
List<BaseItemDto> items = KoinJavaComponent.<MediaManager>get(MediaManager.class).getCurrentVideoQueue();
if (items != null) {
BaseItemDto first = items.size() > 0 ? items.get(0) : null;
if (first != null && first.getUserData() != null) {
Long resume = first.getUserData().getPlaybackPositionTicks() / 10000;
queueIntent.putExtra("Position", resume.intValue());

}
}

activity.startActivity(queueIntent);
break;

case LiveTvOption.LIVE_TV_SERIES_OPTION_ID:
Intent seriesIntent = new Intent(activity, UserViewActivity.class);
BaseItemDto seriesTimers = new BaseItemDto();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import org.jellyfin.androidtv.R;
import org.jellyfin.androidtv.auth.repository.UserRepository;
import org.jellyfin.androidtv.constant.CustomMessage;
import org.jellyfin.androidtv.constant.LiveTvOption;
import org.jellyfin.androidtv.data.querying.StdItemQuery;
import org.jellyfin.androidtv.data.repository.ItemMutationRepository;
import org.jellyfin.androidtv.ui.itemdetail.ItemListActivity;
Expand All @@ -19,7 +18,6 @@
import org.jellyfin.androidtv.ui.itemhandling.BaseRowItem;
import org.jellyfin.androidtv.ui.playback.AudioNowPlayingActivity;
import org.jellyfin.androidtv.ui.playback.MediaManager;
import org.jellyfin.androidtv.ui.playback.PlaybackLauncher;
import org.jellyfin.androidtv.ui.shared.BaseActivity;
import org.jellyfin.androidtv.util.apiclient.PlaybackHelper;
import org.jellyfin.androidtv.util.sdk.BaseItemExtensionsKt;
Expand Down Expand Up @@ -145,13 +143,6 @@ public static boolean HandleKey(int key, BaseRowItem rowItem, Activity activity)
PlaybackHelper.retrieveAndPlay(rowItem.getProgramInfo().getChannelId(), false, activity);
return true;
case GridButton:
if (rowItem.getGridButton().getId() == LiveTvOption.VIDEO_QUEUE_OPTION_ID) {
//Queue already there - just kick off playback
BaseItemType itemType = KoinJavaComponent.<MediaManager>get(MediaManager.class).getCurrentVideoQueue().size() > 0 ? KoinJavaComponent.<MediaManager>get(MediaManager.class).getCurrentVideoQueue().get(0).getBaseItemType() : null;
Class newActivity = KoinJavaComponent.<PlaybackLauncher>get(PlaybackLauncher.class).getPlaybackActivityClass(itemType);
Intent intent = new Intent(activity, newActivity);
activity.startActivity(intent);
}
break;
}

Expand Down
10 changes: 0 additions & 10 deletions app/src/main/res/drawable/ic_video_queue.xml

This file was deleted.

18 changes: 0 additions & 18 deletions app/src/main/res/drawable/tile_port_video_queue.xml

This file was deleted.

1 change: 0 additions & 1 deletion app/src/main/res/values/attrs_tiles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
<attr name="tile_port_time_bg" format="color" />
<attr name="tile_port_tv_bg" format="color" />
<attr name="tile_port_video_bg" format="color" />
<attr name="tile_port_video_queue_bg" format="color" />
<attr name="tile_search_bg" format="color" />
<attr name="tile_suggestions_bg" format="color" />
<attr name="tile_actors_bg" format="color" />
Expand Down
2 changes: 0 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,6 @@
<string name="lbl_subtitle_track">Select subtitle track</string>
<string name="msg_external_path">This feature will only work if you have properly set up your library on the server with network paths or path substitution and the client you are using can directly access these locations over the network.</string>
<string name="btn_got_it">Got it</string>
<string name="lbl_current_queue">Current Queue</string>
<string name="desc_current_video_queue">Video items currently queued for playback</string>
<string name="lbl_clear_queue">Clear Queue</string>
<string name="lbl_play_next_up">Play Next Up</string>
<string name="lbl_open">Open</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values/theme_emerald.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
<item name="tile_port_time_bg">@color/theme_emerald_light</item>
<item name="tile_port_tv_bg">@color/theme_emerald_light</item>
<item name="tile_port_video_bg">@color/theme_emerald_light</item>
<item name="tile_port_video_queue_bg">@color/theme_emerald_light</item>
<item name="tile_port_folder_bg">@color/theme_emerald_light</item>
<item name="tile_port_grid_bg">@color/theme_emerald_light</item>
<item name="tile_port_guide_bg">@color/theme_emerald_light</item>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values/theme_jellyfin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@
<item name="tile_port_tv_bg">@color/indigo_dye</item>
<item name="tile_actors_bg">@color/indigo_dye</item>
<item name="tile_land_photo_bg">@color/indigo_dye</item>
<item name="tile_port_video_queue_bg">@color/indigo_dye</item>
<item name="tile_port_folder_bg">@color/indigo_dye</item>
<item name="tile_land_series_timer_bg">@color/indigo_dye</item>

Expand Down