////////////////////////////////////////////////////////////////////////////// // // PLUGIN_CDARCHIVING.CPP // // Copyright (C) 2003-2004 Gilles Caulier // // 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, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA. // ////////////////////////////////////////////////////////////////////////////// // KDE includes #include #include #include #include #include #include #include #include #include // LibKipi includes #include // Local includes #include "actions.h" #include "cdarchiving.h" #include "plugin_cdarchiving.h" typedef KGenericFactory Factory; K_EXPORT_COMPONENT_FACTORY( kipiplugin_cdarchiving, Factory("kipiplugin_cdarchiving")) // ----------------------------------------------------------- Plugin_CDArchiving::Plugin_CDArchiving(TQObject *parent, const char*, const TQStringList&) : KIPI::Plugin( Factory::instance(), parent, "CDArchiving") { kdDebug( 51001 ) << "Plugin_CDArchiving plugin loaded" << endl; } void Plugin_CDArchiving::setup( TQWidget* widget ) { KIPI::Plugin::setup( widget ); m_action_cdarchiving = new TDEAction (i18n("Archive to CD/DVD..."), // Menu message. "cd", // Menu icon. 0, this, TQT_SLOT(slotActivate()), actionCollection(), "cd_archiving"); addAction( m_action_cdarchiving ); m_cdarchiving = 0; } ///////////////////////////////////////////////////////////////////////////////////////////////////// Plugin_CDArchiving::~Plugin_CDArchiving() { // No need to delete m_cdarchiving as its a TQObject child of this // and will be deleted automatically } ///////////////////////////////////////////////////////////////////////////////////////////////////// void Plugin_CDArchiving::slotActivate() { m_progressDlg = 0; KIPI::Interface* interface = dynamic_cast< KIPI::Interface* >( parent() ); if ( !interface ) { kdError( 51000 ) << "Kipi interface is null!" << endl; return; } m_cdarchiving = new KIPICDArchivingPlugin::CDArchiving( interface, this, m_action_cdarchiving); if ( m_cdarchiving->showDialog() ) { m_cdarchiving->prepare(); m_cdarchiving->run(); } } ///////////////////////////////////////////////////////////////////////////////////////////////////// void Plugin_CDArchiving::slotCancel() { m_cdarchiving->stop(); m_cdarchiving->removeTmpFiles(); } ///////////////////////////////////////////////////////////////////////////////////////////////////// void Plugin_CDArchiving::customEvent(TQCustomEvent *event) { if (!event) return; if (!m_progressDlg) { m_progressDlg = new KIPI::BatchProgressDialog(TQT_TQWIDGET(kapp->activeWindow()), i18n("Archive to CD/DVD")); connect(m_progressDlg, TQT_SIGNAL(cancelClicked()), this, TQT_SLOT(slotCancel())); m_current = 0; m_progressDlg->show(); } KIPICDArchivingPlugin::EventData *d = (KIPICDArchivingPlugin::EventData*) event->data(); if (!d) return; if (d->starting) { TQString text; switch (d->action) { case(KIPICDArchivingPlugin::Initialize): { text = i18n("Initialising..."); m_total = d->total; break; } case(KIPICDArchivingPlugin::BuildHTMLiface): { text = i18n("Making main HTML interface..."); break; } case(KIPICDArchivingPlugin::BuildAlbumHTMLPage): { text = i18n("Making HTML pages for Album '%1'...").arg(d->albumName); break; } case(KIPICDArchivingPlugin::BuildAutoRuniface): { text = i18n("Making AutoRun interface..."); break; } case(KIPICDArchivingPlugin::ResizeImages): { text = i18n("Creating thumbnail for '%1'...").arg(d->fileName); break; } case(KIPICDArchivingPlugin::BuildK3bProject): { text = i18n("Making K3b project..."); break; } case(KIPICDArchivingPlugin::Progress): { text = d->message; break; } default: { kdWarning( 51000 ) << "Plugin_CDArchiving: Unknown 'Starting' event: " << d->action << endl; } } m_progressDlg->addedAction(text, KIPI::StartingMessage); } else { TQString text; if (d->success) { switch (d->action) { case(KIPICDArchivingPlugin::BuildHTMLiface): { ++m_current; text = i18n("Main HTML interface creation completed."); break; } case(KIPICDArchivingPlugin::BuildAlbumHTMLPage): { ++m_current; text = i18n("HTML page creation for Album '%1' completed.").arg(d->albumName); break; } case(KIPICDArchivingPlugin::ResizeImages): { ++m_current; text = i18n("Creating thumbnail for '%1' done.").arg(d->fileName); break; } case(KIPICDArchivingPlugin::BuildAutoRuniface): { ++m_current; text = i18n("AutoRun interface creation completed."); break; } case(KIPICDArchivingPlugin::BuildK3bProject): { ++m_current; text = i18n("K3b project creation completed."); break; } default: { kdWarning( 51000 ) << "Plugin_CDArchiving: Unknown 'Success' event: " << d->action << endl; } } m_progressDlg->addedAction(text, KIPI::SuccessMessage); } else { switch (d->action) { case(KIPICDArchivingPlugin::ResizeImages): { text = i18n("Failed to create thumbnail for '%1'").arg(d->fileName); m_progressDlg->addedAction(text, KIPI::WarningMessage); m_progressDlg->setProgress(m_current, m_total); break; } case(KIPICDArchivingPlugin::BuildHTMLiface): { ++m_current; text = i18n("Failed to create HTML interface: %1") .arg(d->message); m_progressDlg->addedAction(text, KIPI::ErrorMessage); m_progressDlg->setProgress(m_current, m_total); slotCancel(); return; break; } case(KIPICDArchivingPlugin::BuildAlbumHTMLPage): { text = i18n("Failed to create HTML pages for Album '%1'") .arg(d->albumName); m_progressDlg->addedAction(text, KIPI::ErrorMessage); m_progressDlg->setProgress(m_current, m_total); slotCancel(); return; break; } case(KIPICDArchivingPlugin::BuildK3bProject): { ++m_current; text = i18n("Failed to create K3b project."); m_progressDlg->addedAction(text, KIPI::ErrorMessage); m_progressDlg->setProgress(m_current, m_total); slotCancel(); return; break; } case(KIPICDArchivingPlugin::Error): { text = d->message; m_progressDlg->addedAction(text, KIPI::ErrorMessage); m_progressDlg->setProgress(m_current, m_total); slotCancel(); return; break; } default: { kdWarning( 51000 ) << "Plugin_CDArchiving: Unknown 'Failed' event: " << d->action << endl; } } } m_progressDlg->setProgress(m_current, m_total); if ( d->action == KIPICDArchivingPlugin::BuildK3bProject ) { m_current = 0; #if TDE_VERSION >= 0x30200 m_progressDlg->setButtonCancel( KStdGuiItem::close() ); #else m_progressDlg->setButtonCancelText( i18n("&Close") ); #endif disconnect(m_progressDlg, TQT_SIGNAL(cancelClicked()), this, TQT_SLOT(slotCancel())); // Invoke K3b program. m_progressDlg->addedAction(i18n("Starting K3b program..."), KIPI::StartingMessage); m_cdarchiving->invokeK3b(); } } kapp->processEvents(); delete d; } ///////////////////////////////////////////////////////////////////////////////////////////////////// KIPI::Category Plugin_CDArchiving::category( TDEAction* action ) const { if ( action == m_action_cdarchiving ) return KIPI::EXPORTPLUGIN; kdWarning( 51000 ) << "Unrecognized action for plugin category identification" << endl; return KIPI::EXPORTPLUGIN; // no warning from compiler, please } #include "plugin_cdarchiving.moc"