package lancs.mobilemedia.core.ui.controller;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.List;
import lancs.mobilemedia.lib.exceptions.UnavailablePhotoAlbumException;
import lancs.mobilemedia.core.ui.MainUIMidlet;
import lancs.mobilemedia.core.ui.datamodel.AlbumData;
import lancs.mobilemedia.core.ui.datamodel.MediaData;
import lancs.mobilemedia.core.ui.screens.AlbumListScreen;
import lancs.mobilemedia.core.ui.screens.MediaListScreen;
import lancs.mobilemedia.core.util.Constants;
import de.ovgu.cide.jakutil.*;
/**
* @author Eduardo Figueiredo
*/
public class MediaListController extends AbstractController {
/**
* @param midlet
* @param nextController
* @param albumData
* @param albumListScreen
*/
public MediaListController( MainUIMidlet midlet, AlbumData albumData, AlbumListScreen albumListScreen){
super(midlet,albumData,albumListScreen);
}
public boolean handleCommand( Command command){
return new MediaListController_handleCommand(this,command).execute();
}
/**
* Show the list of images in the record store
* TODO: Refactor - Move this to ImageList class
*/
public void showMediaList( String recordName, boolean sort, boolean favorite){
if (recordName == null) recordName=getCurrentStoreName();
MediaController mediaController=new MediaController(midlet,getAlbumData(),(AlbumListScreen)getAlbumListScreen());
mediaController.setNextController(this);
MediaListScreen mediaList=null;
mediaList=this.hook30(mediaList);
mediaList=this.hook29(mediaList);
mediaList=this.hook34(mediaList);
mediaList.setCommandListener(mediaController);
mediaList.initMenu();
MediaData[] medias=null;
try {
medias=getAlbumData().getMedias(recordName);
}
catch ( UnavailablePhotoAlbumException e) {
Alert alert=new Alert("Error","The list of items can not be recovered",null,AlertType.ERROR);
Display.getDisplay(midlet).setCurrent(alert,Display.getDisplay(midlet).getCurrent());
return;
}
if (medias == null) return;
this.hook33(sort,medias);
for (int i=0; i < medias.length; i++) {
if (medias[i] != null) {
if (!favorite) mediaList.append(medias[i].getMediaLabel(),null);
else if (medias[i].isFavorite()) mediaList.append(medias[i].getMediaLabel(),null);
}
}
setCurrentScreen(mediaList);
}
@MethodObject static class MediaListController_handleCommand {
MediaListController_handleCommand( MediaListController _this, Command command){
this._this=_this;
this.command=command;
}
boolean execute(){
try {
label=command.getLabel();
{
}
if (label.equals("Select")) {
down=(List)Display.getDisplay(midlet).getCurrent();
ScreenSingleton.getInstance().setCurrentStoreName(down.getString(down.getSelectedIndex()));
this.hook32();
_this.showMediaList(_this.getCurrentStoreName(),false,false);
ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGELIST_SCREEN);
return true;
}
this.hook31();
return false;
}
catch ( ReturnBoolean r) {
return r.value;
}
}
protected MediaListController _this;
protected Command command;
protected String label;
protected String passwd;
protected String ps2;
protected List down;
protected PasswordScreen pwd;
protected PasswordScreen password;
protected Alert alert;
protected void hook31(){
}
protected void hook32(){
}
}
protected MediaListScreen hook29( MediaListScreen mediaList){
return mediaList;
}
protected MediaListScreen hook30( MediaListScreen mediaList){
return mediaList;
}
protected void hook33( boolean sort, MediaData[] medias){
}
protected MediaListScreen hook34( MediaListScreen mediaList){
return mediaList;
}
}