diff --git a/app/ModulesHandle.cpp b/app/ModulesHandle.cpp index 7a4d21b..c051662 100644 --- a/app/ModulesHandle.cpp +++ b/app/ModulesHandle.cpp @@ -343,7 +343,7 @@ Void ModulesHandle::enableModuleIf( PlaYUVerAppModuleIf *pcCurrModuleIf ) { if( ( pcCurrModuleIf->m_pcModule->m_uiModuleRequirements & MODULE_REQUIRES_NEW_WINDOW ) || bShowModulesNewWindow ) { - pcModuleSubWindow = new VideoSubWindow( VideoSubWindow::MODULE_SUBWINDOW, this ); + pcModuleSubWindow = new VideoSubWindow( VideoSubWindow::MODULE_SUBWINDOW ); pcModuleSubWindow->setWindowShortName( windowName ); pcModuleSubWindow->setWindowName( windowName ); diff --git a/app/PlaYUVerSubWindowHandle.cpp b/app/PlaYUVerSubWindowHandle.cpp index 04848b4..3c2d14d 100644 --- a/app/PlaYUVerSubWindowHandle.cpp +++ b/app/PlaYUVerSubWindowHandle.cpp @@ -61,7 +61,7 @@ PlaYUVerSubWindowHandle::PlaYUVerSubWindowHandle( QWidget *parent ) : { m_iWindowMode = 0; - setWindowMode( NormalSubWindows ); + //setWindowMode( NormalSubWindows ); setWindowMode( MdiWSubWindows ); m_pcActiveWindow = NULL; @@ -73,21 +73,21 @@ Void PlaYUVerSubWindowHandle::resetWindowMode() { QList apcSubWindowList = m_apcSubWindowList; - for( Int i = 0; i < m_apcSubWindowList.size(); i++ ) - { - m_apcSubWindowList.at( i )->setParent( NULL ); - m_apcSubWindowList.at( i )->sizeHint(); - m_apcSubWindowList.at( i )->show(); - } - if( m_iWindowMode == NormalSubWindows ) { } if( m_iWindowMode == MdiWSubWindows ) { + m_cMdiModeWindowPosition = parentWidget()->pos(); + m_cMdiModeWindowSize = parentWidget()->size(); + for( Int i = 0; i < m_apcSubWindowList.size(); i++ ) + { + m_apcSubWindowList.at( i )->setParent( NULL ); + } for( Int i = 0; i < m_apcMdiSubWindowList.size(); i++ ) { + disconnect( m_apcMdiSubWindowList.at( i ), SIGNAL( aboutToClose( PlaYUVerMdiSubWindow* ) ), this, SLOT( removeMdiSubWindow( PlaYUVerMdiSubWindow* ) ) ); m_apcMdiSubWindowList.at( i )->close(); } m_apcMdiSubWindowList.clear(); @@ -95,6 +95,7 @@ Void PlaYUVerSubWindowHandle::resetWindowMode() delete m_pcMdiArea; if( m_pcWindowManagerLayout ) delete m_pcWindowManagerLayout; + //hide(); } } @@ -107,6 +108,16 @@ Void PlaYUVerSubWindowHandle::setWindowMode( Int iWindowMode ) if( iWindowMode == NormalSubWindows ) { + for( Int i = 0; i < m_apcSubWindowList.size(); i++ ) + { + m_apcSubWindowList.at( i )->setParent( NULL ); + m_apcSubWindowList.at( i )->sizeHint(); + m_apcSubWindowList.at( i )->show(); + } + + QSize screenSize = QApplication::desktop()->availableGeometry().size(); + parentWidget()->move( 0, 0 ); + parentWidget()->resize( screenSize.width(), 5 ); } @@ -118,9 +129,18 @@ Void PlaYUVerSubWindowHandle::setWindowMode( Int iWindowMode ) m_pcWindowManagerLayout = new QHBoxLayout( this ); m_pcWindowManagerLayout->addWidget( m_pcMdiArea ); setLayout( m_pcWindowManagerLayout ); + show(); + for( Int i = 0; i < m_apcSubWindowList.size(); i++ ) + { + addMdiSubWindow( m_apcSubWindowList.at( i ) ); + } + parentWidget()->move( m_cMdiModeWindowPosition ); + parentWidget()->resize( m_cMdiModeWindowSize ); } - m_iWindowMode = iWindowMode; + tileSubWindows(); + parentWidget()->update(); + qApp->processEvents(); } Void PlaYUVerSubWindowHandle::updateActiveSubWindow( SubWindowHandle *window ) @@ -157,6 +177,16 @@ Void PlaYUVerSubWindowHandle::updateActiveSubWindow( SubWindowHandle *window ) } +Void PlaYUVerSubWindowHandle::addMdiSubWindow( SubWindowHandle *window ) +{ + PlaYUVerMdiSubWindow* mdiSubWindow = new PlaYUVerMdiSubWindow; + mdiSubWindow->setWidget( window ); + m_pcMdiArea->addSubWindow( mdiSubWindow ); + m_apcMdiSubWindowList.append( mdiSubWindow ); + window->setSubWindow( mdiSubWindow ); + connect( mdiSubWindow, SIGNAL( aboutToClose( PlaYUVerMdiSubWindow* ) ), this, SLOT( removeMdiSubWindow( PlaYUVerMdiSubWindow* ) ) ); +} + Void PlaYUVerSubWindowHandle::addSubWindow( SubWindowHandle *window, Qt::WindowFlags flags ) { if( window ) @@ -171,12 +201,7 @@ Void PlaYUVerSubWindowHandle::addSubWindow( SubWindowHandle *window, Qt::WindowF } if( m_iWindowMode == MdiWSubWindows ) { - PlaYUVerMdiSubWindow* mdiSubWindow = new PlaYUVerMdiSubWindow; - mdiSubWindow->setWidget( window ); - m_pcMdiArea->addSubWindow( mdiSubWindow ); - m_apcMdiSubWindowList.append( mdiSubWindow ); - window->setSubWindow( mdiSubWindow ); - connect( mdiSubWindow, SIGNAL( aboutToClose( PlaYUVerMdiSubWindow* ) ), this, SLOT( removeMdiSubWindow( PlaYUVerMdiSubWindow* ) ) ); + addMdiSubWindow( window ); } m_apcSubWindowList.append( window ); } diff --git a/app/PlaYUVerSubWindowHandle.h b/app/PlaYUVerSubWindowHandle.h index b71511a..93874b6 100644 --- a/app/PlaYUVerSubWindowHandle.h +++ b/app/PlaYUVerSubWindowHandle.h @@ -77,6 +77,9 @@ private: SubWindowHandle* m_pcActiveWindow; + QPoint m_cMdiModeWindowPosition; + QSize m_cMdiModeWindowSize; + enum { NORMAL_SUBWINDOW_MODE_ACT, @@ -98,8 +101,8 @@ private: /** * Internal functions */ + Void addMdiSubWindow( SubWindowHandle *window ); Void resetWindowMode(); - Void removeSubWindow( Int windowIdx ); public Q_SLOTS: diff --git a/app/PlotSubWindow.cpp b/app/PlotSubWindow.cpp index ebaa8d5..a3c7b2a 100644 --- a/app/PlotSubWindow.cpp +++ b/app/PlotSubWindow.cpp @@ -41,7 +41,7 @@ Void PlotSubWindow::definePlotColors() m_arrayColorList.append( Qt::darkRed ); } -PlotSubWindow::PlotSubWindow( QWidget * parent, const QString& windowTitle ) : +PlotSubWindow::PlotSubWindow( const QString& windowTitle, QWidget * parent ) : SubWindowHandle( parent, SubWindowHandle::PLOT_SUBWINDOW ) { diff --git a/app/PlotSubWindow.h b/app/PlotSubWindow.h index 5eb93a2..add5937 100644 --- a/app/PlotSubWindow.h +++ b/app/PlotSubWindow.h @@ -60,7 +60,7 @@ private: public: - PlotSubWindow( QWidget * parent, const QString& windowTitle ); + PlotSubWindow( const QString& windowTitle, QWidget * parent = NULL ); ~PlotSubWindow(); Void definePlotColors(); diff --git a/app/QualityHandle.cpp b/app/QualityHandle.cpp index 9eb7719..554b70e 100644 --- a/app/QualityHandle.cpp +++ b/app/QualityHandle.cpp @@ -217,7 +217,7 @@ Void QualityHandle::measureQuality( QVector apcWindowList ) { plotWindowTitle += " - " + apcWindowList.at( 0 )->getWindowName(); } - PlotSubWindow* pcPlotWindow = new PlotSubWindow( m_pcParet, plotWindowTitle ); + PlotSubWindow* pcPlotWindow = new PlotSubWindow( plotWindowTitle ); pcPlotWindow->setAxisName( "Frame Number", QString::fromStdString( PlaYUVerFrame::supportedQualityMetricsList()[m_iQualityMetricIdx] ) ); if( apcWindowList.size() > 1 ) diff --git a/app/VideoSubWindow.cpp b/app/VideoSubWindow.cpp index bf222d7..39ba15f 100644 --- a/app/VideoSubWindow.cpp +++ b/app/VideoSubWindow.cpp @@ -698,17 +698,17 @@ QSize VideoSubWindow::sizeHint( const QSize & maxSize ) const return isize; } -Void VideoSubWindow::closeEvent( QCloseEvent *event ) -{ - Bool bAccept = m_bIsPlaying ? false : true; - if( bAccept ) - { - event->accept(); - } - else - { - event->ignore(); - } -} +//Void VideoSubWindow::closeEvent( QCloseEvent *event ) +//{ +// Bool bAccept = m_bIsPlaying ? false : true; +// if( bAccept ) +// { +// event->accept(); +// } +// else +// { +// event->ignore(); +// } +//} } // NAMESPACE diff --git a/app/VideoSubWindow.h b/app/VideoSubWindow.h index 0da9fd1..16241bf 100644 --- a/app/VideoSubWindow.h +++ b/app/VideoSubWindow.h @@ -238,8 +238,8 @@ public: return m_bIsModule; } -protected: - void closeEvent( QCloseEvent *event ); +//protected: + //void closeEvent( QCloseEvent *event ); public Q_SLOTS: void updateSelectedArea( QRect area );