OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/status/clock_menu_button.h" | 5 #include "chrome/browser/chromeos/status/clock_menu_button.h" |
6 | 6 |
7 #include "base/i18n/time_formatting.h" | 7 #include "base/i18n/time_formatting.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/time.h" | 9 #include "base/time.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 timer_.Start(base::TimeDelta::FromSeconds(seconds_left), this, | 81 timer_.Start(base::TimeDelta::FromSeconds(seconds_left), this, |
82 &ClockMenuButton::UpdateTextAndSetNextTimer); | 82 &ClockMenuButton::UpdateTextAndSetNextTimer); |
83 } | 83 } |
84 | 84 |
85 void ClockMenuButton::UpdateText() { | 85 void ClockMenuButton::UpdateText() { |
86 base::Time time(base::Time::Now()); | 86 base::Time time(base::Time::Now()); |
87 // If the profie is present, check the use 24-hour clock preference. | 87 // If the profie is present, check the use 24-hour clock preference. |
88 const bool use_24hour_clock = | 88 const bool use_24hour_clock = |
89 host_->GetProfile() && | 89 host_->GetProfile() && |
90 host_->GetProfile()->GetPrefs()->GetBoolean(prefs::kUse24HourClock); | 90 host_->GetProfile()->GetPrefs()->GetBoolean(prefs::kUse24HourClock); |
91 if (use_24hour_clock) { | 91 SetText(UTF16ToWide(base::TimeFormatTimeOfDayWithHourClockType( |
92 SetText(UTF16ToWide(base::TimeFormatTimeOfDayWithHourClockType( | 92 time, |
93 time, base::k24HourClock))); | 93 use_24hour_clock ? base::k24HourClock : base::k12HourClock, |
94 } else { | 94 base::kDropAmPm))); |
95 // Remove the am/pm field if it's present. | |
96 scoped_ptr<icu::DateFormat> formatter( | |
97 icu::DateFormat::createTimeInstance(icu::DateFormat::kShort)); | |
98 icu::UnicodeString time_string; | |
99 icu::FieldPosition ampm_field(icu::DateFormat::kAmPmField); | |
100 formatter->format( | |
101 static_cast<UDate>(time.ToDoubleT() * 1000), time_string, ampm_field); | |
102 int ampm_length = ampm_field.getEndIndex() - ampm_field.getBeginIndex(); | |
103 if (ampm_length) { | |
104 int begin = ampm_field.getBeginIndex(); | |
105 // Doesn't include any spacing before the field. | |
106 if (begin) | |
107 begin--; | |
108 time_string.removeBetween(begin, ampm_field.getEndIndex()); | |
109 } | |
110 string16 time_string16 = | |
111 string16(time_string.getBuffer(), | |
112 static_cast<size_t>(time_string.length())); | |
113 SetText(UTF16ToWide(time_string16)); | |
114 } | |
115 SetTooltipText(UTF16ToWide(base::TimeFormatShortDate(time))); | 95 SetTooltipText(UTF16ToWide(base::TimeFormatShortDate(time))); |
116 SchedulePaint(); | 96 SchedulePaint(); |
117 } | 97 } |
118 | 98 |
119 // ClockMenuButton, NotificationObserver implementation: | 99 // ClockMenuButton, NotificationObserver implementation: |
120 | 100 |
121 void ClockMenuButton::Observe(NotificationType type, | 101 void ClockMenuButton::Observe(NotificationType type, |
122 const NotificationSource& source, | 102 const NotificationSource& source, |
123 const NotificationDetails& details) { | 103 const NotificationDetails& details) { |
124 if (type == NotificationType::PREF_CHANGED) { | 104 if (type == NotificationType::PREF_CHANGED) { |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 const string16 clock_open_options_label = | 191 const string16 clock_open_options_label = |
212 l10n_util::GetStringUTF16(IDS_STATUSBAR_CLOCK_OPEN_OPTIONS_DIALOG); | 192 l10n_util::GetStringUTF16(IDS_STATUSBAR_CLOCK_OPEN_OPTIONS_DIALOG); |
213 menu_->AppendMenuItemWithLabel( | 193 menu_->AppendMenuItemWithLabel( |
214 CLOCK_OPEN_OPTIONS_ITEM, | 194 CLOCK_OPEN_OPTIONS_ITEM, |
215 UTF16ToWide(clock_open_options_label)); | 195 UTF16ToWide(clock_open_options_label)); |
216 } | 196 } |
217 } | 197 } |
218 } | 198 } |
219 | 199 |
220 } // namespace chromeos | 200 } // namespace chromeos |
OLD | NEW |