Time: improved human readable time + fixed a few tooltips.

This commit is contained in:
LemmyCook 2025-09-05 21:08:30 -04:00
parent 85d94aca01
commit 8426e36f46
4 changed files with 27 additions and 31 deletions

View file

@ -78,23 +78,31 @@ Singleton {
}
// Format an easy to read approximate duration ex: 4h32m
// Used to display the time remaining on the Battery widget
// Used to display the time remaining on the Battery widget, computer uptime, etc..
function formatVagueHumanReadableDuration(totalSeconds) {
const hours = Math.floor(totalSeconds / 3600)
const minutes = Math.floor((totalSeconds - (hours * 3600)) / 60)
const seconds = totalSeconds - (hours * 3600) - (minutes * 60)
var str = ""
if (hours) {
str += hours.toString() + "h"
}
if (minutes) {
str += minutes.toString() + "m"
if (typeof totalSeconds !== 'number' || totalSeconds < 0) {
return '0s';
}
// Floor the input to handle decimal seconds
totalSeconds = Math.floor(totalSeconds);
const days = Math.floor(totalSeconds / 86400);
const hours = Math.floor((totalSeconds % 86400) / 3600);
const minutes = Math.floor((totalSeconds % 3600) / 60);
const seconds = totalSeconds % 60;
const parts = [];
if (days) parts.push(`${days}d`);
if (hours) parts.push(`${hours}h`);
if (minutes) parts.push(`${minutes}m`);
// Only show seconds if no hours and no minutes
if (!hours && !minutes) {
str += seconds.toString() + "s"
parts.push(`${seconds}s`);
}
return str
return parts.join('');
}
Timer {

View file

@ -21,7 +21,7 @@ NIconButton {
colorBorderHover: Color.transparent
icon: Settings.data.nightLight.enabled ? "bedtime" : "bedtime_off"
tooltipText: `Night light: ${Settings.data.nightLight.enabled ? "enabled" : "disabled"}\nLeft click to toggle.\nRight click to access settings.`
tooltipText: `Night light: ${Settings.data.nightLight.enabled ? "enabled." : "disabled"}\nLeft click to toggle.\nRight click to access settings.`
onClicked: Settings.data.nightLight.enabled = !Settings.data.nightLight.enabled
onRightClicked: {

View file

@ -12,7 +12,7 @@ NIconButton {
property real scaling: 1.0
icon: Settings.data.bar.useDistroLogo ? "" : "widgets"
tooltipText: "Open side panel"
tooltipText: "Open side panel."
sizeRatio: 0.8
colorBg: Color.mSurfaceVariant

View file

@ -59,7 +59,7 @@ NBox {
}
NIconButton {
icon: "settings"
tooltipText: "Open settings"
tooltipText: "Open settings."
onClicked: {
settingsPanel.requestedTab = SettingsPanel.Tab.General
settingsPanel.open(screen)
@ -69,7 +69,7 @@ NBox {
NIconButton {
id: powerButton
icon: "power_settings_new"
tooltipText: "Power menu"
tooltipText: "Power menu."
onClicked: {
powerPanel.open(screen)
sidePanel.close()
@ -79,7 +79,7 @@ NBox {
NIconButton {
id: closeButton
icon: "close"
tooltipText: "Close side panel"
tooltipText: "Close side panel."
onClicked: {
sidePanel.close()
}
@ -104,19 +104,7 @@ NBox {
stdout: StdioCollector {
onStreamFinished: {
var uptimeSeconds = parseFloat(this.text.trim().split(' ')[0])
var minutes = Math.floor(uptimeSeconds / 60) % 60
var hours = Math.floor(uptimeSeconds / 3600) % 24
var days = Math.floor(uptimeSeconds / 86400)
// Format the output
if (days > 0) {
uptimeText = days + "d " + hours + "h"
} else if (hours > 0) {
uptimeText = hours + "h" + minutes + "m"
} else {
uptimeText = minutes + "m"
}
uptimeText = Time.formatVagueHumanReadableDuration(uptimeSeconds)
uptimeProcess.running = false
}
}