Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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 @@ -24,7 +24,6 @@

import org.xbmc.kore.R;
import org.xbmc.kore.ui.AbstractFragment;
import org.xbmc.kore.ui.AbstractInfoFragment;
import org.xbmc.kore.ui.BaseMediaActivity;
import org.xbmc.kore.utils.LogUtils;

Expand All @@ -35,8 +34,7 @@
public class MusicActivity extends BaseMediaActivity
implements ArtistListFragment.OnArtistSelectedListener,
AlbumListFragment.OnAlbumSelectedListener,
AudioGenresListFragment.OnAudioGenreSelectedListener,
MusicVideoListFragment.OnMusicVideoSelectedListener {
AudioGenresListFragment.OnAudioGenreSelectedListener {
private static final String TAG = LogUtils.makeLogTag(MusicActivity.class);

public static final String ALBUMID = "album_id";
Expand All @@ -45,17 +43,13 @@ public class MusicActivity extends BaseMediaActivity
public static final String ARTISTNAME = "artist_name";
public static final String GENREID = "genre_id";
public static final String GENRETITLE = "genre_title";
public static final String MUSICVIDEOID = "music_video_id";
public static final String MUSICVIDEOTITLE = "music_video_title";

private int selectedAlbumId = -1;
private int selectedArtistId = -1;
private int selectedGenreId = -1;
private int selectedMusicVideoId = -1;
private String selectedAlbumTitle = null;
private String selectedArtistName = null;
private String selectedGenreTitle = null;
private String selectedMusicVideoTitle = null;

@Override
protected String getActionBarTitle() {
Expand All @@ -65,8 +59,6 @@ protected String getActionBarTitle() {
return selectedArtistName;
} else if (selectedGenreTitle != null) {
return selectedGenreTitle;
} else if (selectedMusicVideoTitle != null) {
return selectedMusicVideoTitle;
} else {
return getResources().getString(R.string.music);
}
Expand All @@ -83,11 +75,9 @@ protected void onCreate(Bundle savedInstanceState) {
selectedAlbumId = savedInstanceState.getInt(ALBUMID, -1);
selectedArtistId = savedInstanceState.getInt(ARTISTID, -1);
selectedGenreId = savedInstanceState.getInt(GENREID, -1);
selectedMusicVideoId = savedInstanceState.getInt(MUSICVIDEOID, -1);
selectedAlbumTitle = savedInstanceState.getString(ALBUMTITLE, null);
selectedArtistName = savedInstanceState.getString(ARTISTNAME, null);
selectedGenreTitle = savedInstanceState.getString(GENRETITLE, null);
selectedMusicVideoTitle = savedInstanceState.getString(MUSICVIDEOTITLE, null);
}
super.onCreate(savedInstanceState);
}
Expand All @@ -98,11 +88,9 @@ protected void onSaveInstanceState(@NonNull Bundle outState) {
outState.putInt(ALBUMID, selectedAlbumId);
outState.putInt(ARTISTID, selectedArtistId);
outState.putInt(GENREID, selectedGenreId);
outState.putInt(MUSICVIDEOID, selectedMusicVideoId);
outState.putString(ALBUMTITLE, selectedAlbumTitle);
outState.putString(ARTISTNAME, selectedArtistName);
outState.putString(GENRETITLE, selectedGenreTitle);
outState.putString(MUSICVIDEOTITLE, selectedMusicVideoTitle);
}

@Override
Expand All @@ -126,15 +114,10 @@ public boolean onOptionsItemSelected(MenuItem item) {
selectedGenreId = -1;
selectedGenreTitle = null;
respond = true;
} else if (selectedMusicVideoId != -1) {
selectedMusicVideoId = -1;
selectedMusicVideoTitle = null;
respond = true;
}
if (respond) {
updateActionBar(getActionBarTitle(), selectedArtistId != -1 ||
selectedGenreId != -1 ||
selectedMusicVideoId != -1);
selectedGenreId != -1);
getSupportFragmentManager().popBackStack();
return true;
}
Expand All @@ -158,14 +141,10 @@ public void onBackPressed() {
} else if (selectedGenreId != -1) {
selectedGenreId = -1;
selectedGenreTitle = null;
} else if (selectedMusicVideoId != -1) {
selectedMusicVideoId = -1;
selectedMusicVideoTitle = null;
}

updateActionBar(getActionBarTitle(), selectedArtistId != -1 ||
selectedGenreId != -1 ||
selectedMusicVideoId != -1);
selectedGenreId != -1);
super.onBackPressed();
}

Expand Down Expand Up @@ -203,14 +182,4 @@ public void onAudioGenreSelected(int genreId, String genreTitle) {

updateActionBar(selectedGenreTitle, true);
}

public void onMusicVideoSelected(AbstractInfoFragment.DataHolder dataHolder, ImageView sharedImageView) {
selectedMusicVideoId = dataHolder.getId();
selectedMusicVideoTitle = dataHolder.getTitle();

// Replace list fragment
dataHolder.setSquarePoster(true);
showFragment(MusicVideoInfoFragment.class, dataHolder.getBundle(), sharedImageView);
updateActionBar(selectedMusicVideoTitle, true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@
import androidx.viewpager2.widget.ViewPager2;

import org.xbmc.kore.R;
import org.xbmc.kore.jsonrpc.method.Files;
import org.xbmc.kore.ui.AbstractCursorListFragment;
import org.xbmc.kore.ui.AbstractTabsFragment;
import org.xbmc.kore.ui.sections.file.MediaFileListFragment;
import org.xbmc.kore.utils.LogUtils;
import org.xbmc.kore.utils.TabsAdapter;

Expand All @@ -35,6 +37,9 @@
public class MusicListFragment extends AbstractTabsFragment {
private static final String TAG = LogUtils.makeLogTag(MusicListFragment.class);

// Kodi's special virtual folder that holds saved music playlists (.m3u/.pls files)
private static final String MUSIC_PLAYLISTS_PATH = "special://musicplaylists/";

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Expand All @@ -58,7 +63,29 @@ protected TabsAdapter createTabsAdapter(DataHolder dataHolder) {
.addTab(AlbumListFragment.class, getArguments(), R.string.albums, 2)
.addTab(AudioGenresListFragment.class, getArguments(), R.string.genres, 3)
.addTab(SongsListFragment.class, getArguments(), R.string.songs, 4)
.addTab(MusicVideoListFragment.class, getArguments(), R.string.music_videos, 5);
.addTab(MediaFileListFragment.class, createPlaylistsTabArgs(), R.string.playlists, 5);
}

/**
* Builds the arguments that tell the reused {@link MediaFileListFragment} to start
* browsing directly inside Kodi's saved music playlists folder, instead of starting
* at the top-level file Sources list (which is what it does with no arguments).
*
* Tapping a playlist file plays it immediately (MediaFileListFragment's existing
* behaviour for any non-directory item) - see Player.Open being called from
* handleFileSelect()/playMediaFile() in that class.
*/
private Bundle createPlaylistsTabArgs() {
Bundle args = new Bundle();
args.putString(MediaFileListFragment.MEDIA_TYPE, Files.Media.MUSIC);
args.putParcelable(MediaFileListFragment.CURRENT_LOCATION,
new MediaFileListFragment.FileLocation(
getString(R.string.playlists), // title (not shown here - this location is the root of the tab)
MUSIC_PLAYLISTS_PATH, // Kodi's special path for saved music playlists
true, // isDirectory
null, // no parent - this is the top of this tab
true)); // isRoot - stops back-navigation going further up
return args;
}

@Override
Expand Down
Loading