/** [EF] update this method or merge with method of super class. Go to the previous screen */ private boolean goToPreviousScreen() { System.out.println("<* PhotoController.goToPreviousScreen() *>"); String currentScreenName = ScreenSingleton.getInstance().getCurrentScreenName(); if (currentScreenName.equals(Constants.ALBUMLIST_SCREEN)) { System.out.println("Can't go back here...Should never reach this spot"); } else if (currentScreenName.equals(Constants.IMAGE_SCREEN)) { // Go to the image list here, not the main screen... showMediaList(getCurrentStoreName(), false, false); ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGELIST_SCREEN); return true; } else if (currentScreenName.equals(Constants.ADDPHOTOTOALBUM_SCREEN)) { showMediaList(getCurrentStoreName(), false, false); ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGELIST_SCREEN); return true; } return false; }
public boolean handleCommand(Command command) { String label = command.getLabel(); System.out.println("<* MediaController.handleCommand() *> " + label); /** Case: Save Add photo * */ if (label.equals("Add")) { ScreenSingleton.getInstance().setCurrentScreenName(Constants.ADDPHOTOTOALBUM_SCREEN); AddMediaToAlbum form = new AddMediaToAlbum("Add new item to Album"); form.setCommandListener(this); setCurrentScreen(form); return true; } // #ifdef includePhoto // [NC] Added in the scenario 07 else if (label.equals("View")) { String selectedImageName = getSelectedMediaName(); showImage(selectedImageName); // #ifdef includeSorting // [EF] Added in the scenario 02 incrementCountViews(selectedImageName); // #endif ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGE_SCREEN); return true; } // #endif // #ifdef includeMusic // [NC] Added in the scenario 07 else if (label.equals("Play")) { String selectedMediaName = getSelectedMediaName(); return playMusicMedia(selectedMediaName); } // #endif // #ifdef includeVideo // [NC] Added in the scenario 08 else if (label.equals("Play Video")) { String selectedMediaName = getSelectedMediaName(); return playVideoMedia(selectedMediaName); } // #endif // #ifdef captureVideo // [NC] Added in the scenario 08 else if (label.equals("Capture Video")) { CaptureVideoScreen playscree = new CaptureVideoScreen(midlet, CaptureVideoScreen.CAPTUREVIDEO); playscree.setVisibleVideo(); VideoCaptureController controller = new VideoCaptureController( midlet, getAlbumData(), (AlbumListScreen) getAlbumListScreen(), playscree); this.setNextController(controller); playscree.setCommandListener(this); return true; } // #endif // #ifdef capturePhoto // [NC] Added in the scenario 08 else if (label.equals("Capture Photo")) { CaptureVideoScreen playscree = new CaptureVideoScreen(midlet, CaptureVideoScreen.CAPTUREPHOTO); playscree.setVisibleVideo(); PhotoViewController controller = new PhotoViewController( midlet, getAlbumData(), (AlbumListScreen) getAlbumListScreen(), "New photo"); controller.setCpVideoScreen(playscree); this.setNextController(controller); playscree.setCommandListener(this); return true; } // #endif else if (label.equals("Save Item")) { try { getAlbumData() .addNewMediaToAlbum( ((AddMediaToAlbum) getCurrentScreen()).getItemName(), ((AddMediaToAlbum) getCurrentScreen()).getPath(), getCurrentStoreName()); // #ifdef includeMusic // [NC] Added in the scenario 07 if (getAlbumData() instanceof MusicAlbumData) { getAlbumData().loadMediaDataFromRMS(getCurrentStoreName()); MediaData mymedia = getAlbumData().getMediaInfo(((AddMediaToAlbum) getCurrentScreen()).getItemName()); mymedia.setTypeMedia(((AddMediaToAlbum) getCurrentScreen()).getItemType()); getAlbumData().updateMediaInfo(mymedia, mymedia); // MultiMediaData mmedi = new MultiMediaData(mymedia, ((AddMediaToAlbum) // getCurrentScreen()).getItemType()); // getAlbumData().updateMediaInfo(mymedia, mmedi); } // #endif } catch (InvalidImageDataException e) { Alert alert = null; if (e instanceof ImagePathNotValidException) alert = new Alert("Error", "The path is not valid", null, AlertType.ERROR); else alert = new Alert("Error", "The file format is not valid", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); return true; // alert.setTimeout(5000); } catch (PersistenceMechanismException e) { Alert alert = null; if (e.getCause() instanceof RecordStoreFullException) alert = new Alert("Error", "The mobile database is full", null, AlertType.ERROR); else alert = new Alert( "Error", "The mobile database can not add a new photo", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); } // #ifdef includeMusic // [NC] Added in the scenario 07 catch (ImageNotFoundException e) { Alert alert = new Alert( "Error", "The selected item was not found in the mobile device", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); return true; } // #endif return goToPreviousScreen(); /** Case: Delete selected Photo from recordstore * */ } else if (label.equals("Delete")) { String selectedMediaName = getSelectedMediaName(); try { getAlbumData().deleteMedia(getCurrentStoreName(), selectedMediaName); } catch (PersistenceMechanismException e) { Alert alert = new Alert( "Error", "The mobile database can not delete this item", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); return true; } catch (ImageNotFoundException e) { Alert alert = new Alert( "Error", "The selected item was not found in the mobile device", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); return true; } showMediaList(getCurrentStoreName(), false, false); ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGELIST_SCREEN); return true; /** Case: Edit photo label [EF] Added in the scenario 02 */ } else if (label.equals("Edit Label")) { String selectedImageName = getSelectedMediaName(); try { media = getAlbumData().getMediaInfo(selectedImageName); // PhotoController photoController = new PhotoController(image, // this); NewLabelScreen formScreen = new NewLabelScreen("Edit Label Item", NewLabelScreen.LABEL_PHOTO); formScreen.setCommandListener(this); this.setScreen(formScreen); setCurrentScreen(formScreen); formScreen = null; } catch (ImageNotFoundException e) { Alert alert = new Alert( "Error", "The selected item was not found in the mobile device", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); } return true; // #ifdef includeSorting /** Case: Sort photos by number of views [EF] Added in the scenario 02 */ } else if (label.equals("Sort by Views")) { showMediaList(getCurrentStoreName(), true, false); ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGELIST_SCREEN); return true; // #endif // #ifdef includeFavourites /** Case: Set photo as favorite [EF] Added in the scenario 03 */ } else if (label.equals("Set Favorite")) { String selectedMediaName = getSelectedMediaName(); try { MediaData media = getAlbumData().getMediaInfo(selectedMediaName); media.toggleFavorite(); updateMedia(media); System.out.println( "<* BaseController.handleCommand() *> Image = " + selectedMediaName + "; Favorite = " + media.isFavorite()); } catch (ImageNotFoundException e) { Alert alert = new Alert( "Error", "The selected item was not found in the mobile device", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); } catch (InvalidImageDataException e) { Alert alert = null; if (e instanceof ImagePathNotValidException) alert = new Alert("Error", "The path is not valid", null, AlertType.ERROR); else alert = new Alert("Error", "The image file format is not valid", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); } catch (PersistenceMechanismException e) { Alert alert = null; if (e.getCause() instanceof RecordStoreFullException) alert = new Alert("Error", "The mobile database is full", null, AlertType.ERROR); else alert = new Alert( "Error", "The mobile database can not update new informations", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); } return true; /** Case: View favorite photos [EF] Added in the scenario 03 */ } else if (label.equals("View Favorites")) { showMediaList(getCurrentStoreName(), false, true); ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGELIST_SCREEN); return true; // #endif /** Case: Save new Photo Label */ } else if (label.equals("Save")) { System.out.println( "<* PhotoController.handleCommand() *> Save Photo Label = " + this.screen.getLabelName()); this.getMedia().setMediaLabel(this.screen.getLabelName()); try { updateMedia(media); } catch (InvalidImageDataException e) { Alert alert = null; if (e instanceof ImagePathNotValidException) alert = new Alert("Error", "The path is not valid", null, AlertType.ERROR); else alert = new Alert("Error", "The image file format is not valid", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); } catch (PersistenceMechanismException e) { Alert alert = new Alert( "Error", "The mobile database can not update this photo", null, AlertType.ERROR); Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent()); } return goToPreviousScreen(); /** Case: Go to the Previous or Fallback screen * */ } else if (label.equals("Back")) { return goToPreviousScreen(); /** Case: Cancel the current screen and go back one* */ } else if (label.equals("Cancel")) { return goToPreviousScreen(); } return false; }