From e2010dde83321f9dde291b0e643cfe1ac1d8f4e8 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 17 Nov 2020 09:42:36 +1100 Subject: [PATCH] made formal QtUtils class --- app/common/qtutils.cpp | 10 +++++++- app/common/qtutils.h | 23 ++++++++++++------- app/dialog/color/colordialog.cpp | 2 +- app/dialog/export/codec/h264section.cpp | 2 +- app/widget/audiomonitor/audiomonitor.cpp | 2 +- .../curvewidget/beziercontrolpointitem.cpp | 2 +- app/widget/curvewidget/curveview.cpp | 4 ++-- app/widget/keyframeview/keyframeviewitem.cpp | 2 +- .../nodeparamviewconnectedlabel.cpp | 2 +- app/widget/nodeview/nodeviewitem.cpp | 6 ++--- .../projectexplorericonviewitemdelegate.cpp | 2 +- app/widget/scope/histogram/histogram.cpp | 2 +- app/widget/scope/waveform/waveform.cpp | 2 +- app/widget/slider/sliderbase.cpp | 8 +++---- app/widget/timelinewidget/tool/import.cpp | 2 +- app/widget/timelinewidget/tool/pointer.cpp | 2 +- .../view/timelineviewblockitem.cpp | 2 +- app/widget/timeruler/seekablewidget.cpp | 2 +- app/widget/timeruler/timeruler.cpp | 4 ++-- 19 files changed, 48 insertions(+), 33 deletions(-) diff --git a/app/common/qtutils.cpp b/app/common/qtutils.cpp index a745d5443..797044969 100644 --- a/app/common/qtutils.cpp +++ b/app/common/qtutils.cpp @@ -22,7 +22,7 @@ OLIVE_NAMESPACE_ENTER -int QFontMetricsWidth(QFontMetrics fm, const QString& s) { +int QtUtils::QFontMetricsWidth(QFontMetrics fm, const QString& s) { #if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) return fm.width(s); #else @@ -30,4 +30,12 @@ int QFontMetricsWidth(QFontMetrics fm, const QString& s) { #endif } +QFrame *QtUtils::CreateHorizontalLine() +{ + QFrame* horizontal_line = new QFrame(); + horizontal_line->setFrameShape(QFrame::HLine); + horizontal_line->setFrameShadow(QFrame::Sunken); + return horizontal_line; +} + OLIVE_NAMESPACE_EXIT diff --git a/app/common/qtutils.h b/app/common/qtutils.h index fb405b6b7..99ac2d289 100644 --- a/app/common/qtutils.h +++ b/app/common/qtutils.h @@ -28,19 +28,26 @@ */ #include +#include #include "common/define.h" OLIVE_NAMESPACE_ENTER -/** - * @brief Retrieves the width of a string according to certain QFontMetrics - * - * QFontMetrics::width() has been deprecatd in favor of QFontMetrics::horizontalAdvance(), but the - * latter was only introduced in 5.11+. This function wraps the latter for 5.11+ and the former for - * earlier. - */ -int QFontMetricsWidth(QFontMetrics fm, const QString& s); +class QtUtils { +public: + /** + * @brief Retrieves the width of a string according to certain QFontMetrics + * + * QFontMetrics::width() has been deprecatd in favor of QFontMetrics::horizontalAdvance(), but the + * latter was only introduced in 5.11+. This function wraps the latter for 5.11+ and the former for + * earlier. + */ + static int QFontMetricsWidth(QFontMetrics fm, const QString& s); + + static QFrame* CreateHorizontalLine(); + +}; OLIVE_NAMESPACE_EXIT diff --git a/app/dialog/color/colordialog.cpp b/app/dialog/color/colordialog.cpp index e578cfdd2..afda42bb4 100644 --- a/app/dialog/color/colordialog.cpp +++ b/app/dialog/color/colordialog.cpp @@ -48,7 +48,7 @@ ColorDialog::ColorDialog(ColorManager* color_manager, const ManagedColor& start, wheel_layout->addWidget(color_wheel_); hsv_value_gradient_ = new ColorGradientWidget(Qt::Vertical); - hsv_value_gradient_->setFixedWidth(QFontMetricsWidth(fontMetrics(), QStringLiteral("HHH"))); + hsv_value_gradient_->setFixedWidth(QtUtils::QFontMetricsWidth(fontMetrics(), QStringLiteral("HHH"))); wheel_layout->addWidget(hsv_value_gradient_); QWidget* value_area = new QWidget(); diff --git a/app/dialog/export/codec/h264section.cpp b/app/dialog/export/codec/h264section.cpp index e0e50fb55..73f723d01 100644 --- a/app/dialog/export/codec/h264section.cpp +++ b/app/dialog/export/codec/h264section.cpp @@ -117,7 +117,7 @@ H264CRFSection::H264CRFSection(QWidget *parent) : layout->addWidget(crf_slider_); IntegerSlider* crf_input = new IntegerSlider(); - crf_input->setMaximumWidth(QFontMetricsWidth(crf_input->fontMetrics(), QStringLiteral("HHHH"))); + crf_input->setMaximumWidth(QtUtils::QFontMetricsWidth(crf_input->fontMetrics(), QStringLiteral("HHHH"))); crf_input->SetMinimum(kMinimumCRF); crf_input->SetMaximum(kMaximumCRF); crf_input->SetValue(kDefaultCRF); diff --git a/app/widget/audiomonitor/audiomonitor.cpp b/app/widget/audiomonitor/audiomonitor.cpp index 2ce1f50a5..6eb972dba 100644 --- a/app/widget/audiomonitor/audiomonitor.cpp +++ b/app/widget/audiomonitor/audiomonitor.cpp @@ -124,7 +124,7 @@ void AudioMonitor::paintGL() // Create rect where decibel markings will go on the side QRect db_labels_rect = rect(); - db_labels_rect.setWidth(QFontMetricsWidth(p.fontMetrics(), "-00")); + db_labels_rect.setWidth(QtUtils::QFontMetricsWidth(p.fontMetrics(), "-00")); db_labels_rect.adjust(0, font_height, 0, 0); // Determine rect where the main meter will go diff --git a/app/widget/curvewidget/beziercontrolpointitem.cpp b/app/widget/curvewidget/beziercontrolpointitem.cpp index 363ea3aa2..5425f2818 100644 --- a/app/widget/curvewidget/beziercontrolpointitem.cpp +++ b/app/widget/curvewidget/beziercontrolpointitem.cpp @@ -47,7 +47,7 @@ BezierControlPointItem::BezierControlPointItem(NodeKeyframePtr key, NodeKeyframe } - int control_point_size = QFontMetricsWidth(qApp->fontMetrics(), "o"); + int control_point_size = QtUtils::QFontMetricsWidth(qApp->fontMetrics(), "o"); int half_sz = control_point_size / 2; setRect(-half_sz, -half_sz, control_point_size, control_point_size); } diff --git a/app/widget/curvewidget/curveview.cpp b/app/widget/curvewidget/curveview.cpp index c1ece5146..c13ff8b01 100644 --- a/app/widget/curvewidget/curveview.cpp +++ b/app/widget/curvewidget/curveview.cpp @@ -37,9 +37,9 @@ CurveView::CurveView(QWidget *parent) : setViewportUpdateMode(FullViewportUpdate); SetYAxisEnabled(true); - text_padding_ = QFontMetricsWidth(fontMetrics(), QStringLiteral("i")); + text_padding_ = QtUtils::QFontMetricsWidth(fontMetrics(), QStringLiteral("i")); - minimum_grid_space_ = QFontMetricsWidth(fontMetrics(), QStringLiteral("00000")); + minimum_grid_space_ = QtUtils::QFontMetricsWidth(fontMetrics(), QStringLiteral("00000")); connect(scene(), &QGraphicsScene::selectionChanged, this, &CurveView::SelectionChanged); } diff --git a/app/widget/keyframeview/keyframeviewitem.cpp b/app/widget/keyframeview/keyframeviewitem.cpp index c50a42743..2acc246df 100644 --- a/app/widget/keyframeview/keyframeviewitem.cpp +++ b/app/widget/keyframeview/keyframeviewitem.cpp @@ -42,7 +42,7 @@ KeyframeViewItem::KeyframeViewItem(NodeKeyframePtr key, QGraphicsItem *parent) : connect(key.get(), &NodeKeyframe::TimeChanged, this, &KeyframeViewItem::UpdatePos); connect(key.get(), &NodeKeyframe::TypeChanged, this, &KeyframeViewItem::Redraw); - int keyframe_size = QFontMetricsWidth(qApp->fontMetrics(), "Oi"); + int keyframe_size = QtUtils::QFontMetricsWidth(qApp->fontMetrics(), "Oi"); int half_sz = keyframe_size/2; setRect(-half_sz, -half_sz, keyframe_size, keyframe_size); diff --git a/app/widget/nodeparamview/nodeparamviewconnectedlabel.cpp b/app/widget/nodeparamview/nodeparamviewconnectedlabel.cpp index 43507cac6..85f88d274 100644 --- a/app/widget/nodeparamview/nodeparamviewconnectedlabel.cpp +++ b/app/widget/nodeparamview/nodeparamviewconnectedlabel.cpp @@ -35,7 +35,7 @@ NodeParamViewConnectedLabel::NodeParamViewConnectedLabel(NodeInput *input, QWidg input_(input) { QHBoxLayout* layout = new QHBoxLayout(this); - layout->setSpacing(QFontMetricsWidth(fontMetrics(), QStringLiteral(" "))); + layout->setSpacing(QtUtils::QFontMetricsWidth(fontMetrics(), QStringLiteral(" "))); layout->setMargin(0); layout->addWidget(new QLabel(tr("Connected to"))); diff --git a/app/widget/nodeview/nodeviewitem.cpp b/app/widget/nodeview/nodeviewitem.cpp index 8f637a212..637228b28 100644 --- a/app/widget/nodeview/nodeviewitem.cpp +++ b/app/widget/nodeview/nodeviewitem.cpp @@ -133,7 +133,7 @@ int NodeViewItem::DefaultItemHeight() int NodeViewItem::DefaultItemWidth() { - return QFontMetricsWidth(QFontMetrics(QFont()), "HHHHHHHHHHHH");; + return QtUtils::QFontMetricsWidth(QFontMetrics(QFont()), "HHHHHHHHHHHH");; } int NodeViewItem::DefaultItemBorder() @@ -316,7 +316,7 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti // Calculate how much space we have for text int item_width = title_bar_rect_.width(); int max_text_width = item_width - DefaultTextPadding() * 2 - icon_full_size; - int label_width = QFontMetricsWidth(fm, node_label); + int label_width = QtUtils::QFontMetricsWidth(fm, node_label); // Concatenate text if necessary (adds a "..." to the end and removes characters until the // string fits in the bounds) @@ -326,7 +326,7 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti do { node_label.chop(1); concatenated = QCoreApplication::translate("NodeViewItem", "%1...").arg(node_label); - } while ((label_width = QFontMetricsWidth(fm, concatenated)) > max_text_width); + } while ((label_width = QtUtils::QFontMetricsWidth(fm, concatenated)) > max_text_width); node_label = concatenated; } diff --git a/app/widget/projectexplorer/projectexplorericonviewitemdelegate.cpp b/app/widget/projectexplorer/projectexplorericonviewitemdelegate.cpp index d0bb4cdd6..7ee11c917 100644 --- a/app/widget/projectexplorer/projectexplorericonviewitemdelegate.cpp +++ b/app/widget/projectexplorer/projectexplorericonviewitemdelegate.cpp @@ -66,7 +66,7 @@ void ProjectExplorerIconViewItemDelegate::paint(QPainter *painter, const QStyleO QString duration_str = index.data(Qt::UserRole).toString(); - int timecode_width = QFontMetricsWidth(fm, duration_str); + int timecode_width = QtUtils::QFontMetricsWidth(fm, duration_str); int max_name_width = option.rect.width(); diff --git a/app/widget/scope/histogram/histogram.cpp b/app/widget/scope/histogram/histogram.cpp index f292ccc29..f03b7833c 100644 --- a/app/widget/scope/histogram/histogram.cpp +++ b/app/widget/scope/histogram/histogram.cpp @@ -136,7 +136,7 @@ void HistogramScope::DrawScope(TexturePtr managed_tex, QVariant pipeline) histogram_start_dim_y); label = QString::number( *it * 100, 'f', 1) + "%"; - font_x_offset = QFontMetricsWidth(font_metrics, label) + 4; + font_x_offset = QtUtils::QFontMetricsWidth(font_metrics, label) + 4; p.drawText( histogram_start_dim_x - font_x_offset, diff --git a/app/widget/scope/waveform/waveform.cpp b/app/widget/scope/waveform/waveform.cpp index ac4964624..e888b513e 100644 --- a/app/widget/scope/waveform/waveform.cpp +++ b/app/widget/scope/waveform/waveform.cpp @@ -111,7 +111,7 @@ void WaveformScope::DrawScope(TexturePtr managed_tex, QVariant pipeline) waveform_end_dim_x, (waveform_dim_y * (i * ire_increment)) + waveform_start_dim_y); label = QString::number(1.0 - (i * ire_increment), 'f', 1); - font_x_offset = QFontMetricsWidth(font_metrics, label) + 4; + font_x_offset = QtUtils::QFontMetricsWidth(font_metrics, label) + 4; p.drawText( waveform_start_dim_x - font_x_offset, diff --git a/app/widget/slider/sliderbase.cpp b/app/widget/slider/sliderbase.cpp index 727b2aa01..2da0fbae5 100644 --- a/app/widget/slider/sliderbase.cpp +++ b/app/widget/slider/sliderbase.cpp @@ -143,8 +143,8 @@ void SliderBase::SetValue(const QVariant &v) UpdateLabel(value_); } -void SliderBase::SetDefaultValue(const QVariant &v) -{ +void SliderBase::SetDefaultValue(const QVariant &v) +{ default_value_ = v; } @@ -203,12 +203,12 @@ QString SliderBase::GetFormat() const void SliderBase::RepositionLadder() { QPoint label_global_pos = label_->mapToGlobal(label_->pos()); - int text_width = QFontMetricsWidth(label_->fontMetrics(), label_->text()); + int text_width = QtUtils::QFontMetricsWidth(label_->fontMetrics(), label_->text()); QPoint ladder_pos(label_global_pos.x(), label_global_pos.y() + label_->height() / 2 - drag_ladder_->height() / 2); if (ladder_element_count_ > 0) { - ladder_pos.setX(ladder_pos.x() + text_width + QFontMetricsWidth(label_->fontMetrics(), QStringLiteral("H"))); + ladder_pos.setX(ladder_pos.x() + text_width + QtUtils::QFontMetricsWidth(label_->fontMetrics(), QStringLiteral("H"))); } else { ladder_pos.setX(ladder_pos.x() + text_width / 2 - drag_ladder_->width() / 2); } diff --git a/app/widget/timelinewidget/tool/import.cpp b/app/widget/timelinewidget/tool/import.cpp index a1552839e..f1f7e83fd 100644 --- a/app/widget/timelinewidget/tool/import.cpp +++ b/app/widget/timelinewidget/tool/import.cpp @@ -63,7 +63,7 @@ ImportTool::ImportTool(TimelineWidget *parent) : TimelineTool(parent) { // Calculate width used for importing to give ghosts a slight lead-in so the ghosts aren't right on the cursor - import_pre_buffer_ = QFontMetricsWidth(parent->fontMetrics(), "HHHHHHHH"); + import_pre_buffer_ = QtUtils::QFontMetricsWidth(parent->fontMetrics(), "HHHHHHHH"); } void ImportTool::DragEnter(TimelineViewMouseEvent *event) diff --git a/app/widget/timelinewidget/tool/pointer.cpp b/app/widget/timelinewidget/tool/pointer.cpp index d1a6a257b..938f76afd 100644 --- a/app/widget/timelinewidget/tool/pointer.cpp +++ b/app/widget/timelinewidget/tool/pointer.cpp @@ -717,7 +717,7 @@ void PointerTool::FinishDrag(TimelineViewMouseEvent *event) Timeline::MovementMode PointerTool::IsCursorInTrimHandle(TimelineViewBlockItem *block, qreal cursor_x) { - double kTrimHandle = QFontMetricsWidth(parent()->fontMetrics(), "H"); + double kTrimHandle = QtUtils::QFontMetricsWidth(parent()->fontMetrics(), "H"); // Block is too narrow, no trimming allowed if (block->rect().width() <= kTrimHandle * 2) { diff --git a/app/widget/timelinewidget/view/timelineviewblockitem.cpp b/app/widget/timelinewidget/view/timelineviewblockitem.cpp index 7b98b3630..3454f2701 100644 --- a/app/widget/timelinewidget/view/timelineviewblockitem.cpp +++ b/app/widget/timelinewidget/view/timelineviewblockitem.cpp @@ -120,7 +120,7 @@ void TimelineViewBlockItem::paint(QPainter *painter, const QStyleOptionGraphicsI // Linked clips are underlined if (block_->HasLinks()) { QFontMetrics fm = painter->fontMetrics(); - int text_width = qMin(qRound(rect().width()), QFontMetricsWidth(fm, block_->GetLabel())); + int text_width = qMin(qRound(rect().width()), QtUtils::QFontMetricsWidth(fm, block_->GetLabel())); QPointF underline_start = rect().topLeft() + QPointF(0, text_top + fm.height()); QPointF underline_end = underline_start + QPointF(text_width, 0); diff --git a/app/widget/timeruler/seekablewidget.cpp b/app/widget/timeruler/seekablewidget.cpp index 13108b3cd..bf6f8f20e 100644 --- a/app/widget/timeruler/seekablewidget.cpp +++ b/app/widget/timeruler/seekablewidget.cpp @@ -41,7 +41,7 @@ SeekableWidget::SeekableWidget(QWidget* parent) : text_height_ = fm.height(); // Set width of playhead marker - playhead_width_ = QFontMetricsWidth(fm, "H"); + playhead_width_ = QtUtils::QFontMetricsWidth(fm, "H"); setContextMenuPolicy(Qt::CustomContextMenu); } diff --git a/app/widget/timeruler/timeruler.cpp b/app/widget/timeruler/timeruler.cpp index c9f3d03bd..9fcbc524d 100644 --- a/app/widget/timeruler/timeruler.cpp +++ b/app/widget/timeruler/timeruler.cpp @@ -48,7 +48,7 @@ TimeRuler::TimeRuler(bool text_visible, bool cache_status_visible, QWidget* pare // Get the "minimum" space allowed between two line markers on the ruler (in screen pixels) // Mediocre but reliable way of scaling UI objects by font/DPI size - minimum_gap_between_lines_ = QFontMetricsWidth(fm, "H"); + minimum_gap_between_lines_ = QtUtils::QFontMetricsWidth(fm, "H"); // Text visibility affects height, so we set that here UpdateHeight(); @@ -209,7 +209,7 @@ void TimeRuler::paintEvent(QPaintEvent *) QRect text_rect; Qt::Alignment text_align; QString timecode_str = Timecode::timestamp_to_timecode(ScreenToUnit(i), timebase(), Core::instance()->GetTimecodeDisplay()); - int timecode_width = QFontMetricsWidth(fm, timecode_str); + int timecode_width = QtUtils::QFontMetricsWidth(fm, timecode_str); int timecode_left; if (centered_text_) {