package com.cheng.mvvmstudy.albumrobobinding.viewmodel;
import com.cheng.mvvmstudy.albumrobobinding.model.bean.Album;
import com.cheng.mvvmstudy.albumrobobinding.api.i.IAlbumStore;
import com.cheng.mvvmstudy.albumrobobinding.ui.i.IViewAlbumView;
import org.robobinding.annotation.PresentationModel;
import org.robobinding.presentationmodel.HasPresentationModelChangeSupport;
import org.robobinding.presentationmodel.PresentationModelChangeSupport;
/**
* @author Cheng Wei
* @author Robert Taylor
* @since 1.0
*/
@PresentationModel
public class ViewAlbumPresentationModel implements HasPresentationModelChangeSupport {
private final IViewAlbumView view;
private final IAlbumStore albumStore;
private final long albumId;
private final PresentationModelChangeSupport changeSupport;
private Album album;
public ViewAlbumPresentationModel(IViewAlbumView view, IAlbumStore albumStore, long albumId) {
this.view = view;
this.albumStore = albumStore;
this.albumId = albumId;
this.changeSupport = new PresentationModelChangeSupport(this);
}
public String getTitle() {
return album.getTitle();
}
public String getArtist() {
return album.getArtist();
}
public String getComposer() {
return album.getComposer();
}
public boolean isComposerEnabled() {
return album.isClassical();
}
public String getClassicalDescription() {
return album.isClassical() ? "Classical" : "Not classical";
}
public void editAlbum() {
view.editAlbum(album.getId());
}
public void deleteAlbum() {
view.deleteAlbum(album);
}
public void refresh() {
this.album = albumStore.get(albumId);
changeSupport.refreshPresentationModel();
}
@Override
public PresentationModelChangeSupport getPresentationModelChangeSupport() {
return changeSupport;
}
}