/* Copyright (c) 2008 Bluendo S.r.L. * See about.html for details about license. * * $Id: StatusScreen.java 1028 2008-12-09 15:44:50Z luca $ */ package it.yup.screens; import lampiro.LampiroMidlet; import it.yup.util.ResourceIDs; import it.yup.util.ResourceManager; import it.yup.xmpp.Config; import it.yup.xmpp.Contact; import it.yup.xmpp.XMPPClient; import it.yup.xmpp.packets.Presence; import javax.microedition.lcdui.Choice; import javax.microedition.lcdui.ChoiceGroup; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.TextField; /** * Screen for selecting the status and its description message * TODO: * <ul> * <li> add icons </li> * <li> set priority </li> * </ul> * */ public class StatusScreen extends Form implements CommandListener { private static ResourceManager rm = ResourceManager.getManager("common", "en"); // the possible status private ChoiceGroup ch_status; private TextField tf_status; private Command cmd_status = new Command(rm .getString(ResourceIDs.STR_SET_STATUS), Command.OK, 1); private Command cmd_exit = new Command(rm.getString(ResourceIDs.STR_BACK), Command.CANCEL, 2); /** private constructor */ public StatusScreen() { super(rm.getString(ResourceIDs.STR_CHOOSE_STATUS)); XMPPClient client = XMPPClient.getInstance(); ch_status = new ChoiceGroup( rm.getString(ResourceIDs.STR_CHOOSE_STATUS), Choice.EXCLUSIVE); Presence p = client.getMyContact().getPresence(); String mapping[] = Contact.availability_mapping; for (int i = 0; i < mapping.length; i++) { ch_status.append(mapping[i], null); if (mapping[i].equals(p.getShow())) { ch_status.setSelectedIndex(i, true); } } append(ch_status); tf_status = new TextField(rm.getString(ResourceIDs.STR_STATUS_MESSAGE), p.getStatus(), 128, TextField.ANY); append(tf_status); addCommand(cmd_exit); addCommand(cmd_status); setCommandListener(this); } public void commandAction(Command cmd, Displayable d) { if (cmd == cmd_exit) { LampiroMidlet.disp.setCurrent(RosterScreen.getInstance()); } else if (cmd == cmd_status) { XMPPClient client = XMPPClient.getInstance(); String msg = tf_status.getString(); int show_idx = ch_status.getSelectedIndex(); int availability = show_idx; if (msg == null || "".equals(msg)) { msg = "Connected using Lampiro: http://lampiro.bluendo.com"; } Config cfg = Config.getInstance(); String show = Contact.availability_mapping[availability]; if (!Presence.T_UNAVAILABLE.equals(show)) { cfg.setProperty(Config.LAST_PRESENCE_SHOW, show); } cfg.setProperty(Config.LAST_STATUS_MESSAGE, msg); cfg.saveToStorage(); client.setPresence(availability, msg); LampiroMidlet.disp.setCurrent(RosterScreen.getInstance()); } } }