diff --git a/app/PlaYUVerMdiSubWindow.cpp b/app/PlaYUVerMdiSubWindow.cpp index 2a2e7a0..e29348f 100644 --- a/app/PlaYUVerMdiSubWindow.cpp +++ b/app/PlaYUVerMdiSubWindow.cpp @@ -23,6 +23,7 @@ */ #include "PlaYUVerMdiSubWindow.h" +#include "SubWindowHandle.h" namespace plaYUVer { @@ -34,11 +35,13 @@ PlaYUVerMdiSubWindow::PlaYUVerMdiSubWindow( QWidget *parent ) : QSize PlaYUVerMdiSubWindow::sizeHint() const { - QSize sizeHint = widget()->sizeHint(); + QSize maxSize; + if( parent() ) + maxSize = parentWidget()->size(); + QSize sizeHint = qobject_cast( widget() )->sizeHint( maxSize ); return sizeHint; } - Void PlaYUVerMdiSubWindow::closeEvent( QCloseEvent *event ) { emit aboutToClose( this ); diff --git a/app/PlaYUVerSubWindowHandle.cpp b/app/PlaYUVerSubWindowHandle.cpp index 82b679d..f3421e4 100644 --- a/app/PlaYUVerSubWindowHandle.cpp +++ b/app/PlaYUVerSubWindowHandle.cpp @@ -32,7 +32,7 @@ namespace plaYUVer class PlaYUVerMdiArea: public QMdiArea { public: - PlaYUVerMdiArea( QWidget *parent = 0 ) : + PlaYUVerMdiArea( QWidget *parent ) : QMdiArea( parent ), m_pixmapLogo( ":/images/playuver-backgroud-logo.png" ) { @@ -138,7 +138,7 @@ Void PlaYUVerSubWindowHandle::addSubWindow( SubWindowHandle *window, Qt::WindowF } if( m_uiWindowMode == MdiWSubWindows ) { - PlaYUVerMdiSubWindow* mdiSubWindow = new PlaYUVerMdiSubWindow( this ); + PlaYUVerMdiSubWindow* mdiSubWindow = new PlaYUVerMdiSubWindow; mdiSubWindow->setWidget( window ); m_pcMdiArea->addSubWindow( mdiSubWindow ); m_apcMdiSubWindowList.append( mdiSubWindow ); diff --git a/app/PlaYUVerSubWindowHandle.h b/app/PlaYUVerSubWindowHandle.h index 7a827fa..322ab9c 100644 --- a/app/PlaYUVerSubWindowHandle.h +++ b/app/PlaYUVerSubWindowHandle.h @@ -45,7 +45,7 @@ class PlaYUVerSubWindowHandle: public QWidget Q_OBJECT public: - PlaYUVerSubWindowHandle( QWidget *parent = 0 ); + PlaYUVerSubWindowHandle( QWidget *parent ); Void addSubWindow( SubWindowHandle *widget, Qt::WindowFlags flags = 0 ); diff --git a/app/PlotSubWindow.cpp b/app/PlotSubWindow.cpp index 73d8893..3de784a 100644 --- a/app/PlotSubWindow.cpp +++ b/app/PlotSubWindow.cpp @@ -110,5 +110,11 @@ Void PlotSubWindow::scaleView( Double scale, QPoint center ) //{ // //} +// +// +//QSize PlotSubWindow::sizeHint( const QSize & maxSize ) const +//{ +// +//} } // NAMESPACE diff --git a/app/PlotSubWindow.h b/app/PlotSubWindow.h index e4df09f..e38db1f 100644 --- a/app/PlotSubWindow.h +++ b/app/PlotSubWindow.h @@ -63,7 +63,13 @@ public: { return 0; } - //QSize sizeHint() const; + + /** + * Size related functions + */ +// QSize sizeHint() const; +// QSize sizeHint( const QSize & ) const; + }; } // NAMESPACE diff --git a/app/SubWindowHandle.cpp b/app/SubWindowHandle.cpp index aeaf7f7..6b98cb3 100644 --- a/app/SubWindowHandle.cpp +++ b/app/SubWindowHandle.cpp @@ -132,6 +132,11 @@ Bool SubWindowHandle::mayClose() return true; } +QSize SubWindowHandle::sizeHint( const QSize & ) const +{ + return QSize(); +} + Void SubWindowHandle::focusInEvent( QFocusEvent * event ) { emit aboutToActivate( this ); diff --git a/app/SubWindowHandle.h b/app/SubWindowHandle.h index e9fc5af..a283cb3 100644 --- a/app/SubWindowHandle.h +++ b/app/SubWindowHandle.h @@ -80,6 +80,16 @@ public: virtual Double getScaleFactor() = 0; + /** + * Size related functions + */ + //virtual QSize sizeHint() const; + virtual QSize sizeHint( const QSize & ) const; + + /** + * Window name + */ + Void setWindowName( QString ); QString getWindowName(); @@ -91,8 +101,8 @@ public: } protected: - virtual void focusInEvent( QFocusEvent * event ); - virtual void closeEvent( QCloseEvent *event ); + void focusInEvent( QFocusEvent * event ); + void closeEvent( QCloseEvent *event ); QSize getScrollSize(); Q_SIGNALS: diff --git a/app/VideoSubWindow.cpp b/app/VideoSubWindow.cpp index 1441d65..27b4934 100644 --- a/app/VideoSubWindow.cpp +++ b/app/VideoSubWindow.cpp @@ -93,6 +93,7 @@ VideoSubWindow::VideoSubWindow( QWidget * parent, Bool isModule ) : connect( m_cViewArea, SIGNAL( positionChanged( const QPoint & ) ), this, SLOT( updatePixelValueStatusBar( const QPoint & ) ) ); // Define the cViewArea as the widget inside the scroll area + m_cViewArea->setMinimumSize( size() ); setWidget( m_cViewArea ); m_apcCurrentModule.clear(); @@ -454,8 +455,7 @@ Void VideoSubWindow::updatePixelValueStatusBar( const QPoint& pos ) QSize VideoSubWindow::sizeHint() const { - QSize maxSize; // The size of the parent (viewport widget - // of the QMdiArea). + QSize maxSize; QWidget *p = parentWidget(); if( p ) @@ -466,7 +466,11 @@ QSize VideoSubWindow::sizeHint() const { maxSize = QApplication::desktop()->availableGeometry().size(); } + return sizeHint( maxSize ); +} +QSize VideoSubWindow::sizeHint( const QSize & maxSize ) const +{ QSize isize; if( m_pcCurrFrame ) isize = QSize( m_pcCurrFrame->getWidth() + 50, m_pcCurrFrame->getHeight() + 50 ); @@ -475,17 +479,16 @@ QSize VideoSubWindow::sizeHint() const // If the VideoSubWindow needs more space that the avaiable, we'll give // to the subwindow a reasonable size preserving the image aspect ratio. - if( isize.width() < maxSize.width() && isize.height() < maxSize.height() ) - { - return isize; - } - else + if( !( isize.width() < maxSize.width() && isize.height() < maxSize.height() ) ) { isize.scale( maxSize, Qt::KeepAspectRatio ); - maxSize = isize; } + return isize; +} - return maxSize; +Void VideoSubWindow::resizeEvent( QResizeEvent * event ) +{ + m_cViewArea->setMinimumSize( size() ); } Void VideoSubWindow::closeEvent( QCloseEvent *event ) diff --git a/app/VideoSubWindow.h b/app/VideoSubWindow.h index 96c806e..35a0304 100644 --- a/app/VideoSubWindow.h +++ b/app/VideoSubWindow.h @@ -172,7 +172,12 @@ public: return m_cViewArea->getZoomFactor(); } - QSize sizeHint() const; + /** + * Size related functions + */ + QSize sizeHint() const ; + QSize sizeHint( const QSize & ) const ; + Void setWindowShortName( const QString& name) { @@ -193,6 +198,7 @@ public: } protected: + void resizeEvent(QResizeEvent * event); void closeEvent( QCloseEvent *event ); public Q_SLOTS: diff --git a/app/plaYUVerApp.cpp b/app/plaYUVerApp.cpp index f5a638a..3453949 100644 --- a/app/plaYUVerApp.cpp +++ b/app/plaYUVerApp.cpp @@ -87,8 +87,8 @@ Void plaYUVerApp::parseArgs( Int argc, Char *argv[] ) { loadFile( argv[i] ); } - m_pcWindowHandle->tileSubWindows(); - zoomToFitAll(); +// m_pcWindowHandle->tileSubWindows(); +// zoomToFitAll(); } }