Classes sorted by package:

core.comms
BaseMessaging

core.threads
BaseThread

core.ui
MainUIMidlet

core.ui.controller
AbstractController
AlbumController
BaseController
ControllerInterface
PhotoController
PhotoListController
PhotoViewController
ScreenSingleton

core.ui.datamodel
AlbumData
ImageAccessor
ImageData

core.ui.screens
AddPhotoToAlbum
AlbumListScreen
NewLabelScreen
PhotoListScreen
PhotoViewScreen
SplashScreen

core.util
Constants
ImageUtil

sms
NetworkScreen
SmsMessaging
SmsReceiverController
SmsReceiverThread
SmsSenderController
SmsSenderThread
  1 /*
  2  * Lancaster University
  3  * Computing Department
  4  
  5  * Created by Eduardo Figueiredo
  6  * Date: 22 Jul 2007
  7  
  8  */
  9 // #if includeCopyPhoto || includeSmsFeature
 10 
 11 package ubc.midp.mobilephoto.core.ui.controller;
 12 
 13 import javax.microedition.lcdui.Alert;
 14 import javax.microedition.lcdui.AlertType;
 15 import javax.microedition.lcdui.Command;
 16 import javax.microedition.lcdui.Display;
 17 
 18 import javax.microedition.rms.RecordStoreFullException;
 19 
 20 import lancs.midp.mobilephoto.lib.exceptions.ImageNotFoundException;
 21 import lancs.midp.mobilephoto.lib.exceptions.ImagePathNotValidException;
 22 import lancs.midp.mobilephoto.lib.exceptions.InvalidImageDataException;
 23 import lancs.midp.mobilephoto.lib.exceptions.NullAlbumDataReference;
 24 import lancs.midp.mobilephoto.lib.exceptions.PersistenceMechanismException;
 25 import ubc.midp.mobilephoto.core.ui.MainUIMidlet;
 26 import ubc.midp.mobilephoto.core.ui.datamodel.AlbumData;
 27 import ubc.midp.mobilephoto.core.ui.datamodel.ImageAccessor;
 28 import ubc.midp.mobilephoto.core.ui.datamodel.ImageData;
 29 import ubc.midp.mobilephoto.core.ui.screens.AddPhotoToAlbum;
 30 import ubc.midp.mobilephoto.core.ui.screens.AlbumListScreen;
 31 import ubc.midp.mobilephoto.core.util.Constants;
 32 
 33 //#ifdef includeSmsFeature
 34 import ubc.midp.mobilephoto.core.ui.screens.PhotoViewScreen;
 35 import javax.microedition.lcdui.Image;
 36 //#endif
 37 /**
 38  @author Eduardo Figueiredo
 39  */
 40 public class PhotoViewController extends AbstractController {
 41 
 42   String imageName = "";
 43   
 44   /**
 45    @param midlet
 46    @param nextController
 47    @param albumData
 48    @param albumListScreen
 49    @param currentScreenName
 50    */
 51   public PhotoViewController(MainUIMidlet midlet, AlbumData albumData, AlbumListScreen albumListScreen, String imageName) {
 52     super(midlet, albumData, albumListScreen);
 53     this.imageName = imageName;
 54   }
 55 
 56   /* (non-Javadoc)
 57    * @see ubc.midp.mobilephoto.core.ui.controller.ControllerInterface#handleCommand(javax.microedition.lcdui.Command, javax.microedition.lcdui.Displayable)
 58    */
 59   public boolean handleCommand(Command c) {
 60     String label = c.getLabel();
 61     System.out.println"<* PhotoViewController.handleCommand() *> " + label);
 62 
 63     /** Case: Copy photo to a different album */
 64     if (label.equals("Copy")) {
 65       AddPhotoToAlbum copyPhotoToAlbum = new AddPhotoToAlbum("Copy Photo to Album");
 66       copyPhotoToAlbum.setPhotoName(imageName);
 67       copyPhotoToAlbum.setLabePhotoPath("Copy to Album:");
 68       copyPhotoToAlbum.setCommandListener(this);
 69 
 70       // #ifdef includeSmsFeature
 71       if (((PhotoViewScreen)this.getCurrentScreen()).isFromSMS())
 72         {copyPhotoToAlbum.setImage(((PhotoViewScreen)this.getCurrentScreen()).getImage());}
 73       //#endif  
 74       
 75           Display.getDisplay(midlet).setCurrent(copyPhotoToAlbum);
 76       
 77       return true;
 78     }
 79     
 80     /** Case: Save a copy in a new album */
 81     else if (label.equals("Save Photo")) {
 82       try {
 83         ImageData imageData = null;  
 84         // #ifdef includeSmsFeature
 85         Image img = ((AddPhotoToAlbum)this.getCurrentScreen()).getImage();
 86         
 87         if (img == null)
 88         //#endif
 89         {
 90           try {
 91             imageData = getAlbumData().getImageAccessor().getImageInfo(imageName);
 92           catch (ImageNotFoundException e) {
 93             Alert alert = new Alert("Error""The selected photo was not found in the mobile device", null, AlertType.ERROR);
 94             Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent());
 95           catch (NullAlbumDataReference e) {
 96             this.setAlbumDatanew AlbumData() );
 97             Alert alert = new Alert"Error""The operation is not available. Try again later !", null, AlertType.ERROR);
 98             Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent());
 99           }
100         }
101         
102         
103         String photoname = ((AddPhotoToAlbumgetCurrentScreen()).getPhotoName();
104         String albumname = ((AddPhotoToAlbumgetCurrentScreen()).getPath();
105         ImageAccessor imageAccessor = getAlbumData().getImageAccessor();
106         
107         // #ifdef includeSmsFeature
108         if (img != null)
109           imageAccessor.addImageData(photoname, img, albumname);
110         // #endif 
111         
112         // #if includeCopyPhoto && includeSmsFeature
113         if (img == null)
114         //#endif
115           
116         // #if includeCopyPhoto 
117         imageAccessor.addImageData(photoname, imageData, albumname)
118         // #endif 
119         
120       
121         
122       catch (InvalidImageDataException e) {
123         Alert alert = null;
124         if (instanceof ImagePathNotValidException)
125           alert = new Alert("Error""The path is not valid", null, AlertType.ERROR);
126         else
127           alert = new Alert("Error""The image file format is not valid", null, AlertType.ERROR);
128         Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent());
129         return true;
130         // alert.setTimeout(5000);
131       catch (PersistenceMechanismException e) {
132         Alert alert = null;
133         if (e.getCause() instanceof RecordStoreFullException)
134           alert = new Alert("Error""The mobile database is full", null, AlertType.ERROR);
135         else
136           alert = new Alert("Error""The mobile database can not add a new photo", null, AlertType.ERROR);
137         Display.getDisplay(midlet).setCurrent(alert, Display.getDisplay(midlet).getCurrent());
138       }
139       //((PhotoController)this.getNextController()).showImageList(ScreenSingleton.getInstance().getCurrentStoreName(), false, false);
140         //ScreenSingleton.getInstance().setCurrentScreenName(Constants.IMAGELIST_SCREEN);
141         getAlbumListScreen().repaintListAlbum(getAlbumData().getAlbumNames());
142       setCurrentScreengetAlbumListScreen() );
143       ScreenSingleton.getInstance().setCurrentScreenName(Constants.ALBUMLIST_SCREEN);
144       return true;
145     }else if ((label.equals("Cancel")) || (label.equals("Back"))){
146       getAlbumListScreen().repaintListAlbum(getAlbumData().getAlbumNames());
147       setCurrentScreengetAlbumListScreen() );
148       ScreenSingleton.getInstance().setCurrentScreenName(Constants.ALBUMLIST_SCREEN);
149       return true;
150     }
151     
152     return false;
153   }
154 }
155 //#endif