/* Copyright (c) 2008 Bluendo S.r.L. * See about.html for details about license. * * $Id: OptionsScreen.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.util.Utils; import it.yup.xmpp.Config; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; 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.Gauge; import javax.microedition.lcdui.Spacer; import javax.microedition.lcdui.TextField; public class OptionsScreen extends Form implements CommandListener { private static ResourceManager rm = ResourceManager.getManager("common", "en"); private Command cmd_save = new Command(rm.getString(ResourceIDs.STR_SAVE), Command.OK, 0); private Command cmd_cancel = new Command(rm .getString(ResourceIDs.STR_CANCEL), Command.CANCEL, 1); private ChoiceGroup ch_vibrate; private ChoiceGroup ch_tone; private TextField tf_keepalive; private Gauge g_volume; public OptionsScreen() { super(rm.getString(ResourceIDs.STR_OPTIONS_SETUP)); boolean flags[] = new boolean[2]; Config cfg = Config.getInstance(); String selected_status = cfg .getProperty(Config.VIBRATION_AND_TONE_SETTINGS, "1"); // prepare the form // tone and vibration settings append(rm.getString(ResourceIDs.STR_WHEN_NEW_MESSAGES)); ch_vibrate = new ChoiceGroup(rm.getString(ResourceIDs.STR_VIBRATE_IF), ChoiceGroup.MULTIPLE); ch_vibrate.append(rm.getString(ResourceIDs.STR_HIDDEN), null); ch_vibrate.append(rm.getString(ResourceIDs.STR_SHOW), null); flags = Utils.str2flags(selected_status, 0, 2); ch_vibrate.setSelectedFlags(flags); append(ch_vibrate); ch_tone = new ChoiceGroup(rm.getString(ResourceIDs.STR_PLAY_TONE_IF), ChoiceGroup.MULTIPLE); ch_tone.append(rm.getString(ResourceIDs.STR_HIDDEN), null); ch_tone.append(rm.getString(ResourceIDs.STR_SHOW), null); flags = Utils.str2flags(selected_status, 2, 2); ch_tone.setSelectedFlags(flags); append(ch_tone); append(new Spacer(100, 1)); // volume int volume = Integer .parseInt(cfg.getProperty(Config.TONE_VOLUME, "50")); g_volume = new Gauge(rm.getString(ResourceIDs.STR_VOLUME), true, 100, volume); append(g_volume); append(new Spacer(100, 1)); // keepalive long ka = Long.parseLong(cfg.getProperty(Config.KEEP_ALIVE)) / 1000; tf_keepalive = new TextField(rm.getString(ResourceIDs.STR_KEEPALIVE), "" + ka, 5, TextField.NUMERIC); //tf_keepalive = new TextField("ciao", ""+ ka, 5, TextField.NUMERIC); append(tf_keepalive); // add the commands addCommand(cmd_save); addCommand(cmd_cancel); setCommandListener(this); } public void commandAction(Command cmd, Displayable disp) { if (cmd_save == cmd) { Config cfg = Config.getInstance(); boolean flags[] = new boolean[4]; flags[0] = ch_vibrate.isSelected(0); flags[1] = ch_vibrate.isSelected(1); flags[2] = ch_tone.isSelected(0); flags[3] = ch_tone.isSelected(1); cfg.setProperty(Config.VIBRATION_AND_TONE_SETTINGS, Utils .flags2str(flags, 0)); cfg.setProperty(Config.TONE_VOLUME, "" + g_volume.getValue()); cfg.setProperty(Config.KEEP_ALIVE, "" + "" + Integer.parseInt(tf_keepalive.getString()) * 1000); cfg.saveToStorage(); Alert alert = new Alert(rm.getString(ResourceIDs.STR_WARNING), rm .getString(ResourceIDs.STR_SETTINGS_EFFECT), null, AlertType.WARNING); alert.setTimeout(Alert.FOREVER); alert.setCommandListener(new CommandListener() { public void commandAction(Command arg0, Displayable arg1) { LampiroMidlet.disp.setCurrent(RosterScreen.getInstance()); } }); LampiroMidlet.disp.setCurrent(alert); } else if (cmd_cancel == cmd) { LampiroMidlet.disp.setCurrent(RosterScreen.getInstance()); } } }