Skip to content

Commit 0030929

Browse files
committed
viewer#2172 AM/PM selector
1 parent 92c3cbb commit 0030929

25 files changed

+201
-50
lines changed

indra/newview/app_settings/settings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13036,9 +13036,9 @@
1303613036
<key>Use24HourClock</key>
1303713037
<map>
1303813038
<key>Comment</key>
13039-
<string>12 vs 24. At the moment only for region restart schedule floater</string>
13039+
<string>12 vs 24. At the moment coverage is partial</string>
1304013040
<key>Persist</key>
13041-
<integer>0</integer>
13041+
<integer>1</integer>
1304213042
<key>Type</key>
1304313043
<string>Boolean</string>
1304413044
<key>Value</key>

indra/newview/llchathistory.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ class LLChatHistoryHeader: public LLPanel
441441
time_t current_time = time_corrected();
442442
time_t message_time = (time_t)(current_time - LLFrameTimer::getElapsedSeconds() + mTime);
443443

444+
// Report abuse shouldn't use AM/PM, use 24-hour time
444445
time_string = "[" + LLTrans::getString("TimeMonth") + "]/["
445446
+ LLTrans::getString("TimeDay") + "]/["
446447
+ LLTrans::getString("TimeYear") + "] ["

indra/newview/llconversationlog.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,21 @@ const std::string LLConversation::createTimestamp(const U64Seconds& utc_time)
118118
LLSD substitution;
119119
substitution["datetime"] = (S32)utc_time.value();
120120

121-
timeStr = "["+LLTrans::getString ("TimeMonth")+"]/["
122-
+LLTrans::getString ("TimeDay")+"]/["
123-
+LLTrans::getString ("TimeYear")+"] ["
124-
+LLTrans::getString ("TimeHour")+"]:["
125-
+LLTrans::getString ("TimeMin")+"]";
121+
static bool use_24h = gSavedSettings.getBOOL("Use24HourClock");
122+
timeStr = "[" + LLTrans::getString("TimeMonth") + "]/["
123+
+ LLTrans::getString("TimeDay") + "]/["
124+
+ LLTrans::getString("TimeYear") + "] [";
125+
if (use_24h)
126+
{
127+
timeStr += LLTrans::getString("TimeHour") + "]:["
128+
+ LLTrans::getString("TimeMin") + "]";
129+
}
130+
else
131+
{
132+
timeStr += LLTrans::getString("TimeHour12") + "]:["
133+
+ LLTrans::getString("TimeMin") + "] ["
134+
+ LLTrans::getString("TimeAMPM") + "]";
135+
}
126136

127137

128138
LLStringUtil::format (timeStr, substitution);

indra/newview/llfloaterimsessiontab.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -618,8 +618,19 @@ void LLFloaterIMSessionTab::deleteAllChildren()
618618

619619
std::string LLFloaterIMSessionTab::appendTime()
620620
{
621-
std::string timeStr = "[" + LLTrans::getString("TimeHour") + "]:"
622-
"[" + LLTrans::getString("TimeMin") + "]";
621+
std::string timeStr;
622+
static bool use_24h = gSavedSettings.getBOOL("Use24HourClock");
623+
if (use_24h)
624+
{
625+
timeStr = "[" + LLTrans::getString("TimeHour") + "]:"
626+
"[" + LLTrans::getString("TimeMin") + "]";
627+
}
628+
else
629+
{
630+
timeStr = "[" + LLTrans::getString("TimeHour12") + "]:"
631+
"[" + LLTrans::getString("TimeMin") + "] ["
632+
+ LLTrans::getString("TimeAMPM") + "]";
633+
}
623634

624635
LLSD substitution;
625636
substitution["datetime"] = (S32)time_corrected();

indra/newview/llfloaterinspect.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ void LLFloaterInspect::refresh()
220220
}
221221

222222
time_t timestamp = (time_t) (obj->mCreationDate/1000000);
223-
std::string timeStr = getString("timeStamp");
223+
static bool use_24h = gSavedSettings.getBOOL("Use24HourClock");
224+
std::string timeStr = use_24h ? getString("timeStamp") : getString("timeStampAMPM");
224225
LLSD substitution;
225226
substitution["datetime"] = (S32) timestamp;
226227
LLStringUtil::format (timeStr, substitution);

indra/newview/llfloaterland.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,8 @@ void LLPanelLandGeneral::refresh()
733733

