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(); }
B9Print::B9Print(B9Terminal *pTerm, QWidget *parent) : QDialog(parent), ui(new Ui::B9Print) { m_pTerminal = pTerm; if(m_pTerminal == NULL) qFatal("FATAL Call to B9Creator with null B9Terminal Pointer"); ui->setupUi(this); //清除旧信息 ui->lineEditSerialStatus->setText(""); ui->lineEditProjectorOutput->setText(""); m_iTbase = m_iTover = 0; m_iTattach = 0; m_iNumAttach = 1; m_iXOff = m_iYOff =0; m_iPrintState = PRINT_NO; m_iPaused = PAUSE_NO; m_bAbort = false; m_sAbortMessage = "Unknown Abort"; m_iCurLayerNumber = 0; m_dLayerThickness = 0.0; m_iLastLayer = 0; connect(m_pTerminal, SIGNAL(updateConnectionStatus(QString)), this, SLOT(on_updateConnectionStatus(QString))); connect(m_pTerminal, SIGNAL(updateProjectorOutput(QString)), this, SLOT(on_updateProjectorOutput(QString))); connect(m_pTerminal, SIGNAL(updateProjectorStatus(QString)), this, SLOT(on_updateProjectorStatus(QString))); connect(m_pTerminal, SIGNAL(updateProjector(B9PrinterStatus::ProjectorStatus)), this, SLOT(on_updateProjector(B9PrinterStatus::ProjectorStatus))); connect(m_pTerminal, SIGNAL(signalAbortPrint(QString)), this, SLOT(on_pushButtonAbort_clicked(QString))); connect(m_pTerminal, SIGNAL(PrintReleaseCycleFinished()), this, SLOT(exposeTBaseLayer())); connect(m_pTerminal, SIGNAL(pausePrint()), this, SLOT(on_pushButtonPauseResume_clicked())); connect(m_pTerminal, SIGNAL(sendStatusMsg(QString)),this, SLOT(setProjMessage(QString))); QString sTime = QDateTime::currentDateTime().toString("hh:mm"); ui->lcdNumberTime->setDigitCount(9); ui->lcdNumberTime->display(sTime); }
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(); }