/* * XCTrack - XContest Live Tracking client for J2ME devices * Copyright (C) 2009 Petr Chromec <petr@xcontest.org> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package org.xcontest.xctrack.widget.settings; import java.util.Vector; import javax.microedition.lcdui.ChoiceGroup; public final class FlyCompassSettings extends WidgetSettings { public class Data { public int showLetters; public boolean northAtTop; public boolean displayWind; public boolean displayHeading; public boolean displayHeadingPoint; } public static final int AUTO=0; public static final int SHOW=1; public static final int HIDE=2; private ChoiceGroup _choiceNorthAtTop; private ChoiceGroup _choiceShowLetters; private ChoiceGroup _choiceDisplayOptions; public Object load(String str) { Data d = new Data(); if (str != null && str.length() == 5) { d.showLetters = str.charAt(0)-'0'; d.northAtTop = str.charAt(1) == 'N'; d.displayWind = str.charAt(2) == 'W'; d.displayHeading = str.charAt(3) == 'H'; d.displayHeadingPoint = str.charAt(4) == 'P'; } else { d.showLetters = AUTO; d.northAtTop = false; d.displayWind = true; d.displayHeading = false; d.displayHeadingPoint = false; } return d; } public String save(Object obj) { Data d = (Data)obj; return "" + d.showLetters + (d.northAtTop ? 'N' : ' ') + (d.displayWind ? 'W' : ' ') + (d.displayHeading ? 'H' : ' ') + (d.displayHeadingPoint ? 'P' : ' '); } public void createForm(Vector items, Object obj) { Data d = (Data)obj; _choiceNorthAtTop = new ChoiceGroup("Compass orientation",ChoiceGroup.EXCLUSIVE); _choiceNorthAtTop.append("Rotate with current heading", null); _choiceNorthAtTop.append("North always at top", null); _choiceShowLetters = new ChoiceGroup("Show NESW letters",ChoiceGroup.EXCLUSIVE); _choiceShowLetters.append("Auto", null); _choiceShowLetters.append("Show always", null); _choiceShowLetters.append("Hide", null); _choiceDisplayOptions = new ChoiceGroup("Display Options",ChoiceGroup.MULTIPLE); _choiceDisplayOptions.append("Show wind arrow", null); _choiceDisplayOptions.append("Show heading arrow", null); _choiceDisplayOptions.append("Show heading point", null); _choiceNorthAtTop.setSelectedIndex(d.northAtTop ? 1 : 0, true); _choiceShowLetters.setSelectedIndex(d.showLetters,true); _choiceDisplayOptions.setSelectedIndex(0, d.displayWind); _choiceDisplayOptions.setSelectedIndex(1, d.displayHeading); _choiceDisplayOptions.setSelectedIndex(2, d.displayHeadingPoint); items.addElement(_choiceNorthAtTop); items.addElement(_choiceShowLetters); items.addElement(_choiceDisplayOptions); } public void saveForm(Object obj) { Data d = (Data)obj; d.northAtTop = _choiceNorthAtTop.getSelectedIndex() == 1; d.showLetters = _choiceShowLetters.getSelectedIndex(); d.displayWind = _choiceDisplayOptions.isSelected(0); d.displayHeading = _choiceDisplayOptions.isSelected(1); d.displayHeadingPoint = _choiceDisplayOptions.isSelected(2); } }