/* Copyright (c) 2011, SaferMobile/MobileActive - https://safermobile.org */ /* See LICENSE for licensing information */ package org.safermobile.clear.micro.apps; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.TextBox; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.rms.RecordStoreException; import org.safermobile.clear.micro.L10nConstants; import org.safermobile.clear.micro.L10nResources; import org.safermobile.clear.micro.apps.controllers.PanicController; import org.safermobile.clear.micro.apps.controllers.ShoutController; import org.safermobile.clear.micro.apps.controllers.WipeController; import org.safermobile.clear.micro.apps.controllers.WipeListener; import org.safermobile.clear.micro.ui.LargeStringCanvas; import org.safermobile.micro.ui.DisplayManager; import org.safermobile.micro.utils.Logger; import org.safermobile.micro.utils.Preferences; // hasLocationCapability=false //release.build = false public class PanicActivateMIDlet extends MIDlet implements CommandListener, WipeListener { private DisplayManager _manager; private Display _display; private TextBox _tbMain; private Command _cmdPanic; private Command _cmdCancel; private Command _cmdExit; private L10nResources l10n = LocaleManager.getResources(); /* * the thread which manages the panic sending */ private Thread _thread; private PanicController _pc; /* * stores the user data between the config app and this one */ private Preferences _prefs = null; /** * Creates Panic Activate app */ public PanicActivateMIDlet() { try { _prefs = new Preferences (ITCConstants.PANIC_PREFS_DB); String userLocale = _prefs.get("locale"); if (userLocale != null) { LocaleManager.setCurrentLocale(userLocale); l10n = LocaleManager.getResources(); } } catch (Exception e) {} _display = Display.getDisplay(this); _manager = new DisplayManager(_display); _tbMain = new TextBox(l10n.getString(L10nConstants.keys.PANIC_TITLE), "", 500, TextField.ANY); _tbMain.setCommandListener(this); _cmdPanic = new Command(l10n.getString(L10nConstants.keys.MENU_PANIC), Command.SCREEN,1); _cmdCancel = new Command(l10n.getString(L10nConstants.keys.MENU_CANCEL), Command.SCREEN,1); _cmdExit = new Command(l10n.getString(L10nConstants.keys.MENU_EXIT), Command.EXIT,1); _tbMain.addCommand(_cmdExit); } private void startPanic () { _tbMain.removeCommand(_cmdPanic); _tbMain.removeCommand(_cmdExit); _tbMain.addCommand(_cmdCancel); _pc = new PanicController(_prefs, this, this, _manager, _cmdCancel); _thread = new Thread(_pc); _thread.start(); } private void stopPanic () { _pc.stopPanic(); } /* (non-Javadoc) * @see javax.microedition.midlet.MIDlet#startApp() */ protected void startApp() throws MIDletStateChangeException { _manager.next(_tbMain); String oneTouch = _prefs.get(ITCConstants.PREFS_KEY_ONE_TOUCH_PANIC); String recipients = _prefs.get(ITCConstants.PREFS_KEY_RECIPIENT); if (recipients == null) { _tbMain.setString(l10n.getString(L10nConstants.keys.ERROR_RUN_SETUP)); } else if (oneTouch == null || oneTouch.equals("false")) { _tbMain.setString(l10n.getString(L10nConstants.keys.PANIC_PRESS_TO_ACTIVATE)); _tbMain.addCommand(_cmdPanic); } else { startPanic(); } } public void showAlert (String title, String msg, Displayable next) { Alert alert = new Alert(title); alert.setString(msg); _manager.next(alert, next); } /* (non-Javadoc) * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command, javax.microedition.lcdui.Displayable) */ public void commandAction(Command command, Displayable displayable) { if (command == _cmdCancel) { stopPanic (); try { destroyApp(false); } catch (MIDletStateChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.notifyDestroyed(); } else if (command == _cmdExit) { try { destroyApp(false); } catch (MIDletStateChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.notifyDestroyed(); } else if (command == _cmdPanic) { startPanic(); } } /* (non-Javadoc) * @see javax.microedition.midlet.MIDlet#destroyApp(boolean) */ protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } /* (non-Javadoc) * @see javax.microedition.midlet.MIDlet#pauseApp() */ protected void pauseApp() {} private void showMessage (String msg) { Logger.debug(ITCConstants.TAG, "msg: " + msg); if (_display.getCurrent() == _tbMain) { try { _tbMain.setString(msg); } catch (Exception e) { e.printStackTrace(); } } } public void wipingFileSuccess(String path) { showMessage(l10n.getString(L10nConstants.keys.WIPE_STATUS_WIPING_WORD) + ":\n" + path); } public void wipingFileError(String path, String err) { showMessage(l10n.getString(L10nConstants.keys.WIPE_STATUS_WIPING_WORD) + " err:\n" + path); } public void wipeStatus (String message) { showMessage(message); } public void wipePercentComplete(int percent) { //nothing so far } }