734734
// Display claim date
735735
time_t claim_date = parcel->getClaimDate();
736-
std::string claim_date_str = getString("time_stamp_template");
736+
static bool use_24h = gSavedSettings.getBOOL("Use24HourClock");
737+
std::string claim_date_str = use_24h ? getString("time_stamp_template") : getString("time_stamp_template_ampm");
737738
LLSD substitution;
738739
substitution["datetime"] = (S32) claim_date;
739740
LLStringUtil::format (claim_date_str, substitution);

indra/newview/llfloaterpreference.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,8 @@ bool LLFloaterPreference::postBuild()
475475
getChild<LLUICtrl>("log_path_string")->setEnabled(false); // make it read-only but selectable
476476

477477
getChild<LLComboBox>("language_combobox")->setCommitCallback(boost::bind(&LLFloaterPreference::onLanguageChange, this));
478+
mTimeFormatCombobox = getChild<LLComboBox>("time_format_combobox");
479+
mTimeFormatCombobox->setCommitCallback(boost::bind(&LLFloaterPreference::onTimeFormatChange, this));
478480

479481
getChild<LLComboBox>("FriendIMOptions")->setCommitCallback(boost::bind(&LLFloaterPreference::onNotificationsChange, this,"FriendIMOptions"));
480482
getChild<LLComboBox>("NonFriendIMOptions")->setCommitCallback(boost::bind(&LLFloaterPreference::onNotificationsChange, this,"NonFriendIMOptions"));
@@ -1103,6 +1105,13 @@ void LLFloaterPreference::onLanguageChange()
11031105
}
11041106
}
11051107

1108+
void LLFloaterPreference::onTimeFormatChange()
1109+
{
1110+
std::string val = mTimeFormatCombobox->getValue();
1111+
gSavedSettings.setBOOL("Use24HourClock", val == "1");
1112+
onLanguageChange();
1113+
}
1114+
11061115
void LLFloaterPreference::onNotificationsChange(const std::string& OptionName)
11071116
{
11081117
mNotificationOptions[OptionName] = getChild<LLComboBox>(OptionName)->getSelectedItemLabel();
@@ -1318,6 +1327,8 @@ void LLFloaterPreference::refresh()
13181327
advanced->refresh();
13191328
}
13201329
updateClickActionViews();
1330+
1331+
mTimeFormatCombobox->selectByValue(gSavedSettings.getBOOL("Use24HourClock") ? "1" : "0");
13211332
}
13221333

13231334
void LLFloaterPreference::onCommitWindowedMode()

indra/newview/llfloaterpreference.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver,
117117
void onClickClearCache(); // Clear viewer texture cache, file cache on next startup
118118
void onClickBrowserClearCache(); // Clear web history and caches as well as viewer caches above
119119
void onLanguageChange();
120+
void onTimeFormatChange();
120121
void onNotificationsChange(const std::string& OptionName);
121122
void onNameTagOpacityChange(const LLSD& newvalue);
122123

@@ -235,6 +236,7 @@ class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver,
235236
LLButton* mDeleteTranscriptsBtn = nullptr;
236237
LLButton* mEnablePopupBtn = nullptr;
237238
LLButton* mDisablePopupBtn = nullptr;
239+
LLComboBox* mTimeFormatCombobox = nullptr;
238240
std::unique_ptr< ll::prefs::SearchData > mSearchData;
239241
bool mSearchDataDirty;
240242

indra/newview/lllogchat.cpp

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ const static std::string MULTI_LINE_PREFIX(" ");
8080
*
8181
* Note: "You" was used as an avatar names in viewers of previous versions
8282
*/
83-
const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}\\]\\s+|\\[\\d{1,2}:\\d{2}\\]\\s+)?(.*)$");
84-
const static boost::regex TIMESTAMP("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}\\]|\\[\\d{1,2}:\\d{2}\\]).*");
83+
const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}\\s[AaPp][Mm]\\]\\s+|\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}\\]\\s+|\\[\\d{1,2}:\\d{2}\\s[AaPp][Mm]\\]\\s+|\\[\\d{1,2}:\\d{2}\\]\\s+)?(.*)$");
84+
const static boost::regex TIMESTAMP("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}(\\s[AaPp][Mm])?\\]|\\[\\d{1,2}:\\d{2}(\\s[AaPp][Mm])?\\]).*");
8585

