1*4882a593SmuzhiyunFrom caacc9bc622238ca48674ea6f40d07466e4b97a5 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Valentin Ochs <a@0au.de> 3*4882a593SmuzhiyunDate: Sat, 20 Jun 2020 16:01:27 +0200 4*4882a593SmuzhiyunSubject: [PATCH] Replace obsolete/deprecated Qt methods 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun[Thomas: Backport from upstream commit 7*4882a593Smuzhiyunae726b70a7ada9a4be5808e00f0c951318479684, one conflict manually 8*4882a593Smuzhiyunresolved in pv/util.cpp.] 9*4882a593SmuzhiyunSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> 10*4882a593Smuzhiyun[Fabrice: restore original patch in pv/util.cpp for 0.4.2] 11*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 12*4882a593Smuzhiyun--- 13*4882a593Smuzhiyun pv/util.cpp | 21 +++++++++++++++++++-- 14*4882a593Smuzhiyun pv/util.hpp | 10 ++++++++++ 15*4882a593Smuzhiyun pv/views/trace/decodetrace.cpp | 3 ++- 16*4882a593Smuzhiyun pv/views/trace/ruler.cpp | 2 +- 17*4882a593Smuzhiyun pv/widgets/timestampspinbox.cpp | 2 +- 18*4882a593Smuzhiyun 5 files changed, 33 insertions(+), 5 deletions(-) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyundiff --git a/pv/util.cpp b/pv/util.cpp 21*4882a593Smuzhiyunindex 49b9467c..2a63038d 100644 22*4882a593Smuzhiyun--- a/pv/util.cpp 23*4882a593Smuzhiyun+++ b/pv/util.cpp 24*4882a593Smuzhiyun@@ -137,7 +137,7 @@ QString format_time_si(const Timestamp& v, SIPrefix prefix, 25*4882a593Smuzhiyun QString s; 26*4882a593Smuzhiyun QTextStream ts(&s); 27*4882a593Smuzhiyun if (sign && !v.is_zero()) 28*4882a593Smuzhiyun- ts << forcesign; 29*4882a593Smuzhiyun+ ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign); 30*4882a593Smuzhiyun ts << qSetRealNumberPrecision(precision) << (v * multiplier); 31*4882a593Smuzhiyun ts << ' ' << prefix << unit; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun@@ -171,7 +171,7 @@ QString format_value_si(double v, SIPrefix prefix, unsigned precision, 34*4882a593Smuzhiyun QString s; 35*4882a593Smuzhiyun QTextStream ts(&s); 36*4882a593Smuzhiyun if (sign && (v != 0)) 37*4882a593Smuzhiyun- ts << forcesign; 38*4882a593Smuzhiyun+ ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign); 39*4882a593Smuzhiyun ts.setRealNumberNotation(QTextStream::FixedNotation); 40*4882a593Smuzhiyun ts.setRealNumberPrecision(precision); 41*4882a593Smuzhiyun ts << (v * multiplier) << ' ' << prefix << unit; 42*4882a593Smuzhiyun@@ -281,5 +281,22 @@ vector<string> split_string(string text, string separator) 43*4882a593Smuzhiyun return result; 44*4882a593Smuzhiyun } 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun+/** 47*4882a593Smuzhiyun+ * Return the width of a string in a given font. 48*4882a593Smuzhiyun+ * 49*4882a593Smuzhiyun+ * @param[in] metric metrics of the font 50*4882a593Smuzhiyun+ * @param[in] string the string whose width should be determined 51*4882a593Smuzhiyun+ * 52*4882a593Smuzhiyun+ * @return width of the string in pixels 53*4882a593Smuzhiyun+ */ 54*4882a593Smuzhiyun+std::streamsize text_width(const QFontMetrics &metric, const QString &string) 55*4882a593Smuzhiyun+{ 56*4882a593Smuzhiyun+#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) 57*4882a593Smuzhiyun+ return metric.horizontalAdvance(string); 58*4882a593Smuzhiyun+#else 59*4882a593Smuzhiyun+ return metric.width(string); 60*4882a593Smuzhiyun+#endif 61*4882a593Smuzhiyun+} 62*4882a593Smuzhiyun+ 63*4882a593Smuzhiyun } // namespace util 64*4882a593Smuzhiyun } // namespace pv 65*4882a593Smuzhiyundiff --git a/pv/util.hpp b/pv/util.hpp 66*4882a593Smuzhiyunindex dd7be222..ad904f85 100644 67*4882a593Smuzhiyun--- a/pv/util.hpp 68*4882a593Smuzhiyun+++ b/pv/util.hpp 69*4882a593Smuzhiyun@@ -30,6 +30,7 @@ 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #include <QMetaType> 72*4882a593Smuzhiyun #include <QString> 73*4882a593Smuzhiyun+#include <QFontMetrics> 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun using std::string; 76*4882a593Smuzhiyun using std::vector; 77*4882a593Smuzhiyun@@ -137,6 +138,15 @@ QString format_time_minutes(const Timestamp& t, signed precision = 0, 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun vector<string> split_string(string text, string separator); 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun+/** 82*4882a593Smuzhiyun+ * Return the width of a string in a given font. 83*4882a593Smuzhiyun+ * @param[in] metric metrics of the font 84*4882a593Smuzhiyun+ * @param[in] string the string whose width should be determined 85*4882a593Smuzhiyun+ * 86*4882a593Smuzhiyun+ * @return width of the string in pixels 87*4882a593Smuzhiyun+ */ 88*4882a593Smuzhiyun+std::streamsize text_width(const QFontMetrics &metric, const QString &string); 89*4882a593Smuzhiyun+ 90*4882a593Smuzhiyun } // namespace util 91*4882a593Smuzhiyun } // namespace pv 92*4882a593Smuzhiyun 93*4882a593Smuzhiyundiff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp 94*4882a593Smuzhiyunindex 9c7196bf..1ee7ae9f 100644 95*4882a593Smuzhiyun--- a/pv/views/trace/decodetrace.cpp 96*4882a593Smuzhiyun+++ b/pv/views/trace/decodetrace.cpp 97*4882a593Smuzhiyun@@ -103,7 +103,8 @@ DecodeTrace::DecodeTrace(pv::Session &session, 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun // Determine shortest string we want to see displayed in full 100*4882a593Smuzhiyun QFontMetrics m(QApplication::font()); 101*4882a593Smuzhiyun- min_useful_label_width_ = m.width("XX"); // e.g. two hex characters 102*4882a593Smuzhiyun+ // e.g. two hex characters 103*4882a593Smuzhiyun+ min_useful_label_width_ = util::text_width(m, "XX"); 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun // For the base color, we want to start at a very different color for 106*4882a593Smuzhiyun // every decoder stack, so multiply the index with a number that is 107*4882a593Smuzhiyundiff --git a/pv/views/trace/ruler.cpp b/pv/views/trace/ruler.cpp 108*4882a593Smuzhiyunindex acea8a36..68134966 100644 109*4882a593Smuzhiyun--- a/pv/views/trace/ruler.cpp 110*4882a593Smuzhiyun+++ b/pv/views/trace/ruler.cpp 111*4882a593Smuzhiyun@@ -218,7 +218,7 @@ void Ruler::paintEvent(QPaintEvent*) 112*4882a593Smuzhiyun const int rightedge = width(); 113*4882a593Smuzhiyun const int x_tick = tick.first; 114*4882a593Smuzhiyun if ((x_tick > leftedge) && (x_tick < rightedge)) { 115*4882a593Smuzhiyun- const int x_left_bound = QFontMetrics(font()).width(tick.second) / 2; 116*4882a593Smuzhiyun+ const int x_left_bound = util::text_width(QFontMetrics(font()), tick.second) / 2; 117*4882a593Smuzhiyun const int x_right_bound = rightedge - x_left_bound; 118*4882a593Smuzhiyun const int x_legend = min(max(x_tick, x_left_bound), x_right_bound); 119*4882a593Smuzhiyun p.drawText(x_legend, ValueMargin, 0, text_height, 120*4882a593Smuzhiyundiff --git a/pv/widgets/timestampspinbox.cpp b/pv/widgets/timestampspinbox.cpp 121*4882a593Smuzhiyunindex 21b3d0d7..383aed1f 100644 122*4882a593Smuzhiyun--- a/pv/widgets/timestampspinbox.cpp 123*4882a593Smuzhiyun+++ b/pv/widgets/timestampspinbox.cpp 124*4882a593Smuzhiyun@@ -75,7 +75,7 @@ QSize TimestampSpinBox::minimumSizeHint() const 125*4882a593Smuzhiyun { 126*4882a593Smuzhiyun const QFontMetrics fm(fontMetrics()); 127*4882a593Smuzhiyun const int l = round(value_).str().size() + precision_ + 10; 128*4882a593Smuzhiyun- const int w = fm.width(QString(l, '0')); 129*4882a593Smuzhiyun+ const int w = util::text_width(fm, QString(l, '0')); 130*4882a593Smuzhiyun const int h = lineEdit()->minimumSizeHint().height(); 131*4882a593Smuzhiyun return QSize(w, h); 132*4882a593Smuzhiyun } 133*4882a593Smuzhiyun-- 134*4882a593Smuzhiyun2.26.2 135*4882a593Smuzhiyun 136