From c0e08c4f5d22aedc28c2524c5853fcbf3f8593b8 Mon Sep 17 00:00:00 2001
From: Oliver Bock <oliver.bock@aei.mpg.de>
Date: Fri, 6 Feb 2009 17:37:43 +0100
Subject: [PATCH] Added IYA2009 demo mode

---
 src/pulsatingscience.cpp | 38 ++++++++++++++++++++++++++++++++++++++
 src/pulsatingscience.h   |  6 ++++++
 2 files changed, 44 insertions(+)

diff --git a/src/pulsatingscience.cpp b/src/pulsatingscience.cpp
index 707edee..0b2085a 100644
--- a/src/pulsatingscience.cpp
+++ b/src/pulsatingscience.cpp
@@ -36,6 +36,7 @@ PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent)
 	m_statusBarVisible = ui.actionStatus_bar->isChecked();
 	m_animControlVisible = true;
 	m_animControlFloating = ui.dockAnimControl->isFloating();
+	m_hiddenDemoModeActivated = false;
 
 	// register alternate shortcuts (will be enabled when menu is hidden)
 	m_runShortcut = new QShortcut(ui.actionRun->shortcut(), this);
@@ -53,6 +54,9 @@ PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent)
 	m_fullscreenShortcut = new QShortcut(ui.actionFullscreen->shortcut(), this);
 	m_fullscreenShortcut->setEnabled(false);
 
+	// register "hidden" demo mode shortcut for IYA2009 exhibition
+	m_hiddenShortcut = new QShortcut(Qt::CTRL + Qt::SHIFT + Qt::ALT + Qt::Key_D, this);
+
 	// establish object communications
 	connect(ui.pushRun, SIGNAL(clicked()),
 			ui.pulsarGlWidget, SLOT(runAnimation()));
@@ -95,6 +99,9 @@ PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent)
 
 	connect(ui.pulsarGlWidget, SIGNAL(pulseProfileUpdated(const QVector<double>&)),
 				ui.pulseScopeWidget, SLOT(drawCurve(const QVector<double>&)), Qt::DirectConnection);
+
+	connect(m_hiddenShortcut, SIGNAL(activated()),
+				this, SLOT(toggleHiddenDemoMode()));
 }
 
 PulsatingScience::~PulsatingScience()
@@ -133,6 +140,21 @@ PulsatingScience::~PulsatingScience()
 		m_fullscreenShortcut->disconnect();
 		delete m_fullscreenShortcut;
 	}
+
+	if(m_hiddenShortcut) {
+		m_hiddenShortcut->disconnect();
+		delete m_hiddenShortcut;
+	}
+}
+
+void PulsatingScience::closeEvent(QCloseEvent *event)
+{
+    if(m_hiddenDemoModeActivated) {
+    	event->ignore();
+    }
+    else {
+        event->accept();
+    }
 }
 
 void PulsatingScience::on_pushRun_clicked()
@@ -402,3 +424,19 @@ void PulsatingScience::updatePulsarSemiMajorAxisValue(double value)
 		ui.lcdPulsarSemiMajorAxis->display(QString::number(value, 'f', 1));
 	}
 }
+
+void PulsatingScience::toggleHiddenDemoMode()
+{
+	if(m_hiddenDemoModeActivated) {
+		menuBarToggled();
+		window()->setWindowState(windowState() & ~Qt::WindowFullScreen);
+		ui.dockAnimControl->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
+		m_hiddenDemoModeActivated = false;
+	}
+	else {
+		menuBarToggled();
+		window()->setWindowState(windowState() | Qt::WindowFullScreen);
+		ui.dockAnimControl->setFeatures(QDockWidget::NoDockWidgetFeatures);
+		m_hiddenDemoModeActivated = true;
+	}
+}
diff --git a/src/pulsatingscience.h b/src/pulsatingscience.h
index 9f42e33..ef6fda2 100644
--- a/src/pulsatingscience.h
+++ b/src/pulsatingscience.h
@@ -27,6 +27,7 @@
 
 #include "ui_pulsatingscience.h"
 
+
 class PulsatingScience : public QMainWindow
 {
     Q_OBJECT
@@ -35,6 +36,8 @@ public:
     PulsatingScience(QWidget *parent = 0);
     ~PulsatingScience();
 
+    void closeEvent(QCloseEvent *event);
+
 public slots:
 	void on_pushRun_clicked();
 	void on_pushPause_clicked();
@@ -64,6 +67,7 @@ public slots:
 	void on_actionAbout_activated();
 
 	void updatePulsarSemiMajorAxisValue(double value);
+	void toggleHiddenDemoMode();
 
 private:
     Ui::PulsatingScienceClass ui;
@@ -75,6 +79,7 @@ private:
     QShortcut *m_rotationAxesShortcut;
     QShortcut *m_menuBarShortcut;
     QShortcut *m_fullscreenShortcut;
+    QShortcut *m_hiddenShortcut;
 
     bool m_permanentOrbits;
     bool m_rotationAxesVisible;
@@ -82,6 +87,7 @@ private:
 	bool m_statusBarVisible;
 	bool m_animControlVisible;
 	bool m_animControlFloating;
+	bool m_hiddenDemoModeActivated;
 };
 
 #endif // PULSATINGSCIENCE_H
-- 
GitLab