/*
* Created on 12-Apr-2005
*
*/
// #if includeSmsFeature
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;
/**
* @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);
/** Case: ... **/
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")) {
//Get the data from the currently selected image
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);
//Get the destination info - set some defaults just in case
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")) {
//TODO: If they want to cancel sending the SMS message, send them back to main screen
System.out.println("Cancel sending of SMS message");
return true;
}
return false;
}
}
//#endif