From d33de2e4277dfcd090a36c96e09148ea6a5d2e55 Mon Sep 17 00:00:00 2001
From: Trial97 <alexandru.tripon97@gmail.com>
Date: Thu, 8 Jun 2023 00:54:32 +0300
Subject: Made cat scalable

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
---
 launcher/ui/instanceview/InstanceView.cpp | 23 ++++++++++++++++++++++-
 launcher/ui/instanceview/InstanceView.h   |  8 ++++----
 2 files changed, 26 insertions(+), 5 deletions(-)

(limited to 'launcher/ui/instanceview')

diff --git a/launcher/ui/instanceview/InstanceView.cpp b/launcher/ui/instanceview/InstanceView.cpp
index fbeffe35..4c83e94a 100644
--- a/launcher/ui/instanceview/InstanceView.cpp
+++ b/launcher/ui/instanceview/InstanceView.cpp
@@ -48,6 +48,7 @@
 #include <QAccessible>
 
 #include "VisualGroup.h"
+#include "ui/themes/ThemeManager.h"
 #include <QDebug>
 
 #include <Application.h>
@@ -73,6 +74,7 @@ InstanceView::InstanceView(QWidget *parent)
     setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
     setAcceptDrops(true);
     setAutoScroll(true);
+    setCatVisible(APPLICATION->settings()->get("TheCat").toBool());
 }
 
 InstanceView::~InstanceView()
@@ -498,12 +500,31 @@ void InstanceView::mouseDoubleClickEvent(QMouseEvent *event)
     }
 }
 
-void InstanceView::paintEvent(QPaintEvent *event)
+void InstanceView::setCatVisible(bool visible)
+{
+    m_catVisible = visible;
+    m_catPixmap.load(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage()));
+}
+
+void InstanceView::paintEvent(QPaintEvent* event)
 {
     executeDelayedItemsLayout();
 
     QPainter painter(this->viewport());
 
+    if (m_catVisible) {
+        int widWidth = this->viewport()->width();
+        int widHeight = this->viewport()->height();
+        if (m_catPixmap.width() < widWidth)
+            widWidth = m_catPixmap.width();
+        if (m_catPixmap.height() < widHeight)
+            widHeight = m_catPixmap.height();
+        auto pixmap = m_catPixmap.scaled(widWidth, widHeight, Qt::KeepAspectRatio);
+        QRect rectOfPixmap = pixmap.rect();
+        rectOfPixmap.moveBottomRight(this->viewport()->rect().bottomRight());
+        painter.drawPixmap(rectOfPixmap.topLeft(), pixmap);
+    }
+
 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
     QStyleOptionViewItem option;
     initViewItemOption(&option);
diff --git a/launcher/ui/instanceview/InstanceView.h b/launcher/ui/instanceview/InstanceView.h
index ac338274..a9bd0bd7 100644
--- a/launcher/ui/instanceview/InstanceView.h
+++ b/launcher/ui/instanceview/InstanceView.h
@@ -85,10 +85,8 @@ public:
 
     virtual QRegion visualRegionForSelection(const QItemSelection &selection) const override;
 
-    int spacing() const
-    {
-        return m_spacing;
-    };
+    int spacing() const { return m_spacing; };
+    void setCatVisible(bool visible);
 
 public slots:
     virtual void updateGeometries() override;
@@ -139,6 +137,8 @@ private:
     int m_currentItemsPerRow = -1;
     int m_currentCursorColumn= -1;
     mutable QCache<int, QRect> geometryCache;
+    bool m_catVisible = false;
+    QPixmap m_catPixmap;
 
     // point where the currently active mouse action started in geometry coordinates
     QPoint m_pressedPosition;
-- 
cgit 


From 0008b22d8b352e3591ee7ba7c6d9313ed23cbd4a Mon Sep 17 00:00:00 2001
From: Trial97 <alexandru.tripon97@gmail.com>
Date: Wed, 28 Jun 2023 18:41:47 +0300
Subject: Renamed function

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
---
 launcher/ui/MainWindow.cpp                | 2 +-
 launcher/ui/instanceview/InstanceView.cpp | 9 ++++++---
 launcher/ui/instanceview/InstanceView.h   | 2 +-
 3 files changed, 8 insertions(+), 5 deletions(-)

(limited to 'launcher/ui/instanceview')

diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp
index 26fcb3a3..515abf07 100644
--- a/launcher/ui/MainWindow.cpp
+++ b/launcher/ui/MainWindow.cpp
@@ -927,7 +927,7 @@ void MainWindow::onCatToggled(bool state)
 
 void MainWindow::setCatBackground(bool enabled)
 {
-    view->setCatVisible(enabled);
+    view->setPaintCat(enabled);
     view->viewport()->repaint();
 }
 
diff --git a/launcher/ui/instanceview/InstanceView.cpp b/launcher/ui/instanceview/InstanceView.cpp
index 4c83e94a..1911dd59 100644
--- a/launcher/ui/instanceview/InstanceView.cpp
+++ b/launcher/ui/instanceview/InstanceView.cpp
@@ -74,7 +74,7 @@ InstanceView::InstanceView(QWidget *parent)
     setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
     setAcceptDrops(true);
     setAutoScroll(true);
-    setCatVisible(APPLICATION->settings()->get("TheCat").toBool());
+    setPaintCat(APPLICATION->settings()->get("TheCat").toBool());
 }
 
 InstanceView::~InstanceView()
@@ -500,10 +500,13 @@ void InstanceView::mouseDoubleClickEvent(QMouseEvent *event)
     }
 }
 
-void InstanceView::setCatVisible(bool visible)
+void InstanceView::setPaintCat(bool visible)
 {
     m_catVisible = visible;
-    m_catPixmap.load(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage()));
+    if (visible)
+        m_catPixmap.load(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage()));
+    else
+        m_catPixmap = QPixmap();
 }
 
 void InstanceView::paintEvent(QPaintEvent* event)
diff --git a/launcher/ui/instanceview/InstanceView.h b/launcher/ui/instanceview/InstanceView.h
index a9bd0bd7..36405675 100644
--- a/launcher/ui/instanceview/InstanceView.h
+++ b/launcher/ui/instanceview/InstanceView.h
@@ -86,7 +86,7 @@ public:
     virtual QRegion visualRegionForSelection(const QItemSelection &selection) const override;
 
     int spacing() const { return m_spacing; };
-    void setCatVisible(bool visible);
+    void setPaintCat(bool visible);
 
 public slots:
     virtual void updateGeometries() override;
-- 
cgit