Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 10 additions & 21 deletions lib/utils/duration-control.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@ namespace advss {

static void populateUnits(QComboBox *list)
{
list->addItem(obs_module_text("AdvSceneSwitcher.unit.seconds"));
list->addItem(obs_module_text("AdvSceneSwitcher.unit.minutes"));
list->addItem(obs_module_text("AdvSceneSwitcher.unit.hours"));
list->addItems({obs_module_text("AdvSceneSwitcher.unit.seconds"),
obs_module_text("AdvSceneSwitcher.unit.minutes"),
obs_module_text("AdvSceneSwitcher.unit.hours"),
obs_module_text("AdvSceneSwitcher.unit.days"),
obs_module_text("AdvSceneSwitcher.unit.weeks"),
obs_module_text("AdvSceneSwitcher.unit.months"),
obs_module_text("AdvSceneSwitcher.unit.years")});
}

DurationSelection::DurationSelection(QWidget *parent, bool showUnitSelection,
Expand Down Expand Up @@ -57,27 +61,12 @@ void DurationSelection::_DurationChanged(const NumberVariable<double> &value)
emit DurationChanged(_current);
}

static int durationUnitToMultiplier(Duration::Unit u)
{
switch (u) {
case Duration::Unit::SECONDS:
return 1;
case Duration::Unit::MINUTES:
return 60;
case Duration::Unit::HOURS:
return 3600;
default:
break;
}

return 0;
}

void DurationSelection::_UnitChanged(int idx)
{
Duration::Unit unit = static_cast<Duration::Unit>(idx);
double prevMultiplier = durationUnitToMultiplier(_current._unit);
double newMultiplier = durationUnitToMultiplier(unit);
double prevMultiplier =
Duration::ConvertUnitToMultiplier(_current._unit);
double newMultiplier = Duration::ConvertUnitToMultiplier(unit);
_current._unit = unit;
_duration->SetFixedValue(_duration->Value() *
(prevMultiplier / newMultiplier));
Expand Down
39 changes: 25 additions & 14 deletions lib/utils/duration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ void Duration::Save(obs_data_t *obj, const char *name) const
obs_data_release(data);
}

static int durationUnitToMultiplier(Duration::Unit u);

void Duration::Load(obs_data_t *obj, const char *name)
{
auto data = obs_data_get_obj(obj, name);
Expand All @@ -48,7 +46,7 @@ void Duration::Load(obs_data_t *obj, const char *name)
_unit = Duration::Unit::SECONDS;
}

_value = _value / durationUnitToMultiplier(_unit);
_value = _value / ConvertUnitToMultiplier(_unit);

obs_data_release(data);
return;
Expand Down Expand Up @@ -77,7 +75,7 @@ bool Duration::IsReset() const

double Duration::Seconds() const
{
return _value.GetValue() * durationUnitToMultiplier(_unit);
return _value.GetValue() * ConvertUnitToMultiplier(_unit);
}

double Duration::Milliseconds() const
Expand Down Expand Up @@ -120,6 +118,14 @@ static std::string durationUnitToString(Duration::Unit u)
return obs_module_text("AdvSceneSwitcher.unit.minutes");
case Duration::Unit::HOURS:
return obs_module_text("AdvSceneSwitcher.unit.hours");
case Duration::Unit::DAYS:
return obs_module_text("AdvSceneSwitcher.unit.days");
case Duration::Unit::WEEKS:
return obs_module_text("AdvSceneSwitcher.unit.weeks");
case Duration::Unit::MONTHS:
return obs_module_text("AdvSceneSwitcher.unit.months");
case Duration::Unit::YEARS:
return obs_module_text("AdvSceneSwitcher.unit.years");
default:
break;
}
Expand All @@ -138,18 +144,23 @@ std::string Duration::ToString() const
return ss.str();
}

// TODO: Remove the code below
// Only used for backwards compatibility

static int durationUnitToMultiplier(Duration::Unit u)
int Duration::ConvertUnitToMultiplier(Unit unit)
{
switch (u) {
case Duration::Unit::SECONDS:
switch (unit) {
case Unit::SECONDS:
return 1;
case Duration::Unit::MINUTES:
case Unit::MINUTES:
return 60;
case Duration::Unit::HOURS:
case Unit::HOURS:
return 3600;
case Unit::DAYS:
return 86400;
case Unit::WEEKS:
return 604800;
case Unit::MONTHS:
return 2629746;
case Unit::YEARS:
return 31556952;
default:
break;
}
Expand All @@ -159,8 +170,8 @@ static int durationUnitToMultiplier(Duration::Unit u)

void Duration::SetUnit(Unit u)
{
double prevMultiplier = durationUnitToMultiplier(_unit);
double newMultiplier = durationUnitToMultiplier(u);
double prevMultiplier = ConvertUnitToMultiplier(_unit);
double newMultiplier = ConvertUnitToMultiplier(u);
_unit = u;
_value = _value * (prevMultiplier / newMultiplier);
}
Expand Down
5 changes: 5 additions & 0 deletions lib/utils/duration.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,13 @@ class Duration {
SECONDS,
MINUTES,
HOURS,
DAYS,
WEEKS,
MONTHS,
YEARS,
};
EXPORT Unit GetUnit() const { return _unit; }
EXPORT static int ConvertUnitToMultiplier(Unit unit);

// TODO: Remove
// Only use this function if you intend to convert old settings formats
Expand Down
Loading