Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
d0969c10
Commit
d0969c10
authored
Nov 17, 2014
by
Mitchell Rosen
Browse files
Show hours and minutes between 60 and 90 minutes
parent
da145bdd
Changes
1
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/gamesmodel.cpp
View file @
d0969c10
...
@@ -6,39 +6,61 @@
...
@@ -6,39 +6,61 @@
#include
<time.h>
#include
<time.h>
namespace
{
namespace
{
const
unsigned
SECS_PER_HALF_MIN
=
30
;
const
unsigned
SECS_PER_MIN
=
60
;
const
unsigned
SECS_PER_MIN
=
60
;
const
unsigned
SECS_PER_HALF_HOUR
=
1600
;
// 60 * 30
const
unsigned
SECS_PER_HALF_HOUR
=
60
*
30
;
const
unsigned
SECS_PER_HOUR
=
3600
;
// 60 * 60
const
unsigned
SECS_PER_HOUR
=
60
*
60
;
const
unsigned
SECS_PER_90_MINS
=
60
*
90
;
/**
/**
* Pretty print an integer number of seconds ago. Accurate to only one unit,
* Pretty print an integer number of seconds ago. Accurate to only one unit,
* rounded.
* rounded. As a special case, time between 60 and 90 minutes will display
* both the hours and minutes.
*
*
* For example...
* For example...
* 0-59 seconds will return "X seconds ago"
* 0-59 seconds will return "Xs ago"
* 1-59 minutes will return "X minutes ago"; 90 seconds will return "2 minutes ago"
* 1-59 minutes will return "Xm ago"; 90 seconds will return "2m ago"
* 1-23 hours will return "X hours ago"; 90 minutes will return "2 hours ago"
* 60-90 minutes will return "Xhr Ym ago"
* 24+ hours will return "1+ days ago", because it seems unlikely that we care about
* 91-300 minutes will return "Xhr ago"; 91 minutes will return "2hr ago"
* an accurate timestamp of day old games.
* 300+ minutes will return "5+ hr ago", because it seems unlikely that we
* care about an accurate timestamp of old games.
*/
*/
QString
prettyPrintSecsAgo
(
uint32_t
secs
)
{
QString
prettyPrintSecsAgo
(
uint32_t
secs
)
{
if
(
secs
<
SECS_PER_MIN
)
{
if
(
secs
<
SECS_PER_MIN
)
{
//: This will have a number prepended, like "10s ago"
return
QString
::
number
(
secs
).
append
(
QObject
::
tr
(
"s ago"
));
return
QString
::
number
(
secs
).
append
(
QObject
::
tr
(
"s ago"
));
}
}
if
(
secs
<
SECS_PER_HOUR
)
{
if
(
secs
<
SECS_PER_HOUR
)
{
uint32_t
mins
=
secs
/
SECS_PER_MIN
;
uint32_t
mins
=
secs
/
SECS_PER_MIN
;
if
(
secs
%
SECS_PER_MIN
>=
SECS_PER_HALF_MIN
)
if
(
secs
%
SECS_PER_MIN
>=
30
)
mins
++
;
mins
++
;
//: This will have a number prepended, like "10m ago"
return
QString
::
number
(
mins
).
append
(
QObject
::
tr
(
"m ago"
));
return
QString
::
number
(
mins
).
append
(
QObject
::
tr
(
"m ago"
));
}
}
// Here, we want to display both the hours and minutes.
//
// There are two small "corner" cases which could be rectified with
// some more knotty iffy-elsey code:
// Between 1:00:00 and 1:00:29 will display "1hr 0m ago"
// Between 1:29:30 and 1:29:59 will display "1hr 31m ago"
//
// Personally, I prefer to keep the code cleaner, and allow these.
if
(
secs
<
SECS_PER_90_MINS
)
{
uint32_t
mins
=
secs
/
SECS_PER_MIN
-
60
;
if
(
secs
%
SECS_PER_MIN
>=
30
)
mins
++
;
return
QObject
::
tr
(
"1hr "
)
.
append
(
QString
::
number
(
mins
))
//: This will have a number prepended, like "5m ago"
.
append
(
QObject
::
tr
(
"m ago"
));
}
if
(
secs
<
SECS_PER_HOUR
*
5
)
{
if
(
secs
<
SECS_PER_HOUR
*
5
)
{
uint32_t
hours
=
secs
/
SECS_PER_HOUR
;
uint32_t
hours
=
secs
/
SECS_PER_HOUR
;
if
(
secs
%
SECS_PER_HOUR
>=
SECS_PER_HALF_HOUR
)
if
(
secs
%
SECS_PER_HOUR
>=
SECS_PER_HALF_HOUR
)
hours
++
;
hours
++
;
//: This will have a number prepended, like "2h ago"
return
QString
::
number
(
hours
).
append
(
QObject
::
tr
(
"hr ago"
));
return
QString
::
number
(
hours
).
append
(
QObject
::
tr
(
"hr ago"
));
}
}
return
QObject
::
tr
(
"5+ h
ou
rs ago"
);
return
QObject
::
tr
(
"5+ hrs ago"
);
}
}
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment