package lancs.mobilemedia.sms; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import lancs.mobilemedia.core.ui.MainUIMidlet; import lancs.mobilemedia.core.ui.controller.AbstractController; import lancs.mobilemedia.core.ui.datamodel.AlbumData; import lancs.mobilemedia.core.ui.datamodel.MediaData; import lancs.mobilemedia.core.ui.screens.AlbumListScreen; import lancs.mobilemedia.lib.exceptions.ImageNotFoundException; import lancs.mobilemedia.lib.exceptions.PersistenceMechanismException; import de.ovgu.cide.jakutil.*; /** * @author trevor * This class extends the BaseController to provide functionality specific to * the SMS (Short Message Service) photo messaging feature. It contains command * handlers for this feature and methods that are only required by this feature. * All non-SMS commands (ie. general ones) are passed on to the parent class (BaseController) * for handling. */ public class SmsSenderController extends AbstractController { String imageName=""; NetworkScreen networkScreen; /** * @param midlet * @param nextController * @param albumData * @param albumListScreen * @param currentScreenName */ public SmsSenderController( MainUIMidlet midlet, AlbumData albumData, AlbumListScreen albumListScreen, String imageName){ super(midlet,albumData,albumListScreen); this.imageName=imageName; } /** * Handle SMS specific events. * If we are given a standard command that is handled by the BaseController, pass * the handling off to our super class with the else clause */ public boolean handleCommand( Command c){ String label=c.getLabel(); System.out.println("SmsSenderController::handleCommand: " + label); if (label.equals("Send Photo by SMS")) { networkScreen=new NetworkScreen("Reciever Details"); networkScreen.setCommandListener(this); this.setCurrentScreen(networkScreen); return true; } else if (label.equals("Send Now")) { MediaData ii=null; byte[] imageBytes=null; try { ii=getAlbumData().getMediaInfo(imageName); imageBytes=getAlbumData().loadMediaBytesFromRMS(ii.getParentAlbumName(),ii.getForeignRecordId()); } catch ( ImageNotFoundException e) { Alert alert=new Alert("Error","The selected image can not be found",null,AlertType.ERROR); alert.setTimeout(5000); } catch ( PersistenceMechanismException e) { Alert alert=new Alert("Error","It was not possible to recovery the selected image",null,AlertType.ERROR); alert.setTimeout(5000); } System.out.println("SmsController::handleCommand - Sending bytes for image " + ii.getMediaLabel() + " with length: "+ imageBytes.length); String smsPort="1000"; String destinationAddress="5550001"; String messageText="Binary Message (No Text)"; smsPort=networkScreen.getRecPort(); destinationAddress=networkScreen.getRecPhoneNum(); System.out.println("SmsController:handleCommand() - Info from Network Screen is: " + smsPort + " and "+ destinationAddress); SmsSenderThread smsS=new SmsSenderThread(smsPort,destinationAddress,messageText); smsS.setBinaryData(imageBytes); new Thread(smsS).start(); return true; } else if (label.equals("Cancel Send")) { System.out.println("Cancel sending of SMS message"); return true; } return false; } }