diff --git a/src/qt/qtclasses.cpp b/src/qt/qtclasses.cpp index 0f8869a..478bd6f 100644 --- a/src/qt/qtclasses.cpp +++ b/src/qt/qtclasses.cpp @@ -91,12 +91,20 @@ void MainWindow::compose() { screenRes.getCoords(&srx1, &sry1, &srx2, &sry2); log_debugcpp("(for Percentage) Screen Res: " + std::to_string(srx1) + " " + std::to_string(srx2)+" " + std::to_string(sry1) + " " + std::to_string(sry2)); - uint64_t windowWidth = (uint64_t)std::abs(srx2) * this->widthRatio; - uint64_t screenHeight = (uint64_t)std::abs(sry2); + uint64_t windowWidth = (uint64_t)std::abs(screenRes.width()) * this->widthRatio; + uint64_t screenHeight = (uint64_t)std::abs(screenRes.height()); log_debugcpp("Window Width: " + std::to_string(windowWidth)); + + this->setAttribute(Qt::WA_DontShowOnScreen, true); + this->show(); + this->widget->layout()->update(); + this->hide(); + this->setAttribute(Qt::WA_DontShowOnScreen, false); + for (auto *epw : ews) { if (!epw) continue; epw->setSize(windowWidth, screenHeight); + log_debugcpp("epw loop"); } /* @@ -110,9 +118,10 @@ void MainWindow::compose() { windowHeight += ews[i]->sizeHint().height(); windowHeight += top; windowHeight += bottom; + log_debugcpp("windowHeight loop: " + std::to_string(windowHeight)); } windowHeight += mainMenuBar->height(); - + log_debugcpp("windowHeight final value: " + std::to_string(windowHeight)); /* * Establishing initial window size and position */ @@ -371,7 +380,7 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent, uint64_t i */ uint32_t epChannelCount = eph->getChannelCount(); - if(epChannelCount) { + if(epChannelCount > 1) { cw = new ChannelWidget(epChannelCount, eph, this); //cw->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); widgetLayout->addWidget(cw, row++, 0, 1, 4 /*colmax*/, Qt::AlignTop); @@ -560,8 +569,10 @@ void EndpointWidget::setSize(uint64_t width, uint64_t height) { /* og 1080p 120% testing values */ this->mainLabel->setMaximumWidth((int)width * 0.35 /* 1080p 120%*/); this->mainLabel->setMinimumWidth((int)width * 0.35 /* 1080p 120%*/); - this->cw->setMinimumSize(QSize(1, height * 0.06)); - this->cw->setMaximumSize(QSize(QWIDGETSIZE_MAX, height * 0.06)); + if (cw) { + this->cw->setMinimumSize(QSize(1, height * 0.06)); + this->cw->setMaximumSize(QSize(QWIDGETSIZE_MAX, height * 0.06)); + } for (auto sw : sessionWidgets){ if (sw) sw->setSize(width, height); } @@ -670,6 +681,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QEvent::registerEventType(CustomQEvent::EndpointDefaultChange); QEvent::registerEventType(CustomQEvent::SessionWidgetObsolete); QEvent::registerEventType(CustomQEvent::SessionWidgetCreated); + QEvent::registerEventType(CustomQEvent::RecomposeMainWindow); ; /* This spacer provides proper spacing when window vertically > widgets. */ lastRowSpacer = new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); @@ -759,10 +771,13 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { this->ews[0] = newDef; QCoreApplication::instance()->postEvent(newDef->getDefaultRolesWidgets().at(Roles::ROLE_ALL), new QEvent((QEvent::Type)CustomQEvent::EndpointDefaultChange)); } else if ((newDefRoles & Roles::ROLE_MULTIMEDIA) || - (newDefRoles & Roles::ROLE_CONSOLE)){ newDef->setIndex(0); - this->ews[0] = newDef; - } else if (newDefRoles & Roles::ROLE_COMMUNICATIONS) { newDef->setIndex(1); - this->ews[1] = newDef;} + (newDefRoles & Roles::ROLE_CONSOLE)){ + newDef->setIndex(0); + this->ews[0] = newDef; + } else if (newDefRoles & Roles::ROLE_COMMUNICATIONS) { + newDef->setIndex(1); + this->ews[1] = newDef; + } log_debugcpp("newDef new idx: " + std::to_string(newDef->getIndex())); newDef->getDefaultRolesWidgets().at(role)->blockSignals(false); @@ -774,15 +789,21 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { oldDefRoles = oldDef->getEndpointHandler()->getRoles(); //this->ews[oldDef->getIndex()] = nullptr; if ((oldDefRoles & Roles::ROLE_MULTIMEDIA) && - (oldDefRoles & Roles::ROLE_CONSOLE)) { this-> ews[0] = oldDef; - oldDef->setIndex(0); - } else if (oldDefRoles & Roles::ROLE_COMMUNICATIONS) { this-> ews[1] = oldDef; - oldDef->setIndex(1); - } else { if (newDefIdx > 1) { this->ews[newDefIdx] = oldDef; - oldDef->setIndex(newDefIdx); - } else { this->ews.push_back(oldDef); - oldDef->setIndex(this->ews.size() - 1); - } } + (oldDefRoles & Roles::ROLE_CONSOLE)) { + this-> ews[0] = oldDef; + oldDef->setIndex(0); + } else if (oldDefRoles & Roles::ROLE_COMMUNICATIONS) { + this-> ews[1] = oldDef; + oldDef->setIndex(1); + } else { + if (newDefIdx > 1) { + this->ews[newDefIdx] = oldDef; + oldDef->setIndex(newDefIdx); + } else { + this->ews.push_back(oldDef); + oldDef->setIndex(this->ews.size() - 1); + } + } log_debugcpp("oldDef new idx: " + std::to_string(oldDef->getIndex())); oldDef->getDefaultRolesWidgets().at(role)->blockSignals(false); } diff --git a/src/qt/qtclasses.h b/src/qt/qtclasses.h index 96268cb..16f932b 100644 --- a/src/qt/qtclasses.h +++ b/src/qt/qtclasses.h @@ -53,7 +53,8 @@ enum CustomQEvent { EndpointWidgetCreated = 1002, EndpointDefaultChange = 1003, SessionWidgetCreated = 1004, - SessionWidgetObsolete = 1005 + SessionWidgetObsolete = 1005, + RecomposeMainWindow = 1006 }; template