From 3592a737f7ab2b62054b086b883baea096a8d750 Mon Sep 17 00:00:00 2001 From: Guillaume Marty Date: Mon, 15 Sep 2014 14:39:51 +0200 Subject: [PATCH] Bug 1057977 - [Status Bar] Remove AM/PM indicator --- apps/system/js/statusbar.js | 16 ++++++++++++++-- apps/system/test/unit/statusbar_test.js | 21 +++++++++++++++++++++ build/config/common-settings.json | 1 + 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/apps/system/js/statusbar.js b/apps/system/js/statusbar.js index 467eb2e55aa4..0cbdb045fbe7 100644 --- a/apps/system/js/statusbar.js +++ b/apps/system/js/statusbar.js @@ -108,7 +108,8 @@ var StatusBar = { 'vibration.enabled': ['vibration'], 'ril.cf.enabled': ['callForwarding'], 'operatorResources.data.icon': ['iconData'], - 'statusbar.network-activity.disabled': ['networkActivity'] + 'statusbar.network-activity.disabled': ['networkActivity'], + 'statusbar.show-am-pm': ['time'] }, /* Track which settings are observed, so we don't add multiple listeners. */ @@ -621,6 +622,16 @@ var StatusBar = { return iconWidth; }, + _getTimeFormat: function sb_getTimeFormat(timeFormat) { + if (this.settingValues['statusbar.show-am-pm']) { + timeFormat = timeFormat.replace('%p', '%p'); + } else { + timeFormat = timeFormat.replace('%p', '').trim(); + } + + return timeFormat; + }, + panelHandler: function sb_panelHandler(evt) { var app = AppWindowManager.getActiveApp().getTopMostWindow(); var chromeBar = app.element.querySelector('.chrome'); @@ -918,12 +929,13 @@ var StatusBar = { }, time: function sb_updateTime(now) { + now = now || new Date(); var _ = navigator.mozL10n.get; var f = new navigator.mozL10n.DateTimeFormat(); var timeFormat = window.navigator.mozHour12 ? _('shortTimeFormat12') : _('shortTimeFormat24'); - timeFormat = timeFormat.replace('%p', '%p'); + timeFormat = this._getTimeFormat(timeFormat); var formatted = f.localeFormat(now, timeFormat); this.icons.time.innerHTML = formatted; diff --git a/apps/system/test/unit/statusbar_test.js b/apps/system/test/unit/statusbar_test.js index 227f7128f66d..20d5a3b8fbf0 100644 --- a/apps/system/test/unit/statusbar_test.js +++ b/apps/system/test/unit/statusbar_test.js @@ -1818,6 +1818,27 @@ suite('system/Statusbar', function() { }); }); + suite('Time format', function() { + test('should be 24 hour', function() { + var timeFormat = StatusBar._getTimeFormat('shortTimeFormat24'); + assert.equal(timeFormat, 'shortTimeFormat24'); + }); + + test('should be 12 hour with AM/PM', function() { + StatusBar.settingValues['statusbar.show-am-pm'] = true; + + var timeFormat = StatusBar._getTimeFormat('123 %p'); + assert.equal(timeFormat, '123 %p'); + }); + + test('should be 12 hour without AM/PM', function() { + StatusBar.settingValues['statusbar.show-am-pm'] = false; + + var timeFormat = StatusBar._getTimeFormat('123 %p'); + assert.equal(timeFormat, '123'); + }); + }); + suite('Icons', function() { test('visibility should be updated on screen resize', function() { var spyUpdateIconVisibility = diff --git a/build/config/common-settings.json b/build/config/common-settings.json index 3ffa6c9d01b3..a257b0341c5b 100644 --- a/build/config/common-settings.json +++ b/build/config/common-settings.json @@ -193,6 +193,7 @@ "homegesture.enabled": false, "edgesgesture.enabled": true, "continuous-transition.enabled": false, + "statusbar.show-am-pm": true, "support.onlinesupport.title": "", "support.onlinesupport.href": "", "support.callsupport1.title": "",