SVG5/formscreensaver.cpp
2025-10-12 13:55:56 +09:00

165 lines
3.1 KiB
C++

#include "formscreensaver.h"
#include "ui_formscreensaver.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QPainter>
#include <QRandomGenerator>
#include "mainwindow.h"
FormScreenSaver::FormScreenSaver(QWidget *parent) :
QWidget(parent),
ui(new Ui::FormScreenSaver)
{
ui->setupUi(this);
m_nCount = 0;
m_nScreenWidth = qApp->desktop()->size().width();
m_nScreenHeight = qApp->desktop()->size().height();
m_Color = new int[25];
int i=0;
for(i=0 ; i<25 ; i++)
{
m_Color[i] = 100;
}
connect(&m_TimerScreenSaver, SIGNAL(timeout()), this, SLOT(ScreenUpdate()));
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setGeometry(0, 0, m_nScreenWidth, m_nScreenHeight);
showFullScreen();
}
FormScreenSaver::~FormScreenSaver()
{
disconnect(&m_TimerScreenSaver, SIGNAL(timeout()), this, SLOT(ScreenUpdate()));
delete ui;
SAFE_ARRAY_DELETE(m_Color);
}
void FormScreenSaver::Init()
{
m_nCount = 0;
raise();
show();
//grabMouse();
m_TimerScreenSaver.setInterval(100);
m_TimerScreenSaver.start();
}
void FormScreenSaver::Exit()
{
if(isVisible()==false)
{
return;
}
if(m_TimerScreenSaver.isActive()==true)
{
m_TimerScreenSaver.stop();
}
hide();
m_nCount = 0;
MainWindow* pMainWindow = MainWindow::GetMainWindow();
pMainWindow->ResetScreenSaverTimer();
pMainWindow->StartScreenSaverTimer();
}
void FormScreenSaver::ScreenUpdate()
{
m_nCount++;
update();
}
void FormScreenSaver::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QSize nSize = size();
int nPaddingLeft = 0;
//QRect rectDisplay = QRect(nPaddingLeft, 0, nSize.width()-nPaddingLeft, nSize.height());
//QColor colorBackground;
painter.setRenderHint(QPainter::SmoothPixmapTransform);
int nColor = QRandomGenerator::global()->bounded(0, 127) + 128;
int nIndex = QRandomGenerator::global()->bounded(0, 24);
float fGabWidth = (float)m_nScreenWidth/5.0f;
float fGabHeight = (float)m_nScreenHeight/5.0f;
if(nIndex<0)
{
nIndex = 0;
}
if(nIndex>24)
{
nIndex = 24;
}
m_Color[nIndex] = nColor;
int i=0;
for(i=0 ; i<25 ; i++)
{
int nX = i%5;
int nY = i/5;
nColor = m_Color[i];
if(nColor<0)
{
nColor = 0;
}
if(nColor>255)
{
nColor = 25;;
}
painter.fillRect(QRect(nX*fGabWidth, nY*fGabHeight, (fGabWidth+0.5), (fGabHeight+0.5f)), QColor(0, 0, nColor));
}
//painter.fillRect(QRect(0, 0, nSize.width(), nSize.height()), QColor(0, 0, nColor));
}
void FormScreenSaver::mousePressEvent(QMouseEvent *event)
{
Exit();
}
void FormScreenSaver::mouseReleaseEvent(QMouseEvent *event)
{
Exit();
}
void FormScreenSaver::mouseDoubleClickEvent(QMouseEvent *event)
{
Exit();
}
void FormScreenSaver::mouseMoveEvent(QMouseEvent *event)
{
Exit();
}
void FormScreenSaver::keyPressEvent(QKeyEvent *event)
{
Exit();
}
void FormScreenSaver::keyReleaseEvent(QKeyEvent *event)
{
Exit();
}