Fix add account text clipping, enlarge text
authorClaudio Cambra <claudio.cambra@gmail.com>
Wed, 7 Sep 2022 14:47:24 +0000 (16:47 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Sat, 10 Sep 2022 18:16:17 +0000 (20:16 +0200)
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
src/gui/wizard/slideshow.cpp

index ab87be502a6624c5b32f5f723b7099c9aaa8a8df..caba027c76f347451864d28f4ab61673dafb0ec5 100644 (file)
@@ -19,8 +19,6 @@
 #include <QStyle>
 #include <QStyleHints>
 
-#define HASQT5_11 (QT_VERSION >= QT_VERSION_CHECK(5,11,0))
-
 namespace OCC {
 
 static const int Spacing = 6;
@@ -30,6 +28,7 @@ static const int SlideDistance = 400;
 SlideShow::SlideShow(QWidget *parent) : QWidget(parent)
 {
     setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+    setStyleSheet(QStringLiteral("font: bold 18pt"));
 }
 
 void SlideShow::addSlide(const QPixmap &pixmap, const QString &label)
@@ -87,20 +86,20 @@ void SlideShow::setCurrentSlide(int index)
 
 QSize SlideShow::sizeHint() const
 {
-    QFontMetrics fm = fontMetrics();
-    QSize labelSize(0, fm.height());
-    for (const QString &label : _labels) {
-#if (HASQT5_11)
-        labelSize.setWidth(std::max(fm.horizontalAdvance(label), labelSize.width()));
-#else
-        labelSize.setWidth(std::max(fm.width(label), labelSize.width()));
-#endif
+    const auto fm = fontMetrics();
+    QSize labelSize;
+    for (const auto &label : _labels) {
+        const auto labelBoundingRect = fm.boundingRect(rect(), Qt::TextWordWrap, label);
+        labelSize.setWidth(std::max(labelBoundingRect.width(), labelSize.width()));
+        labelSize.setHeight(std::max(labelBoundingRect.height(), labelSize.height()));
     }
+
     QSize pixmapSize;
-    for (const QPixmap &pixmap : _pixmaps) {
+    for (const auto &pixmap : _pixmaps) {
         pixmapSize.setWidth(std::max(pixmap.width(), pixmapSize.width()));
         pixmapSize.setHeight(std::max(pixmap.height(), pixmapSize.height()));
     }
+
     return {
         std::max(labelSize.width(), pixmapSize.width()),
         labelSize.height() + Spacing + pixmapSize.height()
@@ -189,14 +188,29 @@ void SlideShow::maybeRestartTimer()
 }
 
 void SlideShow::drawSlide(QPainter *painter, int index)
-{
-    QString label = _labels.value(index);
-    QRect labelRect = style()->itemTextRect(fontMetrics(), rect(), Qt::AlignBottom | Qt::AlignHCenter, isEnabled(), label);
-    style()->drawItemText(painter, labelRect, Qt::AlignCenter, palette(), isEnabled(), label, QPalette::WindowText);
-
-    QPixmap pixmap = _pixmaps.value(index);
-    QRect pixmapRect = style()->itemPixmapRect(QRect(0, 0, width(), labelRect.top() - Spacing), Qt::AlignCenter, pixmap);
-    style()->drawItemPixmap(painter, pixmapRect, Qt::AlignCenter, pixmap);
+{    
+    const auto label = _labels.value(index);
+    const auto labelRect = style()->itemTextRect(fontMetrics(),
+                                                 rect(),
+                                                 Qt::AlignBottom | Qt::AlignHCenter | Qt::TextWordWrap,
+                                                 isEnabled(),
+                                                 label);
+    style()->drawItemText(painter,
+                          labelRect,
+                          Qt::AlignCenter | Qt::TextWordWrap,
+                          palette(),
+                          isEnabled(),
+                          label,
+                          QPalette::WindowText);
+
+    const auto pixmap = _pixmaps.value(index);
+    const auto pixmapRect = style()->itemPixmapRect(QRect(0, 0, width(), labelRect.top() - Spacing),
+                                                    Qt::AlignCenter,
+                                                    pixmap);
+    style()->drawItemPixmap(painter,
+                            pixmapRect,
+                            Qt::AlignCenter,
+                            pixmap);
 }
 
 } // namespace OCC