summaryrefslogtreecommitdiffstats
path: root/src/gui/dialogs/AudioManagerDialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/dialogs/AudioManagerDialog.h')
-rw-r--r--src/gui/dialogs/AudioManagerDialog.h206
1 files changed, 206 insertions, 0 deletions
diff --git a/src/gui/dialogs/AudioManagerDialog.h b/src/gui/dialogs/AudioManagerDialog.h
new file mode 100644
index 0000000..728b700
--- /dev/null
+++ b/src/gui/dialogs/AudioManagerDialog.h
@@ -0,0 +1,206 @@
+
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
+
+/*
+ Rosegarden
+ A MIDI and audio sequencer and musical notation editor.
+
+ This program is Copyright 2000-2008
+ Guillaume Laurent <glaurent@telegraph-road.org>,
+ Chris Cannam <cannam@all-day-breakfast.com>,
+ Richard Bown <richard.bown@ferventsoftware.com>
+
+ The moral rights of Guillaume Laurent, Chris Cannam, and Richard
+ Bown to claim authorship of this work have been asserted.
+
+ Other copyrights also apply to some parts of this work. Please
+ see the AUTHORS file and individual file headers for details.
+
+ 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. See the file
+ COPYING included with this distribution for more information.
+*/
+
+#ifndef _RG_AUDIOMANAGERDIALOG_H_
+#define _RG_AUDIOMANAGERDIALOG_H_
+
+#include "sound/AudioFile.h"
+#include <kmainwindow.h>
+#include "document/ConfigGroups.h"
+
+
+class QWidget;
+class QTimer;
+class QString;
+class QListViewItem;
+class QLabel;
+class QDropEvent;
+class QCloseEvent;
+class QAccel;
+class KURL;
+class KListView;
+class KCommand;
+
+
+namespace Rosegarden
+{
+
+class SegmentSelection;
+class Segment;
+class RosegardenGUIDoc;
+class RealTime;
+class MultiViewCommandHistory;
+class AudioPlayingDialog;
+class AudioFile;
+
+
+class AudioManagerDialog : public KMainWindow
+{
+ Q_OBJECT
+
+public:
+ AudioManagerDialog(QWidget *parent,
+ RosegardenGUIDoc *doc);
+ ~AudioManagerDialog();
+
+ // Populate the file list from the AudioFileManager
+ //
+
+ // Return a pointer to the currently selected AudioFile -
+ // returns 0 if nothing is selected
+ //
+ AudioFile* getCurrentSelection();
+
+ // Scroll and expand to show this selected item
+ //
+ void setSelected(AudioFileId id,
+ const Segment *segment,
+ bool propagate); // if true then we tell the segmentcanvas
+
+ MultiViewCommandHistory *getCommandHistory();
+
+ // Pop down playing dialog if it's currently up
+ //
+ void closePlayingDialog(AudioFileId id);
+
+ // Can we playback audio currently?
+ //
+ void setAudioSubsystemStatus(bool ok);
+
+ // Return the accelerator object
+ //
+ QAccel* getAccelerators() { return m_accelerators; }
+
+ // Add a new file to the audio file manager
+ //
+ bool addAudioFile(const QString &filePath);
+
+
+public slots:
+ void slotAdd();
+ void slotPlayPreview();
+ void slotRename();
+ void slotInsert();
+ void slotRemove();
+ void slotRemoveAll();
+ void slotRemoveAllUnused();
+ void slotDeleteUnused();
+ void slotExportAudio();
+
+ // get selection
+ void slotSelectionChanged(QListViewItem *);
+
+ // Repopulate
+ //
+ void slotPopulateFileList();
+
+ // Commands
+ //
+ void slotCommandExecuted(KCommand *);
+
+ /**
+ * Accept a list of Segments and highlight accordingly
+ * Used to reflect a selection on the main view
+ * (when the user selects an audio track, the corresponding item
+ * in the audio manager should be selected in turn)
+ *
+ * We check for embedded audio segments and if we find exactly one
+ * we highlight it. If we don't we unselect everything.
+ *
+ */
+ void slotSegmentSelection(const SegmentSelection &);
+
+ /**
+ * Cancel the currently playing audio file
+ */
+ void slotCancelPlayingAudioFile();
+
+ void slotClose();
+
+ /**
+ * Turn a MIDI segment into a set of audio segments triggered
+ * by the MIDI Note Ons
+ */
+ void slotDistributeOnMidiSegment();
+
+signals:
+
+ // Control signals so we can tell the sequencer about our changes
+ // or actions.
+ //
+ void addAudioFile(AudioFileId);
+ void deleteAudioFile(AudioFileId);
+ void playAudioFile(AudioFileId,
+ const RealTime &,
+ const RealTime &);
+ void cancelPlayingAudioFile(AudioFileId);
+ void deleteAllAudioFiles();
+
+ // We've selected a segment here, make the canvas select it too
+ //
+ void segmentsSelected(const SegmentSelection&);
+ void deleteSegments(const SegmentSelection&);
+ void insertAudioSegment(AudioFileId,
+ const RealTime &,
+ const RealTime &);
+
+ void closing();
+protected slots:
+ void slotDropped(QDropEvent*, QListViewItem*);
+ void slotCancelPlayingAudio();
+
+protected:
+ bool addFile(const KURL& kurl);
+ bool isSelectedTrackAudio();
+ void selectFileListItemNoSignal(QListViewItem*);
+ void updateActionState(bool haveSelection);
+
+ virtual void closeEvent(QCloseEvent *);
+
+ //--------------- Data members ---------------------------------
+
+ KListView *m_fileList;
+ QLabel *m_wrongSampleRates;
+ RosegardenGUIDoc *m_doc;
+
+ QAccel *m_accelerators;
+
+ AudioFileId m_playingAudioFile;
+ AudioPlayingDialog *m_audioPlayingDialog;
+ QTimer *m_playTimer;
+
+ static const char* const m_listViewLayoutName;
+ static const int m_maxPreviewWidth;
+ static const int m_previewHeight;
+
+ bool m_audiblePreview;
+ int m_sampleRate;
+};
+
+
+
+}
+
+#endif