void B9Terminal::onScreenCountChanged(int iCount){ QString sVideo = "Disconnected or Primary Monitor"; if(pProjector) { delete pProjector; pProjector = NULL; if(pPrinterComm->getProjectorStatus()==B9PrinterStatus::PS_ON) if(!isEnabled())emit signalAbortPrint("Print Aborted: Connection to Projector Lost or Changed During Print Cycle"); } pProjector = new B9Projector(true, 0,Qt::WindowStaysOnTopHint); makeProjectorConnections(); int i=iCount; int screenCount = m_pDesktop->screenCount(); QRect screenGeometry; if(m_bUsePrimaryMonitor) { screenGeometry = m_pDesktop->screenGeometry(0); } else{ for(i=screenCount-1;i>= 0;i--) { screenGeometry = m_pDesktop->screenGeometry(i); if(screenGeometry.width() == pPrinterComm->getNativeX() && screenGeometry.height() == pPrinterComm->getNativeY()) { //Found the projector! sVideo = "Connected to Monitor: " + QString::number(i+1); m_bNeedsWarned = true; break; } } } if(i<=0||m_bUsePrimaryMonitor)m_bPrimaryScreen = true; else m_bPrimaryScreen = false; emit updateProjectorOutput(sVideo); pProjector->setShowGrid(true); pProjector->setCPJ(NULL); emit sendStatusMsg("B9Creator - Idle"); pProjector->setGeometry(screenGeometry); if(!m_bPrimaryScreen){ pProjector->showFullScreen(); // Only show it if it is a secondary monitor pProjector->hide(); activateWindow(); // if not using primary monitor, take focus back to here. } else if(m_bPrintPreview||(pPrinterComm->getProjectorStatus() != B9PrinterStatus::PS_OFF && pPrinterComm->getProjectorStatus() != B9PrinterStatus::PS_COOLING && pPrinterComm->getProjectorStatus() != B9PrinterStatus::PS_UNKNOWN)) { // if the projector is not turned off, we better put up the blank screen now! pProjector->showFullScreen(); } //else warnSingleMonitor(); }
void B9Terminal::onScreenCountChanged(int iCount){ QString sVideo = "Disconnected or Primary Monitor"; if(pProjector) { delete pProjector; pProjector = NULL; if(pPrinterComm->getProjectorStatus()==B9PrinterStatus::PS_ON) if(!isEnabled())emit signalAbortPrint("Print Aborted: Connection to Projector Lost or Changed During Print Cycle"); } pProjector = new B9Projector(true, 0,Qt::WindowStaysOnTopHint); makeProjectorConnections(); int i=iCount; int screenCount = m_pDesktop->screenCount(); QRect screenGeometry; if(m_bUsePrimaryMonitor) { screenGeometry = m_pDesktop->screenGeometry(0); } else{ for(i=screenCount-1;i>= 0;i--) { screenGeometry = m_pDesktop->screenGeometry(i); if(screenGeometry.width() == pPrinterComm->getNativeX() && screenGeometry.height() == pPrinterComm->getNativeY()) { //发现投影机! sVideo = "Connected to Monitor: " + QString::number(i+1); m_bNeedsWarned = true; break; } } } if(i<=0||m_bUsePrimaryMonitor)m_bPrimaryScreen = true; else m_bPrimaryScreen = false; emit updateProjectorOutput(sVideo); pProjector->setShowGrid(true); pProjector->setCPJ(NULL); emit sendStatusMsg("B9Creator - Idle"); pProjector->setGeometry(screenGeometry); if(!m_bPrimaryScreen){ pProjector->showFullScreen(); // 只显示它,如果它是一个辅助监视器 pProjector->hide(); activateWindow(); // 如果不使用主显示器,采取焦点回到这里。 } else if(m_bPrintPreview||(pPrinterComm->getProjectorStatus() != B9PrinterStatus::PS_OFF && pPrinterComm->getProjectorStatus() != B9PrinterStatus::PS_COOLING && pPrinterComm->getProjectorStatus() != B9PrinterStatus::PS_UNKNOWN)) { // 如果投影机不会关闭,我们最好设置黑屏 if(getIsVirtualDevice()) { screenGeometry.setY(20); screenGeometry.setWidth(1024); screenGeometry.setHeight(768); pProjector->setGeometry(screenGeometry); pProjector->show(); }else{ pProjector->showFullScreen(); } } //else warnSingleMonitor(); }