Search in sources :

Example 1 with TracksProvider

use of org.videolan.vlc.viewmodels.audio.TracksProvider in project vlc-android by GeoffreyMetais.

the class PlaylistActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mBinding = DataBindingUtil.setContentView(this, R.layout.playlist_activity);
    initAudioPlayerContainerActivity();
    mFragmentContainer = findViewById(R.id.container_list);
    mOriginalBottomPadding = mFragmentContainer.getPaddingBottom();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    mPlaylist = (MediaLibraryItem) (savedInstanceState != null ? savedInstanceState.getParcelable(AudioBrowserFragment.TAG_ITEM) : getIntent().getParcelableExtra(AudioBrowserFragment.TAG_ITEM));
    mIsPlaylist = mPlaylist.getItemType() == MediaLibraryItem.TYPE_PLAYLIST;
    mBinding.setPlaylist(mPlaylist);
    mAdapter = new AudioBrowserAdapter(MediaLibraryItem.TYPE_MEDIA, this);
    mBinding.songs.setLayoutManager(new LinearLayoutManager(this));
    mBinding.songs.setAdapter(mAdapter);
    tracksProvider = ViewModelProviders.of(this, new TracksProvider.Factory(mPlaylist)).get(TracksProvider.class);
    tracksProvider.getDataset().observe(this, new Observer<List<MediaLibraryItem>>() {

        @Override
        public void onChanged(@Nullable List<MediaLibraryItem> tracks) {
            if (tracks != null)
                mAdapter.update(tracks);
        }
    });
    final int fabVisibility = savedInstanceState != null ? savedInstanceState.getInt(TAG_FAB_VISIBILITY) : -1;
    if (!TextUtils.isEmpty(mPlaylist.getArtworkMrl())) {
        WorkersKt.runBackground(new Runnable() {

            @Override
            public void run() {
                final Bitmap cover = AudioUtil.readCoverBitmap(Uri.decode(mPlaylist.getArtworkMrl()), 0);
                if (cover != null) {
                    mBinding.setCover(new BitmapDrawable(PlaylistActivity.this.getResources(), cover));
                    WorkersKt.runOnMainThread(new Runnable() {

                        @Override
                        public void run() {
                            mBinding.appbar.setExpanded(true, true);
                            if (fabVisibility != -1)
                                mBinding.fab.setVisibility(fabVisibility);
                        }
                    });
                } else
                    WorkersKt.runOnMainThread(new Runnable() {

                        @Override
                        public void run() {
                            fabFallback();
                        }
                    });
            }
        });
    } else
        fabFallback();
    mBinding.fab.setOnClickListener(this);
}
Also used : MediaLibraryItem(org.videolan.medialibrary.media.MediaLibraryItem) BitmapDrawable(android.graphics.drawable.BitmapDrawable) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) Bitmap(android.graphics.Bitmap) TracksProvider(org.videolan.vlc.viewmodels.audio.TracksProvider) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) AudioBrowserAdapter(org.videolan.vlc.gui.audio.AudioBrowserAdapter)

Example 2 with TracksProvider

use of org.videolan.vlc.viewmodels.audio.TracksProvider in project vlc-android by GeoffreyMetais.

the class AudioBrowserFragment method setupObservers.

private void setupObservers() {
    final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(requireContext());
    artistProvider = ViewModelProviders.of(requireActivity(), new ArtistProvider.Factory(prefs.getBoolean(Constants.KEY_ARTISTS_SHOW_ALL, false))).get(ArtistProvider.class);
    albumProvider = ViewModelProviders.of(requireActivity()).get(AlbumProvider.class);
    tracksProvider = ViewModelProviders.of(requireActivity()).get(TracksProvider.class);
    genresprovider = ViewModelProviders.of(requireActivity()).get(Genresprovider.class);
    playlistsProvider = ViewModelProviders.of(requireActivity()).get(PlaylistsProvider.class);
    mProvidersList = new AudioModel[] { artistProvider, albumProvider, tracksProvider, genresprovider, playlistsProvider };
    // Register current tab first
    final int currentTab = mViewPager.getCurrentItem();
    mProvidersList[currentTab].getSections().observe(this, new Observer<List<MediaLibraryItem>>() {

        @Override
        public void onChanged(@Nullable List<MediaLibraryItem> items) {
            if (items != null)
                mAdapters[currentTab].update(items);
        }
    });
    for (int i = 0; i < mProvidersList.length; ++i) {
        if (i == currentTab)
            continue;
        final int index = i;
        mProvidersList[i].getSections().observe(this, new Observer<List<MediaLibraryItem>>() {

            @Override
            public void onChanged(@Nullable List<MediaLibraryItem> items) {
                if (items != null)
                    mAdapters[index].update(items);
            }
        });
    }
}
Also used : MediaLibraryItem(org.videolan.medialibrary.media.MediaLibraryItem) SharedPreferences(android.content.SharedPreferences) ArtistProvider(org.videolan.vlc.viewmodels.audio.ArtistProvider) PlaylistsProvider(org.videolan.vlc.viewmodels.audio.PlaylistsProvider) AlbumProvider(org.videolan.vlc.viewmodels.audio.AlbumProvider) TracksProvider(org.videolan.vlc.viewmodels.audio.TracksProvider) List(java.util.List) ArrayList(java.util.ArrayList) Genresprovider(org.videolan.vlc.viewmodels.audio.Genresprovider)

Aggregations

ArrayList (java.util.ArrayList)2 List (java.util.List)2 MediaLibraryItem (org.videolan.medialibrary.media.MediaLibraryItem)2 TracksProvider (org.videolan.vlc.viewmodels.audio.TracksProvider)2 SharedPreferences (android.content.SharedPreferences)1 Bitmap (android.graphics.Bitmap)1 BitmapDrawable (android.graphics.drawable.BitmapDrawable)1 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)1 LinkedList (java.util.LinkedList)1 AudioBrowserAdapter (org.videolan.vlc.gui.audio.AudioBrowserAdapter)1 AlbumProvider (org.videolan.vlc.viewmodels.audio.AlbumProvider)1 ArtistProvider (org.videolan.vlc.viewmodels.audio.ArtistProvider)1 Genresprovider (org.videolan.vlc.viewmodels.audio.Genresprovider)1 PlaylistsProvider (org.videolan.vlc.viewmodels.audio.PlaylistsProvider)1