changeset 217:c24fafc45d50

add the lock and unlock window
author benoitrigolleau
date Thu, 07 Feb 2008 15:17:13 +0000
parents 3045ced14a59
children 4fb1a45be262
files sv/main/EasaierSessionManager.cpp sv/main/MainWindow.cpp sv/main/MainWindow.h sv/main/main.cpp
diffstat 4 files changed, 88 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/sv/main/EasaierSessionManager.cpp	Thu Feb 07 15:15:52 2008 +0000
+++ b/sv/main/EasaierSessionManager.cpp	Thu Feb 07 15:17:13 2008 +0000
@@ -237,7 +237,6 @@
 			if (read)
 			{
 				m_document->setAudioSourceInfoModel(m_audioSourceInfoModel);
-				emit audioFileLoaded();
 				loadRelatedModel();
 			}
 		    break;
@@ -389,11 +388,13 @@
 					m_document->setMainModel(model);
 					addedModel[modelName] = (Model* ) model;
 					ok = true;
+					emit audioFileLoaded();
 				}
 #ifdef HAVE_VIDEO
 				else if (VideoFileReaderFactory::isKnownExtensions(extension)) 
 				{
 					ok = !(MainWindow::instance()->openVideoFile(filename, MainWindow::ReplaceMainModel));
+					emit audioFileLoaded();
 				}
 #endif
 				else
--- 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"),
--- a/sv/main/MainWindow.h	Thu Feb 07 15:15:52 2008 +0000
+++ b/sv/main/MainWindow.h	Thu Feb 07 15:17:13 2008 +0000
@@ -24,6 +24,7 @@
 #include <QTabWidget>
 #include <QStatusBar>
 #include <QProcess>
+#include <QVector>
 #include <time.h>
 #include "base/Command.h"
 #include "view/ViewManager.h"
@@ -37,6 +38,7 @@
 #include "widgets/WidgetGallery.h"
 #include "document/ESFileReader.h"
 #include "widgets/MultiPaneLayerContainer.h"
+#include "widgets/WaitingWidget.h"
 
 //Ivan Damnjanovic 12/07/2007
 #include "data/fileio/VideoFileReader.h"
@@ -313,7 +315,12 @@
 
 	void exit();
 
+	void lockWindow();
+	void unlockWindow();
+
 protected:
+
+	WaitingWidget			*m_waitwidget;
 	SDLWidget				*m_sdlWidget;
 	QWidget					*m_videoWidget;
     QString                  m_sessionFile;
@@ -523,8 +530,10 @@
 
 private:
 	void createMultiPaneLayerContainer();
-
 	float m_playSpeedVal;
+	int m_nbLock;
+	QVector<QToolBar*> m_toolBarVector;
+	QVector<bool> m_toolBarVectorValues; 
 
 };
 
--- a/sv/main/main.cpp	Thu Feb 07 15:15:52 2008 +0000
+++ b/sv/main/main.cpp	Thu Feb 07 15:17:13 2008 +0000
@@ -22,6 +22,7 @@
 #include "base/Preferences.h"
 #include "widgets/TipDialog.h"
 #include "widgets/EasaierStyle.h"
+#include "widgets/Plotter.h"
 
 #include <QMetaType>
 #include <QApplication>
@@ -205,15 +206,19 @@
 Q_IMPORT_PLUGIN(qmng)
 #endif
 
+
 int main(int argc, char **argv)
 {
 
     SVApplication application(argc, argv);
-	
+
 	QSplashScreen *splash = new QSplashScreen;
 	splash->setPixmap(QPixmap(":icons/splashscreen.png"));
 	splash->show();
 	
+	Plotter plotter;
+	plotter.show();
+
     QStringList args = application.arguments();
 
     signal(SIGINT,  signalHandler);