/*
GNU General Public License
CacheWolf is a software for PocketPC, Win and Linux that
enables paperless caching.
It supports the sites geocaching.com and opencaching.de
Copyright (C) 2006 CacheWolf development team
See http://www.cachewolf.de/ for more information.
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; version 2 of the License.
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, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package CacheWolf.view.pda;
import CacheWolf.Preferences;
import CacheWolf.utils.MyLocale;
import ewe.fx.Color;
import ewe.fx.Font;
import ewe.fx.Rect;
import ewe.sys.Convert;
import ewe.sys.Time;
import ewe.ui.CellPanel;
import ewe.ui.ControlEvent;
import ewe.ui.Form;
import ewe.ui.Gui;
import ewe.ui.Panel;
import ewe.ui.mButton;
import ewe.ui.mLabel;
public class PDADateTimeChooser extends Form {
private int year;
private int month;
private int day;
private int hour;
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
private int minute;
private mLabel lbDay;
private mLabel lbMonth;
private mLabel lbYear;
private mLabel lbHour;
private mLabel lbMinute;
private mLabel lbSep;
private mButton btDayUp;
private mButton btMonthUp;
private mButton btYearUp;
private mButton btHourUp;
private mButton btMinuteUp;
private mButton btDayDown;
private mButton btMonthDown;
private mButton btYearDown;
private mButton btHourDown;
private mButton btMinuteDown;
private mButton btSet;
private mButton btTime;
private mButton btCalendar;
private mButton btCancel;
public PDADateTimeChooser() {
int screenWidth = Preferences.itself().getScreenWidth();
String string = "SET TIME CANCEL";
int fontsize = screenWidth / string.length();
Rect size = Gui.getSize(getFontMetrics(), string, 5, 0);
while (size.width < screenWidth) {
fontsize += 5;
font = new Font(getFont().getName(), Font.BOLD, fontsize);
size = Gui.getSize(getFontMetrics(), string, 5, 0);
}
backGround = Color.White;
lbDay = new mLabel("");
lbDay.anchor = mLabel.CENTER;
lbMonth = new mLabel("");
lbMonth.anchor = mLabel.CENTER;
lbYear = new mLabel("");
lbYear.anchor = mLabel.CENTER;
lbHour = new mLabel("HH");
lbHour.anchor = mLabel.CENTER;
lbSep = new mLabel(":");
lbMinute = new mLabel("MM");
lbMinute.anchor = mLabel.CENTER;
btDayUp = new mButton(" ^^ ");
btDayUp.backGround = Color.LightBlue;
btMonthUp = new mButton(" ^^ ");
btMonthUp.backGround = Color.LightBlue;
btYearUp = new mButton(" ^^ ");
btYearUp.backGround = Color.LightBlue;
btHourUp = new mButton(" ^^ ");
btHourUp.backGround = Color.LightBlue;
btMinuteUp = new mButton(" ^^ ");
btMinuteUp.backGround = Color.LightBlue;
btDayDown = new mButton("vv");
btDayDown.backGround = Color.LightBlue;
btMonthDown = new mButton("vv");
btMonthDown.backGround = Color.LightBlue;
btYearDown = new mButton(" vv ");
btYearDown.backGround = Color.LightBlue;
btHourDown = new mButton(" vv ");
btHourDown.backGround = Color.LightBlue;
btMinuteDown = new mButton(" vv ");
btMinuteDown.backGround = Color.LightBlue;
btSet = new mButton("Set");
btSet.backGround = Color.Sand;
btTime = new mButton("Time");
btTime.backGround = Color.Sand;
btCalendar = new mButton("Cal");
btCalendar.backGround = Color.Sand;
btCancel = new mButton("Cancel");
btCancel.backGround = Color.Sand;
layoutCalendar();
addListener(this);
}
private void layoutCalendar() {
removeAll();
addNext(lbDay, HSTRETCH, HFILL);
addNext(lbMonth, HSTRETCH, HFILL);
addLast(lbYear, HSTRETCH, HFILL);
addNext(btDayUp, HSTRETCH, HFILL);
addNext(btMonthUp, HSTRETCH, HFILL);
addLast(btYearUp, HSTRETCH, HFILL);
addNext(btDayDown, HSTRETCH, HFILL);
addNext(btMonthDown, HSTRETCH, HFILL);
addLast(btYearDown, HSTRETCH, HFILL);
addNext(btSet, HSTRETCH, CENTER | HFILL);
addNext(btTime, HSTRETCH, CENTER | HFILL);
addLast(btCancel, HSTRETCH, CENTER | HFILL);
}
private void layoutTime() {
removeAll();
Panel p = new CellPanel();
p.addNext(lbHour, HSTRETCH, HFILL);
p.addNext(lbSep, DONTSTRETCH, DONTFILL);
p.addLast(lbMinute, HSTRETCH, CENTER);
p.addNext(btHourUp, HSTRETCH, HFILL);
p.addNext(new mLabel(""));
p.addLast(btMinuteUp, HSTRETCH, HFILL);
p.addNext(btHourDown, HSTRETCH, HFILL);
p.addNext(new mLabel(""));
p.addLast(btMinuteDown, HSTRETCH, HFILL);
addLast(p, HSTRETCH, HFILL);
Panel p1 = new CellPanel();
p1.addNext(btSet, HSTRETCH, CENTER | HFILL);
p1.addNext(btCalendar, HSTRETCH, CENTER | HFILL);
p1.addLast(btCancel, HSTRETCH, CENTER | HFILL);
addLast(p1, HSTRETCH, CENTER | HFILL);
}
public int getDay() {
return day;
}
public int getMonth() {
return month;
}
public String getTime() {
return Convert.toString(year) + "-" + MyLocale.formatLong(month, "00") + "-" + MyLocale.formatLong(day, "00") + " " + MyLocale.formatLong(hour, "00") + ":" + MyLocale.formatLong(minute, "00");
}
public int getYear() {
return year;
}
public void reset(Time t) {
year = t.year;
month = t.month;
day = t.day;
hour = t.hour;
minute = t.minute;
lbDay.setText(Integer.toString(day));
lbMonth.setText(Integer.toString(month));
lbYear.setText(Integer.toString(year));
lbHour.setText(Integer.toString(hour));
lbMinute.setText(MyLocale.formatLong(minute, "00"));
}
public void onControlEvent(ControlEvent ev) {
switch (ev.type) {
case ControlEvent.PRESSED:
if (ev.target == btDayUp && day < 31) {
day++;
lbDay.setText(Integer.toString(day));
} else if (ev.target == btDayDown && day > 1) {
day--;
lbDay.setText(Integer.toString(day));
}
else if (ev.target == btMonthUp && month < 12) {
month++;
lbMonth.setText(Integer.toString(month));
} else if (ev.target == btMonthDown && month > 1) {
month--;
lbMonth.setText(Integer.toString(month));
}
else if (ev.target == btYearUp) {
year++;
lbYear.setText(Integer.toString(year));
} else if (ev.target == btYearDown) {
year--;
lbYear.setText(Integer.toString(year));
}
else if (ev.target == btHourUp && hour < 23) {
hour++;
lbHour.setText(Integer.toString(hour));
} else if (ev.target == btHourDown && hour > 0) {
hour--;
lbHour.setText(Integer.toString(hour));
} else if (ev.target == btMinuteUp && minute < 59) {
minute++;
lbMinute.setText(MyLocale.formatLong(minute, "00"));
} else if (ev.target == btMinuteDown && minute > 0) {
minute--;
lbMinute.setText(MyLocale.formatLong(minute, "00"));
}
else if (ev.target == btSet) {
exit(IDOK);
} else if (ev.target == btTime) {
Gui.flashMessage("Uhrzeit anzeigen", 1000, this, 0);
made = false;
layoutTime();
make(true);
relayoutMe(true);
reShow(0, 0, width, height);
} else if (ev.target == btCalendar) {
Gui.flashMessage("Calendar anzeigen!", 1000, this, 0);
made = false;
layoutCalendar();
make(true);
relayoutMe(true);
reShow(0, 0, width, height);
} else if (ev.target == btCancel) {
exit(IDNO);
}
}
super.onControlEvent(ev);
}
}