Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / view / player / playlist / PlayerPlaylistFragment.java
1 package com.moiseum.wolnelektury.view.player.playlist;
2
3 import android.os.Bundle;
4 import android.support.v7.widget.LinearLayoutManager;
5 import android.view.View;
6
7 import com.moiseum.wolnelektury.R;
8 import com.moiseum.wolnelektury.base.mvp.PresenterFragment;
9 import com.moiseum.wolnelektury.components.ProgressRecyclerView;
10 import com.moiseum.wolnelektury.components.recycler.RecyclerAdapter;
11 import com.moiseum.wolnelektury.connection.models.MediaModel;
12
13 import org.parceler.Parcels;
14
15 import java.util.List;
16
17 import butterknife.BindView;
18
19 /**
20  * Created by Piotr Ostrowski on 28.05.2018.
21  */
22 public class PlayerPlaylistFragment extends PresenterFragment<PlayerPlaylistPresenter> implements PlayerPlaylistView {
23
24         private static final String MEDIA_FILES_KEY = "MediaFilesKey";
25
26         @BindView(R.id.rvPlayerPlaylist)
27         ProgressRecyclerView<MediaModel> rvPlayerPlaylist;
28
29         private PlayerPlaylistAdapter adapter;
30
31         public static PlayerPlaylistFragment newInstance(List<MediaModel> mediaFiles) {
32                 PlayerPlaylistFragment fragment = new PlayerPlaylistFragment();
33                 Bundle args = new Bundle();
34                 args.putParcelable(MEDIA_FILES_KEY, Parcels.wrap(mediaFiles));
35                 fragment.setArguments(args);
36                 return fragment;
37         }
38
39         @Override
40         protected PlayerPlaylistPresenter createPresenter() {
41                 if (getArguments() == null || getArguments().getParcelable(MEDIA_FILES_KEY) == null) {
42                         throw new IllegalStateException("Media files object is required at this point.");
43                 }
44                 return new PlayerPlaylistPresenter(Parcels.unwrap(getArguments().getParcelable(MEDIA_FILES_KEY)), this, getContext());
45         }
46
47         @Override
48         public int getLayoutResourceId() {
49                 return R.layout.fragment_player_playlist;
50         }
51
52         @Override
53         public void prepareView(View view, Bundle savedInstanceState) {
54                 initList(rvPlayerPlaylist);
55         }
56
57         @Override
58         public void setCurrentPlaylistItem(int position) {
59                 adapter.selectItem(adapter.getItem(position));
60         }
61
62         public void initList(ProgressRecyclerView<MediaModel> rvList) {
63                 adapter = new PlayerPlaylistAdapter(getContext());
64                 adapter.setOnItemClickListener((item, view, position) -> getPresenter().onPlaylistItemClick(position));
65                 rvList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
66                 rvList.setAdapter(adapter);
67         }
68
69         public void setPlaylist(List<MediaModel> item) {
70                 rvPlayerPlaylist.setItems(item);
71         }
72 }