mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Add enhanced relative time to variable tab cells
This commit is contained in:
parent
57d78a996a
commit
6ccbaad41c
|
|
@ -255,6 +255,8 @@ target_sources(
|
|||
lib/utils/tab-helpers.hpp
|
||||
lib/utils/temp-variable.cpp
|
||||
lib/utils/temp-variable.hpp
|
||||
lib/utils/time-helpers.cpp
|
||||
lib/utils/time-helpers.hpp
|
||||
lib/utils/ui-helpers.cpp
|
||||
lib/utils/ui-helpers.hpp
|
||||
lib/utils/utility.cpp
|
||||
|
|
|
|||
|
|
@ -895,7 +895,7 @@ AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>Dies scheint das erste
|
|||
AdvSceneSwitcher.deprecatedTabWarning="Die Entwicklung für dieses Tab wurde gestoppt!\nBitte stattdessen zur Verwendung des Makros-Tab übergehen.\nDieser Hinweis kann im Allgemein-Tab deaktiviert werden."
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="Millisekunden"
|
||||
AdvSceneSwitcher.unit.secends="Sekunden"
|
||||
AdvSceneSwitcher.unit.seconds="Sekunden"
|
||||
AdvSceneSwitcher.unit.minutes="Minuten"
|
||||
AdvSceneSwitcher.unit.hours="Stunden"
|
||||
AdvSceneSwitcher.duration.condition.none="Kein Dauer-Modifikator"
|
||||
|
|
|
|||
|
|
@ -82,10 +82,8 @@ AdvSceneSwitcher.variableTab.value.header="Value"
|
|||
AdvSceneSwitcher.variableTab.saveLoadBehavior.header="Save/Load behavior"
|
||||
AdvSceneSwitcher.variableTab.saveLoadBehavior.text.default="Default to \"%1\""
|
||||
AdvSceneSwitcher.variableTab.lastUsed.header="Last used"
|
||||
AdvSceneSwitcher.variableTab.lastUsed.text="%1 seconds ago"
|
||||
AdvSceneSwitcher.variableTab.lastUsed.text.never="Never"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.header="Last changed"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.text="%1 seconds ago"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.text.none="No change since launch"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.tooltip="Times changed: %1\n\nPrevious value: %2"
|
||||
|
||||
|
|
@ -1926,15 +1924,21 @@ AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>This seems to be the fi
|
|||
AdvSceneSwitcher.deprecatedTabWarning="Development for this tab stopped!\nPlease consider transitioning to using Macros instead.\nThis hint can be disabled on the General tab."
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="milliseconds"
|
||||
AdvSceneSwitcher.unit.secends="seconds"
|
||||
AdvSceneSwitcher.unit.seconds="seconds"
|
||||
AdvSceneSwitcher.unit.minutes="minutes"
|
||||
AdvSceneSwitcher.unit.hours="hours"
|
||||
AdvSceneSwitcher.unit.days="days"
|
||||
AdvSceneSwitcher.unit.weeks="weeks"
|
||||
AdvSceneSwitcher.unit.months="months"
|
||||
AdvSceneSwitcher.unit.years="years"
|
||||
AdvSceneSwitcher.duration.condition.none="No duration modifier"
|
||||
AdvSceneSwitcher.duration.condition.more="For at least"
|
||||
AdvSceneSwitcher.duration.condition.equal="For exactly"
|
||||
AdvSceneSwitcher.duration.condition.less="For at most"
|
||||
AdvSceneSwitcher.duration.condition.within="Within the last"
|
||||
|
||||
AdvSceneSwitcher.time.relative="%1 %2 ago"
|
||||
|
||||
AdvSceneSwitcher.audio.monitor.none="Monitor Off"
|
||||
AdvSceneSwitcher.audio.monitor.monitorOnly="Monitor Only (mute output)"
|
||||
AdvSceneSwitcher.audio.monitor.both="Monitor and Output"
|
||||
|
|
|
|||
|
|
@ -740,7 +740,7 @@ AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>Esta parece ser la prim
|
|||
AdvSceneSwitcher.deprecatedTabWarning="¡Se detuvo el desarrollo de esta pestaña!\nConsidere cambiar a macros en su lugar.\nEsta sugerencia se puede desactivar en la pestaña General".
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="milisegundos"
|
||||
AdvSceneSwitcher.unit.secends="segundos"
|
||||
AdvSceneSwitcher.unit.seconds="segundos"
|
||||
AdvSceneSwitcher.unit.minutes="minutos"
|
||||
AdvSceneSwitcher.unit.hours="horas"
|
||||
AdvSceneSwitcher.duration.condition.none="Sin límite de tiempo"
|
||||
|
|
|
|||
|
|
@ -1182,7 +1182,7 @@ AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>Il semble que ce soit l
|
|||
AdvSceneSwitcher.deprecatedTabWarning="Le développement de cet onglet est terminé !\nVeuillez envisager de passer à l'utilisation des Macros à la place.\nCette astuce peut être désactivée dans l'onglet Général."
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="millisecondes"
|
||||
AdvSceneSwitcher.unit.secends="secondes"
|
||||
AdvSceneSwitcher.unit.seconds="secondes"
|
||||
AdvSceneSwitcher.unit.minutes="minutes"
|
||||
AdvSceneSwitcher.unit.hours="heures"
|
||||
AdvSceneSwitcher.duration.condition.none="Aucun modificateur de durée"
|
||||
|
|
|
|||
|
|
@ -82,10 +82,8 @@ AdvSceneSwitcher.variableTab.value.header="値"
|
|||
AdvSceneSwitcher.variableTab.saveLoadBehavior.header="保存・読み込みの動作"
|
||||
AdvSceneSwitcher.variableTab.saveLoadBehavior.text.default="デフォルト\"%1\""
|
||||
AdvSceneSwitcher.variableTab.lastUsed.header="最後に使用された"
|
||||
AdvSceneSwitcher.variableTab.lastUsed.text="%1 秒前"
|
||||
; AdvSceneSwitcher.variableTab.lastUsed.text.never="Never"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.header="最終変更"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.text="%1 秒前"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.text.none="起動以来変更なし"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.tooltip="変更された時間: %1\n\n以前の値: %2"
|
||||
|
||||
|
|
@ -1920,7 +1918,7 @@ AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>高機能シーンス
|
|||
AdvSceneSwitcher.deprecatedTabWarning="このタブの開発は停止しました!\n代わりにマクロの使用に移行することを検討してください。\nこのヒントは [全般] タブで無効にすることができます。"
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="ミリ秒"
|
||||
AdvSceneSwitcher.unit.secends="秒"
|
||||
AdvSceneSwitcher.unit.seconds="秒"
|
||||
AdvSceneSwitcher.unit.minutes="分"
|
||||
AdvSceneSwitcher.unit.hours="時間"
|
||||
AdvSceneSwitcher.duration.condition.none="期間修飾子なし"
|
||||
|
|
|
|||
|
|
@ -82,10 +82,8 @@ AdvSceneSwitcher.variableTab.value.header="Valor"
|
|||
AdvSceneSwitcher.variableTab.saveLoadBehavior.header="Comportamento de Salvar/Carregar"
|
||||
AdvSceneSwitcher.variableTab.saveLoadBehavior.text.default="Padrão para \"%1\""
|
||||
AdvSceneSwitcher.variableTab.lastUsed.header="Último uso"
|
||||
AdvSceneSwitcher.variableTab.lastUsed.text="%1 segundos atrás"
|
||||
AdvSceneSwitcher.variableTab.lastUsed.text.never="Nunca"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.header="Última alteração"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.text="%1 segundos atrás"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.text.none="Sem alterações desde o lançamento"
|
||||
AdvSceneSwitcher.variableTab.lastChanged.tooltip="Vezes alteradas: %1\n\nValor anterior: %2"
|
||||
|
||||
|
|
@ -1888,7 +1886,7 @@ AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>Parece que esta é a pr
|
|||
AdvSceneSwitcher.deprecatedTabWarning="Desenvolvimento para esta aba interrompido!\nPor favor, considere a transição para o uso de Macros em vez disso.\nEsta dica pode ser desativada na aba Geral."
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="milissegundos"
|
||||
AdvSceneSwitcher.unit.secends="segundos"
|
||||
AdvSceneSwitcher.unit.seconds="segundos"
|
||||
AdvSceneSwitcher.unit.minutes="minutos"
|
||||
AdvSceneSwitcher.unit.hours="horas"
|
||||
AdvSceneSwitcher.duration.condition.none="Nenhum modificador de duração"
|
||||
|
|
|
|||
|
|
@ -399,6 +399,6 @@ AdvSceneSwitcher.status.active="Активный"
|
|||
AdvSceneSwitcher.status.inactive="Неактивен"
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="миллисекунды"
|
||||
AdvSceneSwitcher.unit.secends="секунды"
|
||||
AdvSceneSwitcher.unit.seconds="секунды"
|
||||
AdvSceneSwitcher.unit.minutes="минуты"
|
||||
AdvSceneSwitcher.unit.hours="часы"
|
||||
|
|
|
|||
|
|
@ -645,7 +645,7 @@ AdvSceneSwitcher.stopped="Eklenti durdu"
|
|||
AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>Gelişmiş Sahne Değiştirici ilk kez başlatılıyor gibi görünüyor.<br>Lütfen <a href=\"https://github.com/ adresine bir göz atın. WarmUpTill/SceneSwitcher/wiki\"><span style=\" text-decoration: underline; color:#268bd2;\">Wiki</span></a> için kılavuzlar ve örnekler listesi.<br>Yapmayın. eklentinin <a href=\"https://obsproject.com/forum/threads/advanced-scene-switcher.48264\"><span style=\" text-decoration: underline; color:# sayfasında soru sormaktan çekinmeyin OBS forumlarında 268bd2;\">konu</span></a>!</p></body></html>"
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="millisaniye"
|
||||
AdvSceneSwitcher.unit.secends="saniye"
|
||||
AdvSceneSwitcher.unit.seconds="saniye"
|
||||
AdvSceneSwitcher.unit.minutes="dakika"
|
||||
AdvSceneSwitcher.unit.hours="saat"
|
||||
AdvSceneSwitcher.duration.condition.none="Zaman kısıtlaması yok"
|
||||
|
|
|
|||
|
|
@ -1048,7 +1048,7 @@ AdvSceneSwitcher.firstBootMessage="<html><head/><body><p>这似乎是第一次
|
|||
AdvSceneSwitcher.deprecatedTabWarning="此选项卡的开发已停止!请考虑转换为使用宏来代替。\n可以在“常规”选项卡上禁用此提示."
|
||||
|
||||
AdvSceneSwitcher.unit.milliseconds="毫秒"
|
||||
AdvSceneSwitcher.unit.secends="秒"
|
||||
AdvSceneSwitcher.unit.seconds="秒"
|
||||
AdvSceneSwitcher.unit.minutes="分钟"
|
||||
AdvSceneSwitcher.unit.hours="小时"
|
||||
AdvSceneSwitcher.duration.condition.none="没有时间限制"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ namespace advss {
|
|||
|
||||
static void populateUnits(QComboBox *list)
|
||||
{
|
||||
list->addItem(obs_module_text("AdvSceneSwitcher.unit.secends"));
|
||||
list->addItem(obs_module_text("AdvSceneSwitcher.unit.seconds"));
|
||||
list->addItem(obs_module_text("AdvSceneSwitcher.unit.minutes"));
|
||||
list->addItem(obs_module_text("AdvSceneSwitcher.unit.hours"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ static std::string durationUnitToString(Duration::Unit u)
|
|||
{
|
||||
switch (u) {
|
||||
case Duration::Unit::SECONDS:
|
||||
return obs_module_text("AdvSceneSwitcher.unit.secends");
|
||||
return obs_module_text("AdvSceneSwitcher.unit.seconds");
|
||||
case Duration::Unit::MINUTES:
|
||||
return obs_module_text("AdvSceneSwitcher.unit.minutes");
|
||||
case Duration::Unit::HOURS:
|
||||
|
|
|
|||
63
lib/utils/time-helpers.cpp
Normal file
63
lib/utils/time-helpers.cpp
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#include "time-helpers.hpp"
|
||||
#include "obs-module-helper.hpp"
|
||||
|
||||
namespace advss {
|
||||
|
||||
static QString combineRelativeTimeParts(const double unitCount,
|
||||
const char *unitName)
|
||||
{
|
||||
QString combined = obs_module_text("AdvSceneSwitcher.time.relative");
|
||||
|
||||
return combined.arg(QString::number(unitCount, 'g', 2)).arg(unitName);
|
||||
}
|
||||
|
||||
QString FormatRelativeTime(const double seconds)
|
||||
{
|
||||
// 365.2425 days
|
||||
double divided = seconds / 31556952;
|
||||
if (divided >= 1) {
|
||||
return combineRelativeTimeParts(
|
||||
divided,
|
||||
obs_module_text("AdvSceneSwitcher.unit.years"));
|
||||
}
|
||||
|
||||
// 30.436875 days
|
||||
divided = seconds / 2629746;
|
||||
if (divided >= 1) {
|
||||
return combineRelativeTimeParts(
|
||||
divided,
|
||||
obs_module_text("AdvSceneSwitcher.unit.months"));
|
||||
}
|
||||
|
||||
divided = seconds / 604800;
|
||||
if (divided >= 1) {
|
||||
return combineRelativeTimeParts(
|
||||
divided,
|
||||
obs_module_text("AdvSceneSwitcher.unit.weeks"));
|
||||
}
|
||||
|
||||
divided = seconds / 86400;
|
||||
if (divided >= 1) {
|
||||
return combineRelativeTimeParts(
|
||||
divided, obs_module_text("AdvSceneSwitcher.unit.days"));
|
||||
}
|
||||
|
||||
divided = seconds / 3600;
|
||||
if (divided >= 1) {
|
||||
return combineRelativeTimeParts(
|
||||
divided,
|
||||
obs_module_text("AdvSceneSwitcher.unit.hours"));
|
||||
}
|
||||
|
||||
divided = seconds / 60;
|
||||
if (divided >= 1) {
|
||||
return combineRelativeTimeParts(
|
||||
divided,
|
||||
obs_module_text("AdvSceneSwitcher.unit.minutes"));
|
||||
}
|
||||
|
||||
return combineRelativeTimeParts(
|
||||
seconds, obs_module_text("AdvSceneSwitcher.unit.seconds"));
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
8
lib/utils/time-helpers.hpp
Normal file
8
lib/utils/time-helpers.hpp
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#pragma once
|
||||
#include <QString>
|
||||
|
||||
namespace advss {
|
||||
|
||||
QString FormatRelativeTime(const double seconds);
|
||||
|
||||
} // namespace advss
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
#include "plugin-state-helpers.hpp"
|
||||
#include "sync-helpers.hpp"
|
||||
#include "tab-helpers.hpp"
|
||||
#include "time-helpers.hpp"
|
||||
#include "ui-helpers.hpp"
|
||||
#include "variable.hpp"
|
||||
|
||||
|
|
@ -93,9 +94,7 @@ static QString formatLastUsedText(Variable *variable)
|
|||
"AdvSceneSwitcher.variableTab.lastUsed.text.never");
|
||||
}
|
||||
|
||||
QString text =
|
||||
obs_module_text("AdvSceneSwitcher.variableTab.lastUsed.text");
|
||||
return text.arg(QString::number(*lastUsed));
|
||||
return FormatRelativeTime(*lastUsed);
|
||||
}
|
||||
|
||||
static QString formatLastChangedText(Variable *variable)
|
||||
|
|
@ -106,9 +105,7 @@ static QString formatLastChangedText(Variable *variable)
|
|||
"AdvSceneSwitcher.variableTab.lastChanged.text.none");
|
||||
}
|
||||
|
||||
QString text = obs_module_text(
|
||||
"AdvSceneSwitcher.variableTab.lastChanged.text");
|
||||
return text.arg(QString::number(*lastChanged));
|
||||
return FormatRelativeTime(*lastChanged);
|
||||
}
|
||||
|
||||
static QString formatLastChangedTooltip(Variable *variable)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user