* Notify the TimeView in Deskbar when a locale change occurs, so it can update its size.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37677 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Adrien Destugues
2010-07-22 09:13:47 +00:00
parent df2945b3c5
commit ab58e877e8
2 changed files with 18 additions and 9 deletions
+5
View File
@@ -516,6 +516,11 @@ TBarApp::MessageReceived(BMessage* message)
case B_LOCALE_CHANGED: case B_LOCALE_CHANGED:
{ {
be_locale_roster->UpdateSettings(message); be_locale_roster->UpdateSettings(message);
BMessenger(fBarWindow->FindView("_deskbar_tv_")).SendMessage(
message);
// Notify the TimeView that the format has changed and it should
// recompute its size
break; break;
} }
+13 -9
View File
@@ -71,7 +71,7 @@ enum {
TTimeView::TTimeView(float maxWidth, float height, bool showSeconds, TTimeView::TTimeView(float maxWidth, float height, bool showSeconds,
bool fullDate, bool) bool fullDate, bool)
: :
BView(BRect(-100,-100,-90,-90), "_deskbar_tv_", BView(BRect(-100, -100, -90, -90), "_deskbar_tv_",
B_FOLLOW_RIGHT | B_FOLLOW_TOP, B_FOLLOW_RIGHT | B_FOLLOW_TOP,
B_WILL_DRAW | B_PULSE_NEEDED | B_FRAME_EVENTS), B_WILL_DRAW | B_PULSE_NEEDED | B_FRAME_EVENTS),
fParent(NULL), fParent(NULL),
@@ -90,7 +90,7 @@ TTimeView::TTimeView(float maxWidth, float height, bool showSeconds,
fLastTimeStr[0] = 0; fLastTimeStr[0] = 0;
fLastDateStr[0] = 0; fLastDateStr[0] = 0;
fNeedToUpdate = true; fNeedToUpdate = true;
be_locale_roster->GetDefaultCountry(&fHere); be_locale_roster->GetDefaultCountry(&fHere);
} }
@@ -104,7 +104,7 @@ TTimeView::TTimeView(BMessage* data)
data->FindBool("fulldate", &fFullDate); data->FindBool("fulldate", &fFullDate);
data->FindBool("interval", &fInterval); data->FindBool("interval", &fInterval);
fShowingDate = false; fShowingDate = false;
be_locale_roster->GetDefaultCountry(&fHere); be_locale_roster->GetDefaultCountry(&fHere);
} }
#endif #endif
@@ -215,6 +215,10 @@ TTimeView::MessageReceived(BMessage* message)
ShowSeconds(!ShowingSeconds()); ShowSeconds(!ShowingSeconds());
break; break;
case B_LOCALE_CHANGED:
Update();
break;
case kChangeClock: case kChangeClock:
// launch the time prefs app // launch the time prefs app
be_roster->Launch("application/x-vnd.Haiku-Time"); be_roster->Launch("application/x-vnd.Haiku-Time");
@@ -304,12 +308,12 @@ TTimeView::GetCurrentTime()
{ {
// TODO : should this be another function ? // TODO : should this be another function ?
tm time = *localtime(&fTime); tm time = *localtime(&fTime);
fSeconds = time.tm_sec; fSeconds = time.tm_sec;
fMinute = time.tm_min; fMinute = time.tm_min;
fHour = time.tm_hour; fHour = time.tm_hour;
fHere->FormatTime(fTimeStr, 64, fTime, fShowSeconds); fHere->FormatTime(fTimeStr, 64, fTime, fShowSeconds);
} }
@@ -318,7 +322,7 @@ TTimeView::GetCurrentDate()
{ {
char tmp[64]; char tmp[64];
fHere->FormatDate(tmp, 64, fTime, fFullDate && CanShowFullDate()); fHere->FormatDate(tmp, 64, fTime, fFullDate && CanShowFullDate());
// remove leading 0 from date when month is less than 10 (MM/DD/YY) // remove leading 0 from date when month is less than 10 (MM/DD/YY)
// or remove leading 0 from date when day is less than 10 (DD/MM/YY) // or remove leading 0 from date when day is less than 10 (DD/MM/YY)
@@ -502,8 +506,8 @@ TTimeView::CalculateTextPlacement()
font.GetBoundingBoxesForStrings(stringArray, 1, B_SCREEN_METRIC, &delta, font.GetBoundingBoxesForStrings(stringArray, 1, B_SCREEN_METRIC, &delta,
rectArray); rectArray);
fTimeLocation.y = fDateLocation.y = ceilf((bounds.Height() - fTimeLocation.y = fDateLocation.y = ceilf((bounds.Height()
rectArray[0].Height() + 1.0) / 2.0 - rectArray[0].top); - rectArray[0].Height() + 1.0) / 2.0 - rectArray[0].top);
} }