Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2066)

Unified Diff: chrome/browser/chromeos/status/clock_menu_button.cc

Issue 8930001: Fix up status area clock code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/status/clock_menu_button.cc
diff --git a/chrome/browser/chromeos/status/clock_menu_button.cc b/chrome/browser/chromeos/status/clock_menu_button.cc
index b030faa6eb0f7d038ff43c37e277ee9619f66d5c..737f7856f485759d4723199218af82516abe46f1 100644
--- a/chrome/browser/chromeos/status/clock_menu_button.cc
+++ b/chrome/browser/chromeos/status/clock_menu_button.cc
@@ -43,22 +43,30 @@ const int kTimerSlopSeconds = 1;
ClockMenuButton::ClockMenuButton(StatusAreaButton::Delegate* delegate)
: StatusAreaButton(delegate, this),
- default_use_24hour_clock_(false) {
+ pref_service_(NULL),
+ use_24hour_clock_(false) {
set_id(VIEW_ID_STATUS_BUTTON_CLOCK);
+ UpdateProfile();
+ UpdateTextAndSetNextTimer();
+}
+ClockMenuButton::~ClockMenuButton() {
+ timer_.Stop();
+}
+
+void ClockMenuButton::UpdateProfile() {
#if defined(OS_CHROMEOS) // See note at top of file
// Start monitoring the kUse24HourClock preference.
Profile* profile = ProfileManager::GetDefaultProfile();
- if (profile) { // This can be NULL in the login screen.
- registrar_.Init(profile->GetPrefs());
- registrar_.Add(prefs::kUse24HourClock, this);
+ if (profile && profile->GetPrefs() != pref_service_) {
+ pref_service_ = profile->GetPrefs();
+ use_24hour_clock_ = pref_service_->GetBoolean(prefs::kUse24HourClock);
+ registrar_.reset(new PrefChangeRegistrar);
+ registrar_->Init(pref_service_);
+ registrar_->Add(prefs::kUse24HourClock, this);
+ UpdateText();
}
#endif
- UpdateTextAndSetNextTimer();
-}
-
-ClockMenuButton::~ClockMenuButton() {
- timer_.Stop();
}
void ClockMenuButton::UpdateTextAndSetNextTimer() {
@@ -87,27 +95,20 @@ void ClockMenuButton::UpdateTextAndSetNextTimer() {
void ClockMenuButton::UpdateText() {
base::Time time(base::Time::Now());
- bool use_24hour_clock = default_use_24hour_clock_;
-#if defined(OS_CHROMEOS) // See note at top of file
- // If the profie is present, check the use 24-hour clock preference.
- Profile* profile = ProfileManager::GetDefaultProfile();
- if (profile)
- use_24hour_clock = profile->GetPrefs()->GetBoolean(prefs::kUse24HourClock);
-#endif
SetText(base::TimeFormatTimeOfDayWithHourClockType(
time,
- use_24hour_clock ? base::k24HourClock : base::k12HourClock,
+ use_24hour_clock_ ? base::k24HourClock : base::k12HourClock,
base::kDropAmPm));
- SetTooltipText(base::TimeFormatFriendlyDateAndTime(time));
- SetAccessibleName(base::TimeFormatFriendlyDateAndTime(time));
+ string16 friendly_time_string(base::TimeFormatFriendlyDateAndTime(time));
+ SetTooltipText(friendly_time_string);
+ SetAccessibleName(friendly_time_string);
SchedulePaint();
}
-void ClockMenuButton::SetDefaultUse24HourClock(bool use_24hour_clock) {
- if (default_use_24hour_clock_ == use_24hour_clock)
+void ClockMenuButton::SetUse24HourClock(bool use_24hour_clock) {
+ if (use_24hour_clock_ == use_24hour_clock)
return;
-
- default_use_24hour_clock_ = use_24hour_clock;
+ use_24hour_clock_ = use_24hour_clock;
UpdateText();
}
@@ -120,7 +121,11 @@ void ClockMenuButton::Observe(int type,
if (type == chrome::NOTIFICATION_PREF_CHANGED) {
std::string* pref_name = content::Details<std::string>(details).ptr();
if (*pref_name == prefs::kUse24HourClock) {
- UpdateText();
+ Profile* profile = ProfileManager::GetDefaultProfile();
+ if (profile) {
+ SetUse24HourClock(
+ profile->GetPrefs()->GetBoolean(prefs::kUse24HourClock));
+ }
}
}
#endif
@@ -143,6 +148,13 @@ void ClockMenuButton::ExecuteCommand(int id) {
this, StatusAreaButton::Delegate::SHOW_SYSTEM_OPTIONS);
}
+// StatusAreaButton implementation
+void ClockMenuButton::SetMenuActive(bool active) {
+ // Activation gets updated when we change login state, so profile may change.
+ UpdateProfile();
+ StatusAreaButton::SetMenuActive(active);
+}
+
int ClockMenuButton::horizontal_padding() {
return 3;
}

Powered by Google App Engine
This is Rietveld 408576698