From 30516603620fc95f59246d70903ff1f51907d760 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Tue, 7 Oct 2014 13:07:44 +0200 Subject: [PATCH] Use BDateTimeFormat for deskbar clock * don't try to cook a custom format by appending strings, and instead let BDateTimeFormat decide on the appropriate format to use. --- src/apps/deskbar/TimeView.cpp | 40 +++++++++++------------------------ src/apps/deskbar/TimeView.h | 4 ++-- 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/src/apps/deskbar/TimeView.cpp b/src/apps/deskbar/TimeView.cpp index e7d6003034..ecc7219281 100644 --- a/src/apps/deskbar/TimeView.cpp +++ b/src/apps/deskbar/TimeView.cpp @@ -383,36 +383,20 @@ TTimeView::ShowCalendar(BPoint where) void TTimeView::GetCurrentTime() { - ssize_t offset_dow = 0; - ssize_t offset_time = 0; + int32 fields = B_DATE_ELEMENT_HOUR | B_DATE_ELEMENT_MINUTE; + if (fShowSeconds) + fields |= B_DATE_ELEMENT_SECOND; + if (fShowDayOfWeek) + fields |= B_DATE_ELEMENT_WEEKDAY; + if (fShowTimeZone) + fields |= B_DATE_ELEMENT_TIMEZONE; - // ToDo: Check to see if we should write day of week after time for locale + fTimeFormat.SetDateTimeFormat(B_SHORT_DATE_FORMAT, B_SHORT_TIME_FORMAT, + fields); - if (fShowDayOfWeek) { - BString timeFormat("eee "); - offset_dow = fTimeFormat.Format(fCurrentTimeStr, - sizeof(fCurrentTimeStr), fCurrentTime, timeFormat); - - if (offset_dow < 0) { - // error occured, attempt to overwrite with current time - // (this should not ever happen) - fTimeFormat.Format(fCurrentTimeStr, sizeof(fCurrentTimeStr), - fCurrentTime, - fShowSeconds ? B_MEDIUM_TIME_FORMAT : B_SHORT_TIME_FORMAT); - return; - } - } - - offset_time = fTimeFormat.Format(fCurrentTimeStr + offset_dow, - sizeof(fCurrentTimeStr) - offset_dow, fCurrentTime, - fShowSeconds ? B_MEDIUM_TIME_FORMAT : B_SHORT_TIME_FORMAT); - - if (fShowTimeZone) { - BString timeFormat(" V"); - ssize_t offset = offset_dow + offset_time; - fTimeFormat.Format(fCurrentTimeStr + offset, - sizeof(fCurrentTimeStr) - offset, fCurrentTime, timeFormat); - } + fTimeFormat.Format(fCurrentTimeStr, + sizeof(fCurrentTimeStr), fCurrentTime, + B_SHORT_DATE_FORMAT, B_SHORT_TIME_FORMAT); } diff --git a/src/apps/deskbar/TimeView.h b/src/apps/deskbar/TimeView.h index 7dde15809f..8569514155 100644 --- a/src/apps/deskbar/TimeView.h +++ b/src/apps/deskbar/TimeView.h @@ -37,10 +37,10 @@ All rights reserved. #include +#include #include #include #include -#include #include @@ -151,7 +151,7 @@ private: // For date and time localization purposes BLocale fLocale; BDateFormat fDateFormat; - BTimeFormat fTimeFormat; + BDateTimeFormat fTimeFormat; };