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.ICreateEditAlbumView;
import org.robobinding.annotation.DependsOnStateOf;
import org.robobinding.annotation.PresentationModel;
/**
* @author Cheng Wei
* @author Robert Taylor
* @since 1.0
*/
@PresentationModel
public class CreateEditAlbumPresentationModel {
private static final String CLASSICAL = "classical";
private final ICreateEditAlbumView view;
private final IAlbumStore albumStore;
private final Album.Builder albumBuilder;
public CreateEditAlbumPresentationModel(ICreateEditAlbumView view, IAlbumStore albumStore,
Album.Builder albumBuilder) {
this.view = view;
this.albumStore = albumStore;
this.albumBuilder = albumBuilder;
}
public void save() {
albumStore.save(albumBuilder.create());
view.finishActivity();
}
public String getTitle() {
return albumBuilder.getTitle();
}
public void setTitle(String title) {
albumBuilder.setTitle(title);
}
public String getArtist() {
return albumBuilder.getArtist();
}
public void setArtist(String artist) {
albumBuilder.setArtist(artist);
}
public boolean isClassical() {
return albumBuilder.isClassical();
}
public void setClassical(boolean classical) {
albumBuilder.setClassical(classical);
}
@DependsOnStateOf(CLASSICAL)
public boolean isComposerEnabled() {
return isClassical();
}
public String getComposer() {
return albumBuilder.getComposer();
}
public void setComposer(String composer) {
albumBuilder.setComposer(composer);
}
@DependsOnStateOf(CLASSICAL)
public String getWindowTitle() {
if (albumBuilder.isNew())
return view.getCreateAlbumTitle();
return isClassical() ? "Edit Classical Album" : "Edit Album";
}
}