8686
/**
8787
* Regular expression suitable to match names like
@@ -152,6 +152,10 @@ class LLLogChatTimeScanner: public LLSingleton<LLLogChatTimeScanner>
152152

153153
void checkAndCutOffDate(std::string& time_str)
154154
{
155+
if (time_str.size() < 10) // not enough space for a date
156+
{
157+
return;
158+
}
155159
// Cuts off the "%Y/%m/%d" from string for todays timestamps.
156160
// Assume that passed string has at least "%H:%M" time format.
157161
date log_date(not_a_date_time);
@@ -168,20 +172,12 @@ class LLLogChatTimeScanner: public LLSingleton<LLLogChatTimeScanner>
168172

169173
if ( days_alive == zero_days )
170174
{
171-
// Yep, today's so strip "%Y/%m/%d" info
172-
ptime stripped_time(not_a_date_time);
173-
174-
mTimeStream.str(LLStringUtil::null);
175-
mTimeStream << time_str;
176-
mTimeStream >> stripped_time;
177-
mTimeStream.clear();
178-
179-
time_str.clear();
180-
181-
mTimeStream.str(LLStringUtil::null);
182-
mTimeStream << stripped_time;
183-
mTimeStream >> time_str;
184-
mTimeStream.clear();
175+
size_t pos = time_str.find_first_of(' ');
176+
if (pos != std::string::npos)
177+
{
178+
time_str.erase(0, pos + 1);
179+
LLStringUtil::trim(time_str);
180+
}
185181
}
186182

187183
LL_DEBUGS("LLChatLogParser")
@@ -310,16 +306,22 @@ std::string LLLogChat::timestamp2LogString(U32 timestamp, bool withdate)
310306
std::string timeStr;
311307
if (withdate)
312308
{
313-
timeStr = "[" + LLTrans::getString ("TimeYear") + "]/["
314-
+ LLTrans::getString ("TimeMonth") + "]/["
315-
+ LLTrans::getString ("TimeDay") + "] ["
316-
+ LLTrans::getString ("TimeHour") + "]:["
317-
+ LLTrans::getString ("TimeMin") + "]";
309+
timeStr = "[" + LLTrans::getString("TimeYear") + "]/["
310+
+ LLTrans::getString("TimeMonth") + "]/["
311+
+ LLTrans::getString("TimeDay") + "] ";
312+
}
313+
314+
static bool use_24h = gSavedSettings.getBOOL("Use24HourClock");
315+
if (use_24h)
316+
{
317+
timeStr += "[" + LLTrans::getString("TimeHour") + "]:["
318+
+ LLTrans::getString("TimeMin") + "]";
318319
}
319320
else
320321
{
321-
timeStr = "[" + LLTrans::getString("TimeHour") + "]:["
322-
+ LLTrans::getString ("TimeMin")+"]";
322+
timeStr += "[" + LLTrans::getString("TimeHour12") + "]:["
323+
+ LLTrans::getString("TimeMin") + "] ["
324+
+ LLTrans::getString("TimeAMPM") + "]";
323325
}
324326

325327
LLSD substitution;

indra/newview/llnotificationlistitem.cpp

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include "lluicolortable.h"
3939
#include "message.h"
4040
#include "llnotificationsutil.h"
41+
#include "llviewercontrol.h"
4142
#include <boost/regex.hpp>
4243

4344
LLNotificationListItem::LLNotificationListItem(const Params& p) : LLPanel(p),
@@ -133,10 +134,22 @@ std::string LLNotificationListItem::buildNotificationDate(const LLDate& time_sta
133134
default:
134135
timeStr = "[" + LLTrans::getString("TimeMonth") + "]/["
135136
+LLTrans::getString("TimeDay")+"]/["
136-
+LLTrans::getString("TimeYear")+"] ["
137-
+LLTrans::getString("TimeHour")+"]:["
138-
+LLTrans::getString("TimeMin")+"] ["
139-
+LLTrans::getString("TimeTimezone")+"]";
137+
+LLTrans::getString("TimeYear")+"] [";
138+
139+
static bool use_24h = gSavedSettings.getBOOL("Use24HourClock");
140+
if (use_24h)
141+
{
142+
timeStr += LLTrans::getString("TimeHour") + "]:["
143+
+ LLTrans::getString("TimeMin") + "] ["
144+
+ LLTrans::getString("TimeTimezone") + "]";
145+
}
146+
else
147+
{
148+
timeStr += LLTrans::getString("TimeHour12") + "]:["
149+
+ LLTrans::getString("TimeMin") + "] ["
150+
+ LLTrans::getString("TimeAMPM") + "] ["
151+
+ LLTrans::getString("TimeTimezone") + "]";
152+
}
140153
break;
141154
}
142155
LLSD substitution;

0 commit comments

Comments
 (0)