From af00f1be72a4a0e4b5a2ddd43fcf892f84d66b1c Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Mon, 24 Feb 2020 15:22:17 -0500
Subject: [PATCH] utils: move scaling ratio into utils

Change-Id: Iead560e5fb38981ce899532577e5b7e4cba24f22
---
 src/accountitemdelegate.cpp       |  3 +--
 src/callwidget.cpp                |  3 +--
 src/contactpickeritemdelegate.cpp |  7 +++----
 src/conversationitemdelegate.cpp  |  5 ++---
 src/currentaccountcombobox.cpp    |  3 +--
 src/mainwindow.cpp                |  7 +------
 src/mainwindow.h                  |  2 --
 src/utils.cpp                     | 12 ++++++++++++
 src/utils.h                       |  3 +++
 9 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/src/accountitemdelegate.cpp b/src/accountitemdelegate.cpp
index 96ce2a3..49db13c 100644
--- a/src/accountitemdelegate.cpp
+++ b/src/accountitemdelegate.cpp
@@ -26,7 +26,6 @@
 #include "accountlistmodel.h"
 #include "ringthemeutils.h"
 #include "lrcinstance.h"
-#include "mainwindow.h"
 
 #undef REGISTERED
 
@@ -71,7 +70,7 @@ AccountItemDelegate::paint(QPainter* painter,
     QFont fontPrimary = painter->font();
     QFont fontSecondary = painter->font();
     fontPrimary.setWeight(QFont::ExtraLight);
-    auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+    auto scalingRatio = Utils::getCurrentScalingRatio();
     if (scalingRatio > 1.0) {
         fontPrimary.setPointSize(fontSize_ - 1);
         fontSecondary.setPointSize(fontSize_ - 2);
diff --git a/src/callwidget.cpp b/src/callwidget.cpp
index e793d42..8bfc450 100644
--- a/src/callwidget.cpp
+++ b/src/callwidget.cpp
@@ -290,13 +290,12 @@ CallWidget::navigated(bool to)
 void
 CallWidget::updateCustomUI()
 {
-    auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+    auto scalingRatio = Utils::getCurrentScalingRatio();
     if (scalingRatio > 1.0) {
         ui->messageView->setZoomFactor(1.15);
     } else {
         ui->messageView->setZoomFactor(1.0);
     }
-
 }
 
 void
diff --git a/src/contactpickeritemdelegate.cpp b/src/contactpickeritemdelegate.cpp
index f0c0e8e..e8ae4d5 100644
--- a/src/contactpickeritemdelegate.cpp
+++ b/src/contactpickeritemdelegate.cpp
@@ -27,7 +27,6 @@
 #include "ringthemeutils.h"
 #include "utils.h"
 #include "lrcinstance.h"
-#include "mainwindow.h"
 
 #include <ciso646>
 
@@ -64,7 +63,7 @@ ContactPickerItemDelegate::paint(QPainter* painter
         painter->fillRect(option.rect, RingTheme::lightGrey_);
         QFont font(painter->font());
         QPen pen(painter->pen());
-        auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+        auto scalingRatio = Utils::getCurrentScalingRatio();
         if (scalingRatio > 1.0) {
             font.setPointSize(fontSize_ - 2);
         } else {
@@ -156,7 +155,7 @@ ContactPickerItemDelegate::paintRingContactItem(QPainter* painter,
     QFont font(painter->font());
     QPen pen(painter->pen());
 
-    auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+    auto scalingRatio = Utils::getCurrentScalingRatio();
     if (scalingRatio > 1.0) {
         font.setPointSize(fontSize_ - 2);
     } else {
@@ -217,7 +216,7 @@ ContactPickerItemDelegate::paintSIPContactItem(QPainter* painter,
     QPen pen(painter->pen());
     painter->setPen(pen);
 
-    auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+    auto scalingRatio = Utils::getCurrentScalingRatio();
     if (scalingRatio > 1.0) {
         font.setPointSize(fontSize_ - 2);
     } else {
diff --git a/src/conversationitemdelegate.cpp b/src/conversationitemdelegate.cpp
index 19f953c..97692a0 100644
--- a/src/conversationitemdelegate.cpp
+++ b/src/conversationitemdelegate.cpp
@@ -29,7 +29,6 @@
 #include "ringthemeutils.h"
 #include "utils.h"
 #include "lrcinstance.h"
-#include "mainwindow.h"
 
 #include <ciso646>
 
@@ -186,7 +185,7 @@ ConversationItemDelegate::paintConversationItem(QPainter* painter,
 
     int infoTextWidthModifier = 0;
     int infoText2HeightModifier = 0;
-    auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+    auto scalingRatio = Utils::getCurrentScalingRatio();
     if (scalingRatio > 1.0) {
         font.setPointSize(fontSize_ - 2);
         infoTextWidthModifier = 12;
@@ -361,7 +360,7 @@ ConversationItemDelegate::paintInvitationItem(QPainter* painter,
     auto leftMargin = dx_ + sizeImage_ + dx_;
     auto rightMargin = dx_;
 
-    auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+    auto scalingRatio = Utils::getCurrentScalingRatio();
     font.setPointSize(scalingRatio > 1.0 ? fontSize_ - 2 : fontSize_);
 
     if (option.state & QStyle::State_MouseOver) {
diff --git a/src/currentaccountcombobox.cpp b/src/currentaccountcombobox.cpp
index e660263..69b2282 100644
--- a/src/currentaccountcombobox.cpp
+++ b/src/currentaccountcombobox.cpp
@@ -24,7 +24,6 @@
 #include "utils.h"
 #include "ringthemeutils.h"
 #include "lrcinstance.h"
-#include "mainwindow.h"
 
 #include <QPixmap>
 #include <QMessageBox>
@@ -133,7 +132,7 @@ CurrentAccountComboBox::paintEvent(QPaintEvent* e)
     QFont fontPrimary = QFont(QStringLiteral("Segoe UI Emoji"));
     QFont fontSecondary = painter.font();
     fontPrimary.setWeight(QFont::ExtraLight);
-    auto scalingRatio = MainWindow::instance().getCurrentScalingRatio();
+    auto scalingRatio = Utils::getCurrentScalingRatio();
     fontPrimary.setPointSize(scalingRatio > 1.0 ? 10 : 11);
     fontSecondary.setPointSize(scalingRatio > 1.0 ? 9 : 10);
 
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index aca3b70..f5da610 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -400,7 +400,7 @@ void MainWindow::show()
 
 void MainWindow::slotScreenChanged(QScreen* screen)
 {
-    currentScalingRatio_ = screen->logicalDotsPerInchX() / 96;
+    Utils::setCurrentScalingRatio(screen->logicalDotsPerInchX() / 96);
     qobject_cast<NavWidget*>(ui->navStack->currentWidget())->updateCustomUI();
     adjustSize();
     updateGeometry();
@@ -412,11 +412,6 @@ void MainWindow::resizeEvent(QResizeEvent* event)
     qobject_cast<NavWidget*>(ui->navStack->currentWidget())->updateCustomUI();
 }
 
-float MainWindow::getCurrentScalingRatio()
-{
-    return currentScalingRatio_;
-}
-
 void MainWindow::keyReleaseEvent(QKeyEvent* ke)
 {
     emit keyReleased(ke);
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 75a6c3d..cd019c7 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -52,7 +52,6 @@ public:
     }
     bool init();
     void show();
-    float getCurrentScalingRatio();
     void showWindow();
     void darken();
     void lighten();
@@ -88,7 +87,6 @@ private:
     ScreenEnum lastScr_;
     int lastAccountCount_;
     Qt::WindowFlags flags_;
-    float currentScalingRatio_;
     Qt::WindowState currentWindowState_{ Qt::WindowState::WindowNoState };
 
     void readSettingsFromRegistry();
diff --git a/src/utils.cpp b/src/utils.cpp
index 92c556b..4253d66 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -757,6 +757,18 @@ Utils::setupQRCode(QString ringID, int margin)
     return result;
 }
 
+float
+Utils::getCurrentScalingRatio()
+{
+    return CURRENT_SCALING_RATIO;
+}
+
+void
+Utils::setCurrentScalingRatio(float ratio)
+{
+    CURRENT_SCALING_RATIO = ratio;
+}
+
 QString
 Utils::formattedTime(int duration)
 {
diff --git a/src/utils.h b/src/utils.h
index 8d63898..c9f4076 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -48,6 +48,7 @@
 #include "api/contact.h"
 
 static const QSize IMAGE_SIZE{ 128, 128 };
+static float CURRENT_SCALING_RATIO{ 1.0 };
 
 #ifdef BETA
 static constexpr bool isBeta = true;
@@ -75,6 +76,8 @@ void showSystemNotification(QWidget* widget, const QString& sender, const QStrin
 QSize getRealSize(QScreen* screen);
 void forceDeleteAsync(const QString& path);
 QString getChangeLog();
+float getCurrentScalingRatio();
+void setCurrentScalingRatio(float ratio);
 
 // updates
 void cleanUpdateFiles();
-- 
GitLab