From 826bac655ca66bd39f257311176de08bc1c43b32 Mon Sep 17 00:00:00 2001 From: Joao Carreira Date: Thu, 22 Jan 2015 22:47:33 +0000 Subject: [PATCH] Improve window manager --- app/CMakeLists.txt | 2 +- app/DialogSubWindowSelector.cpp | 4 +- app/DialogSubWindowSelector.h | 6 +- app/ModulesHandle.cpp | 4 +- app/ModulesHandle.h | 6 +- app/PlaYUVerSubWinManager.cpp | 213 ------------ app/PlaYUVerSubWindowHandle.cpp | 328 ++++++++++++++++++ ...WinManager.h => PlaYUVerSubWindowHandle.h} | 82 +++-- app/QualityHandle.cpp | 4 +- app/QualityHandle.h | 6 +- app/QualityMeasurementSidebar.cpp | 4 +- app/QualityMeasurementSidebar.h | 6 +- app/VideoHandle.cpp | 4 +- app/VideoHandle.h | 6 +- app/plaYUVerApp.cpp | 148 ++------ app/plaYUVerApp.h | 12 +- 16 files changed, 437 insertions(+), 398 deletions(-) delete mode 100644 app/PlaYUVerSubWinManager.cpp create mode 100644 app/PlaYUVerSubWindowHandle.cpp rename app/{PlaYUVerSubWinManager.h => PlaYUVerSubWindowHandle.h} (50%) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 00ba1af..544d15f 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -9,7 +9,7 @@ set(plaYUver_App_SRCS # Main main.cpp plaYUVerApp.cpp - PlaYUVerSubWinManager.cpp + PlaYUVerSubWindowHandle.cpp PlaYUVerMdiSubWindow.cpp SubWindowHandle.cpp Settings.cpp diff --git a/app/DialogSubWindowSelector.cpp b/app/DialogSubWindowSelector.cpp index 99a552d..060617e 100644 --- a/app/DialogSubWindowSelector.cpp +++ b/app/DialogSubWindowSelector.cpp @@ -22,14 +22,14 @@ * \brief Dialog box to select sub windows */ -#include "PlaYUVerSubWinManager.h" +#include "PlaYUVerSubWindowHandle.h" #include "DialogSubWindowSelector.h" #include "VideoSubWindow.h" namespace plaYUVer { -DialogSubWindowSelector::DialogSubWindowSelector( QWidget *parent, PlaYUVerSubWinManager *windowManager, UInt uiCategory, Int minWindowsSelected, Int maxWindowsSelected ) : +DialogSubWindowSelector::DialogSubWindowSelector( QWidget *parent, PlaYUVerSubWindowHandle *windowManager, UInt uiCategory, Int minWindowsSelected, Int maxWindowsSelected ) : QDialog( parent ), m_uiCategory( uiCategory ), m_iMinSelectedWindows( minWindowsSelected ), diff --git a/app/DialogSubWindowSelector.h b/app/DialogSubWindowSelector.h index 44b43ab..d429714 100644 --- a/app/DialogSubWindowSelector.h +++ b/app/DialogSubWindowSelector.h @@ -40,7 +40,7 @@ class QColor; namespace plaYUVer { -class PlaYUVerSubWinManager; +class PlaYUVerSubWindowHandle; /** * Class to define the dialog box to select sub windows * This class enable the selection of several group of windows @@ -50,7 +50,7 @@ class DialogSubWindowSelector: public QDialog Q_OBJECT public: - DialogSubWindowSelector( QWidget *parent, PlaYUVerSubWinManager *windowManager, UInt uiCategory, Int minWindowsSelected = 0, Int maxWindowsSelected = -1 ); + DialogSubWindowSelector( QWidget *parent, PlaYUVerSubWindowHandle *windowManager, UInt uiCategory, Int minWindowsSelected = 0, Int maxWindowsSelected = -1 ); Void setSubWindowList( QStringList cWindowListNames ); QStringList getSelectedWindows() @@ -61,7 +61,7 @@ private: UInt m_uiCategory; Int m_iMinSelectedWindows; Int m_iMaxSlectedWindows; - PlaYUVerSubWinManager* m_pcMainWindowManager; + PlaYUVerSubWindowHandle* m_pcMainWindowManager; QStringList m_pcWindowListNames; QStringList m_pcSelectedWindowListNames; diff --git a/app/ModulesHandle.cpp b/app/ModulesHandle.cpp index cfbf68e..72e0b28 100644 --- a/app/ModulesHandle.cpp +++ b/app/ModulesHandle.cpp @@ -24,7 +24,7 @@ #include -#include "PlaYUVerSubWinManager.h" +#include "PlaYUVerSubWindowHandle.h" #include "ModulesHandle.h" #include "PlaYUVerModuleFactory.h" #include "DialogSubWindowSelector.h" @@ -34,7 +34,7 @@ namespace plaYUVer { -ModulesHandle::ModulesHandle( QWidget* parent, PlaYUVerSubWinManager *windowManager ) : +ModulesHandle::ModulesHandle( QWidget* parent, PlaYUVerSubWindowHandle *windowManager ) : QWidget( parent ), m_pcParent( parent ), m_pcMainWindowManager( windowManager ) diff --git a/app/ModulesHandle.h b/app/ModulesHandle.h index 7716997..d131d58 100644 --- a/app/ModulesHandle.h +++ b/app/ModulesHandle.h @@ -42,7 +42,7 @@ namespace plaYUVer { -class PlaYUVerSubWinManager; +class PlaYUVerSubWindowHandle; class PlaYUVerAppModuleIf; class SubWindowHandle; @@ -50,7 +50,7 @@ class ModulesHandle: public QWidget { Q_OBJECT public: - ModulesHandle( QWidget*, PlaYUVerSubWinManager* ); + ModulesHandle( QWidget*, PlaYUVerSubWindowHandle* ); ~ModulesHandle(); Void createActions(); @@ -69,7 +69,7 @@ public: private: QWidget* m_pcParent; - PlaYUVerSubWinManager* m_pcMainWindowManager; + PlaYUVerSubWindowHandle* m_pcMainWindowManager; enum { diff --git a/app/PlaYUVerSubWinManager.cpp b/app/PlaYUVerSubWinManager.cpp deleted file mode 100644 index faedcd0..0000000 --- a/app/PlaYUVerSubWinManager.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* This file is a part of plaYUVer project - * Copyright (C) 2014-2015 by Luis Lucas (luisfrlucas@gmail.com) - * Joao Carreira (jfmcarreira@gmail.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -/** - * \file PlaYUVerSubWinManager.cpp - * \brief - */ - -#include "PlaYUVerSubWinManager.h" -#include "PlaYUVerMdiSubWindow.h" -#include "SubWindowHandle.h" - -namespace plaYUVer -{ - -class PlaYUVerMdiArea: public QMdiArea -{ -public: - PlaYUVerMdiArea( QWidget *parent = 0 ) : - QMdiArea( parent ), - m_pixmapLogo( ":/images/playuver-backgroud-logo.png" ) - { - } -protected: - void paintEvent( QPaintEvent *event ) - { - QMdiArea::paintEvent( event ); - QPainter painter( viewport() ); - - QPixmap pixFinalLogo = m_pixmapLogo.scaled( 2 * size() / 3, Qt::KeepAspectRatio ); - - // Calculate the logo position - the bottom right corner of the mdi area. - int x = width() / 2 - pixFinalLogo.width() / 2; - int y = height() / 2 - pixFinalLogo.height() / 2; - painter.drawPixmap( x, y, pixFinalLogo ); - } -private: - QPixmap m_pixmapLogo; -}; - -PlaYUVerSubWinManager::PlaYUVerSubWinManager( QWidget *parent ) : - QWidget( parent ) -{ - m_bMdiModeEnabled = true; - - m_pcMdiArea = new PlaYUVerMdiArea( this ); - m_pcMdiArea->setActivationOrder( QMdiArea::ActivationHistoryOrder ); - - QHBoxLayout* m_pcWindowManagerLayout = new QHBoxLayout( this ); - m_pcWindowManagerLayout->addWidget( m_pcMdiArea ); - setLayout( m_pcWindowManagerLayout ); - - connect( m_pcMdiArea, SIGNAL( subWindowActivated(QMdiSubWindow*) ), this, SLOT( updateActiveSubWindow() ) ); - - m_pcActiveWindow = NULL; - m_apcSubWindowList.clear(); - m_apcMdiSubWindowList.clear(); -} - -Void PlaYUVerSubWinManager::updateActiveSubWindow() -{ - if( m_bMdiModeEnabled ) - { - m_pcActiveWindow = NULL; - QMdiSubWindow* mdiSubWindow = m_pcMdiArea->activeSubWindow(); - if( mdiSubWindow ) - { - QWidget* activeWidget = m_pcMdiArea->activeSubWindow()->widget(); - Int windowIdx = m_apcSubWindowList.indexOf( qobject_cast( activeWidget ) ); - if( windowIdx >= 0 ) - { - m_pcActiveWindow = m_apcSubWindowList.at( windowIdx ); - emit windowActivated(); - } - } - } -} - -Void PlaYUVerSubWinManager::addSubWindow( SubWindowHandle *window, Qt::WindowFlags flags ) -{ - if( m_bMdiModeEnabled ) - { - PlaYUVerMdiSubWindow* mdiSubWindow = new PlaYUVerMdiSubWindow( this ); - mdiSubWindow->setWidget( window ); - m_pcMdiArea->addSubWindow( mdiSubWindow ); - m_apcMdiSubWindowList.append( mdiSubWindow ); - connect( mdiSubWindow, SIGNAL( aboutToClose( PlaYUVerMdiSubWindow* ) ), this, SLOT( removeMdiSubWindow( PlaYUVerMdiSubWindow* ) ) ); - } - m_apcSubWindowList.append( window ); -} - -Void PlaYUVerSubWinManager::removeSubWindow( Int windowIdx ) -{ - if( windowIdx >= 0 ) - { - if( m_bMdiModeEnabled ) - { - PlaYUVerMdiSubWindow* mdiSubWindow = m_apcMdiSubWindowList.at( windowIdx ); - m_apcMdiSubWindowList.removeAt( windowIdx ); - m_pcMdiArea->removeSubWindow( m_apcSubWindowList.at( windowIdx ) ); - mdiSubWindow->close(); - } - m_apcSubWindowList.removeAt( windowIdx ); - } - m_apcSubWindowList.front()->activateWindow(); -} - -Void PlaYUVerSubWinManager::removeSubWindow( SubWindowHandle* window ) -{ - removeSubWindow( m_apcSubWindowList.indexOf( window ) ); -} - -Void PlaYUVerSubWinManager::removeMdiSubWindow( PlaYUVerMdiSubWindow* window ) -{ - removeSubWindow( m_apcMdiSubWindowList.indexOf( window ) ); -} - -Void PlaYUVerSubWinManager::removeAllSubWindow() -{ - while( m_apcSubWindowList.size() > 0 ) - { - removeSubWindow( 0 ); - } -} - -SubWindowHandle* PlaYUVerSubWinManager::activeSubWindow() const -{ - return m_pcActiveWindow; -} - -QList PlaYUVerSubWinManager::findSubWindow( const QString &windowName ) const -{ - QList apcSubWindowList; - if( windowName.isEmpty() ) - { - apcSubWindowList = m_apcSubWindowList; - } - else - { - for( Int i = 0; i < m_apcSubWindowList.size(); i++ ) - { - if( m_apcSubWindowList.at( i )->getWindowName() == windowName ) - apcSubWindowList.append( m_apcSubWindowList.at( i ) ); - } - } - return apcSubWindowList; -} - -QList PlaYUVerSubWinManager::findSubWindow( const UInt uiCategory ) const -{ - QList apcSubWindowList; - QList subWindowList = findSubWindow(); - for( Int i = 0; i < subWindowList.size(); i++ ) - { - if( subWindowList.at( i )->getCategory() == uiCategory ) - apcSubWindowList.append( subWindowList.at( i ) ); - } - return apcSubWindowList; -} - -SubWindowHandle* PlaYUVerSubWinManager::findSubWindow( const SubWindowHandle* subWindow ) -{ - QList subWindowList = findSubWindow(); - for( Int i = 0; i < subWindowList.size(); i++ ) - { - if( subWindow == subWindowList.at( i ) ) - return subWindowList.at( i ); - } - return 0; -} - -Void PlaYUVerSubWinManager::setActiveSubWindow( QWidget *window ) -{ - if( !window ) - return; - - m_pcActiveWindow = qobject_cast( window ); - m_pcActiveWindow->window()->activateWindow(); -} - -Void PlaYUVerSubWinManager::tileSubWindows() -{ - if( m_bMdiModeEnabled ) - { - m_pcMdiArea->tileSubWindows(); - } -} - -Void PlaYUVerSubWinManager::cascadeSubWindows() -{ - if( m_bMdiModeEnabled ) - { - m_pcMdiArea->cascadeSubWindows(); - } -} - -} // NAMESPACE diff --git a/app/PlaYUVerSubWindowHandle.cpp b/app/PlaYUVerSubWindowHandle.cpp new file mode 100644 index 0000000..8a682e0 --- /dev/null +++ b/app/PlaYUVerSubWindowHandle.cpp @@ -0,0 +1,328 @@ +/* This file is a part of plaYUVer project + * Copyright (C) 2014-2015 by Luis Lucas (luisfrlucas@gmail.com) + * Joao Carreira (jfmcarreira@gmail.com) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/** + * \file PlaYUVerSubWindowHandle.cpp + * \brief Handle multiple sub-windows + */ + +#include "PlaYUVerSubWindowHandle.h" +#include "PlaYUVerMdiSubWindow.h" +#include "SubWindowHandle.h" + +namespace plaYUVer +{ + +class PlaYUVerMdiArea: public QMdiArea +{ +public: + PlaYUVerMdiArea( QWidget *parent = 0 ) : + QMdiArea( parent ), + m_pixmapLogo( ":/images/playuver-backgroud-logo.png" ) + { + } +protected: + void paintEvent( QPaintEvent *event ) + { + QMdiArea::paintEvent( event ); + QPainter painter( viewport() ); + + QPixmap pixFinalLogo = m_pixmapLogo.scaled( 2 * size() / 3, Qt::KeepAspectRatio ); + + // Calculate the logo position - the bottom right corner of the mdi area. + int x = width() / 2 - pixFinalLogo.width() / 2; + int y = height() / 2 - pixFinalLogo.height() / 2; + painter.drawPixmap( x, y, pixFinalLogo ); + } +private: + QPixmap m_pixmapLogo; +}; + +PlaYUVerSubWindowHandle::PlaYUVerSubWindowHandle( QWidget *parent ) : + QWidget( parent ) +{ + m_bMdiModeEnabled = true; + + m_pcMdiArea = new PlaYUVerMdiArea( this ); + m_pcMdiArea->setActivationOrder( QMdiArea::ActivationHistoryOrder ); + + QHBoxLayout* m_pcWindowManagerLayout = new QHBoxLayout( this ); + m_pcWindowManagerLayout->addWidget( m_pcMdiArea ); + setLayout( m_pcWindowManagerLayout ); + + connect( m_pcMdiArea, SIGNAL( subWindowActivated(QMdiSubWindow*) ), this, SLOT( updateActiveSubWindow() ) ); + + m_pcActiveWindow = NULL; + m_apcSubWindowList.clear(); + m_apcMdiSubWindowList.clear(); +} + +Void PlaYUVerSubWindowHandle::updateActiveSubWindow() +{ + if( m_bMdiModeEnabled ) + { + m_pcActiveWindow = NULL; + QMdiSubWindow* mdiSubWindow = m_pcMdiArea->activeSubWindow(); + if( mdiSubWindow ) + { + QWidget* activeWidget = m_pcMdiArea->activeSubWindow()->widget(); + Int windowIdx = m_apcSubWindowList.indexOf( qobject_cast( activeWidget ) ); + if( windowIdx >= 0 ) + { + m_pcActiveWindow = m_apcSubWindowList.at( windowIdx ); + emit windowActivated(); + } + } + } +} + +Void PlaYUVerSubWindowHandle::addSubWindow( SubWindowHandle *window, Qt::WindowFlags flags ) +{ + if( m_bMdiModeEnabled ) + { + PlaYUVerMdiSubWindow* mdiSubWindow = new PlaYUVerMdiSubWindow( this ); + mdiSubWindow->setWidget( window ); + m_pcMdiArea->addSubWindow( mdiSubWindow ); + m_apcMdiSubWindowList.append( mdiSubWindow ); + connect( mdiSubWindow, SIGNAL( aboutToClose( PlaYUVerMdiSubWindow* ) ), this, SLOT( removeMdiSubWindow( PlaYUVerMdiSubWindow* ) ) ); + } + m_apcSubWindowList.append( window ); +} + +Void PlaYUVerSubWindowHandle::removeSubWindow( Int windowIdx ) +{ + if( windowIdx >= 0 ) + { + if( m_bMdiModeEnabled ) + { + PlaYUVerMdiSubWindow* mdiSubWindow = m_apcMdiSubWindowList.at( windowIdx ); + m_apcMdiSubWindowList.removeAt( windowIdx ); + m_pcMdiArea->removeSubWindow( m_apcSubWindowList.at( windowIdx ) ); + mdiSubWindow->close(); + } + m_apcSubWindowList.removeAt( windowIdx ); + } + m_apcSubWindowList.front()->activateWindow(); +} + +Void PlaYUVerSubWindowHandle::removeSubWindow( SubWindowHandle* window ) +{ + removeSubWindow( m_apcSubWindowList.indexOf( window ) ); +} + +Void PlaYUVerSubWindowHandle::removeMdiSubWindow( PlaYUVerMdiSubWindow* window ) +{ + removeSubWindow( m_apcMdiSubWindowList.indexOf( window ) ); +} + +Void PlaYUVerSubWindowHandle::removeAllSubWindow() +{ + while( m_apcSubWindowList.size() > 0 ) + { + removeSubWindow( 0 ); + } +} + +Void PlaYUVerSubWindowHandle::removeActiveSubWindow() +{ + removeSubWindow( m_pcActiveWindow ); +} + +SubWindowHandle* PlaYUVerSubWindowHandle::activeSubWindow() const +{ + return m_pcActiveWindow; +} + +QList PlaYUVerSubWindowHandle::findSubWindow( const QString &windowName ) const +{ + QList apcSubWindowList; + if( windowName.isEmpty() ) + { + apcSubWindowList = m_apcSubWindowList; + } + else + { + for( Int i = 0; i < m_apcSubWindowList.size(); i++ ) + { + if( m_apcSubWindowList.at( i )->getWindowName() == windowName ) + apcSubWindowList.append( m_apcSubWindowList.at( i ) ); + } + } + return apcSubWindowList; +} + +QList PlaYUVerSubWindowHandle::findSubWindow( const UInt uiCategory ) const +{ + QList apcSubWindowList; + QList subWindowList = findSubWindow(); + for( Int i = 0; i < subWindowList.size(); i++ ) + { + if( subWindowList.at( i )->getCategory() == uiCategory ) + apcSubWindowList.append( subWindowList.at( i ) ); + } + return apcSubWindowList; +} + +SubWindowHandle* PlaYUVerSubWindowHandle::findSubWindow( const SubWindowHandle* subWindow ) +{ + QList subWindowList = findSubWindow(); + for( Int i = 0; i < subWindowList.size(); i++ ) + { + if( subWindow == subWindowList.at( i ) ) + return subWindowList.at( i ); + } + return 0; +} + +Void PlaYUVerSubWindowHandle::setActiveSubWindow( QWidget *window ) +{ + if( !window ) + return; + + m_pcActiveWindow = qobject_cast( window ); + m_pcActiveWindow->window()->activateWindow(); +} + +Void PlaYUVerSubWindowHandle::tileSubWindows() +{ + if( m_bMdiModeEnabled ) + { + m_pcMdiArea->tileSubWindows(); + } +} + +Void PlaYUVerSubWindowHandle::cascadeSubWindows() +{ + if( m_bMdiModeEnabled ) + { + m_pcMdiArea->cascadeSubWindows(); + } +} + +Void PlaYUVerSubWindowHandle::createActions() +{ + m_mapperWindow = new QSignalMapper( this ); + connect( m_mapperWindow, SIGNAL( mapped(QWidget*) ), this, SLOT( setActiveSubWindow(QWidget*) ) ); + + m_arrayActions.resize( TOTAL_ACT ); + + m_arrayActions[CLOSE_ACT] = new QAction( tr( "&Close" ), this ); + m_arrayActions[CLOSE_ACT]->setIcon( style()->standardIcon( QStyle::SP_DialogCloseButton ) ); + m_arrayActions[CLOSE_ACT]->setStatusTip( tr( "Close the active window" ) ); + connect( m_arrayActions[CLOSE_ACT], SIGNAL( triggered() ), this, SLOT( closeActiveWindow() ) ); + + m_arrayActions[CLOSE_ALL_ACT] = new QAction( tr( "Close &All" ), this ); + m_arrayActions[CLOSE_ALL_ACT]->setStatusTip( tr( "Close all the windows" ) ); + connect( m_arrayActions[CLOSE_ALL_ACT], SIGNAL( triggered() ), this, SLOT( removeAllSubWindow() ) ); + + m_arrayActions[TILE_WINDOWS_ACT] = new QAction( tr( "Tile" ), this ); + m_arrayActions[TILE_WINDOWS_ACT]->setIcon( QIcon( ":images/windowstile.png" ) ); + m_arrayActions[TILE_WINDOWS_ACT]->setStatusTip( tr( "Tile the windows" ) ); + //connect( m_arrayActions[TILE_WINDOWS_ACT], SIGNAL( triggered() ), mdiArea, SLOT( tileSubWindows() ) ); + connect( m_arrayActions[TILE_WINDOWS_ACT], SIGNAL( triggered() ), this, SLOT( tileSubWindows() ) ); + + m_arrayActions[CASCADE_WINDOWS_ACT] = new QAction( tr( "Cascade" ), this ); + m_arrayActions[CASCADE_WINDOWS_ACT]->setIcon( QIcon( ":images/windowscascade.png" ) ); + m_arrayActions[CASCADE_WINDOWS_ACT]->setStatusTip( tr( "Cascade the windows" ) ); + connect( m_arrayActions[CASCADE_WINDOWS_ACT], SIGNAL( triggered() ), this, SLOT( cascadeSubWindows() ) ); + + m_arrayActions[NEXT_WINDOWS_ACT] = new QAction( tr( "Ne&xt" ), this ); + m_arrayActions[NEXT_WINDOWS_ACT]->setShortcuts( QKeySequence::NextChild ); + m_arrayActions[NEXT_WINDOWS_ACT]->setIcon( QIcon( style()->standardIcon( QStyle::SP_ArrowRight ) ) ); + m_arrayActions[NEXT_WINDOWS_ACT]->setStatusTip( tr( "Move the focus to the next window" ) ); + // connect( m_arrayActions[NEXT_WINDOWS_ACT], SIGNAL( triggered() ), this, SLOT( activateNextSubWindow() ) ); + + m_arrayActions[PREVIOUS_WINDOWS_ACT] = new QAction( tr( "Pre&vious" ), this ); + m_arrayActions[PREVIOUS_WINDOWS_ACT]->setShortcuts( QKeySequence::PreviousChild ); + m_arrayActions[PREVIOUS_WINDOWS_ACT]->setIcon( QIcon( style()->standardIcon( QStyle::SP_ArrowLeft ) ) ); + m_arrayActions[PREVIOUS_WINDOWS_ACT]->setStatusTip( tr( "Move the focus to the previous window" ) ); + // connect( m_arrayActions[PREVIOUS_WINDOWS_ACT], SIGNAL( triggered() ), this, SLOT( activatePreviousSubWindow() ) ); + + m_arrayActions[SEPARATOR_ACT] = new QAction( this ); + m_arrayActions[SEPARATOR_ACT]->setSeparator( true ); + +} + +QMenu* PlaYUVerSubWindowHandle::createMenu() +{ + m_pcMenuWindow = new QMenu( "&Window", this ); + updateMenu(); + connect( m_pcMenuWindow, SIGNAL( aboutToShow() ), this, SLOT( updateMenu() ) ); + return m_pcMenuWindow; +} + +Void PlaYUVerSubWindowHandle::updateMenu() +{ + m_pcMenuWindow->clear(); + m_pcMenuWindow->addAction( m_arrayActions[CLOSE_ACT] ); + m_pcMenuWindow->addAction( m_arrayActions[CLOSE_ALL_ACT] ); + m_pcMenuWindow->addSeparator(); + m_pcMenuWindow->addAction( m_arrayActions[TILE_WINDOWS_ACT] ); + m_pcMenuWindow->addAction( m_arrayActions[CASCADE_WINDOWS_ACT] ); + m_pcMenuWindow->addSeparator(); + m_pcMenuWindow->addAction( m_arrayActions[NEXT_WINDOWS_ACT] ); + m_pcMenuWindow->addAction( m_arrayActions[PREVIOUS_WINDOWS_ACT] ); + m_pcMenuWindow->addSeparator(); + + Int number_windows = m_apcSubWindowList.size(); + if( number_windows > 1 ) + { + m_arrayActions[NEXT_WINDOWS_ACT]->setEnabled( true ); + m_arrayActions[PREVIOUS_WINDOWS_ACT]->setEnabled( true ); + } + else + { + m_arrayActions[NEXT_WINDOWS_ACT]->setEnabled( false ); + m_arrayActions[PREVIOUS_WINDOWS_ACT]->setEnabled( false ); + } + + m_arrayActions[SEPARATOR_ACT]->setVisible( number_windows > 0 ); + + for( Int i = 0; i < number_windows; ++i ) + { + SubWindowHandle *subWindow = m_apcSubWindowList.at( i ); + + QString text; + if( i < 9 ) + { + text = tr( "&%1 %2" ).arg( i + 1 ).arg( subWindow->getWindowName() ); + } + else + { + text = tr( "%1 %2" ).arg( i + 1 ).arg( subWindow->getWindowName() ); + } + QAction *action = m_pcMenuWindow->addAction( text ); + action->setCheckable( true ); + action->setChecked( subWindow == activeSubWindow() ); + connect( action, SIGNAL( triggered() ), m_mapperWindow, SLOT( map() ) ); + m_mapperWindow->setMapping( action, subWindow ); + } +} + +Void PlaYUVerSubWindowHandle::readSettings() +{ + +} + +Void PlaYUVerSubWindowHandle::writeSettings() +{ + +} + +} // NAMESPACE diff --git a/app/PlaYUVerSubWinManager.h b/app/PlaYUVerSubWindowHandle.h similarity index 50% rename from app/PlaYUVerSubWinManager.h rename to app/PlaYUVerSubWindowHandle.h index ac04512..59e2f83 100644 --- a/app/PlaYUVerSubWinManager.h +++ b/app/PlaYUVerSubWindowHandle.h @@ -18,12 +18,12 @@ */ /** - * \file PlaYUVerSubWinManager.h - * \brief + * \file PlaYUVerSubWindowHandle.h + * \brief Handle multiple sub-windows */ -#ifndef __PLAYUVERSUBWINMANAGER_H__ -#define __PLAYUVERSUBWINMANAGER_H__ +#ifndef __PLAYUVERSUBWINDOWHANDLE_H__ +#define __PLAYUVERSUBWINDOWHANDLE_H__ #include "config.h" #include "lib/PlaYUVerDefs.h" @@ -40,45 +40,67 @@ class SubWindowHandle; class PlaYUVerMdiArea; class PlaYUVerMdiSubWindow; -class PlaYUVerSubWinManager : public QWidget +class PlaYUVerSubWindowHandle: public QWidget { - Q_OBJECT +Q_OBJECT + +public: + PlaYUVerSubWindowHandle( QWidget *parent = 0 ); + + Void addSubWindow( SubWindowHandle *widget, Qt::WindowFlags flags = 0 ); + Void removeSubWindow( SubWindowHandle *window ); + + SubWindowHandle *activeSubWindow() const; + + QList findSubWindow( const QString &aName = QString() ) const; + QList findSubWindow( const UInt uiCategory ) const; + SubWindowHandle* findSubWindow( const SubWindowHandle* subWindow ); + + Void createActions(); + QMenu* createMenu(); + + Void readSettings(); + Void writeSettings(); private: Bool m_bMdiModeEnabled; - QList m_apcSubWindowList; + QList m_apcSubWindowList; - QHBoxLayout* m_pcWindowManagerLayout; - PlaYUVerMdiArea* m_pcMdiArea; - QList m_apcMdiSubWindowList; + QHBoxLayout* m_pcWindowManagerLayout; + PlaYUVerMdiArea* m_pcMdiArea; + QList m_apcMdiSubWindowList; - SubWindowHandle* m_pcActiveWindow; + SubWindowHandle* m_pcActiveWindow; - /** - * Internal functions - */ - Void removeSubWindow( Int windowIdx ); + enum + { + CLOSE_ACT, + CLOSE_ALL_ACT, + TILE_WINDOWS_ACT, + CASCADE_WINDOWS_ACT, + NEXT_WINDOWS_ACT, + PREVIOUS_WINDOWS_ACT, + SEPARATOR_ACT, + TOTAL_ACT, + }; + QVector m_arrayActions; + QSignalMapper* m_mapperWindow; + QMenu* m_pcMenuWindow; -public: - PlaYUVerSubWinManager(QWidget *parent = 0); - - Void addSubWindow(SubWindowHandle *widget, Qt::WindowFlags flags = 0); - Void removeSubWindow( SubWindowHandle *window); - - Void removeAllSubWindow(); - - SubWindowHandle *activeSubWindow() const; - - QList findSubWindow( const QString &aName = QString() ) const; - QList findSubWindow( const UInt uiCategory ) const; - SubWindowHandle* findSubWindow( const SubWindowHandle* subWindow ); + /** + * Internal functions + */ + Void removeSubWindow( Int windowIdx ); public Q_SLOTS: void updateActiveSubWindow(); - void setActiveSubWindow(QWidget *window); + void setActiveSubWindow( QWidget *window ); void removeMdiSubWindow( PlaYUVerMdiSubWindow* window ); + void removeActiveSubWindow(); + void removeAllSubWindow(); void tileSubWindows(); void cascadeSubWindows(); + void updateMenu(); Q_SIGNALS: void windowActivated(); @@ -87,4 +109,4 @@ Q_SIGNALS: } // NAMESPACE -#endif // __PLAYUVERSUBWINMANAGER_H__ +#endif // __PLAYUVERSUBWINDOWHANDLE_H__ diff --git a/app/QualityHandle.cpp b/app/QualityHandle.cpp index b10697a..38aa6dc 100644 --- a/app/QualityHandle.cpp +++ b/app/QualityHandle.cpp @@ -23,7 +23,7 @@ */ #include -#include "PlaYUVerSubWinManager.h" +#include "PlaYUVerSubWindowHandle.h" #include "QualityHandle.h" #include "VideoSubWindow.h" #include "PlotSubWindow.h" @@ -32,7 +32,7 @@ namespace plaYUVer { -QualityHandle::QualityHandle( QWidget* parent, PlaYUVerSubWinManager* windowManager ) : +QualityHandle::QualityHandle( QWidget* parent, PlaYUVerSubWindowHandle* windowManager ) : m_pcParet( parent ), m_pcMainWindowManager( windowManager ) { diff --git a/app/QualityHandle.h b/app/QualityHandle.h index be32385..b48ab1d 100644 --- a/app/QualityHandle.h +++ b/app/QualityHandle.h @@ -38,14 +38,14 @@ namespace plaYUVer { -class PlaYUVerSubWinManager; +class PlaYUVerSubWindowHandle; class VideoSubWindow; class QualityHandle: public QWidget { Q_OBJECT public: - QualityHandle( QWidget*, PlaYUVerSubWinManager * ); + QualityHandle( QWidget*, PlaYUVerSubWindowHandle * ); ~QualityHandle(); Void createActions(); @@ -60,7 +60,7 @@ public: private: QWidget* m_pcParet; - PlaYUVerSubWinManager* m_pcMainWindowManager; + PlaYUVerSubWindowHandle* m_pcMainWindowManager; enum { SELECT_REF_ACT, diff --git a/app/QualityMeasurementSidebar.cpp b/app/QualityMeasurementSidebar.cpp index 031b9c6..f7d16ee 100644 --- a/app/QualityMeasurementSidebar.cpp +++ b/app/QualityMeasurementSidebar.cpp @@ -24,14 +24,14 @@ #include "lib/PlaYUVerDefs.h" #include -#include "PlaYUVerSubWinManager.h" +#include "PlaYUVerSubWindowHandle.h" #include "QualityMeasurementSidebar.h" #include "VideoSubWindow.h" namespace plaYUVer { -QualityMeasurementSidebar::QualityMeasurementSidebar( QWidget* parent, PlaYUVerSubWinManager *windowManager ) : +QualityMeasurementSidebar::QualityMeasurementSidebar( QWidget* parent, PlaYUVerSubWindowHandle *windowManager ) : QWidget( parent ), m_pcMainWindowManager( windowManager ), m_pcCurrentVideoSubWindow( NULL ) diff --git a/app/QualityMeasurementSidebar.h b/app/QualityMeasurementSidebar.h index 579fe47..917ca2e 100644 --- a/app/QualityMeasurementSidebar.h +++ b/app/QualityMeasurementSidebar.h @@ -39,14 +39,14 @@ namespace plaYUVer { -class PlaYUVerSubWinManager; +class PlaYUVerSubWindowHandle; class VideoSubWindow; class QualityMeasurementSidebar: public QWidget { Q_OBJECT public: - QualityMeasurementSidebar( QWidget*, PlaYUVerSubWinManager * ); + QualityMeasurementSidebar( QWidget*, PlaYUVerSubWindowHandle * ); ~QualityMeasurementSidebar(); QSize sizeHint() const; @@ -57,7 +57,7 @@ public: Void updateQualityMetric( Int ); private: - PlaYUVerSubWinManager* m_pcMainWindowManager; + PlaYUVerSubWindowHandle* m_pcMainWindowManager; QVector m_pcVideoWindowList; QStringList m_pcWindowListNames; diff --git a/app/VideoHandle.cpp b/app/VideoHandle.cpp index 21d2c52..a8da2e5 100644 --- a/app/VideoHandle.cpp +++ b/app/VideoHandle.cpp @@ -24,14 +24,14 @@ #include "lib/PlaYUVerDefs.h" #include -#include "PlaYUVerSubWinManager.h" +#include "PlaYUVerSubWindowHandle.h" #include "VideoHandle.h" #include "DialogSubWindowSelector.h" namespace plaYUVer { -VideoHandle::VideoHandle( QWidget* parent, PlaYUVerSubWinManager* windowManager ) : +VideoHandle::VideoHandle( QWidget* parent, PlaYUVerSubWindowHandle* windowManager ) : m_pcParet( parent ), m_pcMainWindowManager( windowManager ) { diff --git a/app/VideoHandle.h b/app/VideoHandle.h index 32b627e..614aed5 100644 --- a/app/VideoHandle.h +++ b/app/VideoHandle.h @@ -39,14 +39,14 @@ namespace plaYUVer { -class PlaYUVerSubWinManager; +class PlaYUVerSubWindowHandle; class VideoSubWindow; class VideoHandle: public QWidget { Q_OBJECT public: - VideoHandle( QWidget*, PlaYUVerSubWinManager * ); + VideoHandle( QWidget*, PlaYUVerSubWindowHandle * ); ~VideoHandle(); Void createActions(); @@ -65,7 +65,7 @@ public: private: QWidget* m_pcParet; - PlaYUVerSubWinManager* m_pcMainWindowManager; + PlaYUVerSubWindowHandle* m_pcMainWindowManager; enum { PLAY_ACT, diff --git a/app/plaYUVerApp.cpp b/app/plaYUVerApp.cpp index 60aa280..cd89fcf 100644 --- a/app/plaYUVerApp.cpp +++ b/app/plaYUVerApp.cpp @@ -27,7 +27,7 @@ #include "fvupdater.h" #endif #include "plaYUVerApp.h" -#include "PlaYUVerSubWinManager.h" +#include "PlaYUVerSubWindowHandle.h" #include "DialogSubWindowSelector.h" #define SYNCHRONISED_ZOON 1 @@ -45,17 +45,11 @@ plaYUVerApp::plaYUVerApp() m_pDBusAdaptor = new PlaYUVerAppAdaptor( this ); #endif - m_pcWindowManager = new PlaYUVerSubWinManager( this ); - setCentralWidget( m_pcWindowManager ); - //mdiArea->setActivationOrder( QMdiArea::ActivationHistoryOrder ); + m_pcWindowHandle = new PlaYUVerSubWindowHandle( this ); - mapperWindow = new QSignalMapper( this ); - connect( mapperWindow, SIGNAL( mapped(QWidget*) ), m_pcWindowManager, SLOT( setActiveSubWindow(QWidget*) ) ); - - m_appModuleVideo = new VideoHandle( this, m_pcWindowManager ); - m_appModuleQuality = new QualityHandle( this, m_pcWindowManager ); - - m_appModuleExtensions = new ModulesHandle( this, m_pcWindowManager ); + m_appModuleVideo = new VideoHandle( this, m_pcWindowHandle ); + m_appModuleQuality = new QualityHandle( this, m_pcWindowHandle ); + m_appModuleExtensions = new ModulesHandle( this, m_pcWindowHandle ); createActions(); createToolBars(); @@ -69,12 +63,12 @@ plaYUVerApp::plaYUVerApp() setWindowTitle( QApplication::applicationName() ); setWindowIcon( QIcon( ":/images/playuver.png" ) ); setUnifiedTitleAndToolBarOnMac( true ); - + setCentralWidget( m_pcWindowHandle ); setAcceptDrops( true ); //mdiArea->setAcceptDrops( true ); //mdiArea->hide(); - connect( m_pcWindowManager, SIGNAL( windowActivated() ), this, SLOT( update() ) ); + connect( m_pcWindowHandle, SIGNAL( windowActivated() ), this, SLOT( update() ) ); connect( m_appModuleVideo, SIGNAL( changed() ), this, SLOT( update() ) ); connect( m_appModuleQuality, SIGNAL( changed() ), this, SLOT( update() ) ); connect( m_appModuleExtensions, SIGNAL( changed() ), this, SLOT( update() ) ); @@ -92,7 +86,7 @@ Void plaYUVerApp::parseArgs( Int argc, Char *argv[] ) { loadFile( argv[i] ); } - m_pcWindowManager->tileSubWindows(); + m_pcWindowHandle->tileSubWindows(); zoomToFitAll(); } } @@ -109,7 +103,7 @@ Void plaYUVerApp::closeEvent( QCloseEvent *event ) Int mayCloseAll = true; Int msgBoxCloseRet = QMessageBox::Yes; - QList subWindowList = m_pcWindowManager->findSubWindow(); + QList subWindowList = m_pcWindowHandle->findSubWindow(); if( subWindowList.size() >= 1 ) { QMessageBox msgBoxClose( QMessageBox::Question, "PlaYUVer", "There are open files!", QMessageBox::Yes | QMessageBox::No, this ); @@ -120,7 +114,6 @@ Void plaYUVerApp::closeEvent( QCloseEvent *event ) switch( msgBoxCloseRet ) { case QMessageBox::Yes: - mayCloseAll = true; for( Int i = 0; i < subWindowList.size(); i++ ) { @@ -149,12 +142,12 @@ Void plaYUVerApp::closeActiveWindow() { SubWindowHandle *currSubWindow = activeSubWindow(); m_appModuleVideo->closeSubWindow( qobject_cast( currSubWindow ) ); - m_pcWindowManager->removeSubWindow( currSubWindow ); + m_pcWindowHandle->removeSubWindow( currSubWindow ); } Void plaYUVerApp::closeAll() { - m_pcWindowManager->removeAllSubWindow(); + m_pcWindowHandle->removeAllSubWindow(); } Void plaYUVerApp::loadFile( QString fileName, PlaYUVerStreamInfo* pStreamInfo ) @@ -164,10 +157,10 @@ Void plaYUVerApp::loadFile( QString fileName, PlaYUVerStreamInfo* pStreamInfo ) statusBar()->showMessage( "File " + fileName + " do not exist!", 2000 ); return; } - VideoSubWindow *videoSubWindow = plaYUVerApp::findVideoStreamSubWindow( m_pcWindowManager, fileName ); + VideoSubWindow *videoSubWindow = plaYUVerApp::findVideoStreamSubWindow( m_pcWindowHandle, fileName ); if( videoSubWindow ) { - m_pcWindowManager->setActiveSubWindow( videoSubWindow ); + m_pcWindowHandle->setActiveSubWindow( videoSubWindow ); return; } videoSubWindow = new VideoSubWindow( this ); //createSubWindow(); @@ -190,7 +183,7 @@ Void plaYUVerApp::loadFile( QString fileName, PlaYUVerStreamInfo* pStreamInfo ) if( opened ) { statusBar()->showMessage( tr( "Loading file..." ) ); - m_pcWindowManager->addSubWindow( videoSubWindow ); + m_pcWindowHandle->addSubWindow( videoSubWindow ); videoSubWindow->show(); connect( videoSubWindow->getViewArea(), SIGNAL( selectionChanged( QRect ) ), m_appModuleVideo, SLOT( updateSelectionArea( QRect ) ) ); @@ -351,7 +344,7 @@ Void plaYUVerApp::reload() Void plaYUVerApp::reloadAll() { VideoSubWindow *videoSubWindow; - QList subWindowList = m_pcWindowManager->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); + QList subWindowList = m_pcWindowHandle->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); for( Int i = 0; i < subWindowList.size(); i++ ) { videoSubWindow = qobject_cast( subWindowList.at( i ) ); @@ -379,7 +372,7 @@ Void plaYUVerApp::setTool( Int idxTool ) m_uiViewTool = idxTool; actionGroupTools->actions().at( m_uiViewTool )->setChecked( true ); VideoSubWindow* videoSubWindow; - QList subWindowList = m_pcWindowManager->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); + QList subWindowList = m_pcWindowHandle->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); for( Int i = 0; i < subWindowList.size(); i++ ) { videoSubWindow = qobject_cast( subWindowList.at( i ) ); @@ -410,7 +403,7 @@ Void plaYUVerApp::zoomToFit() Void plaYUVerApp::zoomToFitAll() { VideoSubWindow *videoSubWindow; - QList subWindowList = m_pcWindowManager->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); + QList subWindowList = m_pcWindowHandle->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); for( Int i = 0; i < subWindowList.size(); i++ ) { videoSubWindow = qobject_cast( subWindowList.at( i ) ); @@ -429,7 +422,7 @@ Void plaYUVerApp::zoomToFactorAll( const double scale, const QPoint center ) factor = m_pcCurrentSubWindow->getScaleFactor(); SubWindowHandle *subWindow; - QList subWindowList = m_pcWindowManager->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); + QList subWindowList = m_pcWindowHandle->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); for( Int i = 0; i < subWindowList.size(); i++ ) { subWindow = subWindowList.at( i ); @@ -473,7 +466,7 @@ Void plaYUVerApp::updateZoomFactorSBox() Void plaYUVerApp::moveAllScrollBars( const QPoint offset ) { - QList subWindowList = m_pcWindowManager->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); + QList subWindowList = m_pcWindowHandle->findSubWindow( SubWindowHandle::VIDEO_SUBWINDOW ); for( Int i = 0; i < subWindowList.size(); i++ ) { if( m_pcCurrentSubWindow == subWindowList.at( i ) ) @@ -508,12 +501,12 @@ Void plaYUVerApp::dropEvent( QDropEvent *event ) SubWindowHandle *plaYUVerApp::activeSubWindow() { - if( SubWindowHandle *activeSubWindow = m_pcWindowManager->activeSubWindow() ) + if( SubWindowHandle *activeSubWindow = m_pcWindowHandle->activeSubWindow() ) return activeSubWindow; return NULL; } -VideoSubWindow* plaYUVerApp::findVideoStreamSubWindow( const PlaYUVerSubWinManager* windowManager, const QString& fileName ) +VideoSubWindow* plaYUVerApp::findVideoStreamSubWindow( const PlaYUVerSubWindowHandle* windowManager, const QString& fileName ) { QString canonicalFilePath = QFileInfo( fileName ).canonicalFilePath(); VideoSubWindow* pcSubWindow; @@ -552,7 +545,7 @@ Void plaYUVerApp::update() if( m_pcCurrentVideoSubWindow ) { - if( !m_pcWindowManager->findSubWindow( m_pcCurrentVideoSubWindow->getRefSubWindow() ) ) + if( !m_pcWindowHandle->findSubWindow( m_pcCurrentVideoSubWindow->getRefSubWindow() ) ) { m_pcCurrentVideoSubWindow->setRefSubWindow( NULL ); } @@ -590,9 +583,6 @@ Void plaYUVerApp::updateMenus() m_arrayActions[RELOAD_ALL_ACT]->setEnabled( hasSubWindow ); m_arrayActions[LOAD_ALL_ACT]->setEnabled( hasSubWindow ); m_arrayActions[CLOSEALL_ACT]->setEnabled( hasSubWindow ); - m_arrayActions[TILE_WINDOWS_ACT]->setEnabled( hasSubWindow ); - m_arrayActions[CASCADE_WINDOWS_ACT]->setEnabled( hasSubWindow ); - m_arrayActions[SEPARATOR_ACT]->setVisible( hasSubWindow ); m_arrayActions[ZOOM_IN_ACT]->setEnabled( hasSubWindow ); m_arrayActions[ZOOM_OUT_ACT]->setEnabled( hasSubWindow ); @@ -609,64 +599,13 @@ Void plaYUVerApp::updateMenus() m_appModuleExtensions->updateMenus(); } -Void plaYUVerApp::updateWindowMenu() -{ - m_arrayMenu[WINDOW_MENU]->clear(); - m_arrayMenu[WINDOW_MENU]->addAction( m_arrayActions[CLOSE_ACT] ); - m_arrayMenu[WINDOW_MENU]->addAction( m_arrayActions[CLOSEALL_ACT] ); - m_arrayMenu[WINDOW_MENU]->addSeparator(); - m_arrayMenu[WINDOW_MENU]->addAction( m_arrayActions[TILE_WINDOWS_ACT] ); - m_arrayMenu[WINDOW_MENU]->addAction( m_arrayActions[CASCADE_WINDOWS_ACT] ); - m_arrayMenu[WINDOW_MENU]->addSeparator(); - m_arrayMenu[WINDOW_MENU]->addAction( m_arrayActions[NEXT_WINDOWS_ACT] ); - m_arrayMenu[WINDOW_MENU]->addAction( m_arrayActions[PREVIOUS_WINDOWS_ACT] ); - m_arrayMenu[WINDOW_MENU]->addAction( m_arrayActions[SEPARATOR_ACT] ); - - updateMenus(); - - QList subWindowList = m_pcWindowManager->findSubWindow(); - m_arrayActions[SEPARATOR_ACT]->setVisible( !subWindowList.isEmpty() ); - Int number_windows = subWindowList.size(); - - if( number_windows > 1 ) - { - m_arrayActions[NEXT_WINDOWS_ACT]->setEnabled( true ); - m_arrayActions[PREVIOUS_WINDOWS_ACT]->setEnabled( true ); - } - else - { - m_arrayActions[NEXT_WINDOWS_ACT]->setEnabled( false ); - m_arrayActions[PREVIOUS_WINDOWS_ACT]->setEnabled( false ); - } - - for( Int i = 0; i < number_windows; ++i ) - { - SubWindowHandle *child = subWindowList.at( i ); - - QString text; - if( i < 9 ) - { - text = tr( "&%1 %2" ).arg( i + 1 ).arg( child->getWindowName() ); - } - else - { - text = tr( "%1 %2" ).arg( i + 1 ).arg( child->getWindowName() ); - } - QAction *action = m_arrayMenu[WINDOW_MENU]->addAction( text ); - action->setCheckable( true ); - action->setChecked( child == activeSubWindow() ); - connect( action, SIGNAL( triggered() ), mapperWindow, SLOT( map() ) ); - mapperWindow->setMapping( action, subWindowList.at( i ) ); - } -} - // ----------------------- Create Functions ----------------------- Void plaYUVerApp::createActions() { m_arrayActions.resize( TOTAL_ACT ); -// ------------ File ------------ + // ------------ File ------------ m_arrayActions[OPEN_ACT] = new QAction( QIcon( ":/images/open.png" ), tr( "&Open" ), this ); m_arrayActions[OPEN_ACT]->setIcon( style()->standardIcon( QStyle::SP_DialogOpenButton ) ); m_arrayActions[OPEN_ACT]->setShortcuts( QKeySequence::Open ); @@ -710,7 +649,6 @@ Void plaYUVerApp::createActions() m_arrayActions[CLOSE_ACT] = new QAction( tr( "&Close" ), this ); m_arrayActions[CLOSE_ACT]->setIcon( style()->standardIcon( QStyle::SP_DialogCloseButton ) ); - m_arrayActions[CLOSE_ACT]->setStatusTip( tr( "Close the active window" ) ); connect( m_arrayActions[CLOSE_ACT], SIGNAL( triggered() ), this, SLOT( closeActiveWindow() ) ); @@ -723,7 +661,7 @@ Void plaYUVerApp::createActions() m_arrayActions[EXIT_ACT]->setStatusTip( tr( "Exit the application" ) ); connect( m_arrayActions[EXIT_ACT], SIGNAL( triggered() ), qApp, SLOT( closeAllWindows() ) ); -// ------------ View ------------ + // ------------ View ------------ mapperZoom = new QSignalMapper( this ); connect( mapperZoom, SIGNAL( mapped(int) ), this, SLOT( scaleFrame(int) ) ); @@ -757,7 +695,7 @@ Void plaYUVerApp::createActions() m_arrayActions[ZOOM_FIT_ALL_ACT]->setStatusTip( tr( "Apply zoom to fit to all windows" ) ); connect( m_arrayActions[ZOOM_FIT_ALL_ACT], SIGNAL( triggered() ), this, SLOT( zoomToFitAll() ) ); -// ------------ Tools ------------ + // ------------ Tools ------------ actionGroupTools = new QActionGroup( this ); actionGroupTools->setExclusive( true ); @@ -783,34 +721,7 @@ Void plaYUVerApp::createActions() m_appModuleVideo->createActions(); m_appModuleQuality->createActions(); m_appModuleExtensions->createActions(); - -// ------------ Window ------------ - - m_arrayActions[TILE_WINDOWS_ACT] = new QAction( tr( "Tile" ), this ); - m_arrayActions[TILE_WINDOWS_ACT]->setIcon( QIcon( ":images/windowstile.png" ) ); - m_arrayActions[TILE_WINDOWS_ACT]->setStatusTip( tr( "Tile the windows" ) ); -//connect( m_arrayActions[TILE_WINDOWS_ACT], SIGNAL( triggered() ), mdiArea, SLOT( tileSubWindows() ) ); - connect( m_arrayActions[TILE_WINDOWS_ACT], SIGNAL( triggered() ), m_pcWindowManager, SLOT( tileSubWindows() ) ); - - m_arrayActions[CASCADE_WINDOWS_ACT] = new QAction( tr( "Cascade" ), this ); - m_arrayActions[CASCADE_WINDOWS_ACT]->setIcon( QIcon( ":images/windowscascade.png" ) ); - m_arrayActions[CASCADE_WINDOWS_ACT]->setStatusTip( tr( "Cascade the windows" ) ); - connect( m_arrayActions[CASCADE_WINDOWS_ACT], SIGNAL( triggered() ), m_pcWindowManager, SLOT( cascadeSubWindows() ) ); - - m_arrayActions[NEXT_WINDOWS_ACT] = new QAction( tr( "Ne&xt" ), this ); - m_arrayActions[NEXT_WINDOWS_ACT]->setShortcuts( QKeySequence::NextChild ); - m_arrayActions[NEXT_WINDOWS_ACT]->setIcon( QIcon( style()->standardIcon( QStyle::SP_ArrowRight ) ) ); - m_arrayActions[NEXT_WINDOWS_ACT]->setStatusTip( tr( "Move the focus to the next window" ) ); -// connect( m_arrayActions[NEXT_WINDOWS_ACT], SIGNAL( triggered() ), m_pcWindowManager, SLOT( activateNextSubWindow() ) ); - - m_arrayActions[PREVIOUS_WINDOWS_ACT] = new QAction( tr( "Pre&vious" ), this ); - m_arrayActions[PREVIOUS_WINDOWS_ACT]->setShortcuts( QKeySequence::PreviousChild ); - m_arrayActions[PREVIOUS_WINDOWS_ACT]->setIcon( QIcon( style()->standardIcon( QStyle::SP_ArrowLeft ) ) ); - m_arrayActions[PREVIOUS_WINDOWS_ACT]->setStatusTip( tr( "Move the focus to the previous window" ) ); -// connect( m_arrayActions[PREVIOUS_WINDOWS_ACT], SIGNAL( triggered() ), m_pcWindowManager, SLOT( activatePreviousSubWindow() ) ); - - m_arrayActions[SEPARATOR_ACT] = new QAction( this ); - m_arrayActions[SEPARATOR_ACT]->setSeparator( true ); + m_pcWindowHandle->createActions(); // ------------ About ------------ @@ -883,11 +794,8 @@ Void plaYUVerApp::createMenus() menuBar()->addMenu( QualityMenu ); QMenu* ModuleMenu = m_appModuleExtensions->createMenu(); menuBar()->addMenu( ModuleMenu ); -//connect( ModuleMenu, SIGNAL( triggered(QAction *) ), this, SLOT( ModuleHandling(QAction *) ) ); - - m_arrayMenu[WINDOW_MENU] = menuBar()->addMenu( tr( "&Window" ) ); - updateWindowMenu(); - connect( m_arrayMenu[WINDOW_MENU], SIGNAL( aboutToShow() ), this, SLOT( updateWindowMenu() ) ); + QMenu* windowMenu = m_pcWindowHandle->createMenu(); + menuBar()->addMenu( windowMenu ); menuBar()->addSeparator(); diff --git a/app/plaYUVerApp.h b/app/plaYUVerApp.h index 13c309f..9decc68 100644 --- a/app/plaYUVerApp.h +++ b/app/plaYUVerApp.h @@ -47,7 +47,7 @@ namespace plaYUVer { class PlaYUVerStream; -class PlaYUVerSubWinManager; +class PlaYUVerSubWindowHandle; class PlaYUVerAppAdaptor; class plaYUVerApp: public QMainWindow @@ -97,7 +97,6 @@ private Q_SLOTS: void dropEvent( QDropEvent *event ); void update(); - void updateWindowMenu(); void updateZoomFactorSBox(); void updateStatusBar( const QString& ); @@ -106,7 +105,6 @@ private Q_SLOTS: private: PlaYUVerAppAdaptor* m_pDBusAdaptor; - PlaYUVerSubWinManager* m_pcWindowManager; /** * Save the current subwindow for every category @@ -117,7 +115,7 @@ private: QString m_cLastOpenPath; SubWindowHandle *activeSubWindow(); - static VideoSubWindow* findVideoStreamSubWindow( const PlaYUVerSubWinManager* windowManager, const QString& fileName ); + static VideoSubWindow* findVideoStreamSubWindow( const PlaYUVerSubWindowHandle* windowManager, const QString& fileName ); Void updateMenus(); @@ -158,6 +156,7 @@ private: VideoHandle* m_appModuleVideo; QualityHandle* m_appModuleQuality; ModulesHandle *m_appModuleExtensions; + PlaYUVerSubWindowHandle* m_pcWindowHandle; /** * Array of menus for the main app @@ -222,11 +221,6 @@ private: ZOOM_FIT_ALL_ACT, NAVIGATION_TOOL_ACT, SELECTION_TOOL_ACT, - TILE_WINDOWS_ACT, - CASCADE_WINDOWS_ACT, - PREVIOUS_WINDOWS_ACT, - NEXT_WINDOWS_ACT, - SEPARATOR_ACT, UPDATE_ACT, ABOUT_ACT, ABOUTQT_ACT,