Skip to content

Commit

Permalink
Remove unused video queue from UI code
Browse files Browse the repository at this point in the history
  • Loading branch information
nielsvanvelzen committed Aug 30, 2022
1 parent f084597 commit 0cd2c0a
Show file tree
Hide file tree
Showing 10 changed files with 19 additions and 174 deletions.
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

0 comments on commit 0cd2c0a

Please sign in to comment.