Files
RRJClient/Core/screenchecker.cpp
2025-01-20 10:58:43 +03:00

108 lines
2.4 KiB
C++

#include "screenchecker.h"
#include <QLabel>
ScreenChecker::ScreenChecker(DataParser *dataParser, QHBoxLayout *layout, QObject *parent) :
QObject(parent)
{
screenCount = 0;
this->layout = layout;
this->dataParser = dataParser;
}
void ScreenChecker::Check()
{
screens = QGuiApplication::screens();
for (int i = 0; i < screens.size();i++)
{
QScreen *display = screens[i];
qDebug() << screens[i]->name();
screenCount++;
QString sizeText = QString::number(display->size().width()) + "x" + QString::number(display->size().height());
sizeText.append("\n");
sizeText.append(QString::number(display->refreshRate()) + "Hz");
QPushButton *button = new QPushButton(sizeText);
buttons.append(button);
layout->addWidget(button);
float width = display->size().width();
float height = display->size().height();
float ratio = width / height;
QSize *sizeResult;
if(height > width){
sizeResult = new QSize(90,90 / ratio);
}else{
sizeResult = new QSize(150,150 / ratio);
}
button->setMinimumSize(*sizeResult);
button->setMaximumSize(*sizeResult);
button->setCheckable(true);
connect(button,&QPushButton::clicked,this,&ScreenChecker::UpdateDisplayData);
if(i == 0){
button->setChecked(true);
button->setFlat(true);
QPalette palette= button->palette();
button->setEnabled(false);
palette.setColor(QPalette::Background,QColor(Qt::blue));
palette.setColor(QPalette::ButtonText,QColor(Qt::black));
button->setPalette(palette);
}
}
UpdateDisplayData();
}
void ScreenChecker::UpdateDisplayData()
{
QList<int> *displays = new QList<int>;
for (int i = 0; i <buttons.count();i++)
{
if(buttons[i]->isChecked()){
displays->append(i);
}
}
dataParser->AddRunData(*displays);
}
void ScreenChecker::hide()
{
for (int i = 0; i <buttons.count();i++)
{
buttons[i]->hide();
}
}
void ScreenChecker::show()
{
for (int i = 0; i <buttons.count();i++)
{
buttons[i]->show();
}
}
QString ScreenChecker::getScreenCount() const
{
return QString::number(screenCount);
}
ScreenChecker::~ScreenChecker()
{
for (int i = 0; i < buttons.size(); i++)
{
delete buttons[i];
}
}