From fd7c0c2ed7da4e121fc5a97385bed6cff67c0e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Fri, 14 Sep 2007 09:04:03 +0000 Subject: [PATCH] patch by Julun: * fixed more style issues * fixed small memory leaks * refactoring + some small changes by myself, added back Michael Berg and Andrew McCall as likely authors of most files which had no author information git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22232 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/preferences/time/AnalogClock.cpp | 13 +- src/preferences/time/AnalogClock.h | 2 +- src/preferences/time/Bitmaps.cpp | 2 + src/preferences/time/Bitmaps.h | 2 + src/preferences/time/CalendarView.cpp | 17 +- src/preferences/time/CalendarView.h | 11 + src/preferences/time/DateTimeEdit.cpp | 333 ++++++++++++-------------- src/preferences/time/DateTimeEdit.h | 78 +++--- src/preferences/time/DateUtils.cpp | 14 +- src/preferences/time/DateUtils.h | 12 + src/preferences/time/SectionEdit.cpp | 198 ++++++--------- src/preferences/time/SectionEdit.h | 103 +++++--- src/preferences/time/SettingsView.cpp | 9 +- src/preferences/time/SettingsView.h | 3 +- src/preferences/time/TZDisplay.cpp | 152 ++++++------ src/preferences/time/TZDisplay.h | 57 +++-- src/preferences/time/Time.cpp | 4 +- src/preferences/time/Time.h | 2 +- src/preferences/time/TimeMessages.h | 2 +- src/preferences/time/TimeSettings.cpp | 2 +- src/preferences/time/TimeSettings.h | 2 +- src/preferences/time/TimeWindow.cpp | 2 +- src/preferences/time/TimeWindow.h | 2 +- src/preferences/time/ZoneView.cpp | 43 ++-- src/preferences/time/ZoneView.h | 2 +- 25 files changed, 523 insertions(+), 544 deletions(-) diff --git a/src/preferences/time/AnalogClock.cpp b/src/preferences/time/AnalogClock.cpp index 037c44b1fc..b597f87014 100644 --- a/src/preferences/time/AnalogClock.cpp +++ b/src/preferences/time/AnalogClock.cpp @@ -21,9 +21,8 @@ class OffscreenClock : public BView { OffscreenClock(BRect frame, const char *name); ~OffscreenClock(); - void SetTo(int32 hour, int32 minute, int32 second); - bool IsDirty() const - { return fDirty; } + void SetTime(int32 hour, int32 minute, int32 second); + bool IsDirty() const { return fDirty; } void DrawClock(); private: @@ -54,7 +53,7 @@ OffscreenClock::~OffscreenClock() void -OffscreenClock::SetTo(int32 hour, int32 minute, int32 second) +OffscreenClock::SetTime(int32 hour, int32 minute, int32 second) { if (fHours == hour && fMinutes == minute && fSeconds == second) return; @@ -233,7 +232,7 @@ TAnalogClock::MessageReceived(BMessage *message) if (message->FindInt32("hour", &hour) == B_OK && message->FindInt32("minute", &minute) == B_OK && message->FindInt32("second", &second) == B_OK) - SetTo(hour, minute, second); + SetTime(hour, minute, second); break; } default: @@ -260,10 +259,10 @@ TAnalogClock::Draw(BRect /*updateRect*/) void -TAnalogClock::SetTo(int32 hour, int32 minute, int32 second) +TAnalogClock::SetTime(int32 hour, int32 minute, int32 second) { if (fClock) - fClock->SetTo(hour, minute, second); + fClock->SetTime(hour, minute, second); Invalidate(); } diff --git a/src/preferences/time/AnalogClock.h b/src/preferences/time/AnalogClock.h index 30e72c5ae2..6cc4169455 100644 --- a/src/preferences/time/AnalogClock.h +++ b/src/preferences/time/AnalogClock.h @@ -27,7 +27,7 @@ class TAnalogClock : public BView { virtual void Draw(BRect updateRect); virtual void MessageReceived(BMessage *message); - void SetTo(int32 hour, int32 minute, int32 second); + void SetTime(int32 hour, int32 minute, int32 second); private: void _InitView(BRect frame); diff --git a/src/preferences/time/Bitmaps.cpp b/src/preferences/time/Bitmaps.cpp index da3df0476f..a7e35b33fe 100644 --- a/src/preferences/time/Bitmaps.cpp +++ b/src/preferences/time/Bitmaps.cpp @@ -3,6 +3,8 @@ * Distributed under the terms of the MIT License. * * Authors: + * probably Mike Berg + * and/or Andrew McCall * Julun */ diff --git a/src/preferences/time/Bitmaps.h b/src/preferences/time/Bitmaps.h index 714736e147..c9073339e3 100644 --- a/src/preferences/time/Bitmaps.h +++ b/src/preferences/time/Bitmaps.h @@ -3,6 +3,8 @@ * Distributed under the terms of the MIT License. * * Authors: + * probably Mike Berg + * and/or Andrew McCall * Julun */ #ifndef ANALOG_CLOCK_H diff --git a/src/preferences/time/CalendarView.cpp b/src/preferences/time/CalendarView.cpp index 55a3f3d523..3d4d37bae6 100644 --- a/src/preferences/time/CalendarView.cpp +++ b/src/preferences/time/CalendarView.cpp @@ -146,7 +146,7 @@ TDay::Draw(BRect updaterect) SetHighColor(bgcolor); FillRect(bounds); - if (f_day> 0) { + if (f_day > 0) { if (!(Value() == 1)) SetHighColor(0, 0, 0, 255); else @@ -207,7 +207,7 @@ TDay::SetTo(int day, bool selected) f_day = day; SetValue(selected); if (Value() == 1) { - SetFlags(Flags()|B_NAVIGABLE); + SetFlags(Flags() | B_NAVIGABLE); } else { SetFlags(Flags() & ~B_NAVIGABLE); } @@ -224,7 +224,7 @@ TCalendarView::TCalendarView(BRect frame, const char *name, , f_firstday(0) , f_month(0) , f_day(0) - ,f_year(0) + , f_year(0) { InitView(); } @@ -338,20 +338,19 @@ TCalendarView::Draw(BRect updaterect) { BRect bounds(0.0, 0.0, f_dayrect.Width(), f_dayrect.Height()); - float width = 0; - float x = bounds.Width()/2.0; - BPoint drawpt; - BString day; SetLowColor(ViewColor()); SetHighColor(0, 0, 0); - float offset = FontHeight(this, true); + BPoint drawpt; + drawpt.y = (bounds.top + bounds.bottom + FontHeight(this, true)) / 2.0; + float width = 0; + float x = bounds.Width() / 2.0; + BString day; for (int i = 0; i < 7; i++) { day = BString(&kDays[i], 1); width = be_plain_font->StringWidth(day.String()); drawpt.x = bounds.left + (x - width / 2.0 + 2); - drawpt.y = bounds.bottom - offset / 2.0; DrawString(day.String(), drawpt); bounds.OffsetBy(bounds.Width() + 1, 0); } diff --git a/src/preferences/time/CalendarView.h b/src/preferences/time/CalendarView.h index 7722c6e965..7c791a5e2b 100644 --- a/src/preferences/time/CalendarView.h +++ b/src/preferences/time/CalendarView.h @@ -1,9 +1,20 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * and/or Andrew McCall + * Julun + */ #ifndef CALENDAR_VIEW_H #define CALENDAR_VIEW_H + #include #include + class TDay: public BControl { public: TDay(BRect frame, int day); diff --git a/src/preferences/time/DateTimeEdit.cpp b/src/preferences/time/DateTimeEdit.cpp index fb3af7b8ab..97642d6ada 100644 --- a/src/preferences/time/DateTimeEdit.cpp +++ b/src/preferences/time/DateTimeEdit.cpp @@ -1,37 +1,38 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * and/or Andrew McCall + * Julun + * + */ + #include "DateTimeEdit.h" #include "DateUtils.h" + +#include #include -#include + #define YEAR_DELTA_MAX 110 #define YEAR_DELTA_MIN 64 -TDateTimeSection::TDateTimeSection(BRect frame, uint32 data) - : TSection(frame), - fData(data) -{ -} +class TDateTimeSection : public TSection { + public: + TDateTimeSection(BRect frame, uint32 data = 0) + : TSection(frame), fData(data) { } + ~TDateTimeSection(); + + uint32 Data() const { return fData; } + void SetData(uint32 data) { fData = data; } - -TDateTimeSection::~TDateTimeSection() -{ -} - - -uint32 -TDateTimeSection::Data() const -{ - return fData; -} - - -void -TDateTimeSection::SetData(uint32 data) -{ - fData = data; -} + private: + uint32 fData; +}; // #pragma mark - @@ -46,32 +47,25 @@ TTimeEdit::TTimeEdit(BRect frame, const char *name, uint32 sections) TTimeEdit::~TTimeEdit() { - TSection *section; - if (f_sections->CountItems() > 0) { - for (int32 idx = 0; (section = (TSection *)f_sections->ItemAt(idx)); idx++) - delete section; - } - delete f_sections; } void TTimeEdit::InitView() { + // make sure we call the base class method, as it + // will create the arrow bitmaps and the section list TSectionEdit::InitView(); - SetSections(f_sectionsarea); + SetSections(fSectionArea); } void TTimeEdit::DrawSection(uint32 index, bool hasFocus) { - if (f_sections->CountItems() == 0) - printf("No Sections!!!\n"); - // user defined section drawing TDateTimeSection *section; - section = (TDateTimeSection *)f_sections->ItemAt(index); + section = (TDateTimeSection *)fSectionList->ItemAt(index); BRect bounds = section->Frame(); @@ -81,7 +75,7 @@ TTimeEdit::DrawSection(uint32 index, bool hasFocus) if (hasFocus) { SetLowColor(tint_color(ViewColor(), B_DARKEN_1_TINT)); - value = f_holdvalue; + value = fHoldValue; } else { SetLowColor(ViewColor()); value = section->Data(); @@ -112,7 +106,7 @@ TTimeEdit::DrawSection(uint32 index, bool hasFocus) break; case 3: // am/pm - value = ((TDateTimeSection *)f_sections->ItemAt(0))->Data(); + value = ((TDateTimeSection *)fSectionList->ItemAt(0))->Data(); if (value >= 12) text << "PM"; else @@ -125,10 +119,9 @@ TTimeEdit::DrawSection(uint32 index, bool hasFocus) } // calc and center text in section rect - float width = be_plain_font->StringWidth(text.String()); - BPoint offset(-(bounds.Width()/2.0 -width/2.0) -1.0, bounds.Height()/2.0 -6.0); + BPoint offset(-(bounds.Width() / 2.0 -width / 2.0) -1.0, bounds.Height() / 2.0 -6.0); BPoint drawpt(bounds.LeftBottom() -offset); @@ -138,27 +131,31 @@ TTimeEdit::DrawSection(uint32 index, bool hasFocus) } +/* + DrawSeperator(uint32 index) user drawn seperator. Section is the + index of the section in fSectionList or the section to the seps left +*/ void TTimeEdit::DrawSeperator(uint32 index) { - /* user drawn seperator. section is the index of the section - in f_sections or the section to the seps left - */ + if (index == 3) + return; + + TDateTimeSection *section = (TDateTimeSection *)fSectionList->ItemAt(index); - if (index >= 2) - return; // no seperator for am/pm - BString text(":"); - uint32 sep; - GetSeperatorWidth(&sep); - - TDateTimeSection *section = (TDateTimeSection *)f_sections->ItemAt(index); BRect bounds = section->Frame(); + float sepWidth = SeperatorWidth(); + + char* sep = ":"; + if (index == 2) + sep = "-"; + + float width = be_plain_font->StringWidth(sep); - float width = be_plain_font->StringWidth(text.String()); - BPoint offset(-(sep/2.0 -width/2.0) -1.0, bounds.Height()/2.0 -6.0); + BPoint offset(-(sepWidth / 2.0 - width / 2.0) -1.0, bounds.Height() / 2.0 -6.0); BPoint drawpt(bounds.RightBottom() -offset); - DrawString(text.String(), drawpt); + DrawString(sep, drawpt); } @@ -169,67 +166,63 @@ TTimeEdit::SetSections(BRect area) BRect bounds(area); // no comp for sep width - uint32 sep_width; - GetSeperatorWidth(&sep_width); + float sepWidth = SeperatorWidth(); - float sep_2 = ceil(sep_width/f_sectioncount +1); - float width = bounds.Width()/f_sectioncount -sep_2; - bounds.right = bounds.left +(width -sep_width/f_sectioncount); + float sep_2 = ceil(sepWidth / fSectionCount +1); + float width = bounds.Width() / fSectionCount -sep_2; + bounds.right = bounds.left + (width -sepWidth / fSectionCount); - TDateTimeSection *section; - - for (uint32 idx = 0; idx < f_sectioncount; idx++) { - section = new TDateTimeSection(bounds); - f_sections->AddItem(section); + for (uint32 idx = 0; idx < fSectionCount; idx++) { + fSectionList->AddItem(new TDateTimeSection(bounds)); - bounds.left = bounds.right +sep_width; - if (idx == f_sectioncount -2) + bounds.left = bounds.right + sepWidth; + if (idx == fSectionCount -2) bounds.right = area.right -1; else - bounds.right = bounds.left +(width -sep_2); + bounds.right = bounds.left + (width -sep_2); } } -void -TTimeEdit::GetSeperatorWidth(uint32 *width) +float +TTimeEdit::SeperatorWidth() const { - *width = 8; + return 8.0f; } void TTimeEdit::SectionFocus(uint32 index) { - f_focus = index; + fFocus = index; // update hold value - f_holdvalue = ((TDateTimeSection *)f_sections->ItemAt(f_focus))->Data(); + fHoldValue = ((TDateTimeSection *)fSectionList->ItemAt(fFocus))->Data(); Draw(Bounds()); } void -TTimeEdit::SetTo(uint32 hour, uint32 minute, uint32 second) +TTimeEdit::SetTime(uint32 hour, uint32 minute, uint32 second) { - if (f_sections->CountItems()> 0) + if (fSectionList->CountItems()> 0) { bool update = false; - TDateTimeSection *section = (TDateTimeSection *)f_sections->ItemAt(0); + TDateTimeSection *section = (TDateTimeSection *)fSectionList->ItemAt(0); if (section->Data() != hour) { section->SetData(hour); update = true; } - section = (TDateTimeSection *)f_sections->ItemAt(1); + section = (TDateTimeSection *)fSectionList->ItemAt(1); if (section->Data() != minute) { section->SetData(minute); update = true; } - section = (TDateTimeSection *)f_sections->ItemAt(2); + section = (TDateTimeSection *)fSectionList->ItemAt(2); if (section->Data() != second) { section->SetData(second); update = true; @@ -244,11 +237,11 @@ TTimeEdit::SetTo(uint32 hour, uint32 minute, uint32 second) void TTimeEdit::DoUpPress() { - if (f_focus == -1) + if (fFocus == -1) SectionFocus(0); // update displayed value - f_holdvalue += 1; + fHoldValue += 1; CheckRange(); @@ -260,11 +253,11 @@ TTimeEdit::DoUpPress() void TTimeEdit::DoDownPress() { - if (f_focus == -1) + if (fFocus == -1) SectionFocus(0); // update display value - f_holdvalue -= 1; + fHoldValue -= 1; CheckRange(); @@ -276,20 +269,18 @@ TTimeEdit::DoDownPress() void TTimeEdit::BuildDispatch(BMessage *message) { - static const char *fields[4] = {"hour", "minute", "second", "isam"}; + const char *fields[4] = {"hour", "minute", "second", "isam"}; message->AddBool("time", true); - for (int32 idx = 0; idx < f_sections->CountItems() -1; idx++) { - uint32 data; + for (int32 idx = 0; idx < fSectionList->CountItems() -1; idx++) { + uint32 data = ((TDateTimeSection *)fSectionList->ItemAt(idx))->Data(); - if (f_focus == idx) - data = f_holdvalue; - else - data = ((TDateTimeSection *)f_sections->ItemAt(idx))->Data(); + if (fFocus == idx) + data = fHoldValue; if (idx == 3) // isam - message->AddBool("isam", data == 1); + message->AddBool(fields[idx], data == 1); else message->AddInt32(fields[idx], data); } @@ -299,12 +290,12 @@ TTimeEdit::BuildDispatch(BMessage *message) void TTimeEdit::CheckRange() { - int32 value = f_holdvalue; - switch (f_focus) { + int32 value = fHoldValue; + switch (fFocus) { case 0: // hour if (value> 23) value = 0; - else if (value < 0) + else if (value < 0) value = 23; break; @@ -325,22 +316,22 @@ TTimeEdit::CheckRange() case 3: // modify hour value to reflect change in am/pm - value = ((TDateTimeSection *)f_sections->ItemAt(0))->Data(); + value = ((TDateTimeSection *)fSectionList->ItemAt(0))->Data(); if (value < 13) value += 12; else value -= 12; if (value == 24) value = 0; - ((TDateTimeSection *)f_sections->ItemAt(0))->SetData(value); + ((TDateTimeSection *)fSectionList->ItemAt(0))->SetData(value); break; default: return; } - ((TDateTimeSection *)f_sections->ItemAt(f_focus))->SetData(value); - f_holdvalue = value; + ((TDateTimeSection *)fSectionList->ItemAt(fFocus))->SetData(value); + fHoldValue = value; Invalidate(Bounds()); } @@ -348,12 +339,7 @@ TTimeEdit::CheckRange() // #pragma mark - -const char *months[] = { - "January", "Febuary", "March", "April", "May", "June", - "July", "August", "September", "October", "November", "December" -}; - - + TDateEdit::TDateEdit(BRect frame, const char *name, uint32 sections) : TSectionEdit(frame, name, sections) { @@ -363,32 +349,25 @@ TDateEdit::TDateEdit(BRect frame, const char *name, uint32 sections) TDateEdit::~TDateEdit() { - TSection *section; - if (f_sections->CountItems() > 0) { - for (int32 idx = 0; (section = (TSection *)f_sections->ItemAt(idx)); idx++) - delete section; - } - delete f_sections; } void TDateEdit::InitView() { + // make sure we call the base class method, as it + // will create the arrow bitmaps and the section list TSectionEdit::InitView(); - SetSections(f_sectionsarea); + SetSections(fSectionArea); } void TDateEdit::DrawSection(uint32 index, bool hasFocus) { - if (f_sections->CountItems() == 0) - printf("No Sections!!!\n"); - // user defined section drawing TDateTimeSection *section; - section = (TDateTimeSection *)f_sections->ItemAt(index); + section = (TDateTimeSection *)fSectionList->ItemAt(index); BRect bounds = section->Frame(); @@ -398,147 +377,141 @@ TDateEdit::DrawSection(uint32 index, bool hasFocus) if (hasFocus) { SetLowColor(tint_color(ViewColor(), B_DARKEN_1_TINT)); - value = f_holdvalue; + value = fHoldValue; } else { SetLowColor(ViewColor()); value = section->Data(); } - char text[64]; - // format value (new method?) + BString text; switch (index) { - case 0: // month + case 0: + { // month struct tm tm; tm.tm_mon = value; - strftime(text, sizeof(text), "%B", &tm); - break; + + char buffer[64]; + memset(buffer, 0, sizeof(buffer)); + strftime(buffer, sizeof(buffer), "%B", &tm); + text.SetTo(buffer); + } break; case 1: // day - snprintf(text, sizeof(text), "%lu", value); + text << value; break; case 2: // year - snprintf(text, sizeof(text), "%lu", value + 1900); + text << (value + 1900); break; default: return; } + // calc and center text in section rect - - float width = StringWidth(text); - - BPoint offset(-(bounds.Width() - width) /2.0 - 1.0, (bounds.Height() / 2.0 - 6.0)); + float width = StringWidth(text.String()); + BPoint offset(-(bounds.Width() - width) / 2.0 - 1.0, (bounds.Height() / 2.0 - 6.0)); if (index == 0) offset.x = -(bounds.Width() - width) ; SetHighColor(0, 0, 0, 255); FillRect(bounds, B_SOLID_LOW); - DrawString(text, bounds.LeftBottom() - offset); + DrawString(text.String(), bounds.LeftBottom() - offset); } +/* + DrawSeperator(uint32 index) user drawn seperator. Section is the + index of the section in fSectionList or the section to the seps left +*/ void TDateEdit::DrawSeperator(uint32 index) { - /* user drawn seperator. section is the index of the section - in f_sections or the section to the seps left - */ - - if (index == 3) { - // no seperator for am/pm + if (index == 3) return; - } - BString text("/"); - uint32 sep; - GetSeperatorWidth(&sep); - - TDateTimeSection *section = (TDateTimeSection *)f_sections->ItemAt(index); + TDateTimeSection *section = (TDateTimeSection *)fSectionList->ItemAt(index); BRect bounds = section->Frame(); - float width = be_plain_font->StringWidth(text.String()); - BPoint offset(-(sep/2.0 -width/2.0) -1.0, bounds.Height()/2.0 -6.0); - BPoint drawpt(bounds.RightBottom() -offset); + float sepWidth = SeperatorWidth(); + float width = be_plain_font->StringWidth("/"); - DrawString(text.String(), drawpt); + BPoint offset(-(sepWidth / 2.0 - width / 2.0) -1.0, bounds.Height() / 2.0 -6.0); + BPoint drawpt(bounds.RightBottom() - offset); + + DrawString("/", drawpt); } void TDateEdit::SetSections(BRect area) { - TDateTimeSection *section; // create sections - for (uint32 idx = 0; idx < f_sectioncount; idx++) { - section = new TDateTimeSection(area); - f_sections->AddItem(section); - } + for (uint32 idx = 0; idx < fSectionCount; idx++) + fSectionList->AddItem(new TDateTimeSection(area)); BRect bounds(area); - float width; // year - width = be_plain_font->StringWidth("0000") +6; + float width = be_plain_font->StringWidth("0000") +6; bounds.right = area.right; bounds.left = bounds.right -width; - ((TDateTimeSection *)f_sections->ItemAt(2))->SetBounds(bounds); + ((TDateTimeSection *)fSectionList->ItemAt(2))->SetFrame(bounds); - uint32 sep; - GetSeperatorWidth(&sep); + float sepWidth = SeperatorWidth(); // day width = be_plain_font->StringWidth("00") +6; - bounds.right = bounds.left -sep; + bounds.right = bounds.left -sepWidth; bounds.left = bounds.right -width; - ((TDateTimeSection *)f_sections->ItemAt(1))->SetBounds(bounds); + ((TDateTimeSection *)fSectionList->ItemAt(1))->SetFrame(bounds); // month - bounds.right = bounds.left -sep; + bounds.right = bounds.left - sepWidth; bounds.left = area.left; - ((TDateTimeSection *)f_sections->ItemAt(0))->SetBounds(bounds); + ((TDateTimeSection *)fSectionList->ItemAt(0))->SetFrame(bounds); } -void -TDateEdit::GetSeperatorWidth(uint32 *width) +float +TDateEdit::SeperatorWidth() const { - *width = 8; + return 8.0f; } void TDateEdit::SectionFocus(uint32 index) { - f_focus = index; + fFocus = index; // update hold value - f_holdvalue = ((TDateTimeSection *)f_sections->ItemAt(f_focus))->Data(); + fHoldValue = ((TDateTimeSection *)fSectionList->ItemAt(fFocus))->Data(); Draw(Bounds()); } void -TDateEdit::SetTo(uint32 year, uint32 month, uint32 day) +TDateEdit::SetDate(uint32 year, uint32 month, uint32 day) { - if (f_sections->CountItems() > 0) { + if (fSectionList->CountItems() > 0) { bool update = false; - TDateTimeSection *section = (TDateTimeSection *)f_sections->ItemAt(0); + TDateTimeSection *section = (TDateTimeSection *)fSectionList->ItemAt(0); if (section->Data() != month) { section->SetData(month); update = true; } - section = (TDateTimeSection *)f_sections->ItemAt(1); + section = (TDateTimeSection *)fSectionList->ItemAt(1); if (section->Data() != day) { section->SetData(day); update = true; } - section = (TDateTimeSection *)f_sections->ItemAt(2); + section = (TDateTimeSection *)fSectionList->ItemAt(2); if (section->Data() != year) { section->SetData(year); update = true; @@ -553,11 +526,11 @@ TDateEdit::SetTo(uint32 year, uint32 month, uint32 day) void TDateEdit::DoUpPress() { - if (f_focus == -1) + if (fFocus == -1) SectionFocus(0); // update displayed value - f_holdvalue += 1; + fHoldValue += 1; CheckRange(); @@ -569,11 +542,11 @@ TDateEdit::DoUpPress() void TDateEdit::DoDownPress() { - if (f_focus == -1) + if (fFocus == -1) SectionFocus(0); // update display value - f_holdvalue -= 1; + fHoldValue -= 1; CheckRange(); @@ -585,17 +558,15 @@ TDateEdit::DoDownPress() void TDateEdit::BuildDispatch(BMessage *message) { - static const char *fields[3] = {"month", "day", "year"}; + const char *fields[3] = {"month", "day", "year"}; message->AddBool("time", false); - for (int32 idx = 0; idx < f_sections->CountItems(); idx++) { - uint32 data; + for (int32 idx = 0; idx < fSectionList->CountItems(); idx++) { + uint32 data = ((TDateTimeSection *)fSectionList->ItemAt(idx))->Data(); - if (f_focus == idx) - data = f_holdvalue; - else - data = ((TDateTimeSection *)f_sections->ItemAt(idx))->Data(); + if (fFocus == idx) + data = fHoldValue; message->AddInt32(fields[idx], data); } @@ -605,9 +576,9 @@ TDateEdit::BuildDispatch(BMessage *message) void TDateEdit::CheckRange() { - int32 value = f_holdvalue; + int32 value = fHoldValue; - switch (f_focus) { + switch (fFocus) { case 0: // month { if (value > 11) @@ -619,8 +590,8 @@ TDateEdit::CheckRange() case 1: //day { - uint32 month = ((TDateTimeSection *)f_sections->ItemAt(0))->Data(); - uint32 year = ((TDateTimeSection *)f_sections->ItemAt(2))->Data(); + uint32 month = ((TDateTimeSection *)fSectionList->ItemAt(0))->Data(); + uint32 year = ((TDateTimeSection *)fSectionList->ItemAt(2))->Data(); int daycnt = getDaysInMonth(month, year); if (value > daycnt) @@ -643,8 +614,8 @@ TDateEdit::CheckRange() return; } - ((TDateTimeSection *)f_sections->ItemAt(f_focus))->SetData(value); - f_holdvalue = value; + ((TDateTimeSection *)fSectionList->ItemAt(fFocus))->SetData(value); + fHoldValue = value; Draw(Bounds()); } diff --git a/src/preferences/time/DateTimeEdit.h b/src/preferences/time/DateTimeEdit.h index b19da2aa50..d2013d4e16 100644 --- a/src/preferences/time/DateTimeEdit.h +++ b/src/preferences/time/DateTimeEdit.h @@ -1,66 +1,66 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * and/or Andrew McCall + * Julun + * + */ #ifndef DATETIME_H #define DATETIME_H + #include "SectionEdit.h" -// TSection descendent to hold uint32 value -class TDateTimeSection : public TSection { - public: - TDateTimeSection(BRect frame, uint32 data = 0); - ~TDateTimeSection(); - - uint32 Data() const; - void SetData(uint32 data); - private: - uint32 fData; -}; -// TSectionEdit descendent to edit time class TTimeEdit : public TSectionEdit { public: - TTimeEdit(BRect frame, const char *name, uint32 sections); - ~TTimeEdit(); + TTimeEdit(BRect frame, const char *name, uint32 sections); + virtual ~TTimeEdit(); - virtual void InitView(); - virtual void DrawSection(uint32 index, bool isfocus); - virtual void DrawSeperator(uint32 index); + virtual void InitView(); + virtual void DrawSection(uint32 index, bool isfocus); + virtual void DrawSeperator(uint32 index); - virtual void SetSections(BRect area); - virtual void SectionFocus(uint32 index); - virtual void GetSeperatorWidth(uint32 *width); + virtual void SetSections(BRect area); + virtual void SectionFocus(uint32 index); + virtual float SeperatorWidth() const; - void CheckRange(); + void CheckRange(); - virtual void DoUpPress(); - virtual void DoDownPress(); + virtual void DoUpPress(); + virtual void DoDownPress(); - virtual void BuildDispatch(BMessage *message); + virtual void BuildDispatch(BMessage *message); - void SetTo(uint32 hour, uint32 minute, uint32 second); + void SetTime(uint32 hour, uint32 minute, uint32 second); }; -// TSectionEdit descendent to edit Date + class TDateEdit : public TSectionEdit { public: - TDateEdit(BRect frame, const char *name, uint32 sections); - ~TDateEdit(); + TDateEdit(BRect frame, const char *name, uint32 sections); + virtual ~TDateEdit(); - virtual void InitView(); - virtual void DrawSection(uint32 index, bool isfocus); - virtual void DrawSeperator(uint32 index); + virtual void InitView(); + virtual void DrawSection(uint32 index, bool isfocus); + virtual void DrawSeperator(uint32 index); - virtual void SetSections(BRect area); - virtual void SectionFocus(uint32 index); - virtual void GetSeperatorWidth(uint32 *width); + virtual void SetSections(BRect area); + virtual void SectionFocus(uint32 index); + virtual float SeperatorWidth() const; - void CheckRange(); + void CheckRange(); - virtual void DoUpPress(); - virtual void DoDownPress(); + virtual void DoUpPress(); + virtual void DoDownPress(); - virtual void BuildDispatch(BMessage *message); + virtual void BuildDispatch(BMessage *message); - void SetTo(uint32 hour, uint32 minute, uint32 second); + void SetDate(uint32 year, uint32 month, uint32 day); }; #endif // DATETIME_H + diff --git a/src/preferences/time/DateUtils.cpp b/src/preferences/time/DateUtils.cpp index 9c95e016fa..5cdb76f0af 100644 --- a/src/preferences/time/DateUtils.cpp +++ b/src/preferences/time/DateUtils.cpp @@ -1,3 +1,11 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * and/or Andrew McCall + */ #include "DateUtils.h" #include "math.h" @@ -7,16 +15,15 @@ bool isLeapYear(const int year) { int realYear = year + 1900; - return ((realYear % 400 == 0)||(realYear % 4 == 0 && realYear % 100 != 0)); + return ((realYear % 400 == 0) || (realYear % 4 == 0 && realYear % 100 != 0)); } int getDaysInMonth(const int month, const int year) { - if (month == 1 && isLeapYear(year)) { + if (month == 1 && isLeapYear(year)) return 29; - } static const int DaysinMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; @@ -44,3 +51,4 @@ getFirstDay(const int month, const int year) return tm.tm_wday; } + diff --git a/src/preferences/time/DateUtils.h b/src/preferences/time/DateUtils.h index 3f50065f7b..c1d138977c 100644 --- a/src/preferences/time/DateUtils.h +++ b/src/preferences/time/DateUtils.h @@ -1,8 +1,20 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * and/or Andrew McCall + * + */ #ifndef CAL_HELPERS #define CAL_HELPERS + bool isLeapYear(const int year); int getDaysInMonth(const int month, const int year); int getFirstDay(const int month, const int year); + #endif //CAL_HELPERS + diff --git a/src/preferences/time/SectionEdit.cpp b/src/preferences/time/SectionEdit.cpp index 91f342f5e2..741a004d2c 100644 --- a/src/preferences/time/SectionEdit.cpp +++ b/src/preferences/time/SectionEdit.cpp @@ -1,54 +1,50 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * Julun + * + */ + +#include "SectionEdit.h" +#include "Bitmaps.h" +#include "TimeMessages.h" + + #include +#include #include -#include "Bitmaps.h" -#include "SectionEdit.h" -#include "TimeMessages.h" const uint32 kArrowAreaWidth = 16; const uint32 kSeperatorWidth = 8; -TSection::TSection(BRect frame) - : f_frame(frame) -{ -} - - -void -TSection::SetBounds(BRect frame) -{ - f_frame = frame; -} - - - BRect -TSection::Bounds() const -{ - BRect bounds(f_frame); - return bounds.OffsetByCopy(B_ORIGIN); -} - - - BRect -TSection::Frame() const -{ - return f_frame; -} - - - TSectionEdit::TSectionEdit(BRect frame, const char *name, uint32 sections) - : BControl(frame, name, NULL, NULL, B_FOLLOW_NONE, B_NAVIGABLE|B_WILL_DRAW) - , f_focus(-1) + : BControl(frame, name, NULL, NULL, B_FOLLOW_NONE, B_NAVIGABLE | B_WILL_DRAW), + fUpArrow(NULL), + fDownArrow(NULL), + fSectionList(NULL), + fFocus(-1), + fSectionCount(sections) { - f_sectioncount = sections; InitView(); } TSectionEdit::~TSectionEdit() { + delete fUpArrow; + delete fDownArrow; + + int32 count = fSectionList->CountItems(); + if (count > 0) { + for (int32 index = 0; index < count; index++) + delete (TSection*)fSectionList->ItemAt(index); + } + delete fSectionList; } @@ -57,8 +53,8 @@ TSectionEdit::AttachedToWindow() { if (Parent()) { SetViewColor(Parent()->ViewColor()); - ReplaceTransparentColor(f_up, ViewColor()); - ReplaceTransparentColor(f_down, ViewColor()); + ReplaceTransparentColor(fUpArrow, ViewColor()); + ReplaceTransparentColor(fDownArrow, ViewColor()); } } @@ -67,10 +63,10 @@ void TSectionEdit::Draw(BRect updaterect) { DrawBorder(); - for (uint32 idx = 0; idx < f_sectioncount; idx++) + for (uint32 idx = 0; idx < fSectionCount; idx++) { - DrawSection(idx, ((uint32)f_focus == idx) && IsFocus()); - if (idx CountItems()> 0) { + else if (fSectionList->CountItems()> 0) { TSection *section; - for (uint32 idx = 0; idx < f_sectioncount; idx++) { - section = (TSection *)f_sections->ItemAt(idx); + for (uint32 idx = 0; idx < fSectionCount; idx++) { + section = (TSection *)fSectionList->ItemAt(idx); if (section->Frame().Contains(where)) { SectionFocus(idx); return; @@ -100,22 +96,22 @@ TSectionEdit::MouseDown(BPoint where) void TSectionEdit::KeyDown(const char *bytes, int32 numbytes) { - if (f_focus == -1) + if (fFocus == -1) SectionFocus(0); switch (bytes[0]) { case B_LEFT_ARROW: - f_focus -= 1; - if (f_focus < 0) - f_focus = f_sectioncount -1; - SectionFocus(f_focus); + fFocus -= 1; + if (fFocus < 0) + fFocus = fSectionCount -1; + SectionFocus(fFocus); break; case B_RIGHT_ARROW: - f_focus += 1; - if ((uint32)f_focus >= f_sectioncount) - f_focus = 0; - SectionFocus(f_focus); + fFocus += 1; + if ((uint32)fFocus >= fSectionCount) + fFocus = 0; + SectionFocus(fFocus); break; case B_UP_ARROW: @@ -146,14 +142,14 @@ TSectionEdit::DispatchMessage() uint32 TSectionEdit::CountSections() const { - return f_sections->CountItems(); + return fSectionList->CountItems(); } int32 TSectionEdit::FocusIndex() const { - return f_focus; + return fFocus; } @@ -162,33 +158,31 @@ TSectionEdit::InitView() { // create arrow bitmaps - f_up = new BBitmap(BRect(0, 0, kUpArrowWidth -1, kUpArrowHeight -1), kUpArrowColorSpace); - f_up->SetBits(kUpArrowBits, (kUpArrowWidth) *(kUpArrowHeight+1), 0, kUpArrowColorSpace); + fUpArrow = new BBitmap(BRect(0, 0, kUpArrowWidth -1, kUpArrowHeight -1), kUpArrowColorSpace); + fUpArrow->SetBits(kUpArrowBits, (kUpArrowWidth) *(kUpArrowHeight+1), 0, kUpArrowColorSpace); - f_down = new BBitmap(BRect(0, 0, kDownArrowWidth -1, kDownArrowHeight -2), kDownArrowColorSpace); - f_down->SetBits(kDownArrowBits, (kDownArrowWidth) *(kDownArrowHeight), 0, kDownArrowColorSpace); + fDownArrow = new BBitmap(BRect(0, 0, kDownArrowWidth -1, kDownArrowHeight -2), kDownArrowColorSpace); + fDownArrow->SetBits(kDownArrowBits, (kDownArrowWidth) *(kDownArrowHeight), 0, kDownArrowColorSpace); // setup sections - f_sections = new BList(f_sectioncount); - f_sectionsarea = Bounds().InsetByCopy(2, 2); - f_sectionsarea.right -= (kArrowAreaWidth); + fSectionList = new BList(fSectionCount); + fSectionArea = Bounds().InsetByCopy(2, 2); + fSectionArea.right -= kArrowAreaWidth; } void TSectionEdit::Draw3DFrame(BRect frame, bool inset) { - rgb_color color1, color2; + rgb_color color1 = LowColor(); + rgb_color color2 = HighColor(); if (inset) { color1 = HighColor(); color2 = LowColor(); - } else { - color1 = LowColor(); - color2 = HighColor(); } - + BeginLineArray(4); // left side AddLine(frame.LeftBottom(), frame.LeftTop(), color2); @@ -210,17 +204,18 @@ TSectionEdit::DrawBorder() rgb_color dark = tint_color(bgcolor, B_DARKEN_1_TINT); rgb_color darker = tint_color(bgcolor, B_DARKEN_3_TINT); - BRect bounds(Bounds()); SetHighColor(light); SetLowColor(dark); + + BRect bounds(Bounds()); Draw3DFrame(bounds, true); StrokeLine(bounds.LeftBottom(), bounds.LeftBottom(), B_SOLID_LOW); bounds.InsetBy(1, 1); bounds.right -= kArrowAreaWidth; - f_showfocus = (IsFocus() && Window() && Window()->IsActive()); - if (f_showfocus) { + fShowFocus = (IsFocus() && Window() && Window()->IsActive()); + if (fShowFocus) { rgb_color navcolor = keyboard_navigation_color(); SetHighColor(navcolor); @@ -234,13 +229,16 @@ TSectionEdit::DrawBorder() // draw up/down control SetHighColor(light); - bounds.left = bounds.right +1;// -kArrowAreaWidth; + bounds.left = bounds.right +1; bounds.right = Bounds().right -1; - f_uprect.Set(bounds.left +3, bounds.top +2, bounds.right, bounds.bottom /2.0); - f_downrect = f_uprect.OffsetByCopy(0, f_uprect.Height()+2); + fUpRect.Set(bounds.left +3, bounds.top +2, bounds.right, bounds.bottom /2.0); + fDownRect = fUpRect.OffsetByCopy(0, fUpRect.Height()+2); - DrawBitmap(f_up, f_uprect.LeftTop()); - DrawBitmap(f_down, f_downrect.LeftTop()); + if (fUpArrow) + DrawBitmap(fUpArrow, fUpRect.LeftTop()); + + if (fDownArrow) + DrawBitmap(fDownArrow, fDownRect.LeftTop()); Draw3DFrame(bounds, false); SetHighColor(dark); @@ -251,51 +249,9 @@ TSectionEdit::DrawBorder() } -void -TSectionEdit::SetSections(BRect) -{ -} - - -void -TSectionEdit::GetSeperatorWidth(uint32 *width) -{ - *width = 0; -} - - -void -TSectionEdit::DrawSection(uint32 index, bool isfocus) -{ -} - - -void -TSectionEdit::DrawSeperator(uint32 index) -{ -} - - -void -TSectionEdit::SectionFocus(uint32 index) -{ -} - - -void -TSectionEdit::SectionChange(uint32 section, uint32 value) -{ -} - - -void -TSectionEdit::DoUpPress() -{ -} - - -void -TSectionEdit::DoDownPress() +float +TSectionEdit::SeperatorWidth() const { + return 0.0f; } diff --git a/src/preferences/time/SectionEdit.h b/src/preferences/time/SectionEdit.h index 1795003607..fed6afe254 100644 --- a/src/preferences/time/SectionEdit.h +++ b/src/preferences/time/SectionEdit.h @@ -1,67 +1,94 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * Julun + * + */ #ifndef SECTIONEDIT_H #define SECTIONEDIT_H + #include -#include + + +class BBitmap; +class BList; + class TSection { public: - TSection(BRect frame); + TSection(BRect frame) + : fFrame(frame) {} - void SetBounds(BRect frame); + BRect Bounds() const + { + BRect frame(fFrame); + return frame.OffsetByCopy(B_ORIGIN); + } + + void SetFrame(BRect frame) + { fFrame = frame; } - BRect Bounds() const; - BRect Frame() const; + BRect Frame() const + { return fFrame; } + private: - BRect f_frame; + BRect fFrame; }; class TSectionEdit: public BControl { public: - TSectionEdit(BRect frame, const char *name, uint32 sections); - ~TSectionEdit(); + TSectionEdit(BRect frame, const char *name, uint32 sections); + virtual ~TSectionEdit(); - virtual void AttachedToWindow(); - virtual void Draw(BRect); - virtual void MouseDown(BPoint); - virtual void KeyDown(const char *bytes, int32 numbytes); + virtual void AttachedToWindow(); + virtual void Draw(BRect updateRect); + virtual void MouseDown(BPoint point); + virtual void KeyDown(const char *bytes, int32 numBytes); - uint32 CountSections() const; - int32 FocusIndex() const; - BRect SectionArea() const; + uint32 CountSections() const; + int32 FocusIndex() const; + BRect SectionArea() const; + protected: - virtual void InitView(); + virtual void InitView(); + //hooks - virtual void DrawBorder(); - virtual void DrawSection(uint32 index, bool isfocus); - virtual void DrawSeperator(uint32 index); - virtual void Draw3DFrame(BRect frame, bool inset); + virtual void DrawBorder(); + virtual void DrawSection(uint32 index, bool isFocus) {} + virtual void DrawSeperator(uint32 index) {} + virtual void Draw3DFrame(BRect frame, bool inset); - virtual void SectionFocus(uint32 index); - virtual void SectionChange(uint32 index, uint32 value); - virtual void SetSections(BRect area); - virtual void GetSeperatorWidth(uint32 *width); + virtual void SectionFocus(uint32 index) {} + virtual void SectionChange(uint32 index, uint32 value) {} + virtual void SetSections(BRect area) {} + virtual float SeperatorWidth() const; - virtual void DoUpPress(); - virtual void DoDownPress(); + virtual void DoUpPress() {} + virtual void DoDownPress() {} - virtual void DispatchMessage(); - virtual void BuildDispatch(BMessage *) = 0; + virtual void DispatchMessage(); + virtual void BuildDispatch(BMessage *message) = 0; - BBitmap *f_up; - BBitmap *f_down; - BList *f_sections; + protected: + BBitmap *fUpArrow; + BBitmap *fDownArrow; + BList *fSectionList; - BRect f_uprect; - BRect f_downrect; - BRect f_sectionsarea; + BRect fUpRect; + BRect fDownRect; + BRect fSectionArea; - int32 f_focus; - uint32 f_sectioncount; - uint32 f_holdvalue; + int32 fFocus; + uint32 fSectionCount; + uint32 fHoldValue; - bool f_showfocus; + bool fShowFocus; }; #endif + diff --git a/src/preferences/time/SettingsView.cpp b/src/preferences/time/SettingsView.cpp index d33c6fcdc1..d0a7a35772 100644 --- a/src/preferences/time/SettingsView.cpp +++ b/src/preferences/time/SettingsView.cpp @@ -3,7 +3,8 @@ * Distributed under the terms of the MIT License. * * Authors: - * + * probably Mike Berg + * and/or Andrew McCall * Julun */ @@ -201,7 +202,7 @@ TSettingsView::UpdateDateTime(BMessage *message) && message->FindInt32("day", &day) == B_OK && message->FindInt32("year", &year) == B_OK) { - fDateEdit->SetTo(year, month, day); + fDateEdit->SetDate(year, month, day); fCalendar->SetTo(year, month, day); } @@ -212,8 +213,8 @@ TSettingsView::UpdateDateTime(BMessage *message) && message->FindInt32("minute", &minute) == B_OK && message->FindInt32("second", &second) == B_OK) { - fTimeEdit->SetTo(hour, minute, second); - fClock->SetTo(hour, minute, second); + fTimeEdit->SetTime(hour, minute, second); + fClock->SetTime(hour, minute, second); } } diff --git a/src/preferences/time/SettingsView.h b/src/preferences/time/SettingsView.h index 899d78e8b7..7c965f68cb 100644 --- a/src/preferences/time/SettingsView.h +++ b/src/preferences/time/SettingsView.h @@ -3,7 +3,8 @@ * Distributed under the terms of the MIT License. * * Authors: - * + * probably Mike Berg + * and/or Andrew McCall * Julun */ #ifndef SETTINGS_VIEW_H diff --git a/src/preferences/time/TZDisplay.cpp b/src/preferences/time/TZDisplay.cpp index dc786b30bf..f68ef77162 100644 --- a/src/preferences/time/TZDisplay.cpp +++ b/src/preferences/time/TZDisplay.cpp @@ -1,24 +1,35 @@ -#include -#include -#include +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * and/or Andrew McCall + * Julun + * + */ -#include - -#include "TimeMessages.h" #include "TZDisplay.h" -TTZDisplay::TTZDisplay(BRect frame, const char *name, - uint32 resizingmode, uint32 flags, - const char *label, const char *text, - int32 hour, int32 minute) - : BView(frame, name, resizingmode, flags) +namespace { + float _FontHeight() + { + font_height fontHeight; + be_plain_font->GetHeight(&fontHeight); + float height = ceil(fontHeight.descent) + ceil(fontHeight.ascent) + + ceil(fontHeight.leading); + return height; + } +} + + +TTZDisplay::TTZDisplay(BRect frame, const char *name, const char *label) + : BView(frame, name, B_FOLLOW_NONE, B_WILL_DRAW), + fLabel(label), + fText(""), + fTime("") { - f_label = new BString(label); - f_text = new BString(text); - f_time = new BString(); - - SetTo(hour, minute); } @@ -35,117 +46,88 @@ TTZDisplay::AttachedToWindow() } -void -TTZDisplay::MessageReceived(BMessage *message) -{ - switch(message->what) { - default: - BView::MessageReceived(message); - break; - } -} - - -static float -fontheight() -{ - font_height finfo; - be_plain_font->GetHeight(&finfo); - float height = ceil(finfo.descent) +ceil(finfo.ascent) +ceil(finfo.leading); - return height; -} - - void TTZDisplay::ResizeToPreferred() { - float height = fontheight(); + float height = _FontHeight(); ResizeTo(Bounds().Width(), height *2); } void -TTZDisplay::Draw(BRect updaterect) +TTZDisplay::Draw(BRect /* updateRect */) { BRect bounds(Bounds()); SetLowColor(ViewColor()); FillRect(bounds, B_SOLID_LOW); - float height = fontheight(); + float height = _FontHeight(); - BPoint drawpt(bounds.left +2, height/2.0 +1); - DrawString(f_label->String(), drawpt); + BPoint drawpt(bounds.left +2, height /2.0 +1); + DrawString(fLabel.String(), drawpt); - drawpt.y += fontheight() +2; - DrawString(f_text->String(), drawpt); + drawpt.y += height +2; + DrawString(fText.String(), drawpt); - drawpt.x = bounds.right -be_plain_font->StringWidth(f_time->String()) - 2; - DrawString(f_time->String(), drawpt); + drawpt.x = bounds.right -be_plain_font->StringWidth(fTime.String()) - 2; + DrawString(fTime.String(), drawpt); +} + + +const char* +TTZDisplay::Label() const +{ + return fLabel.String(); } void TTZDisplay::SetLabel(const char *label) { - f_label->SetTo(label); + fLabel.SetTo(label); Draw(Bounds()); } +const char* +TTZDisplay::Text() const +{ + return fText.String(); +} + + void TTZDisplay::SetText(const char *text) { - f_text->SetTo(text); + fText.SetTo(text); Draw(Bounds()); } -void -TTZDisplay::SetTo(int32 hour, int32 minute) +const char* +TTZDisplay::Time() const +{ + return fTime.String(); +} + + +void +TTZDisplay::SetTime(int32 hour, int32 minute) { - // format time into f_time - if (f_time == NULL) - f_time = new BString(); - else - f_time->SetTo(""); - int32 ahour = hour; - if (hour> 12) + if (hour > 12) ahour = hour -12; if (ahour == 0) ahour = 12; - char *ap; - if (hour> 11) + char *ap = "AM"; + if (hour > 11) ap = "PM"; - else - ap = "AM"; - char *time = f_time->LockBuffer(8); - sprintf(time, "%02lu:%02lu %s", ahour, minute, ap); - f_time->UnlockBuffer(8); - + fTime.SetTo(""); + fTime << ahour << ":" << minute << ":" << ap; + Invalidate(); } - -const char * -TTZDisplay::Text() const -{ - return f_text->String(); -} - - -const char * -TTZDisplay::Label() const -{ - return f_label->String(); -} - - -const char * -TTZDisplay::Time() const -{ - return f_time->String(); -} diff --git a/src/preferences/time/TZDisplay.h b/src/preferences/time/TZDisplay.h index 7ab78cdfca..b93f13ebfb 100644 --- a/src/preferences/time/TZDisplay.h +++ b/src/preferences/time/TZDisplay.h @@ -1,34 +1,45 @@ +/* + * Copyright 2004-2007, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * probably Mike Berg + * and/or Andrew McCall + * Julun + * + */ #ifndef TTZDISPLAY_H #define TTZDISPLAY_H + #include +#include -class TTZDisplay: public BView -{ + +class TTZDisplay : public BView { public: - TTZDisplay(BRect frame, const char *name, uint32 resizing, uint32 flags, - const char *label = B_EMPTY_STRING, - const char *name = B_EMPTY_STRING, - int32 hour = 0, int32 minute = 0); - ~TTZDisplay(); - virtual void AttachedToWindow(); - virtual void MessageReceived(BMessage *message); - virtual void ResizeToPreferred(); - - virtual void Draw(BRect); + TTZDisplay(BRect frame, const char *name, const char *label); + virtual ~TTZDisplay(); + + virtual void AttachedToWindow(); + virtual void ResizeToPreferred(); + virtual void Draw(BRect updateRect); + + const char* Label() const; + void SetLabel(const char *label); + + const char* Text() const; + void SetText(const char *text); + + const char* Time() const; + void SetTime(int32 hour, int32 minute); - virtual void SetLabel(const char *label); - virtual void SetText(const char *text); - virtual void SetTo(int32 hour, int32 minute); - - virtual const char *Label() const; - virtual const char *Text() const; - virtual const char *Time() const; private: - BString *f_label; - BString *f_text; - BString *f_time; + BString fLabel; + BString fText; + BString fTime; }; -#endif //TTZDISPLAY_H +#endif // TTZDISPLAY_H + diff --git a/src/preferences/time/Time.cpp b/src/preferences/time/Time.cpp index 3ed715628f..4d949da621 100644 --- a/src/preferences/time/Time.cpp +++ b/src/preferences/time/Time.cpp @@ -3,8 +3,8 @@ * Distributed under the terms of the MIT License. * * Authors: - * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg (inseculous) + * Andrew McCall + * Mike Berg * Julun */ diff --git a/src/preferences/time/Time.h b/src/preferences/time/Time.h index baca578219..c4c43392ad 100644 --- a/src/preferences/time/Time.h +++ b/src/preferences/time/Time.h @@ -4,7 +4,7 @@ * * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg (inseculous) + * Mike Berg * Julun */ #ifndef TIME_H diff --git a/src/preferences/time/TimeMessages.h b/src/preferences/time/TimeMessages.h index b314ed11df..fcc7690237 100644 --- a/src/preferences/time/TimeMessages.h +++ b/src/preferences/time/TimeMessages.h @@ -4,7 +4,7 @@ * * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg (inseculous) + * Mike Berg * Julun */ #ifndef TIME_MESSAGES_H diff --git a/src/preferences/time/TimeSettings.cpp b/src/preferences/time/TimeSettings.cpp index 825c474ece..b5efc48e8d 100644 --- a/src/preferences/time/TimeSettings.cpp +++ b/src/preferences/time/TimeSettings.cpp @@ -4,7 +4,7 @@ * * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg (inseculous) + * Mike Berg * Julun */ diff --git a/src/preferences/time/TimeSettings.h b/src/preferences/time/TimeSettings.h index 6496a48a6b..4b6eca3bae 100644 --- a/src/preferences/time/TimeSettings.h +++ b/src/preferences/time/TimeSettings.h @@ -4,7 +4,7 @@ * * Authors: * Andrew McCall, mccall@digitalparadise.co.uk - * Mike Berg (inseculous) + * Mike Berg * Julun */ #ifndef TIME_SETTINGS_H diff --git a/src/preferences/time/TimeWindow.cpp b/src/preferences/time/TimeWindow.cpp index 4eb7f6e63d..bcfeb7436c 100644 --- a/src/preferences/time/TimeWindow.cpp +++ b/src/preferences/time/TimeWindow.cpp @@ -3,7 +3,7 @@ * Distributed under the terms of the MIT License. * * Authors: - * mccall@@digitalparadise.co.uk + * Andrew McCall * Julun */ diff --git a/src/preferences/time/TimeWindow.h b/src/preferences/time/TimeWindow.h index b888738e73..ec3f568359 100644 --- a/src/preferences/time/TimeWindow.h +++ b/src/preferences/time/TimeWindow.h @@ -3,7 +3,7 @@ * Distributed under the terms of the MIT License. * * Authors: - * mccall@@digitalparadise.co.uk + * Andrew McCall * Julun */ #ifndef TIME_WINDOW_H diff --git a/src/preferences/time/ZoneView.cpp b/src/preferences/time/ZoneView.cpp index e2af5fb5ff..2d04cc050a 100644 --- a/src/preferences/time/ZoneView.cpp +++ b/src/preferences/time/ZoneView.cpp @@ -3,7 +3,7 @@ * Distributed under the terms of the MIT License. * * Authors: - * Mike Berg (inseculous) + * Mike Berg * Julun */ @@ -43,7 +43,7 @@ #include -class TZoneItem: public BStringItem { +class TZoneItem : public BStringItem { public: TZoneItem(const char *text, const char *zone) : BStringItem(text), fZone(new BPath(zone)) { } @@ -154,7 +154,7 @@ TZoneView::UpdateDateTime(BMessage *message) if (fHour != hour || fMinute != minute) { fHour = hour; fMinute = minute; - fCurrent->SetTo(hour, minute); + fCurrent->SetTime(hour, minute); // do calc to get other zone time if (fCityList->CurrentSelection() > -1) @@ -205,14 +205,12 @@ TZoneView::InitView() frameRight.top = frameLeft.top; // Time Displays - fCurrent = new TTZDisplay(frameRight, "current", - B_FOLLOW_NONE, B_WILL_DRAW, "Current time zone:", B_EMPTY_STRING); + fCurrent = new TTZDisplay(frameRight, "current", "Current time:"); AddChild(fCurrent); fCurrent->ResizeToPreferred(); frameRight.OffsetBy(0, (textHeight) * 3 +10.0); - fPreview = new TTZDisplay(frameRight, "preview", - B_FOLLOW_NONE, B_WILL_DRAW, "Time in: ", B_EMPTY_STRING); + fPreview = new TTZDisplay(frameRight, "preview", "Preview time:"); AddChild(fPreview); fPreview->ResizeToPreferred(); @@ -391,27 +389,25 @@ TZoneView::ReadTimeZoneLink() void TZoneView::SetPreview() { - // calc and display time based on users selection in city list int32 selection = fCityList->CurrentSelection(); - if (selection>= 0) { + if (selection >= 0) { TZoneItem *item = (TZoneItem *)fCityList->ItemAt(selection); - BString text; - text = item->Text(); - - time_t current; - struct tm *ltime; - - // calc time to display and update + // set timezone to selection SetTimeZone(item->Path()); - current = time(0); - ltime = localtime(¤t); + + // calc preview time + time_t current = time(0); + struct tm *ltime = localtime(¤t); + + // update prview + fPreview->SetText(item->Text()); + fPreview->SetTime(ltime->tm_hour, ltime->tm_min); + + // set timezone back to current SetTimeZone(fCurrentZone.Path()); - fPreview->SetTo(ltime->tm_hour, ltime->tm_min); - fPreview->SetText(text.String()); - - fSetZone->SetEnabled((strcmp(fCurrent->Text(), text.String()) != 0)); + fSetZone->SetEnabled((strcmp(fCurrent->Text(), item->Text()) != 0)); } } @@ -420,11 +416,12 @@ void TZoneView::SetCurrent(const char *text) { SetTimeZone(fCurrentZone.Path()); + time_t current = time(0); struct tm *ltime = localtime(¤t); - fCurrent->SetTo(ltime->tm_hour, ltime->tm_min); fCurrent->SetText(text); + fCurrent->SetTime(ltime->tm_hour, ltime->tm_min); } diff --git a/src/preferences/time/ZoneView.h b/src/preferences/time/ZoneView.h index 5a8babde1e..25a2957569 100644 --- a/src/preferences/time/ZoneView.h +++ b/src/preferences/time/ZoneView.h @@ -3,7 +3,7 @@ * Distributed under the terms of the MIT License. * * Authors: - * Mike Berg (inseculous) + * Mike Berg * Julun */ #ifndef ZONE_VIEW_H