summaryrefslogtreecommitdiffstats
path: root/src/projects/k3bmixedview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/projects/k3bmixedview.cpp')
-rw-r--r--src/projects/k3bmixedview.cpp155
1 files changed, 155 insertions, 0 deletions
diff --git a/src/projects/k3bmixedview.cpp b/src/projects/k3bmixedview.cpp
new file mode 100644
index 0000000..68900c7
--- /dev/null
+++ b/src/projects/k3bmixedview.cpp
@@ -0,0 +1,155 @@
+/*
+ *
+ * $Id: k3bmixedview.cpp 619556 2007-01-03 17:38:12Z trueg $
+ * Copyright (C) 2003 Sebastian Trueg <trueg@k3b.org>
+ *
+ * This file is part of the K3b project.
+ * Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org>
+ *
+ * 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" for the exact licensing terms.
+ */
+
+#include "k3bmixedview.h"
+
+#include "k3bmixeddoc.h"
+#include "k3bmixedburndialog.h"
+#include "k3bmixeddirtreeview.h"
+#include "k3baudiotrackaddingdialog.h"
+#include "k3bdataurladdingdialog.h"
+
+#include <k3baudiotrackplayer.h>
+#include <k3baudiodoc.h>
+#include <k3bdataviewitem.h>
+#include <k3bdatafileview.h>
+#include <k3bdatadoc.h>
+#include <k3baudiotrackview.h>
+#include <k3bfillstatusdisplay.h>
+#include <k3btoolbox.h>
+#include <k3bprojectplugin.h>
+
+#include <qwidgetstack.h>
+#include <qsplitter.h>
+#include <qlayout.h>
+#include <qvaluelist.h>
+
+#include <kdialog.h>
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kdebug.h>
+#include <kmessagebox.h>
+#include <kactionclasses.h>
+
+
+K3bMixedView::K3bMixedView( K3bMixedDoc* doc, QWidget* parent, const char* name )
+ : K3bView( doc, parent, name ), m_doc(doc)
+{
+ QSplitter* splitter = new QSplitter( this );
+ m_mixedDirTreeView = new K3bMixedDirTreeView( this, doc, splitter );
+ m_widgetStack = new QWidgetStack( splitter );
+ m_dataFileView = new K3bDataFileView( this, m_mixedDirTreeView, doc->dataDoc(), m_widgetStack );
+ m_mixedDirTreeView->setFileView( m_dataFileView );
+ m_audioListView = new K3bAudioTrackView( doc->audioDoc(), m_widgetStack );
+
+ setMainWidget( splitter );
+
+ connect( m_mixedDirTreeView, SIGNAL(audioTreeSelected()),
+ this, SLOT(slotAudioTreeSelected()) );
+ connect( m_mixedDirTreeView, SIGNAL(dataTreeSelected()),
+ this, SLOT(slotDataTreeSelected()) );
+
+ m_widgetStack->raiseWidget( m_dataFileView );
+
+ toolBox()->addButton( m_audioListView->player()->action( K3bAudioTrackPlayer::ACTION_PLAY ) );
+ toolBox()->addButton( m_audioListView->player()->action( K3bAudioTrackPlayer::ACTION_PAUSE ) );
+ toolBox()->addButton( m_audioListView->player()->action( K3bAudioTrackPlayer::ACTION_STOP ) );
+ toolBox()->addSpacing();
+ toolBox()->addButton( m_audioListView->player()->action( K3bAudioTrackPlayer::ACTION_PREV ) );
+ toolBox()->addButton( m_audioListView->player()->action( K3bAudioTrackPlayer::ACTION_NEXT ) );
+ toolBox()->addSpacing();
+ toolBox()->addWidgetAction( static_cast<KWidgetAction*>(m_audioListView->player()->action( K3bAudioTrackPlayer::ACTION_SEEK )) );
+ toolBox()->addSeparator();
+
+#ifdef HAVE_MUSICBRAINZ
+ toolBox()->addButton( m_audioListView->actionCollection()->action( "project_audio_musicbrainz" ) );
+ toolBox()->addSeparator();
+#endif
+
+ addPluginButtons( K3bProjectPlugin::MIXED_CD );
+
+ toolBox()->addStretch();
+
+ m_mixedDirTreeView->checkForNewItems();
+ m_dataFileView->checkForNewItems();
+}
+
+
+K3bMixedView::~K3bMixedView()
+{
+}
+
+
+K3bAudioTrackPlayer* K3bMixedView::player() const
+{
+ return m_audioListView->player();
+}
+
+
+void K3bMixedView::slotAudioTreeSelected()
+{
+ m_widgetStack->raiseWidget( m_audioListView );
+}
+
+
+void K3bMixedView::slotDataTreeSelected()
+{
+ m_widgetStack->raiseWidget( m_dataFileView );
+}
+
+
+K3bDirItem* K3bMixedView::currentDir() const
+{
+ if( m_widgetStack->visibleWidget() == m_dataFileView )
+ return m_dataFileView->currentDir();
+ else
+ return 0;
+}
+
+
+void K3bMixedView::slotBurn()
+{
+ if( m_doc->audioDoc()->numOfTracks() == 0 || m_doc->dataDoc()->size() == 0 ) {
+ KMessageBox::information( this, i18n("Please add files and audio titles to your project first."),
+ i18n("No Data to Burn"), QString::null, false );
+ }
+ else {
+ K3bProjectBurnDialog* dlg = newBurnDialog( this );
+ if( dlg ) {
+ dlg->execBurnDialog(true);
+ delete dlg;
+ }
+ else {
+ kdDebug() << "(K3bDoc) Error: no burndialog available." << endl;
+ }
+ }
+}
+
+
+K3bProjectBurnDialog* K3bMixedView::newBurnDialog( QWidget* parent, const char* name )
+{
+ return new K3bMixedBurnDialog( m_doc, parent, name, true );
+}
+
+
+void K3bMixedView::addUrls( const KURL::List& urls )
+{
+ if( m_widgetStack->visibleWidget() == m_dataFileView )
+ K3bDataUrlAddingDialog::addUrls( urls, currentDir() );
+ else
+ K3bAudioTrackAddingDialog::addUrls( urls, m_doc->audioDoc(), 0, 0, 0, this );
+}
+
+#include "k3bmixedview.moc"