Refactor code from previous commit.

* Check if offset is actually an error code and attempt to compensate
  At the very least don't use it as an offset (would be bad).
* Write to the output string directly instead of copying a temp string.
* Add a ToDo to check if day of week should go after time for locale
* Replace hardcoded 64 in GetCurrentDate().
This commit is contained in:
John Scipione
2012-11-16 19:48:46 -05:00
parent debbd7bd8a
commit ec469b21a0
+14 -10
View File
@@ -384,31 +384,35 @@ TTimeView::ShowCalendar(BPoint where)
void void
TTimeView::GetCurrentTime() TTimeView::GetCurrentTime()
{ {
char tmp[sizeof(fCurrentTimeStr)];
ssize_t offset = 0; ssize_t offset = 0;
if (fShowSeconds) { // ToDo: Check to see if we should write day of week after time for locale
fLocale.FormatTime(tmp, sizeof(fCurrentTimeStr), fCurrentTime,
B_MEDIUM_TIME_FORMAT);
} else {
fLocale.FormatTime(tmp, sizeof(fCurrentTimeStr), fCurrentTime,
B_SHORT_TIME_FORMAT);
}
if (fShowDayOfWeek) { if (fShowDayOfWeek) {
BString timeFormat("eee "); BString timeFormat("eee ");
offset = fLocale.FormatTime(fCurrentTimeStr, sizeof(fCurrentTimeStr), offset = fLocale.FormatTime(fCurrentTimeStr, sizeof(fCurrentTimeStr),
fCurrentTime, timeFormat); fCurrentTime, timeFormat);
if (offset < 0) {
// error occured, attempt to overwrite with current time
// (this should not ever happen)
fLocale.FormatTime(fCurrentTimeStr, sizeof(fCurrentTimeStr),
fCurrentTime,
fShowSeconds ? B_MEDIUM_TIME_FORMAT : B_SHORT_TIME_FORMAT);
return;
}
} }
strlcpy(fCurrentTimeStr + offset, tmp, sizeof(fCurrentTimeStr) - offset); fLocale.FormatTime(fCurrentTimeStr + offset,
sizeof(fCurrentTimeStr) - offset, fCurrentTime,
fShowSeconds ? B_MEDIUM_TIME_FORMAT : B_SHORT_TIME_FORMAT);
} }
void void
TTimeView::GetCurrentDate() TTimeView::GetCurrentDate()
{ {
char tmp[64]; char tmp[sizeof(fCurrentTimeStr)];
fLocale.FormatDate(tmp, sizeof(fCurrentDateStr), fCurrentTime, fLocale.FormatDate(tmp, sizeof(fCurrentDateStr), fCurrentTime,
B_FULL_DATE_FORMAT); B_FULL_DATE_FORMAT);