2 * Copyright 2004-2007, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
6 * Mike Berg <mike@berg-net.us>
7 * Julun <host.haiku@gmx.de>
16 #include "TimeMessages.h"
19 TTimeBaseView::TTimeBaseView(const char* name
)
21 BGroupView(name
, B_VERTICAL
, 0),
22 fMessage(H_TIME_UPDATE
)
24 SetFlags(Flags() | B_PULSE_NEEDED
);
28 TTimeBaseView::~TTimeBaseView()
34 TTimeBaseView::Pulse()
42 TTimeBaseView::AttachedToWindow()
44 SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR
));
49 TTimeBaseView::ChangeTime(BMessage
* message
)
52 if (message
->FindBool("time", &isTime
) != B_OK
)
55 BDateTime dateTime
= BDateTime::CurrentDateTime(B_LOCAL_TIME
);
58 BTime time
= dateTime
.Time();
60 if (message
->FindInt32("hour", &hour
) != B_OK
)
64 if (message
->FindInt32("minute", &minute
) != B_OK
)
65 minute
= time
.Minute();
68 if (message
->FindInt32("second", &second
) != B_OK
)
69 second
= time
.Second();
71 time
.SetTime(hour
, minute
, second
);
72 dateTime
.SetTime(time
);
74 BDate date
= dateTime
.Date();
76 if (message
->FindInt32("day", &day
) != B_OK
)
80 if (message
->FindInt32("year", &year
) != B_OK
)
84 if (message
->FindInt32("month", &month
) != B_OK
)
87 if (year
>= 1970 && year
<= 2037) {
88 date
.SetDate(year
, month
, day
);
89 dateTime
.SetDate(date
);
93 set_real_time_clock(dateTime
.Time_t());
98 TTimeBaseView::_SendNotices()
100 fMessage
.MakeEmpty();
102 BDate date
= BDate::CurrentDate(B_LOCAL_TIME
);
103 fMessage
.AddInt32("day", date
.Day());
104 fMessage
.AddInt32("year", date
.Year());
105 fMessage
.AddInt32("month", date
.Month());
107 BTime time
= BTime::CurrentTime(B_LOCAL_TIME
);
108 fMessage
.AddInt32("hour", time
.Hour());
109 fMessage
.AddInt32("minute", time
.Minute());
110 fMessage
.AddInt32("second", time
.Second());
112 SendNotices(H_TM_CHANGED
, &fMessage
);