diff framework/MainWindowBase.h @ 482:01669adb0956 tony-2.0-integration

Merge through to branch for Tony 2.0
author Chris Cannam
date Thu, 20 Aug 2015 14:54:21 +0100
parents 411e019474e5
children 493f2af85497
line wrap: on
line diff
--- a/framework/MainWindowBase.h	Mon Apr 13 13:52:05 2015 +0100
+++ b/framework/MainWindowBase.h	Thu Aug 20 14:54:21 2015 +0100
@@ -46,7 +46,7 @@
 class WaveformLayer;
 class WaveFileModel;
 class AudioCallbackPlaySource;
-class AudioCallbackPlayTarget;
+class AudioRecordTarget;
 class CommandHistory;
 class QMenu;
 class AudioDial;
@@ -63,6 +63,11 @@
 class QSignalMapper;
 class QShortcut;
 
+namespace breakfastquay {
+class SystemPlaybackTarget;
+class SystemAudioIO;
+}
+
 /**
  * The base class for the SV main window.  This includes everything to
  * do with general document and pane stack management, but nothing
@@ -77,7 +82,15 @@
     Q_OBJECT
 
 public:
-    MainWindowBase(bool withAudioOutput, bool withMIDIInput);
+    enum SoundOption {
+        WithAudioOutput = 0x01,
+        WithAudioInput  = 0x02,
+        WithMIDIInput   = 0x04,
+        WithEverything  = 0xff
+    };
+    typedef int SoundOptions;
+    
+    MainWindowBase(SoundOptions options = WithEverything);
     virtual ~MainWindowBase();
     
     enum AudioFileOpenMode {
@@ -146,6 +159,7 @@
     void canZoom(bool);
     void canScroll(bool);
     void canPlay(bool);
+    void canRecord(bool);
     void canFfwd(bool);
     void canRewind(bool);
     void canPlaySelection(bool);
@@ -159,6 +173,7 @@
     void canSave(bool);
     void canSaveAs(bool);
     void hideSplash();
+    void hideSplash(QWidget *);
     void sessionLoaded();
     void audioFileLoaded();
     void replacedDocument();
@@ -195,6 +210,7 @@
     virtual void ffwdEnd();
     virtual void rewind();
     virtual void rewindStart();
+    virtual void record();
     virtual void stop();
 
     virtual void ffwdSimilar();
@@ -288,6 +304,8 @@
 
     virtual void closeSession() = 0;
 
+    virtual void emitHideSplash();
+
     virtual void newerVersionAvailable(QString) { }
 
     virtual void menuActionMapperInvoked(QObject *);
@@ -301,9 +319,12 @@
     ViewManager             *m_viewManager;
     Layer                   *m_timeRulerLayer;
 
-    bool                     m_audioOutput;
+    SoundOptions             m_soundOptions;
+
     AudioCallbackPlaySource *m_playSource;
-    AudioCallbackPlayTarget *m_playTarget;
+    AudioRecordTarget       *m_recordTarget;
+    breakfastquay::SystemPlaybackTarget *m_playTarget; // only one of this...
+    breakfastquay::SystemAudioIO *m_audioIO;           // ... and this exists
 
     class OSCQueueStarter : public QThread
     {
@@ -418,7 +439,7 @@
     virtual QString getDefaultSessionTemplate() const;
     virtual void setDefaultSessionTemplate(QString);
 
-    virtual void createPlayTarget();
+    virtual void createAudioIO();
     virtual void openHelpUrl(QString url);
 
     virtual void setupMenus() = 0;