Add width hint to slider ladder for custom display widths
This commit is contained in:
@@ -278,7 +278,11 @@ void SliderBase::LabelPressed()
|
||||
case kFloat:
|
||||
case kRational:
|
||||
{
|
||||
drag_ladder_ = new SliderLadder(drag_multiplier_, ladder_element_count_);
|
||||
if (mode_ == kRational) {
|
||||
drag_ladder_ = new SliderLadder(drag_multiplier_, ladder_element_count_, "00:00:00:00");
|
||||
} else {
|
||||
drag_ladder_ = new SliderLadder(drag_multiplier_, ladder_element_count_, "00000000");
|
||||
}
|
||||
drag_ladder_->SetValue(ValueToString(value_));
|
||||
drag_ladder_->show();
|
||||
|
||||
|
||||
@@ -37,8 +37,9 @@
|
||||
|
||||
namespace olive {
|
||||
|
||||
SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QWidget* parent) :
|
||||
QFrame(parent, Qt::Popup)
|
||||
SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QString width_hint, QWidget* parent) :
|
||||
QFrame(parent, Qt::Popup),
|
||||
width_hint_(width_hint)
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setMargin(0);
|
||||
@@ -52,17 +53,17 @@ SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QWidget*
|
||||
}
|
||||
|
||||
for (int i=nb_outer_values-1;i>=0;i--) {
|
||||
elements_.append(new SliderLadderElement(qPow(10, i + 1) * drag_multiplier));
|
||||
elements_.append(new SliderLadderElement(qPow(10, i + 1) * drag_multiplier, width_hint_));
|
||||
}
|
||||
|
||||
// Create center entry
|
||||
SliderLadderElement* start_element = new SliderLadderElement(drag_multiplier);
|
||||
SliderLadderElement* start_element = new SliderLadderElement(drag_multiplier, width_hint_);
|
||||
active_element_ = elements_.size();
|
||||
start_element->SetHighlighted(true);
|
||||
elements_.append(start_element);
|
||||
|
||||
for (int i=0;i<nb_outer_values;i++) {
|
||||
elements_.append(new SliderLadderElement(qPow(10, - i - 1) * drag_multiplier));
|
||||
elements_.append(new SliderLadderElement(qPow(10, -i - 1) * drag_multiplier, width_hint_));
|
||||
}
|
||||
|
||||
foreach (SliderLadderElement* e, elements_) {
|
||||
@@ -226,17 +227,18 @@ void SliderLadder::TimerUpdate()
|
||||
}
|
||||
}
|
||||
|
||||
SliderLadderElement::SliderLadderElement(const double &multiplier, QWidget *parent) :
|
||||
SliderLadderElement::SliderLadderElement(const double &multiplier, QString width_hint, QWidget *parent) :
|
||||
QWidget(parent),
|
||||
multiplier_(multiplier),
|
||||
highlighted_(false),
|
||||
multiplier_visible_(true)
|
||||
multiplier_visible_(true),
|
||||
width_hint(width_hint)
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
|
||||
label_ = new QLabel();
|
||||
label_->setAlignment(Qt::AlignCenter);
|
||||
label_->setFixedWidth(QtUtils::QFontMetricsWidth(label_->fontMetrics(), QStringLiteral("0000000")));
|
||||
label_->setFixedWidth(QtUtils::QFontMetricsWidth(label_->fontMetrics(), width_hint));
|
||||
layout->addWidget(label_);
|
||||
|
||||
QPalette p = palette();
|
||||
@@ -291,12 +293,6 @@ void SliderLadderElement::UpdateLabel()
|
||||
} else {
|
||||
label_->setText(value_);
|
||||
}
|
||||
|
||||
// Increase the ladder width if displaying timecode
|
||||
if (value_.contains(":")) {
|
||||
label_->setFixedWidth(QtUtils::QFontMetricsWidth(label_->fontMetrics(), QStringLiteral("00:00:00:00")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ class SliderLadderElement : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SliderLadderElement(const double& multiplier, QWidget* parent = nullptr);
|
||||
SliderLadderElement(const double& multiplier, QString width_hint, QWidget* parent = nullptr);
|
||||
|
||||
void SetHighlighted(bool e);
|
||||
|
||||
@@ -58,13 +58,15 @@ private:
|
||||
|
||||
bool multiplier_visible_;
|
||||
|
||||
QString width_hint;
|
||||
|
||||
};
|
||||
|
||||
class SliderLadder : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SliderLadder(double drag_multiplier, int nb_outer_values, QWidget* parent = nullptr);
|
||||
SliderLadder(double drag_multiplier, int nb_outer_values, QString width_hint, QWidget* parent = nullptr);
|
||||
|
||||
virtual ~SliderLadder() override;
|
||||
|
||||
@@ -92,6 +94,8 @@ private:
|
||||
|
||||
QTimer drag_timer_;
|
||||
|
||||
QString width_hint_;
|
||||
|
||||
private slots:
|
||||
void TimerUpdate();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user