package com.cheng.mvvmstudy.albumrobobinding.viewmodel;
import android.util.Log;
import com.cheng.mvvmstudy.albumrobobinding.model.bean.Album;
import com.cheng.mvvmstudy.albumrobobinding.api.i.IAlbumStore;
import com.cheng.mvvmstudy.albumrobobinding.ui.i.IViewAlbumsView;
import org.robobinding.annotation.ItemPresentationModel;
import org.robobinding.annotation.PresentationModel;
import org.robobinding.presentationmodel.HasPresentationModelChangeSupport;
import org.robobinding.presentationmodel.PresentationModelChangeSupport;
import org.robobinding.widget.adapterview.ItemClickEvent;
import java.util.ArrayList;
import java.util.List;
/**
* @author Cheng Wei
* @author Robert Taylor
* @since 1.0
*/
@PresentationModel
public class ViewAlbumsPresentationModel implements HasPresentationModelChangeSupport {
private final IViewAlbumsView view;
private final IAlbumStore albumStore;
private final PresentationModelChangeSupport changeSupport;
public ViewAlbumsPresentationModel(IViewAlbumsView view, IAlbumStore albumStore) {
this.view = view;
this.albumStore = albumStore;
this.changeSupport = new PresentationModelChangeSupport(this);
}
@ItemPresentationModel(AlbumItemPresentationModel.class)
public List<Album> getAlbums() {
Log.d(ViewAlbumsPresentationModel.class.getSimpleName(), "in getAlbums():" + albumStore.getAll().size() + " albums");
return new ArrayList<Album>(albumStore.getAll());
}
public void refreshAlbums() {
changeSupport.firePropertyChange("albums");
}
public void createAlbum() {
view.createAlbum();
}
public void viewAlbum(ItemClickEvent event) {
viewAlbum(event.getPosition());
}
private void viewAlbum(int selectedAlbumPosition) {
Album album = albumStore.getByIndex(selectedAlbumPosition);
view.viewAlbum(album.getId());
}
@Override
public PresentationModelChangeSupport getPresentationModelChangeSupport() {
return changeSupport;
}
}