From c1751e36d246feceb886dcf32a915a68938a685e Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sat, 3 Feb 2024 00:41:34 -0500
Subject: [PATCH] Add option to show seconds in status bar clock in status bar
 right click menu

---
 indra/newview/app_settings/settings_alchemy.xml       | 11 +++++++++++
 indra/newview/llstatusbar.cpp                         |  8 +++++---
 .../newview/skins/default/xui/en/menu_hide_navbar.xml | 11 +++++++++++
 .../newview/skins/default/xui/en/panel_status_bar.xml |  4 ++++
 4 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index bfb8c74af03..c6ba14575ec 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -1445,6 +1445,17 @@
 			<key>Value</key>
 			<integer>1</integer>
 		</map>
+		<key>ShowStatusBarSeconds</key>
+		<map>
+			<key>Comment</key>
+			<string>Show seconds in the statusbar clock</string>
+			<key>Persist</key>
+			<integer>1</integer>
+			<key>Type</key>
+			<string>Boolean</string>
+			<key>Value</key>
+			<integer>0</integer>
+		</map>
 		<key>ShowStreamInfo</key>
 		<map>
 			<key>Comment</key>
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 25fb8594ab9..df0b68a2cd8 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -174,7 +174,7 @@ BOOL LLStatusBar::postBuild()
 
 	mPanelPopupHolder = gViewerWindow->getRootView()->getChildView("popup_holder");
 
-	mTextTime = getChild<LLTextBox>("TimeText" );
+	mTextTime = getChild<LLTextBox>("TimeText");
 	
 	mBtnBuyL = getChild<LLButton>("buyL");
 	mBtnBuyL->setCommitCallback(boost::bind(&LLStatusBar::onClickBuyCurrency, this));
@@ -320,6 +320,7 @@ void LLStatusBar::refresh()
 {
 	static LLCachedControl<bool> show_net_stats(gSavedSettings, "ShowNetStats", false);
 	static LLCachedControl<bool> show_fps(gSavedSettings, "ShowStatusBarFPS", false);
+	static LLCachedControl<bool> show_clock_seconds(gSavedSettings, "ShowStatusBarSeconds", false);
 	bool net_stats_visible = show_net_stats;
 
 	if (net_stats_visible)
@@ -334,7 +335,7 @@ void LLStatusBar::refresh()
 	}
 	
 	// update clock every 10 seconds
-	if(mClockUpdateTimer.getElapsedTimeF32() > 10.f)
+	if(mClockUpdateTimer.getElapsedTimeF32() > 10.f || (show_clock_seconds && mClockUpdateTimer.getElapsedTimeF32() > 1.f))
 	{
 		mClockUpdateTimer.reset();
 
@@ -344,7 +345,8 @@ void LLStatusBar::refresh()
 		utc_time = time_corrected();
 
 		static const std::string timeStrTemplate = getString("time");
-		std::string timeStr = timeStrTemplate;
+		static const std::string timeStrSecondsTemplate = getString("timeSeconds");
+		std::string timeStr = show_clock_seconds ? timeStrSecondsTemplate : timeStrTemplate;
 		LLSD substitution;
 		substitution["datetime"] = (S32) utc_time;
 		LLStringUtil::format (timeStr, substitution);
diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
index 1837e7df1bd..d97dc4889af 100644
--- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
@@ -53,4 +53,15 @@
 		function="CheckControl"
 		parameter="ShowNetStats" />
 	</menu_item_check>
+	<menu_item_check
+         label="Show seconds in clock"
+         layout="topleft"
+         name="ShowStatusBarSeconds">
+		<on_click
+		  function="ToggleControl"
+		  parameter="ShowStatusBarSeconds" />
+		<on_check
+		function="CheckControl"
+		parameter="ShowStatusBarSeconds" />
+	</menu_item_check>
 </menu>
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index e30c6656caa..c797b265324 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -24,6 +24,10 @@
      name="time">
         [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
     </panel.string>
+	<panel.string
+     name="timeSeconds">
+		[hour12, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
+	</panel.string>
     <panel.string
      name="timeTooltip">
         [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-- 
GitLab