diff sv/main/MainWindow.cpp @ 217:c24fafc45d50

add the lock and unlock window
author benoitrigolleau
date Thu, 07 Feb 2008 15:17:13 +0000
parents c4e897bf012b
children e8175839a5ac
line wrap: on
line diff
--- a/sv/main/MainWindow.cpp	Thu Feb 07 15:15:52 2008 +0000
+++ b/sv/main/MainWindow.cpp	Thu Feb 07 15:17:13 2008 +0000
@@ -50,7 +50,6 @@
 #include "widgets/ConnectionStatus.h"
 #include "widgets/LayerViewerWidget.h"
 
-
 #include "audioio/AudioCallbackPlaySource.h"
 #include "audioio/AudioCallbackPlayTarget.h"
 #include "audioio/AudioTargetFactory.h"
@@ -153,7 +152,8 @@
     m_abandoning(false),
     m_preferencesDialog(0),
 	m_playSpeedVal(1),
-	m_curSender(0)
+	m_curSender(0),
+	m_nbLock(0)
 {
 
 	m_videoWidget = 0;
@@ -391,9 +391,13 @@
 	connect(m_EasaierManager, SIGNAL(queryModelLoaded(QueryModel*)),
 	    this, SLOT(queryModelLoaded(QueryModel*)));
 
+
 	connect(m_EasaierManager, SIGNAL(audioFileLoaded()),
 	    this, SLOT(audioFileLoaded()));
 
+	connect(m_EasaierManager, SIGNAL(audioFileLoaded()),
+	    this, SLOT(unlockWindow()));
+
     setupMenus();
     setupToolbars();
 
@@ -402,6 +406,63 @@
     newEasaierSession();
 
 }
+
+void MainWindow::lockWindow(){
+	//lock the menu
+	QWidget *menu = this->menuWidget();
+	if(menu){
+		menu->setEnabled(false);
+	}
+	
+	// lock the toolbar
+	for(int i=0; i< m_toolBarVector.count();i++){
+		m_toolBarVectorValues.append(m_toolBarVector[i]->isEnabled());
+		m_toolBarVector[i]->setEnabled(false);
+	}
+	
+	//lock the central widget
+
+	QWidget *centralWidget = this->centralWidget();
+	if(centralWidget){
+		QLayout *centralLayout = centralWidget->layout();
+		if(centralLayout){
+			m_waitwidget = new WaitingWidget;
+			m_waitwidget->setAnimation(true);
+			((QGridLayout*) centralLayout)->addWidget(m_waitwidget , 0,0);
+			m_waitwidget->setGeometry(-20,-20,100,100);
+		}
+	}
+	m_nbLock++;
+}
+
+void MainWindow::unlockWindow(){
+	m_nbLock--;
+	if(m_nbLock<=0){
+		//unlock the menu
+		QWidget *menu = this->menuWidget();
+		if(menu){
+			menu->setEnabled(true);
+		}
+
+		// unlock the toolbar
+		for(int i=0; i< m_toolBarVector.count();i++){
+			m_toolBarVector[i]->setEnabled(m_toolBarVectorValues[i]);
+		}
+		m_toolBarVectorValues.clear();
+
+		// unlock the central widget
+		QWidget *centralWidget = this->centralWidget();
+		if(centralWidget){
+			QLayout *centralLayout = centralWidget->layout();
+			if(centralLayout){
+				centralLayout->removeWidget(m_waitwidget);
+				delete m_waitwidget;
+
+			}
+		}
+	}
+}
+
 
 MainWindow::~MainWindow()
 {
@@ -684,6 +745,7 @@
 
 	QMenu* menu = menuBar()->addMenu(tr("&Easaier"));
 	QToolBar *toolbar = addToolBar(tr("Easaier session Toolbar"));
+	m_toolBarVector.append(toolbar);
 	
 	QIcon icon(":icons/filenew.png");
     QAction *action = new QAction(icon, tr("&New Session"), this);
@@ -1689,6 +1751,7 @@
 MainWindow::setupToolbars()
 {
     QToolBar *toolbar = addToolBar(tr("Transport Toolbar"));
+	m_toolBarVector.append(toolbar);
 
     QAction *action = toolbar->addAction(QIcon(":/icons/rewind-start.png"),
 					 tr("Rewind to Start"));
@@ -1729,6 +1792,7 @@
     connect(this, SIGNAL(canPlay(bool)), action, SLOT(setEnabled(bool)));
 
     toolbar = addToolBar(tr("Play Mode Toolbar"));
+	m_toolBarVector.append(toolbar);
 
     action = toolbar->addAction(QIcon(":/icons/playselection.png"),
 				tr("Constrain Playback to Selection"));
@@ -1753,9 +1817,13 @@
     connect(this, SIGNAL(canPlay(bool)), action, SLOT(setEnabled(bool)));
 
     toolbar = addToolBar(tr("Edit Toolbar"));
+	m_toolBarVector.append(toolbar);
+
     CommandHistory::getInstance()->registerToolbar(toolbar);
 
     toolbar = addToolBar(tr("Tools Toolbar"));
+	m_toolBarVector.append(toolbar);
+
     QActionGroup *group = new QActionGroup(this);
 
     action = toolbar->addAction(QIcon(":/icons/navigate.png"),