Add a lock on changing the display type

This commit is contained in:
Thomas Wilshaw
2021-04-08 11:26:32 +01:00
parent 3b2cf9d0a7
commit fae7ead021
3 changed files with 28 additions and 8 deletions
+19 -6
View File
@@ -20,12 +20,13 @@
namespace olive {
RationalSlider::RationalSlider(DisplayType display_type, rational timebase, QWidget *parent) :
RationalSlider::RationalSlider(rational timebase, QWidget *parent) :
SliderBase(SliderBase::kRational, parent),
display_type_(display_type),
display_type_(kTimecode),
decimal_places_(2),
autotrim_decimal_places_(false),
timebase_(timebase)
timebase_(timebase),
lock_display_type_(false)
{
connect(this, SIGNAL(ValueChanged(QVariant)), this, SLOT(ConvertValue(QVariant)));
connect(this, &SliderBase::changeRationalDisplayType, this, &RationalSlider::changeDisplayType);
@@ -106,6 +107,16 @@ void RationalSlider::SetDisplayType(const RationalSlider::DisplayType &type)
}
}
void RationalSlider::SetLockDisplayType(bool e)
{
lock_display_type_ = e;
}
bool RationalSlider::LockDisplayType()
{
return lock_display_type_;
}
QString RationalSlider::ValueToString(const QVariant &v)
{
double time = v.value<rational>().toDouble();
@@ -179,9 +190,11 @@ void RationalSlider::ConvertValue(QVariant v)
void RationalSlider::changeDisplayType()
{
// Loop through the display types
SetDisplayType(static_cast<RationalSlider::DisplayType>(((int)(display_type_)+1)%4));
ForceLabelUpdate();
if (!LockDisplayType()) {
// Loop through the display types
SetDisplayType(static_cast<RationalSlider::DisplayType>(((int)(display_type_) + 1) % 4));
ForceLabelUpdate();
}
}
void RationalSlider::ChangeTimecodeDisplayType()
+9 -1
View File
@@ -46,7 +46,7 @@ public:
kFloat
};
RationalSlider(DisplayType display_type, rational timebase, QWidget* parent = nullptr);
RationalSlider(rational timebase, QWidget* parent = nullptr);
/**
* @brief Returns the sliders value as a rational
@@ -58,6 +58,9 @@ public:
*/
void SetValue(const rational& d);
/**
* @brief Sets the sliders default value
*/
void SetDefaultValue(const rational& r);
/**
@@ -85,6 +88,10 @@ public:
*/
void SetDisplayType(const DisplayType& type);
void SetLockDisplayType(bool e);
bool LockDisplayType();
void SetAutoTrimDecimalPlaces(bool e);
protected:
@@ -116,6 +123,7 @@ private:
rational timebase_;
bool lock_display_type_;
};
}
-1
View File
@@ -214,7 +214,6 @@ const QVariant &SliderBase::ClampValue(const QVariant &v)
if (has_min_ && value < min) {
return min_value_;
}else if (has_max_ && value > max) {
printf("MAX: %f\n", max_value_.value<rational>().toDouble());
return max_value_;
}