Commit 016c25a5 authored by Michael Pyne's avatar Michael Pyne

Remove K3B exporter for now rather than porting it.

parent 094ed868
......@@ -91,7 +91,6 @@ set(juk_SRCS ${tunepimp_SRCS}
webimagefetcher.cpp
historyplaylist.cpp
juk.cpp
k3bexporter.cpp
keydialog.cpp
lyricswidget.cpp
main.cpp
......@@ -105,7 +104,6 @@ set(juk_SRCS ${tunepimp_SRCS}
playlist.cpp
playlistbox.cpp
playlistcollection.cpp
playlistexporter.cpp
playlistinterface.cpp
playlistitem.cpp
playlistsearch.cpp
......
/**
* Copyright (C) 2004 Michael Pyne <mpyne@kde.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.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "k3bexporter.h"
#include <kprocess.h>
#include <kmessagebox.h>
#include <kurl.h>
#include <klocale.h>
#include <kaction.h>
#include <kactioncollection.h>
#include <kstandarddirs.h>
#include <kicon.h>
#include <kiconloader.h>
#include <kapplication.h>
#include <QMap>
#include "playlistitem.h"
#include "playlist.h"
#include "playlistbox.h"
#include "actioncollection.h"
using ActionCollection::actions;
// static member variable definition
PlaylistAction *K3bExporter::m_action = 0;
// Special KAction subclass used to automatically call a slot when activated,
// depending on the visible playlist at the time. In other words, use *one*
// instance of this action for many playlists.
//
// This is used to handle some actions in the Playlist context menu.
PlaylistAction::PlaylistAction(const QString &userText,
const QIcon &pix,
const char *slot,
const KShortcut &cut) :
KAction(userText, actions()),
m_slot(slot)
{
setShortcut(cut);
QAction::setIcon(pix);
connect(this, SIGNAL(triggered()), this, SLOT(slotActivated()));
}
/**
* Defines a QObject to call (using the m_slot SLOT) when an action is
* emitted from a Playlist.
*/
void PlaylistAction::addCallMapping(const Playlist *p, QObject *obj)
{
m_playlistRecipient[p] = obj;
}
void PlaylistAction::slotActivated()
{
// Determine current playlist, and call its slot.
Playlist *p = PlaylistCollection::instance()->visiblePlaylist();
if(!p)
return;
// Make sure we're supposed to notify someone about this playlist.
QObject *recipient = m_playlistRecipient[p];
if(!recipient)
return;
// Invoke the slot using some trickery.
recipient->metaObject()->invokeMethod(recipient, m_slot);
}
K3bExporter::K3bExporter(Playlist *parent) : PlaylistExporter(parent), m_parent(parent)
{
}
KAction *K3bExporter::action()
{
if(!m_action && !KStandardDirs::findExe("k3b").isNull()) {
m_action = new PlaylistAction(
i18n("Add Selected Items to Audio or Data CD"),
KIcon( QLatin1String( "k3b" )),
"slotExport"
);
m_action->setShortcutConfigurable(false);
}
// Tell the action to let us know when it is activated when
// m_parent is the visible playlist. This allows us to reuse the
// action to avoid duplicate entries in KActionCollection.
if(m_action)
m_action->addCallMapping(m_parent, this);
return m_action;
}
void K3bExporter::exportPlaylistItems(const PlaylistItemList &items)
{
if(items.empty())
return;
exportViaCmdLine(items);
}
void K3bExporter::slotExport()
{
if(m_parent)
exportPlaylistItems(m_parent->selectedItems());
}
void K3bExporter::exportViaCmdLine(const PlaylistItemList &items)
{
K3bOpenMode mode = openMode();
QByteArray cmdOption;
switch(mode) {
case AudioCD:
cmdOption = "--audiocd";
break;
case DataCD:
cmdOption = "--data";
break;
case Abort:
return;
}
KProcess process;
process << "k3b";
process << cmdOption;
PlaylistItemList::ConstIterator it;
for(it = items.begin(); it != items.end(); ++it)
process << (*it)->file().absFilePath();
if(!process.startDetached())
KMessageBox::error(m_parent, i18n("Unable to start K3b."));
}
K3bExporter::K3bOpenMode K3bExporter::openMode()
{
int reply = KMessageBox::questionYesNoCancel(
m_parent,
i18n("Create an audio mode CD suitable for CD players, or a data "
"mode CD suitable for computers and other digital music "
"players?"),
i18n("Create K3b Project"),
KGuiItem(i18n("Audio Mode")),
KGuiItem(i18n("Data Mode"))
);
switch(reply) {
case KMessageBox::Cancel:
return Abort;
case KMessageBox::No:
return DataCD;
case KMessageBox::Yes:
return AudioCD;
}
return Abort;
}
K3bPlaylistExporter::K3bPlaylistExporter(PlaylistBox *parent) : K3bExporter(0),
m_playlistBox(parent)
{
}
KAction *K3bPlaylistExporter::action()
{
if(!KStandardDirs::findExe("k3b").isNull()) {
KAction *action = new KAction(KIcon( QLatin1String( "k3b" )),
i18n("Add Playlist to Audio or Data CD"),
actions()
);
connect(action, SIGNAL(triggered(bool)), SLOT(slotExport()));
return action;
}
return 0;
}
void K3bPlaylistExporter::slotExport()
{
if(m_playlistBox) {
setPlaylist(m_playlistBox->visiblePlaylist());
exportPlaylistItems(m_playlistBox->visiblePlaylist()->items());
}
}
// vim: set et sw=4 tw=0 sta:
/**
* Copyright (C) 2004 Michael Pyne <mpyne@kde.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.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef K3BEXPORTER_H
#define K3BEXPORTER_H
#include <kaction.h>
#include <kshortcut.h>
#include "playlistexporter.h"
#include "playlistitem.h"
class PlaylistBox;
class PlaylistAction : public KAction
{
Q_OBJECT
public:
PlaylistAction(const QString &userText, const QIcon &pix, const char *slot, const KShortcut &cut = KShortcut());
typedef QMap<const Playlist *, QObject *> PlaylistRecipientMap;
/**
* Defines a QObject to call (using the m_slot SLOT) when an action is
* emitted from a Playlist.
*/
void addCallMapping(const Playlist *p, QObject *obj);
protected slots:
void slotActivated();
private:
QByteArray m_slot;
PlaylistRecipientMap m_playlistRecipient;
};
/**
* Class that will export the selected items of a playlist to K3b.
*/
class K3bExporter : public PlaylistExporter
{
Q_OBJECT
public:
K3bExporter(Playlist *parent = 0);
/**
* Returns a KAction that can be used to invoke the export.
*
* @return action used to start the export.
*/
virtual KAction *action();
Playlist *playlist() const { return m_parent; }
void setPlaylist(Playlist *playlist) { m_parent = playlist; }
protected:
void exportPlaylistItems(const PlaylistItemList &items);
private slots:
void slotExport();
private:
enum K3bOpenMode { AudioCD, DataCD, Abort };
// Private method declarations
void exportViaCmdLine(const PlaylistItemList &items);
K3bOpenMode openMode();
// Private member variable declarations
Playlist *m_parent;
// Static member used to avoid adding more than one action to KDE's
// action list.
static PlaylistAction *m_action;
};
/**
* Class to export EVERY item in a playlist to K3b. Used with the PlaylistBox
* class to implement context-menus there.
*
* @see PlaylistBox
*/
class K3bPlaylistExporter : public K3bExporter
{
Q_OBJECT
public:
K3bPlaylistExporter(PlaylistBox *parent = 0);
virtual KAction *action();
private slots:
void slotExport();
private:
PlaylistBox *m_playlistBox;
};
#endif /* K3BEXPORTER_H */
// vim: set et sw=4 tw=0 sta:
......@@ -71,7 +71,6 @@
#include "actioncollection.h"
#include "tracksequencemanager.h"
#include "tag.h"
#include "k3bexporter.h"
#include "upcomingplaylist.h"
#include "deletedialog.h"
#include "webimagefetcher.h"
......@@ -2149,11 +2148,6 @@ void Playlist::slotShowRMBMenu(const QPoint &point)
m_rmbMenu->addAction(
SmallIcon("folder-new"), i18n("Create Playlist From Selected Items..."), this, SLOT(slotCreateGroup()));
K3bExporter *exporter = new K3bExporter(this);
KAction *k3bAction = exporter->action();
if(k3bAction)
m_rmbMenu->addAction( k3bAction );
}
// Ignore any columns added by subclasses.
......
......@@ -53,7 +53,6 @@
#include "treeviewitemplaylist.h"
#include "actioncollection.h"
#include "cache.h"
#include "k3bexporter.h"
#include "tracksequencemanager.h"
#include "tagtransactionmanager.h"
#include "playermanager.h"
......@@ -94,9 +93,6 @@ PlaylistBox::PlaylistBox(PlayerManager *player, QWidget *parent, QStackedWidget
m_contextMenu = new KMenu(this);
K3bPlaylistExporter *exporter = new K3bPlaylistExporter(this);
m_k3bAction = exporter->action();
m_contextMenu->addAction( action("file_new") );
m_contextMenu->addAction( action("renamePlaylist") );
m_contextMenu->addAction( action("editSearch") );
......
/**
* Copyright (C) 2004 Michael Pyne <mpyne@kde.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.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
// Just a quick hack to get Q_OBJECT to work in playlistexporter.h --amth
#include "playlistexporter.h"
/**
* Copyright (C) 2004 Michael Pyne <mpyne@kde.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.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PLAYLISTEXPORTER_H
#define PLAYLISTEXPORTER_H
#include <QtCore/QObject>
class KAction;
/**
* Abstract base class to define an interface for classes that export
* PlaylistItem data.
*
* @author Michael Pyne <mpyne@kde.org>
* @see K3bExporter
*/
class PlaylistExporter : public QObject
{
Q_OBJECT
public:
PlaylistExporter(QObject *parent = 0) : QObject(parent) { }
virtual ~PlaylistExporter() { }
/**
* Returns a KAction that can be used to invoke the export.
* Returns 0 if it is not possible.
*
* @return pointer to a KAction that can invoke the export, or 0 on
* failure.
*/
virtual KAction *action() = 0;
};
#endif /* PLAYLISTEXPORTER_H */
// vim: set et sw=4 tw=0 sta:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment