/*************************************************************************** copyright : (C) 2005-2006 by Robby Stephenson email : robby@periapsis.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of version 2 of the GNU General Public License as * * published by the Free Software Foundation; * * * ***************************************************************************/ #include "actionmanager.h" #include "lyxpipe.h" #include "clipboard.h" #include "openoffice.h" #include "../entry.h" #include "../tellico_debug.h" using Tellico::Cite::ActionManager; ActionManager* ActionManager::self() { static ActionManager self; return &self; } ActionManager::ActionManager() : m_action(0) { } ActionManager::~ActionManager() { delete m_action; } bool ActionManager::connect(CiteAction action_) { if(m_action && m_action->type() == action_) { return m_action->connect(); } else if(m_action) { delete m_action; m_action = 0; } switch(action_) { case Cite::CiteClipboard: m_action = new Clipboard(); break; case Cite::CiteLyxpipe: m_action = new Lyxpipe(); break; case Cite::CiteOpenOffice: m_action = new OpenOffice(); break; } return m_action ? m_action->connect() : false; } bool ActionManager::cite(CiteAction action_, Data::EntryVec entries_) { if(entries_.isEmpty()) { myDebug() << "ActionManager::cite() - no entries to cite" << endl; return false; } if(m_action && m_action->type() != action_) { delete m_action; m_action = 0; } if(!m_action && !connect(action_)) { myDebug() << "ActionManager::cite() - unable to connect" << endl; return false; } if(!m_action) { myDebug() << "ActionManager::cite() - no action found" << endl; return false; } return m_action->cite(entries_); } bool ActionManager::isEnabled(CiteAction action_) { if(action_ == CiteOpenOffice) { return OpenOffice::hasLibrary(); } return true; }