diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 19:17:32 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 19:17:32 +0000 |
commit | e38d2351b83fa65c66ccde443777647ef5cb6cff (patch) | |
tree | 1897fc20e9f73a81c520a5b9f76f8ed042124883 /src/commands/filtercommand.cpp | |
download | tellico-e38d2351b83fa65c66ccde443777647ef5cb6cff.tar.gz tellico-e38d2351b83fa65c66ccde443777647ef5cb6cff.zip |
Added KDE3 version of Tellico
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/tellico@1097620 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/commands/filtercommand.cpp')
-rw-r--r-- | src/commands/filtercommand.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/commands/filtercommand.cpp b/src/commands/filtercommand.cpp new file mode 100644 index 0000000..ba205e5 --- /dev/null +++ b/src/commands/filtercommand.cpp @@ -0,0 +1,106 @@ +/*************************************************************************** + 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 "filtercommand.h" +#include "../document.h" +#include "../collection.h" +#include "../controller.h" +#include "../tellico_debug.h" + +#include <klocale.h> + +using Tellico::Command::FilterCommand; + +FilterCommand::FilterCommand(Mode mode_, FilterPtr activeFilter_, FilterPtr oldFilter_/*=0*/) + : KCommand() + , m_mode(mode_) + , m_activeFilter(activeFilter_) + , m_oldFilter(oldFilter_) +{ + if(!m_activeFilter) { + myDebug() << "FilterCommand() - null active filter pointer" << endl; + } +#ifndef NDEBUG +// just some sanity checking + if(m_mode == FilterAdd && m_oldFilter != 0) { + myDebug() << "FilterCommand() - adding field, but pointers are wrong" << endl; + } else if(m_mode == FilterModify && m_oldFilter == 0) { + myDebug() << "FilterCommand() - modifying field, but pointers are wrong" << endl; + } else if(m_mode == FilterRemove && m_oldFilter != 0) { + myDebug() << "FilterCommand() - removing field, but pointers are wrong" << endl; + } +#endif +} + +void FilterCommand::execute() { + if(!m_activeFilter) { + return; + } + + switch(m_mode) { + case FilterAdd: + Data::Document::self()->collection()->addFilter(m_activeFilter); + Controller::self()->addedFilter(m_activeFilter); + break; + + case FilterModify: + Data::Document::self()->collection()->removeFilter(m_oldFilter); + Controller::self()->removedFilter(m_oldFilter); + Data::Document::self()->collection()->addFilter(m_activeFilter); + Controller::self()->addedFilter(m_activeFilter); + break; + + case FilterRemove: + Data::Document::self()->collection()->removeFilter(m_activeFilter); + Controller::self()->removedFilter(m_activeFilter); + break; + } +} + +void FilterCommand::unexecute() { + if(!m_activeFilter) { + return; + } + + switch(m_mode) { + case FilterAdd: + Data::Document::self()->collection()->removeFilter(m_activeFilter); + Controller::self()->removedFilter(m_activeFilter); + break; + + case FilterModify: + Data::Document::self()->collection()->removeFilter(m_activeFilter); + Controller::self()->removedFilter(m_activeFilter); + Data::Document::self()->collection()->addFilter(m_oldFilter); + Controller::self()->addedFilter(m_oldFilter); + break; + + case FilterRemove: + Data::Document::self()->collection()->addFilter(m_activeFilter); + Controller::self()->addedFilter(m_activeFilter); + break; + } +} + +QString FilterCommand::name() const { + switch(m_mode) { + case FilterAdd: + return i18n("Add Filter"); + case FilterModify: + return i18n("Modify Filter"); + case FilterRemove: + return i18n("Delete Filter"); + } + // hush warnings + return QString::null; +} |