5050
5151#include " window.h"
5252
53- #include < QMouseEvent>
53+ #include < QFile>
54+ #include < QExposeEvent>
55+ #include < QResizeEvent>
5456#include < QWindow>
5557#include < QBackingStore>
56- #include < QMatrix4x4>
5758#include < QPainter>
5859#include < QXmlStreamReader>
5960#include < QSvgRenderer>
6061#include < QHostAddress>
6162#include < QNetworkInterface>
6263
63- #include < QtWaylandCompositor/qwaylandseat.h>
64-
6564#include " QrCode.hpp"
6665
6766Window::Window ()
@@ -82,6 +81,10 @@ void Window::drawBackground()
8281 file2.open (QIODevice::ReadOnly);
8382 QTextStream s2 (&file2);
8483 QString logoString = s2.readAll ();
84+ QFile file3 (" :/umbrel2.svg" );
85+ file3.open (QIODevice::ReadOnly);
86+ QTextStream s3 (&file3);
87+ QString logoString2 = s3.readAll ();
8588
8689 // Get tor host name
8790 QFile file (" /home/umbrel/umbrel/tor/data/web/hostname" );
@@ -110,9 +113,19 @@ void Window::drawBackground()
110113 QPainter painter2 (device);
111114 int deltaX = this ->geometry ().width () - backgroundImage.width ();
112115 int deltaY = this ->geometry ().height () - backgroundImage.height () + 260 ;
116+ int deltaX2 = backgroundImage.width () - 136 ;
117+ int deltaY2 = backgroundImage.height () - 153 ;
113118 painter2.drawImage (this ->geometry (), backgroundColorImage);
114119 painter2.translate (deltaX / 2 , deltaY / 2 );
115120 painter2.drawImage (backgroundImage.rect (), backgroundImage);
121+ QImage logoImage2 (136 , 153 , QImage::Format_ARGB32);
122+ logoImage2.fill (Qt::white);
123+ QPainter painter6 (&logoImage2);
124+ QXmlStreamReader *reader2 = new QXmlStreamReader (logoString2);
125+ QSvgRenderer *renderer3 = new QSvgRenderer (reader2);
126+ renderer3->render (&painter6);
127+ painter2.translate (deltaX2 / 2 , deltaY2 / 2 );
128+ painter2.drawImage (logoImage2.rect (), logoImage2);
116129 painter2.end ();
117130
118131 // Add text
@@ -141,25 +154,29 @@ void Window::drawBackground()
141154 QXmlStreamReader *reader = new QXmlStreamReader (logoString);
142155 QSvgRenderer *renderer2 = new QSvgRenderer (reader);
143156 renderer2->render (&painter4);
144- QPaintDevice *device2 = m_backingStore->paintDevice ();
145- QPainter painter5 (device2);
146- int delta2X = this ->geometry ().width () - logoImage.width () - 15 ;
147- int delta2Y = this ->geometry ().height () - logoImage.height () - 15 ;
148- painter5.translate (delta2X, delta2Y);
157+ QPainter painter5 (device);
158+ int deltaX3 = this ->geometry ().width () - logoImage.width () - 15 ;
159+ int deltaY3 = this ->geometry ().height () - logoImage.height () - 15 ;
160+ painter5.translate (deltaX3, deltaY3);
149161 painter5.drawImage (logoImage.rect (), logoImage);
150162 painter5.end ();
151163}
164+
152165void Window::update ()
153166{
154167 if (!isExposed ())
155168 return ;
169+ // Remove this for screenshots using linuxfb, but having it otherwise results in glitches
170+ if (updated)
171+ return ;
156172
157173 QRect rect (0 , 0 , width (), height ());
158174 m_backingStore->beginPaint (rect);
159175
160176 drawBackground ();
161177 m_backingStore->endPaint ();
162178 m_backingStore->flush (rect);
179+ updated = true ;
163180}
164181
165182bool Window::event (QEvent *event)
@@ -183,7 +200,7 @@ void Window::resizeEvent(QResizeEvent *resizeEvent)
183200}
184201
185202QSvgRenderer *Window::getQrCode (QString *address) {
186- qrcodegen::QrCode qr0 = qrcodegen::QrCode::encodeText (address->toStdString ().c_str (), qrcodegen::QrCode::Ecc::MEDIUM );
203+ qrcodegen::QrCode qr0 = qrcodegen::QrCode::encodeText (address->toStdString ().c_str (), qrcodegen::QrCode::Ecc::HIGH );
187204 QString svg = QString::fromStdString (qr0.toSvgString (4 ));
188205 QXmlStreamReader *reader = new QXmlStreamReader (svg);
189206 QSvgRenderer *renderer = new QSvgRenderer (reader);
0 commit comments