From 42b3a11f1960a3ccac0a1c00c2811f0f37baca0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Wed, 12 Sep 2007 06:08:42 +0000 Subject: [PATCH] patch by Julun: * further cleanup of code to apply style guide * removed now obsolete clock bitmaps * some restructuring of the code * adjusted layout of the time zone pane git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22222 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/preferences/time/BaseView.cpp | 135 ++++--- src/preferences/time/BaseView.h | 34 +- src/preferences/time/Bitmaps.cpp | 16 +- src/preferences/time/Bitmaps.h | 521 +------------------------- src/preferences/time/CalendarView.cpp | 17 +- src/preferences/time/SectionEdit.cpp | 2 - src/preferences/time/SettingsView.cpp | 41 +- src/preferences/time/SettingsView.h | 6 +- src/preferences/time/Time.cpp | 45 ++- src/preferences/time/Time.h | 33 +- src/preferences/time/TimeMessages.h | 18 +- src/preferences/time/TimeSettings.cpp | 73 ++-- src/preferences/time/TimeSettings.h | 20 +- src/preferences/time/TimeWindow.cpp | 53 ++- src/preferences/time/TimeWindow.h | 32 +- src/preferences/time/ZoneView.cpp | 359 ++++++++---------- src/preferences/time/ZoneView.h | 85 ++--- 17 files changed, 465 insertions(+), 1025 deletions(-) diff --git a/src/preferences/time/BaseView.cpp b/src/preferences/time/BaseView.cpp index bb29350ace..abb580a587 100644 --- a/src/preferences/time/BaseView.cpp +++ b/src/preferences/time/BaseView.cpp @@ -1,26 +1,30 @@ /* - BaseView.cpp - by Mike Berg (inseculous) -*/ - -#include -#include + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Mike Berg (inseculous) + * Julun + */ #include "BaseView.h" #include "TimeMessages.h" +#include +#include + + TTimeBaseView::TTimeBaseView(BRect frame, const char *name) : BView(frame, name, B_FOLLOW_ALL_SIDES, B_PULSE_NEEDED), - fMessage(NULL) + fIsGMT(false), + fMessage(H_TIME_UPDATE) { - fMessage = new BMessage(H_TIME_UPDATE); } TTimeBaseView::~TTimeBaseView() { - delete fMessage; } @@ -47,76 +51,71 @@ TTimeBaseView::SetGMTime(bool gmt) void -TTimeBaseView::DispatchMessage() +TTimeBaseView::ChangeTime(BMessage *message) { - if (fMessage == NULL) + bool isTime; + if (message->FindBool("time", &isTime) != B_OK) return; - time_t current = time(NULL); + time_t tmp = time(NULL); + struct tm *tm_struct = localtime(&tmp); - struct tm *ltime; + if (isTime) { + int32 hour = 0; + if (message->FindInt32("hour", &hour) == B_OK) + tm_struct->tm_hour = hour; - if (fIsGMT) - ltime = gmtime(¤t); - else - ltime = localtime(¤t); - - int32 month = ltime->tm_mon; - int32 day = ltime->tm_mday; - int32 year = ltime->tm_year; - int32 hour = ltime->tm_hour; - int32 minute = ltime->tm_min; - int32 second = ltime->tm_sec; - - fMessage->MakeEmpty(); - fMessage->AddInt32("month", month); - fMessage->AddInt32("day", day); - fMessage->AddInt32("year", year); - fMessage->AddInt32("hour", hour); - fMessage->AddInt32("minute", minute); - fMessage->AddInt32("second", second); + int32 minute = 0; + if (message->FindInt32("minute", &minute) == B_OK) + tm_struct->tm_min = minute; - SendNotices(H_TM_CHANGED, fMessage); + int32 second = 0; + if (message->FindInt32("second", &second) == B_OK) + tm_struct->tm_sec = second; + + bool isAM = false; + if (message->FindBool("isam", &isAM) == B_OK) { + if (!isAM) + tm_struct->tm_hour += 12; + } + } else { + int32 month = 0; + if (message->FindInt32("month", &month) == B_OK) + tm_struct->tm_mon = month; + + int32 day = 0; + if (message->FindInt32("day", &day) == B_OK) + tm_struct->tm_mday = day; + + int32 year = 0; + if (message->FindInt32("year", &year) == B_OK) + tm_struct->tm_year = year; + } + + tmp = mktime(tm_struct); + set_real_time_clock(tmp); } void -TTimeBaseView::ChangeTime(BMessage *message) +TTimeBaseView::DispatchMessage() { - bool istime; - if (message->FindBool("time", &istime) != B_OK) - return; + time_t tmp = time(NULL); + struct tm *tm_struct = localtime(&tmp); - time_t atime = time(NULL); - struct tm *_tm = localtime(&atime); + if (fIsGMT) + tm_struct = gmtime(&tmp); - int32 hour = 0; - int32 minute = 0; - int32 second = 0; - int32 month = 0; - int32 day = 0; - int32 year = 0; - bool isam = false; - if (istime) { - if (message->FindInt32("hour", &hour) == B_OK) - _tm->tm_hour = hour; - if (message->FindInt32("minute", &minute) == B_OK) - _tm->tm_min = minute; - if (message->FindInt32("second", &second) == B_OK) - _tm->tm_sec = second; - if (message->FindBool("isam", &isam) == B_OK) { - if (!isam) - _tm->tm_hour += 12; - } - } else { - if (message->FindInt32("month", &month) == B_OK) - _tm->tm_mon = month; - if (message->FindInt32("day", &day) == B_OK) - _tm->tm_mday = day; - if (message->FindInt32("year", &year) == B_OK) - _tm->tm_year = year; - } - - time_t atime2 = mktime(_tm); - set_real_time_clock(atime2); + fMessage.MakeEmpty(); + + fMessage.AddInt32("month", tm_struct->tm_mon); + fMessage.AddInt32("day", tm_struct->tm_mday); + fMessage.AddInt32("year", tm_struct->tm_year); + + fMessage.AddInt32("hour", tm_struct->tm_hour); + fMessage.AddInt32("minute", tm_struct->tm_min); + fMessage.AddInt32("second", tm_struct->tm_sec); + + SendNotices(H_TM_CHANGED, &fMessage); } + diff --git a/src/preferences/time/BaseView.h b/src/preferences/time/BaseView.h index d49cf842ff..f0bddbcc21 100644 --- a/src/preferences/time/BaseView.h +++ b/src/preferences/time/BaseView.h @@ -1,25 +1,37 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Mike Berg (inseculous) + * Julun + */ #ifndef TIMEBASE_H #define TIMEBASE_H -#include + #include +#include class TTimeBaseView: public BView { public: - TTimeBaseView(BRect frmae, const char *name); - virtual ~TTimeBaseView(); + TTimeBaseView(BRect frame, const char *name); + virtual ~TTimeBaseView(); - virtual void Pulse(); - virtual void AttachedToWindow(); + virtual void Pulse(); + virtual void AttachedToWindow(); + + void SetGMTime(bool gmtTime); + void ChangeTime(BMessage *message); - void ChangeTime(BMessage *); - void SetGMTime(bool); protected: - virtual void DispatchMessage(); + virtual void DispatchMessage(); + private: - BMessage *fMessage; - bool fIsGMT; + bool fIsGMT; + BMessage fMessage; }; -#endif //TIMEBASE_H +#endif // TIMEBASE_H + diff --git a/src/preferences/time/Bitmaps.cpp b/src/preferences/time/Bitmaps.cpp index c6e56bac15..da3df0476f 100644 --- a/src/preferences/time/Bitmaps.cpp +++ b/src/preferences/time/Bitmaps.cpp @@ -1,13 +1,23 @@ -#include +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Julun + */ + +#include "Bitmaps.h" + + #include #include -#include "Bitmaps.h" void ReplaceTransparentColor(BBitmap *bitmap, rgb_color with) { - ASSERT(bitmap->ColorSpace() == B_COLOR_8_BIT); // other color spaces not implemented yet + // other color spaces not implemented yet + ASSERT(bitmap->ColorSpace() == B_COLOR_8_BIT); BScreen screen(B_MAIN_SCREEN_ID); uint32 withIndex = screen.IndexForColor(with); diff --git a/src/preferences/time/Bitmaps.h b/src/preferences/time/Bitmaps.h index 91e6488d83..714736e147 100644 --- a/src/preferences/time/Bitmaps.h +++ b/src/preferences/time/Bitmaps.h @@ -1,510 +1,19 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Julun + */ +#ifndef ANALOG_CLOCK_H +#define ANALOG_CLOCK_H + + +#include + + void ReplaceTransparentColor(BBitmap *bitmap, rgb_color with); -const int32 kClockFaceWidth = 85; -const int32 kClockFaceHeight = 85; -const color_space kClockFaceColorSpace = B_CMAP8; - -const unsigned char kClockFaceBits [] = { - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x1d,0x3f,0x3f,0x3f,0x1e,0xff,0x18,0x16,0x13,0x12,0x11, - 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x13,0x16,0x18,0x1a,0x1d,0x3f,0x1d,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0x3f,0x3f,0x1e,0x1a,0x17, - 0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x13,0x17,0x19,0x1e,0x1d,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1e,0x3f,0x3f,0x1a,0x16,0x12,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12, - 0x16,0x19,0x1e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x1e,0x18,0x13,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x13,0x16,0x1c,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1e,0x3f,0x1e,0x18, - 0x12,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0d,0x0b,0x09,0x07,0x06,0x05,0x04, - 0x03,0x03,0x03,0x04,0x05,0x06,0x07,0x09,0x0b,0x0d,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x12,0x15,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1d,0x3f,0x3f,0x19,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x0e,0x0b,0x08, - 0x05,0x03,0x05,0x08,0x0c,0x11,0x15,0x19,0x1c,0x1e,0x3f,0x1e,0x1c,0x19,0x15,0x11, - 0x0c,0x08,0x08,0x08,0x0b,0x0e,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x13,0x15, - 0x1d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x1b,0x14,0x10,0x10,0x10, - 0x10,0x10,0x10,0x0c,0x08,0x05,0x04,0x08,0x0f,0x17,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x17,0x0f,0x0b,0x0a,0x0c, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x17,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1c, - 0x3f,0x3f,0x18,0x11,0x10,0x10,0x10,0x10,0x0f,0x0b,0x07,0x03,0x06,0x0f,0x19,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x19,0x0f,0x0c,0x0b,0x0f,0x10,0x10,0x10,0x10,0x10, - 0x10,0x11,0x14,0x1c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0x3f,0x1d,0x15,0x10,0x10,0x10,0x10,0x10,0x0b, - 0x07,0x03,0x08,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x13,0x0e,0x0c,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x18,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0x3f,0x1b, - 0x13,0x10,0x10,0x10,0x10,0x0d,0x08,0x03,0x08,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x14,0x0e,0x0d,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x16,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1e,0x3f,0x1a,0x12,0x10,0x10,0x10,0x10,0x0a,0x05,0x05,0x10, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b, - 0x3f,0x3f,0xda,0x2b,0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x13,0x0e,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1e,0x3f,0x19,0x11,0x10, - 0x10,0x10,0x0e,0x08,0x03,0x0a,0x18,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x2b,0x3f,0x3f,0x2b,0x3f,0x3f,0x2b,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x18,0x10, - 0x0e,0x10,0x10,0x10,0x10,0x10,0x0f,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1d,0x3f,0x19,0x11,0x10,0x10,0x10,0x0d,0x07,0x04,0x0f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b, - 0x3f,0x3f,0x3f,0x3f,0x1d,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x13,0x0f,0x10,0x10,0x10,0x10,0x10,0x0f, - 0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0x3f,0x1a,0x11,0x10,0x10,0x10, - 0x0c,0x06,0x06,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x3f,0x3f,0x3f,0x3f,0x2b,0xda,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x16,0x10,0x10,0x10,0x10,0x10,0x10,0x0e,0x13,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1c,0x3f,0x1b,0x12,0x10,0x10,0x10,0x0c,0x05,0x06,0x16,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b, - 0x3f,0x3f,0x3f,0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x18,0x10,0x10,0x10,0x10,0x10, - 0x10,0x0e,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x1d,0x13,0x10,0x10,0x10,0x0c,0x05, - 0x07,0x18,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x3f,0x3f,0x2b,0xda,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x1a,0x11,0x10,0x10,0x10,0x10,0x10,0x0e,0x16,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, - 0x3f,0x15,0x10,0x10,0x10,0x0d,0x06,0x06,0x18,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x2b, - 0x2b,0x3f,0x2b,0x2b,0x2b,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xad, - 0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1a,0x11,0x10,0x10, - 0x10,0x10,0x10,0x0e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0x3f,0x18,0x10,0x10,0x10,0x0e,0x07,0x06,0x16, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x19,0x11,0x10,0x10,0x10,0x10,0x0d,0x10,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x1b, - 0x11,0x10,0x10,0x10,0x08,0x04,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xad, - 0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x17,0x11, - 0x10,0x10,0x10,0x10,0x0d,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0x1e,0x3f,0x14,0x10,0x10,0x10,0x0a,0x03,0x0f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x15,0x10,0x10,0x10,0x10,0x10,0x0d,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0x3f,0x19,0x10, - 0x10,0x10,0x0d,0x05,0x0a,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x13,0x10,0x10,0x10,0x10,0x0c,0x10,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0x3f,0x1e,0x13,0x10,0x10,0x10,0x08,0x05,0x18,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1a,0x12,0x10,0x10,0x10,0x10,0x0c,0x17, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0x3f,0x18,0x10,0x10, - 0x10,0x0b,0x03,0x10,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x16,0x10,0x10,0x10,0x10,0x0d,0x0e,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0x1e,0x1e,0x12,0x10,0x10,0x0f,0x07,0x08,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1e,0x14,0x10,0x10,0x10,0x10,0x0b, - 0x17,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0x3f,0x18,0x10,0x10,0x10, - 0x0b,0x03,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x18,0x10,0x10,0x10,0x10,0x0c,0x0e,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0x1d,0x3f,0x13,0x10,0x10,0x10,0x07,0x08,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x15,0x10,0x10,0x10,0x10, - 0x0a,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0x3f,0x1a,0x10,0x10,0x10,0x0c, - 0x03,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x18,0x10,0x10,0x10,0x10,0x0a,0x11,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0x3f,0x16,0x10,0x10,0x10,0x08,0x06,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x13,0x10,0x10,0x10, - 0x0d,0x0b,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0x1d,0x1e,0x12,0x10,0x10,0x0e,0x05, - 0x0f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x17,0x10,0x10,0x10,0x10,0x09,0x18,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0x3f,0x1a,0x10,0x10,0x10,0x0b,0x04,0x19,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1c,0x11,0x10,0x10, - 0x10,0x09,0x11,0xff,0xff,0x3f,0x3f,0x3f,0xff,0x3f,0x17,0x10,0x10,0x10,0x08,0x08, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x14,0x10,0x10,0x10,0x0c,0x0b,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0x3f,0x13,0x10,0x10,0x10,0x05,0x0f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x18,0x10,0x10, - 0x10,0x0e,0x08,0xff,0xff,0x3f,0x3f,0x3f,0xff,0x1e,0x10,0x10,0x10,0x0d,0x03,0x17, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x1b,0x10,0x10,0x10,0x10,0x07,0x17,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0x10,0x10,0x10,0x0b,0x05,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x11,0x10, - 0x10,0x10,0x08,0x12,0xff,0x3f,0x3f,0x3f,0xff,0x18,0x10,0x10,0x10,0x09,0x08,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x14,0x10,0x10,0x10,0x0a,0x0d,0xff,0x3f,0x3f,0x3f, - 0xff,0x16,0x10,0x10,0x10,0x07,0x0c,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x17,0x10, - 0x10,0x10,0x0b,0x0a,0xff,0x3f,0x3f,0x3f,0xff,0x13,0x10,0x10,0x10,0x06,0x11,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x19,0x10,0x10,0x10,0x0d,0x08,0xff,0x3f,0x3f,0x3f, - 0xff,0x12,0x10,0x10,0x10,0x05,0x15,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1b,0x10, - 0x10,0x10,0x0e,0x06,0xff,0x3f,0x3f,0x3f,0xff,0x11,0x10,0x10,0x10,0x04,0x19,0x3f, - 0x3f,0x3f,0x3f,0xda,0x2b,0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xda,0x2b, - 0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x1d,0x10,0x10,0x10,0x0f,0x05,0xff,0x3f,0x3f,0x3f, - 0xff,0x10,0x10,0x10,0x10,0x03,0x1c,0x3f,0x3f,0x3f,0x3f,0x2b,0x3f,0x3f,0x2b,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x3f,0x3f,0x2b,0x3f,0x3f,0x3f,0x3f,0x1e,0x10, - 0x10,0x10,0x0f,0x03,0xff,0x3f,0x3f,0x3f,0xff,0x10,0x10,0x10,0x10,0x03,0x1e,0x3f, - 0x3f,0x3f,0x3f,0x2b,0x3f,0x3f,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x10,0x10,0x10,0x10,0x03,0xff,0x3f,0x3f,0x3f, - 0xff,0x10,0x10,0x10,0x10,0x03,0x3f,0x3f,0x3f,0x3f,0x3f,0xda,0x2b,0x2b,0x2b,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x3f,0x10, - 0x10,0x10,0x0f,0x03,0xff,0x3f,0x3f,0x3f,0xff,0x10,0x10,0x10,0x10,0x04,0x1e,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0xda,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x10,0x10,0x10,0x0f,0x03,0xff,0x3f,0x3f,0x3f, - 0xff,0x10,0x10,0x10,0x10,0x05,0x1c,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0xda,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x3f,0x3f,0x2b,0x3f,0x3f,0x3f,0x3f,0x1e,0x10, - 0x10,0x10,0x0e,0x03,0xff,0x3f,0x3f,0x3f,0xff,0x11,0x10,0x10,0x10,0x06,0x19,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xda,0x2b, - 0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x1d,0x10,0x10,0x10,0x0d,0x05,0xff,0x3f,0x3f,0x3f, - 0xff,0x12,0x10,0x10,0x10,0x07,0x15,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1b,0x10, - 0x10,0x10,0x0b,0x06,0xff,0x3f,0x3f,0x3f,0xff,0x13,0x10,0x10,0x10,0x09,0x11,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x19,0x10,0x10,0x10,0x0a,0x08,0xff,0x3f,0x3f,0x3f, - 0xff,0x16,0x10,0x10,0x10,0x0b,0x0c,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x17,0x10, - 0x10,0x10,0x08,0x0a,0xff,0x3f,0x3f,0x3f,0xff,0x18,0x10,0x10,0x10,0x0d,0x08,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x14,0x10,0x10,0x10,0x06,0x0d,0xff,0x3f,0x3f,0x3f, - 0xff,0x1a,0x10,0x10,0x10,0x10,0x08,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x11,0x10, - 0x10,0x0e,0x04,0x12,0xff,0x3f,0x3f,0x3f,0xff,0x1d,0x10,0x10,0x10,0x10,0x08,0x17, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x1c,0x10,0x10,0x10,0x0c,0x04,0x17,0xff,0x3f,0x3f,0x3f, - 0xff,0x3f,0x13,0x10,0x10,0x10,0x0b,0x0f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x18,0x10,0x10, - 0x10,0x09,0x07,0xff,0xff,0x3f,0x3f,0x3f,0xff,0x1d,0x17,0x10,0x10,0x10,0x0e,0x0b, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x14,0x10,0x10,0x10,0x06,0x0b,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0x19,0x10,0x10,0x10,0x10,0x0a,0x19,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1d,0x11,0x10,0x10, - 0x0d,0x04,0x11,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0x1e,0x12,0x10,0x10,0x10,0x0c, - 0x0f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x18,0x10,0x10,0x10,0x0a,0x05,0x18,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0x1d,0x16,0x10,0x10,0x10,0x10,0x0c,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x13,0x10,0x10,0x10, - 0x06,0x0a,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0x19,0x10,0x10,0x10,0x10, - 0x0b,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x1a,0x10,0x10,0x10,0x0c,0x03,0x11,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0x1e,0x13,0x10,0x10,0x10,0x0f,0x0e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x14,0x10,0x10,0x10,0x08, - 0x07,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0x16,0x10,0x10,0x10, - 0x10,0x0c,0x14,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x1a,0x10,0x10,0x10,0x0d,0x04,0x0e,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0x1c,0x12,0x10,0x10,0x10,0x10,0x0e,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x14,0x10,0x10,0x10,0x08,0x06, - 0x17,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0x15,0x10,0x10, - 0x10,0x10,0x0d,0x13,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x18,0x10,0x10,0x10,0x0c,0x04,0x0d,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0x13,0x10,0x10,0x10,0x10,0x0e,0x18,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1c,0x12,0x10,0x10,0x10,0x07,0x06,0x17, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0x15,0x10, - 0x10,0x10,0x10,0x10,0x10,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x15,0x10,0x10,0x10,0x0b,0x03,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0x12,0x10,0x10,0x10,0x10,0x0e,0x13,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x18,0x10,0x10,0x10,0x0d,0x06,0x09,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x17, - 0x11,0x10,0x10,0x10,0x10,0x0f,0x16,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xad, - 0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1a,0x11, - 0x10,0x10,0x10,0x08,0x05,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x18, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x24,0x24,0x24,0x60,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x1b,0x12,0x10,0x10,0x10,0x0a,0x03,0x0d,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1c,0x12,0x10,0x10,0x10,0x10,0x10,0x10,0x1a,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0xad,0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0xda,0x2b,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xad, - 0x24,0xad,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1c,0x13,0x10,0x10, - 0x10,0x0c,0x05,0x0a,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x18,0x10,0x10,0x10,0x10,0x10,0x10, - 0x11,0x1a,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xda,0x2b,0xda,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x60,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x1c,0x13,0x10,0x10,0x10,0x0d,0x06,0x07,0x16,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x16,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x19,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1b,0x13,0x10,0x10,0x10,0x0d, - 0x07,0x06,0x12,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x14,0x0f,0x10,0x10,0x10, - 0x10,0x10,0x11,0x17,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x2b,0x2b,0xda,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x1a,0x12,0x10,0x10,0x10,0x0e,0x07,0x05,0x10,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x13,0x0f,0x10,0x10,0x10,0x10,0x10,0x11,0x15,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x2b,0x3f,0x3f,0x2b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x18,0x11,0x10,0x10,0x10,0x0d,0x07,0x05, - 0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x13,0x0e,0x10, - 0x10,0x10,0x10,0x10,0x10,0x13,0x1a,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x2b,0x1d,0x3f,0x2b,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1c,0x15, - 0x10,0x10,0x10,0x10,0x0d,0x07,0x05,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x13,0x0e,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x16, - 0x1e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0xda,0x2b,0x2b,0xda,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x18,0x12,0x10,0x10,0x10,0x10,0x0c,0x06,0x06,0x10,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x14, - 0x0e,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1a,0x14,0x10,0x10,0x10, - 0x10,0x10,0x0a,0x05,0x07,0x12,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x16,0x0e,0x0d,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x15,0x18,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x1a,0x14,0x10,0x10,0x10,0x10,0x10,0x0d,0x08,0x03,0x0a,0x16,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x10,0x0d,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x13,0x17,0x1c,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1d,0x18,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x0b, - 0x06,0x05,0x0d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x13,0x0d,0x0c,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x14,0x18,0x1b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1c,0x18,0x14,0x11,0x10, - 0x10,0x10,0x10,0x10,0x10,0x0c,0x07,0x03,0x09,0x13,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x10,0x0c,0x0d,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x11,0x14,0x17,0x19,0x1b,0x1d,0x1e,0x3f,0x3f,0x3f,0x1e,0x1d,0x1b,0x19, - 0x17,0x14,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0d,0x08,0x04,0x06,0x0f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x17,0x0e, - 0x0b,0x0c,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x0c,0x08,0x04,0x06,0x0d,0x17,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x17,0x0e,0x0a,0x0a,0x0d,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x0d,0x0a,0x06,0x03,0x07,0x0e,0x17,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x11,0x0b,0x09,0x09,0x0c,0x0e,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0e,0x0c,0x09,0x06,0x04,0x05, - 0x0a,0x11,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x18,0x11,0x0b, - 0x08,0x07,0x08,0x0a,0x0b,0x0d,0x0e,0x0f,0x0f,0x10,0x0f,0x0f,0x0e,0x0d,0x0b,0x0a, - 0x08,0x06,0x04,0x04,0x07,0x0b,0x11,0x18,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x17,0x12,0x0d,0x0a,0x08,0x06,0x05, - 0x03,0x03,0x03,0x03,0x03,0x05,0x06,0x08,0x0a,0x0d,0x12,0x17,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f -}; - -const int32 kCenterWidth = 7; -const int32 kCenterHeight = 7; -const color_space kCenterColorSpace = B_CMAP8; - -const unsigned char kCenterBits [] = { - 0x3f,0x3f,0x0a,0x0a,0x0a,0x3f,0x3f,0x3f, - 0x3f,0x0a,0x15,0x15,0x15,0x0a,0x3f,0x0a, - 0x0a,0x15,0x0a,0x0a,0x0a,0x15,0x0a,0x0a, - 0x0a,0x15,0x0a,0x00,0x0a,0x15,0x0a,0x0a, - 0x0a,0x15,0x0a,0x0a,0x0a,0x15,0x0a,0x0a, - 0x3f,0x0a,0x15,0x15,0x15,0x0a,0x3f,0x3f, - 0x3f,0x3f,0x0a,0x0a,0x0a,0x3f,0x3f}; - -const int32 kCapWidth = 5; -const int32 kCapHeight = 5; -const color_space kCapColorSpace = B_CMAP8; - -const unsigned char kCapBits [] = { - 0x0a, 0x15, 0x15, 0x15, 0x0a, 0x00, 0x00, 0x00, - 0x15, 0x0a, 0x0a, 0x0a, 0x15, 0x00, 0x00, 0x00, - 0x15, 0x0a, 0x00, 0x0a, 0x15, 0x00, 0x00, 0x00, - 0x15, 0x0a, 0x0a, 0x0a, 0x15, 0x00, 0x00, 0x00, - 0x0a, 0x15, 0x15, 0x15, 0x0a, 0x00, 0x00, 0x00 -}; - const int32 kUpArrowWidth = 16; const int32 kUpArrowHeight = 7; const color_space kUpArrowColorSpace = B_CMAP8; @@ -533,3 +42,5 @@ const unsigned char kDownArrowBits [] = { 0xff,0xff,0xff,0xff,0xff,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0x18,0x3f,0xff,0xff }; +#endif // ANALOG_CLOCK_H + diff --git a/src/preferences/time/CalendarView.cpp b/src/preferences/time/CalendarView.cpp index 861af0f6ff..55a3f3d523 100644 --- a/src/preferences/time/CalendarView.cpp +++ b/src/preferences/time/CalendarView.cpp @@ -1,12 +1,11 @@ /* - * Copyright 2004-2005, Haiku. + * Copyright 2004-2007, Haiku. * Distributed under the terms of the MIT License. * * Authors: * Michael Berg */ - #include #include @@ -455,12 +454,14 @@ void TCalendarView::DispatchMessage() { // send message to update timedate - BMessage *msg = new BMessage(H_USER_CHANGE); - msg->AddBool("time", false); - msg->AddInt32("month", f_month); + BMessage msg(H_USER_CHANGE); + msg.AddBool("time", false); + msg.AddInt32("month", f_month); + msg.AddInt32("year", f_year); + if (f_cday != NULL) - msg->AddInt32("day", f_cday->Day()); - msg->AddInt32("year", f_year); + msg.AddInt32("day", f_cday->Day()); - Window()->PostMessage(msg); + Window()->PostMessage(&msg); } + diff --git a/src/preferences/time/SectionEdit.cpp b/src/preferences/time/SectionEdit.cpp index 76e78e0288..91f342f5e2 100644 --- a/src/preferences/time/SectionEdit.cpp +++ b/src/preferences/time/SectionEdit.cpp @@ -299,5 +299,3 @@ TSectionEdit::DoDownPress() { } - -//---// diff --git a/src/preferences/time/SettingsView.cpp b/src/preferences/time/SettingsView.cpp index 4fe85fa93b..d33c6fcdc1 100644 --- a/src/preferences/time/SettingsView.cpp +++ b/src/preferences/time/SettingsView.cpp @@ -13,6 +13,7 @@ #include "DateTimeEdit.h" #include "TimeMessages.h" + #include #include #include @@ -25,7 +26,7 @@ TSettingsView::TSettingsView(BRect frame) : BView(frame,"Settings", B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP), - fGmtTime(NULL) + fGmtTime(NULL) { InitView(); } @@ -109,17 +110,6 @@ TSettingsView::InitView() fCalendar = new TCalendarView(frameLeft, "calendar", B_FOLLOW_NONE, B_WILL_DRAW); AddChild(fCalendar); - frameLeft.top = fCalendar->Frame().bottom + 10; - BStringView *text = new BStringView(frameLeft, "timezone", "Timezone:"); - AddChild(text); - text->ResizeToPreferred(); - - frameLeft.left += 20.0f; - frameLeft.top = text->Frame().bottom + 5; - - fTimeZone = new BStringView(frameLeft, "label", " "); - AddChild(fTimeZone); - // right side BRect frameRight(Bounds()); frameRight.left = frameRight.Width() / 2; @@ -144,14 +134,15 @@ TSettingsView::InitView() // clock radio buttons frameRight.left = left; frameRight.top = fClock->Frame().bottom + 10; - text = new BStringView(frameRight, "clockis", "Clock set to:"); + BStringView *text = new BStringView(frameRight, "clockis", "Clock set to:"); AddChild(text); text->ResizeToPreferred(); - frameRight.left += 20.0f; + frameRight.left += 10.0f; frameRight.top = text->Frame().bottom + 5; - fLocalTime = new BRadioButton(frameRight, "local", "Local time", new BMessage(H_RTC_CHANGE)); + fLocalTime = new BRadioButton(frameRight, "local", "Local time", + new BMessage(H_RTC_CHANGE)); AddChild(fLocalTime); fLocalTime->ResizeToPreferred(); @@ -200,14 +191,6 @@ TSettingsView::GMTime() } -void -TSettingsView::SetTimeZone(const char *timezone) -{ - fTimeZone->SetText(timezone); - fTimeZone->ResizeToPreferred(); -} - - void TSettingsView::UpdateDateTime(BMessage *message) { @@ -239,9 +222,9 @@ void TSettingsView::ReadRTCSettings() { BPath path; - if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK) { - return; // NO USER SETTINGS DIRECTORY!!! - } + if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK) + return; + path.Append("RTC_time_settings"); BFile file; @@ -249,9 +232,9 @@ TSettingsView::ReadRTCSettings() if (entry.Exists()) { file.SetTo(&entry, B_READ_ONLY); if (file.InitCheck() == B_OK) { - char buff[6]; - file.Read(buff, 6); - BString text(buff); + char localTime[6]; + file.Read(localTime, 6); + BString text(localTime); if (text.Compare("local\n", 5) == 0) fIsLocalTime = true; else diff --git a/src/preferences/time/SettingsView.h b/src/preferences/time/SettingsView.h index 8ee3d6c4b2..899d78e8b7 100644 --- a/src/preferences/time/SettingsView.h +++ b/src/preferences/time/SettingsView.h @@ -18,7 +18,7 @@ class TTimeEdit; class TCalendarView; class TAnalogClock; class BRadioButton; -class BStringView; + class TSettingsView : public BView { public: @@ -32,7 +32,6 @@ class TSettingsView : public BView { void ChangeRTCSetting(); bool GMTime(); - void SetTimeZone(const char *timezone); private: void InitView(); @@ -46,8 +45,7 @@ class TSettingsView : public BView { TCalendarView *fCalendar; TAnalogClock *fClock; bool fIsLocalTime; - BStringView *fTimeZone; }; -#endif +#endif // SETTINGS_VIEW_H diff --git a/src/preferences/time/Time.cpp b/src/preferences/time/Time.cpp index fdcc944e95..3ed715628f 100644 --- a/src/preferences/time/Time.cpp +++ b/src/preferences/time/Time.cpp @@ -1,31 +1,34 @@ /* - * Copyright 2002-2006, Haiku. All rights reserved. + * Copyright 2002-2007, Haiku. All rights reserved. * Distributed under the terms of the MIT License. * - * Authors in chronological order: + * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg + * Mike Berg (inseculous) + * Julun */ - #include "Time.h" -#include "TimeSettings.h" #include "TimeMessages.h" +#include "TimeSettings.h" +#include "TimeWindow.h" + #include +#include TimeApplication::TimeApplication() - : BApplication(HAIKU_APP_SIGNATURE) + : BApplication(HAIKU_APP_SIGNATURE), + fWindow(NULL) { - fSettings = new TimeSettings(); - fWindow = new TTimeWindow(); + BPoint pt = TimeSettings().LeftTop(); + fWindow = new TTimeWindow(pt); } TimeApplication::~TimeApplication() { - delete fSettings; } @@ -33,12 +36,12 @@ void TimeApplication::MessageReceived(BMessage *message) { switch (message->what) { - case ERROR_DETECTED: - (new BAlert("Error", "Something has gone wrong!", "OK", - NULL, NULL, B_WIDTH_AS_USUAL, B_OFFSET_SPACING, - B_WARNING_ALERT))->Go(); - be_app->PostMessage(B_QUIT_REQUESTED); - break; + case UPDATE_SETTINGS: + { + BPoint pt; + if (message->FindPoint("LeftTop", &pt) == B_OK) + TimeSettings().SetLeftTop(pt); + } break; default: BApplication::MessageReceived(message); @@ -57,14 +60,8 @@ TimeApplication::ReadyToRun() void TimeApplication::AboutRequested() { - (new BAlert("about", "...by Andrew Edward McCall\n...Mike Berg too", "Big Deal"))->Go(); -} - - -void -TimeApplication::SetWindowCorner(BPoint corner) -{ - fSettings->SetWindowCorner(corner); + BAlert alert("about", "Time & Date, by\n\nAndrew Edward McCall\nMike Berg", "OK"); + alert.Go(); } @@ -72,7 +69,7 @@ TimeApplication::SetWindowCorner(BPoint corner) int -main(int, char**) +main(int argc, char** argv) { TimeApplication app; app.Run(); diff --git a/src/preferences/time/Time.h b/src/preferences/time/Time.h index dc112da931..baca578219 100644 --- a/src/preferences/time/Time.h +++ b/src/preferences/time/Time.h @@ -1,38 +1,35 @@ /* - * Copyright 2002-2006, Haiku. All rights reserved. + * Copyright 2002-2007, Haiku. All rights reserved. * Distributed under the terms of the MIT License. * - * Authors in chronological order: + * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg + * Mike Berg (inseculous) + * Julun */ #ifndef TIME_H #define TIME_H -#include "TimeSettings.h" -#include "TimeWindow.h" - #include +class BMessage; +class TTimeWindow; + + class TimeApplication : public BApplication { public: - TimeApplication(); - virtual ~TimeApplication(); + TimeApplication(); + virtual ~TimeApplication(); - void MessageReceived(BMessage* message); - - void ReadyToRun(); - void AboutRequested(); - - void SetWindowCorner(BPoint corner); - BPoint WindowCorner() const - { return fSettings->WindowCorner(); } + virtual void MessageReceived(BMessage* message); + virtual void ReadyToRun(); + virtual void AboutRequested(); private: - TimeSettings *fSettings; - TTimeWindow *fWindow; + TTimeWindow *fWindow; }; #endif // TIME_H + diff --git a/src/preferences/time/TimeMessages.h b/src/preferences/time/TimeMessages.h index ab2e64ecba..b314ed11df 100644 --- a/src/preferences/time/TimeMessages.h +++ b/src/preferences/time/TimeMessages.h @@ -1,15 +1,18 @@ /* - - TimeMessages.h - -*/ - + * Copyright 2002-2007, Haiku. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Andrew McCall, mccall@digitalparadise.co.uk + * Mike Berg (inseculous) + * Julun + */ #ifndef TIME_MESSAGES_H #define TIME_MESSAGES_H #define HAIKU_APP_SIGNATURE "application/x-vnd.Be-TIME" -const uint32 ERROR_DETECTED = 'ERor'; +const uint32 UPDATE_SETTINGS = 'TDUS'; //Timezone messages const uint32 H_REGION_CHANGED = 'h_RC'; @@ -38,5 +41,8 @@ const uint32 H_USER_CHANGE = 'obUC'; // local/gmt radiobuttons const uint32 H_RTC_CHANGE = 'obRC'; +// sunday/monday radio button +const uint32 kWeekStart = '_kws'; + #endif //TIME_MESSAGES_H diff --git a/src/preferences/time/TimeSettings.cpp b/src/preferences/time/TimeSettings.cpp index 26ed9fd096..825c474ece 100644 --- a/src/preferences/time/TimeSettings.cpp +++ b/src/preferences/time/TimeSettings.cpp @@ -1,66 +1,65 @@ /* - * Copyright 2002-2006, Haiku. All rights reserved. + * Copyright 2002-2007, Haiku. All rights reserved. * Distributed under the terms of the MIT License. * - * Authors in chronological order: + * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg + * Mike Berg (inseculous) + * Julun */ - #include "TimeSettings.h" #include "TimeMessages.h" -#include -#include + #include +#include #include -#include -#include - - -const char TimeSettings::kTimeSettingsFile[] = "Time_settings"; TimeSettings::TimeSettings() + : fSettingsFile("Time_settings") { - BPath path; - - if (find_directory(B_USER_SETTINGS_DIRECTORY,&path) == B_OK) { - path.Append(kTimeSettingsFile); - BFile file(path.Path(), B_READ_ONLY); - if (file.InitCheck() == B_OK) { - // Now read in the data - if (file.Read(&fCorner, sizeof(BPoint)) != sizeof(BPoint)) { - fCorner.x = 50; - fCorner.y = 50; - } - } else { - fCorner.x = 50; - fCorner.y = 50; - } - } else - be_app->PostMessage(ERROR_DETECTED); } TimeSettings::~TimeSettings() +{ +} + + +BPoint +TimeSettings::LeftTop() const { BPath path; - if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) < B_OK) - return; + BPoint leftTop(50.0, 50.0); - path.Append(kTimeSettingsFile); - - BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE); - if (file.InitCheck() == B_OK) { - file.Write(&fCorner, sizeof(BPoint)); + if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) { + path.Append(fSettingsFile.String()); + + BFile file(path.Path(), B_READ_ONLY); + if (file.InitCheck() == B_OK) { + BPoint tmp; + if (file.Read(&tmp, sizeof(BPoint)) == sizeof(BPoint)) + leftTop = tmp; + } } + + return leftTop; } void -TimeSettings::SetWindowCorner(BPoint corner) +TimeSettings::SetLeftTop(const BPoint leftTop) { - fCorner = corner; + BPath path; + if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK) + return; + + path.Append(fSettingsFile.String()); + + BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE); + if (file.InitCheck() == B_OK) + file.Write(&leftTop, sizeof(BPoint)); } + diff --git a/src/preferences/time/TimeSettings.h b/src/preferences/time/TimeSettings.h index 7fcc2e856d..6496a48a6b 100644 --- a/src/preferences/time/TimeSettings.h +++ b/src/preferences/time/TimeSettings.h @@ -1,29 +1,31 @@ /* - * Copyright 2002-2006, Haiku. All rights reserved. + * Copyright 2002-2007, Haiku. All rights reserved. * Distributed under the terms of the MIT License. * - * Authors in chronological order: + * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg + * Mike Berg (inseculous) + * Julun */ #ifndef TIME_SETTINGS_H #define TIME_SETTINGS_H #include +#include class TimeSettings { public : - TimeSettings(); - ~TimeSettings(); + TimeSettings(); + ~TimeSettings(); - BPoint WindowCorner() const { return fCorner; } - void SetWindowCorner(BPoint corner); + BPoint LeftTop() const; + void SetLeftTop(const BPoint leftTop); private: - static const char kTimeSettingsFile[]; - BPoint fCorner; + BString fSettingsFile; }; #endif // TIME_SETTINGS_H + diff --git a/src/preferences/time/TimeWindow.cpp b/src/preferences/time/TimeWindow.cpp index 82eef99efa..4eb7f6e63d 100644 --- a/src/preferences/time/TimeWindow.cpp +++ b/src/preferences/time/TimeWindow.cpp @@ -6,32 +6,28 @@ * mccall@@digitalparadise.co.uk * Julun */ - + +#include "TimeWindow.h" +#include "BaseView.h" +#include "SettingsView.h" +#include "TimeMessages.h" +#include "ZoneView.h" + + #include #include #include #include -#include -#include "BaseView.h" -#include "SettingsView.h" -#include "Time.h" -#include "TimeMessages.h" -#include "TimeWindow.h" -#include "TimeSettings.h" -#include "ZoneView.h" - -#define TIME_WINDOW_RIGHT 400 //332 -#define TIME_WINDOW_BOTTOM 227 //208 +#define WINDOW_RIGHT 400 +#define WINDOW_BOTTOM 227 -TTimeWindow::TTimeWindow() - : BWindow(BRect(0, 0, TIME_WINDOW_RIGHT, TIME_WINDOW_BOTTOM), - "Time & Date", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) +TTimeWindow::TTimeWindow(const BPoint leftTop) + : BWindow(BRect(leftTop, leftTop + BPoint(WINDOW_RIGHT, WINDOW_BOTTOM)), + "Time & Date", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE) { - MoveTo(dynamic_cast(be_app)->WindowCorner()); - BRect frame = Frame(); BRect bounds = Bounds(); BRect screenFrame = BScreen().Frame(); @@ -40,7 +36,7 @@ TTimeWindow::TTimeWindow() MoveTo((screenFrame.right - bounds.right) * 0.5f, (screenFrame.bottom - bounds.bottom) * 0.5f); - InitWindow(); + _InitWindow(); SetPulseRate(500000); } @@ -51,8 +47,8 @@ TTimeWindow::MessageReceived(BMessage *message) switch(message->what) { case H_USER_CHANGE: { - bool istime; - if (message->FindBool("time", &istime) == B_OK) + bool isTime; + if (message->FindBool("time", &isTime) == B_OK) fBaseView->ChangeTime(message); break; } @@ -60,7 +56,7 @@ TTimeWindow::MessageReceived(BMessage *message) case H_RTC_CHANGE: fBaseView->SetGMTime(fTimeSettings->GMTime()); break; - + default: BWindow::MessageReceived(message); break; @@ -71,7 +67,9 @@ TTimeWindow::MessageReceived(BMessage *message) bool TTimeWindow::QuitRequested() { - dynamic_cast(be_app)->SetWindowCorner(BPoint(Frame().left,Frame().top)); + BMessage msg(UPDATE_SETTINGS); + msg.AddPoint("LeftTop", Frame().LeftTop()); + be_app->PostMessage(&msg); fBaseView->StopWatchingAll(fTimeSettings); fBaseView->StopWatchingAll(fTimeZones); @@ -79,12 +77,11 @@ TTimeWindow::QuitRequested() be_app->PostMessage(B_QUIT_REQUESTED); return BWindow::QuitRequested(); - } void -TTimeWindow::InitWindow() +TTimeWindow::_InitWindow() { BRect bounds(Bounds()); @@ -99,12 +96,10 @@ TTimeWindow::InitWindow() bounds.bottom -= tabview->TabHeight(); fTimeSettings = new TSettingsView(bounds); - if (fBaseView->StartWatchingAll(fTimeSettings) != B_OK) - printf("StartWatchingAll(TimeSettings) failed!!!\n"); + fBaseView->StartWatchingAll(fTimeSettings); fTimeZones = new TZoneView(bounds); - if (fBaseView->StartWatchingAll(fTimeZones) != B_OK) - printf("TimeZones->StartWatchingAll(TimeZone) failed!!!\n"); + fBaseView->StartWatchingAll(fTimeZones); // add tabs BTab *tab = new BTab(); @@ -121,6 +116,6 @@ TTimeWindow::InitWindow() float height; fTimeSettings->GetPreferredSize(&width, &height); // width/ height from settingsview + all InsetBy etc.. - ResizeTo(width +10, height + tabview->TabHeight() +25); + ResizeTo(width +5, height + tabview->TabHeight() +25); } diff --git a/src/preferences/time/TimeWindow.h b/src/preferences/time/TimeWindow.h index 05db1a6913..b888738e73 100644 --- a/src/preferences/time/TimeWindow.h +++ b/src/preferences/time/TimeWindow.h @@ -1,27 +1,39 @@ /* * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. + * + * Authors: + * mccall@@digitalparadise.co.uk + * Julun */ #ifndef TIME_WINDOW_H #define TIME_WINDOW_H + #include + +class BMessage; class TSettingsView; class TTimeBaseView; class TZoneView; + + class TTimeWindow : public BWindow { public: - TTimeWindow(); - - bool QuitRequested(); - virtual void MessageReceived(BMessage *message); - private: - void InitWindow(); + TTimeWindow(const BPoint topLeft); + virtual ~TTimeWindow() {} - TTimeBaseView *fBaseView; - TSettingsView *fTimeSettings; - TZoneView *fTimeZones; + virtual bool QuitRequested(); + virtual void MessageReceived(BMessage *message); + + private: + void _InitWindow(); + + TTimeBaseView *fBaseView; + TSettingsView *fTimeSettings; + TZoneView *fTimeZones; }; -#endif +#endif // TIME_WINDOW_H + diff --git a/src/preferences/time/ZoneView.cpp b/src/preferences/time/ZoneView.cpp index b27a4cd7eb..e2af5fb5ff 100644 --- a/src/preferences/time/ZoneView.cpp +++ b/src/preferences/time/ZoneView.cpp @@ -6,6 +6,7 @@ * Mike Berg (inseculous) * Julun */ + /* Exceptions: doesn't calc "Time in" time. @@ -17,61 +18,49 @@ inital info so I can get exact duplication. */ -#include +#include "ZoneView.h" +#include "TimeMessages.h" +#include "TZDisplay.h" + +#include #include #include #include +#include #include #include #include #include #include #include -#include -#include #include #include #include -#include - -#include "TimeMessages.h" -#include "ZoneView.h" -/*=====> TZoneItem <=====*/ -TZoneItem::TZoneItem(const char *text, const char *zone) - :BStringItem(text), - fZone(new BPath(zone)) -{ -} +#include +#include -TZoneItem::~TZoneItem() -{ - delete fZone; -} +class TZoneItem: public BStringItem { + public: + TZoneItem(const char *text, const char *zone) + : BStringItem(text), fZone(new BPath(zone)) { } + ~TZoneItem() { delete fZone; } + + const char *Zone() const { return fZone->Leaf(); } + const char *Path() const { return fZone->Path(); } + + private: + BPath *fZone; +}; -const char * -TZoneItem::Zone() const -{ - return fZone->Leaf(); -} - - -const char * -TZoneItem::Path() const -{ - return fZone->Path(); -} - - -/*=====> TZoneView <=====*/ TZoneView::TZoneView(BRect frame) - : BView(frame, B_EMPTY_STRING, B_FOLLOW_ALL, B_WILL_DRAW|B_NAVIGABLE_JUMP) - , f_first(true) + : BView(frame, B_EMPTY_STRING, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE_JUMP), + fNotInitialized(true) { ReadTimeZoneLink(); InitView(); @@ -83,36 +72,30 @@ TZoneView::~TZoneView() } - -void -TZoneView::AllAttached() -{ - BView::AllAttached(); -} - - void TZoneView::AttachedToWindow() { if (Parent()) SetViewColor(Parent()->ViewColor()); - if (f_first) { + if (fNotInitialized) { // stupid hack - f_regionpopup->SetTargetForItems(this); - f_setzone->SetTarget(this); - f_citylist->SetTarget(this); + fRegionPopUp->SetTargetForItems(this); + fSetZone->SetTarget(this); + fCityList->SetTarget(this); + // update displays BPath parent; - f_currentzone.GetParent(&parent); - int czone = FillCityList(parent.Path()); - if (czone> -1) { - f_citylist->Select(czone); - f_current->SetText( ((TZoneItem *)f_citylist->ItemAt(czone))->Text() ); + fCurrentZone.GetParent(&parent); + int32 czone = FillCityList(parent.Path()); + if (czone > -1) { + fCityList->Select(czone); + fCurrent->SetText(((TZoneItem *)fCityList->ItemAt(czone))->Text()); } - f_first = false; + fNotInitialized = false; + ResizeTo(Bounds().Width(), Bounds().Height() +40); } - f_citylist->ScrollToSelection(); + fCityList->ScrollToSelection(); } @@ -155,27 +138,27 @@ TZoneView::MessageReceived(BMessage *message) const char* TZoneView::TimeZone() { - return f_current->Text(); + return fCurrent->Text(); } void TZoneView::UpdateDateTime(BMessage *message) { - // only need hour and minute - int32 hour, minute; + int32 hour; + int32 minute; + // only need hour and minute if (message->FindInt32("hour", &hour) == B_OK && message->FindInt32("minute", &minute) == B_OK) { - if (f_hour != hour || f_minute != minute) { - f_hour = hour; - f_minute = minute; - f_current->SetTo(hour, minute); + if (fHour != hour || fMinute != minute) { + fHour = hour; + fMinute = minute; + fCurrent->SetTo(hour, minute); - if (f_citylist->CurrentSelection()> -1) { - // do calc to get other zone time + // do calc to get other zone time + if (fCityList->CurrentSelection() > -1) SetPreview(); - } } } } @@ -184,99 +167,80 @@ TZoneView::UpdateDateTime(BMessage *message) void TZoneView::InitView() { - font_height finfo; - be_plain_font->GetHeight(&finfo); - float text_height = finfo.ascent +finfo.descent +finfo.leading; + font_height fontHeight; + be_plain_font->GetHeight(&fontHeight); + float textHeight = fontHeight.descent + fontHeight.ascent + fontHeight.leading; - BRect bounds(Bounds().InsetByCopy(4, 2)); - BRect frame(bounds); - // Zone menu - f_regionpopup = new BPopUpMenu(B_EMPTY_STRING, true, true, B_ITEMS_IN_COLUMN); + fRegionPopUp = new BPopUpMenu(B_EMPTY_STRING, true, true, B_ITEMS_IN_COLUMN); - float widest = 0; - BuildRegionMenu(&widest); + BuildRegionMenu(); - frame.right = frame.left +widest +25; - frame.bottom = frame.top +text_height -1; + // left side + BRect frameLeft(Bounds()); + frameLeft.right = frameLeft.Width() / 2; + frameLeft.InsetBy(10.0f, 10.0f); - BMenuField *mField; - mField= new BMenuField(frame, "regions", NULL, f_regionpopup, true); - mField->MenuBar()->SetBorder(B_BORDER_CONTENTS); - mField->MenuBar()->ResizeToPreferred(); - AddChild(mField); + BMenuField *menuField = new BMenuField(frameLeft, "regions", NULL, fRegionPopUp, false); + AddChild(menuField); + menuField->ResizeToPreferred(); + frameLeft.top = menuField->Frame().bottom +10; + frameLeft.right -= B_V_SCROLL_BAR_WIDTH; // City Listing + fCityList = new BListView(frameLeft, "cityList", B_SINGLE_SELECTION_LIST, + B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_FRAME_EVENTS); + fCityList->SetSelectionMessage(new BMessage(H_CITY_CHANGED)); + fCityList->SetInvocationMessage(new BMessage(H_SET_TIME_ZONE)); - frame = mField->MenuBar()->Frame(); - frame.top += frame.bottom +1; - frame.right = mField->Bounds().Width() -B_V_SCROLL_BAR_WIDTH +2; - frame.bottom = bounds.bottom; - frame.OffsetBy(2, 0); - frame.InsetBy(3, 5); - - f_citylist = new BListView(frame, "cities", B_SINGLE_SELECTION_LIST, - B_FOLLOW_LEFT|B_FOLLOW_TOP, - B_WILL_DRAW|B_NAVIGABLE|B_FRAME_EVENTS); - - BMessage *citychange = new BMessage(H_CITY_CHANGED); - f_citylist->SetSelectionMessage(citychange); - - BMessage *cityinvoke = new BMessage(H_SET_TIME_ZONE); - f_citylist->SetInvocationMessage(cityinvoke); - - BScrollView *scrollList; - scrollList = new BScrollView("scroll_list", f_citylist, - B_FOLLOW_LEFT|B_FOLLOW_TOP, 0, false, true); + BScrollView *scrollList = new BScrollView("scroll_list", fCityList, + B_FOLLOW_ALL, 0, false, true); AddChild(scrollList); + // right side + BRect frameRight(Bounds()); + frameRight.left = frameRight.Width() / 2; + frameRight.InsetBy(10.0f, 10.0f); + frameRight.top = frameLeft.top; // Time Displays + fCurrent = new TTZDisplay(frameRight, "current", + B_FOLLOW_NONE, B_WILL_DRAW, "Current time zone:", B_EMPTY_STRING); + AddChild(fCurrent); + fCurrent->ResizeToPreferred(); - frame.OffsetBy(scrollList->Bounds().Width() +9, 3); - frame.bottom = frame.top +text_height *2; - frame.right = bounds.right -6; - f_current = new TTZDisplay(frame, "current", - B_FOLLOW_LEFT|B_FOLLOW_TOP, B_WILL_DRAW, - "Current time zone:", B_EMPTY_STRING); - f_current->ResizeToPreferred(); - - frame.OffsetBy(0, (text_height *3) +2); - f_preview = new TTZDisplay(frame, "timein", - B_FOLLOW_LEFT|B_FOLLOW_TOP, B_WILL_DRAW, - "Time in: ", B_EMPTY_STRING); - f_preview->ResizeToPreferred(); - - AddChild(f_current); - AddChild(f_preview); + frameRight.OffsetBy(0, (textHeight) * 3 +10.0); + fPreview = new TTZDisplay(frameRight, "preview", + B_FOLLOW_NONE, B_WILL_DRAW, "Time in: ", B_EMPTY_STRING); + AddChild(fPreview); + fPreview->ResizeToPreferred(); // set button - - frame.Set(bounds.right -75, bounds.bottom -24, - bounds.right, bounds.bottom); - frame.OffsetBy(-2, -2); - f_setzone = new BButton(frame, "set", "Set", new BMessage(H_SET_TIME_ZONE)); - f_setzone->SetEnabled(false); - AddChild(f_setzone); + fSetZone = new BButton(frameRight, "set", "Set Timezone", + new BMessage(H_SET_TIME_ZONE), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM); + AddChild(fSetZone); + fSetZone->SetEnabled(false); + fSetZone->ResizeToPreferred(); + + fSetZone->MoveTo(frameRight.right - fSetZone->Bounds().Width(), + scrollList->Frame().bottom - fSetZone->Bounds().Height()); } void -TZoneView::BuildRegionMenu(float *widest) +TZoneView::BuildRegionMenu() { BPath path; - // return if /etc directory is not found - if (!(find_directory(B_BEOS_ETC_DIRECTORY, &path) == B_OK)) + if (find_directory(B_BEOS_ETC_DIRECTORY, &path) != B_OK) return; path.Append("timezones"); // get current region BPath region; - f_currentzone.GetParent(®ion); + fCurrentZone.GetParent(®ion); - float width = 0; bool markit; BEntry entry; BMenuItem *item; @@ -303,42 +267,37 @@ TZoneView::BuildRegionMenu(float *widest) ||itemtext.Compare("Indian", 6) == 0) itemtext.Append(" Ocean"); - itemtext = itemtext.ReplaceAll('_', ' '); // underscores are spaces + // underscores are spaces + itemtext = itemtext.ReplaceAll('_', ' '); - width = be_plain_font->StringWidth(itemtext.String()); - if (width > *widest) - *widest = width; - BMessage *msg = new BMessage(H_REGION_CHANGED); msg->AddString("region", path.Path()); item = new BMenuItem(itemtext.String(), msg); item->SetMarked(markit); - f_regionpopup->AddItem(item); + fRegionPopUp->AddItem(item); } } } -int +int32 TZoneView::FillCityList(const char *area) { // clear list - - // MakeEmpty() doesn't free items so... - int32 idx = f_citylist->CountItems(); - if (idx>= 1) - for (; idx>= 0; idx--) - delete f_citylist->RemoveItem(idx); - - //Enter time zones directory. Find subdir with name that matches string stored in area. - //Enter subdirectory and count the items. For each item, add a StringItem to f_CityList - //Time zones directory + int32 count = fCityList->CountItems(); + if (count > 0) { + for (int32 idx = count; idx >= 0; idx--) + delete fCityList->RemoveItem(idx); + fCityList->MakeEmpty(); + } + + // Enter time zones directory. Find subdir with name that matches string + // stored in area. Enter subdirectory and count the items. For each item, + // add a StringItem to fCityList Time zones directory BPath path; - - // return if /etc directory is not found - if (!(find_directory(B_BEOS_ETC_DIRECTORY, &path) == B_OK)) + if (find_directory(B_BEOS_ETC_DIRECTORY, &path) != B_OK) return 0; path.Append("timezones"); @@ -349,16 +308,14 @@ TZoneView::FillCityList(const char *area) BStringItem *city; BString city_name; BEntry entry; - int index = -1; - //locate subdirectory: - - if ( zoneDir.Contains(Area.Leaf(), B_DIRECTORY_NODE)) { + int32 index = -1; + + //locate subdirectory: + if (zoneDir.Contains(Area.Leaf(), B_DIRECTORY_NODE)) { cityDir.SetTo(&zoneDir, Area.Leaf()); - //There is a subdir with a name that matches 'area'. That's the one!! - - - //iterate over the items in the subdir and fill the listview with TZoneItems: - + + // There is a subdir with a name that matches 'area'. That's the one!! + // Iterate over the items in the subdir, fill listview with TZoneItems while(cityDir.GetNextEntry(&entry) == B_NO_ERROR) { if (!entry.IsDirectory()) { BPath zone(&entry); @@ -368,9 +325,9 @@ TZoneView::FillCityList(const char *area) city_name.ReplaceAll("__", ", "); city_name.ReplaceAll("_", " "); city = new TZoneItem(city_name.String(), zone.Path()); - f_citylist->AddItem(city); - if (strcmp(f_currentzone.Leaf(), zone.Leaf()) == 0) - index = f_citylist->IndexOf(city); + fCityList->AddItem(city); + if (strcmp(fCurrentZone.Leaf(), zone.Leaf()) == 0) + index = fCityList->IndexOf(city); } } } @@ -401,14 +358,13 @@ TZoneView::ReadTimeZoneLink() _kern_get_tzfilename(tzFileName, B_OS_PATH_LENGTH, &isGMT); tzLink.SetTo(tzFileName); #else - /* reads the timezone symlink from B_USER_SETTINGS_DIRECTORY - currently this sets f_currentzone to the symlink value. - this is wrong. the original can get users timezone without - a timezone symlink present. + /* reads the timezone symlink from B_USER_SETTINGS_DIRECTORY currently + this sets fCurrentZone to the symlink value, this is wrong. The + original can get users timezone without a timezone symlink present. - defaults are set to different values to clue in on what error was returned - GMT is set when the link is invalid - EST is set when the settings dir can't be found **should never happen** + Defaults are set to different values to clue in on what error was returned + GMT is set when the link is invalid EST is set when the settings dir can't + be found what should never happen. */ @@ -428,7 +384,7 @@ TZoneView::ReadTimeZoneLink() } #endif // we need something in the current zone - f_currentzone.SetTo(&tzLink); + fCurrentZone.SetTo(&tzLink); } @@ -436,9 +392,9 @@ void TZoneView::SetPreview() { // calc and display time based on users selection in city list - int32 selection = f_citylist->CurrentSelection(); + int32 selection = fCityList->CurrentSelection(); if (selection>= 0) { - TZoneItem *item = (TZoneItem *)f_citylist->ItemAt(selection); + TZoneItem *item = (TZoneItem *)fCityList->ItemAt(selection); BString text; text = item->Text(); @@ -450,12 +406,12 @@ TZoneView::SetPreview() SetTimeZone(item->Path()); current = time(0); ltime = localtime(¤t); - SetTimeZone(f_currentzone.Path()); + SetTimeZone(fCurrentZone.Path()); - f_preview->SetTo(ltime->tm_hour, ltime->tm_min); - f_preview->SetText(text.String()); + fPreview->SetTo(ltime->tm_hour, ltime->tm_min); + fPreview->SetText(text.String()); - f_setzone->SetEnabled((strcmp(f_current->Text(), text.String()) != 0)); + fSetZone->SetEnabled((strcmp(fCurrent->Text(), text.String()) != 0)); } } @@ -463,45 +419,39 @@ TZoneView::SetPreview() void TZoneView::SetCurrent(const char *text) { - SetTimeZone(f_currentzone.Path()); + SetTimeZone(fCurrentZone.Path()); time_t current = time(0); struct tm *ltime = localtime(¤t); - f_current->SetTo(ltime->tm_hour, ltime->tm_min); - f_current->SetText(text); + fCurrent->SetTo(ltime->tm_hour, ltime->tm_min); + fCurrent->SetText(text); } void TZoneView::SetTimeZone() { - /* - set time based on supplied timezone. How to do this? - 1) replace symlink, "timezone", in B_USER_SETTINGS_DIR with a link to the new timezone - 2) set TZ environment var - 3) call settz() - 4) call set_timezone from OS.h passing path to timezone file + /* set time based on supplied timezone. How to do this? + 1) replace symlink "timezone" in B_USER_SETTINGS_DIR with a link to the new timezone + 2) set TZ environment var + 3) call settz() + 4) call set_timezone from OS.h passing path to timezone file */ - - // update/create timezone symlink in B_USER_SETTINGS_DIRECTORY - // get path to current link + // update/create timezone symlink in B_USER_SETTINGS_DIRECTORY BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK) return; path.Append("timezone"); - // build target for new link - - int32 selection = f_citylist->CurrentSelection(); + int32 selection = fCityList->CurrentSelection(); if (selection < 0) - // nothing selected?? return; - BPath target( ((TZoneItem *)f_citylist->ItemAt(selection))->Path()); + BPath target(((TZoneItem *)fCityList->ItemAt(selection))->Path()); // remove old BEntry entry(path.Path()); @@ -514,49 +464,34 @@ TZoneView::SetTimeZone() fprintf(stderr, "timezone not linked\n"); // update environment - - char tz[B_PATH_NAME_LENGTH]; - sprintf(tz, "TZ=%s", target.Path()); - - putenv( tz); - tzset(); + SetTimeZone(target.Path()); // update display time_t current = time(0); struct tm *ltime = localtime(¤t); - char tza[B_PATH_NAME_LENGTH]; sprintf(tza, "%s", target.Path()); set_timezone(tza); // disable button - f_setzone -> SetEnabled(false); + fSetZone->SetEnabled(false); time_t newtime = mktime(ltime); ltime = localtime(&newtime); stime(&newtime); - f_hour = ltime->tm_hour; - f_minute = ltime->tm_min; - f_currentzone.SetTo(target.Path()); - SetCurrent(((TZoneItem *)f_citylist->ItemAt(selection))->Text()); + fHour = ltime->tm_hour; + fMinute = ltime->tm_min; + fCurrentZone.SetTo(target.Path()); + SetCurrent(((TZoneItem *)fCityList->ItemAt(selection))->Text()); } - - - void TZoneView::SetTimeZone(const char *zone) { - BString tz; - - tz << "TZ=" << zone; - - putenv(tz.String()); + putenv(BString("TZ=").Append(zone).String()); tzset(); } - -//---// diff --git a/src/preferences/time/ZoneView.h b/src/preferences/time/ZoneView.h index 483632ac28..5a8babde1e 100644 --- a/src/preferences/time/ZoneView.h +++ b/src/preferences/time/ZoneView.h @@ -6,72 +6,57 @@ * Mike Berg (inseculous) * Julun */ - #ifndef ZONE_VIEW_H #define ZONE_VIEW_H -#include -#include -#include -#include #include +#include -#include "TZDisplay.h" -class TZoneItem: public BStringItem { +class BMessage; +class BPopUpMenu; +class BListView; +class BButton; +class TTZDisplay; + + +class TZoneView : public BView { public: - TZoneItem(const char *text, const char *zone); - virtual ~TZoneItem(); + TZoneView(BRect frame); + virtual ~TZoneView(); - const char *Zone() const; - const char *Path() const; - - private: - BPath *fZone; -}; - - - -class TZoneView: public BView { - public: - TZoneView(BRect frame); - virtual ~TZoneView(); - - virtual void AttachedToWindow(); - virtual void AllAttached(); - virtual void MessageReceived(BMessage *message); + virtual void AttachedToWindow(); + virtual void MessageReceived(BMessage *message); - const char* TimeZone(); + const char* TimeZone(); - protected: - void UpdateDateTime(BMessage *message); - void ChangeRegion(BMessage *); - void SetTimeZone(); - void SetTimeZone(const char *zone); - void SetPreview(); - void SetCurrent(const char *text); private: - virtual void InitView(); - void ReadTimeZoneLink(); - - // set widest to font width of longest item - void BuildRegionMenu(float *widest); + void UpdateDateTime(BMessage *message); + void ChangeRegion(BMessage *); + void SetTimeZone(); + void SetTimeZone(const char *zone); + void SetPreview(); + void SetCurrent(const char *text); + void InitView(); + void ReadTimeZoneLink(); + void BuildRegionMenu(); // returns index of current zone - int FillCityList(const char *area); + int32 FillCityList(const char *area); - BPopUpMenu *f_regionpopup; - BListView *f_citylist; - BButton *f_setzone; - TTZDisplay *f_current; - TTZDisplay *f_preview; + private: + BPopUpMenu *fRegionPopUp; + BListView *fCityList; + BButton *fSetZone; + TTZDisplay *fCurrent; + TTZDisplay *fPreview; - BPath f_currentzone; - int32 f_hour; - int32 f_minute; - int32 f_diff; - bool f_first; + int32 fHour; + int32 fMinute; + BPath fCurrentZone; + bool fNotInitialized; }; #endif //Zone_View_H +