diff options
Diffstat (limited to 'src/commands/modifyloans.cpp')
| -rw-r--r-- | src/commands/modifyloans.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/commands/modifyloans.cpp b/src/commands/modifyloans.cpp new file mode 100644 index 0000000..f8976e4 --- /dev/null +++ b/src/commands/modifyloans.cpp @@ -0,0 +1,76 @@ +/*************************************************************************** + 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 "modifyloans.h" +#include "../document.h" +#include "../entry.h" +#include "../controller.h" +#include "../calendarhandler.h" + +#include <klocale.h> + +using Tellico::Command::ModifyLoans; + +ModifyLoans::ModifyLoans(Data::LoanPtr oldLoan_, Data::LoanPtr newLoan_, bool addToCalendar_) + : KCommand() + , m_oldLoan(oldLoan_) + , m_newLoan(newLoan_) + , m_addToCalendar(addToCalendar_) +{ +} + +void ModifyLoans::execute() { + if(!m_oldLoan || !m_newLoan) { + return; + } + + Data::BorrowerPtr b = m_oldLoan->borrower(); + b->removeLoan(m_oldLoan); + b->addLoan(m_newLoan); + Controller::self()->modifiedBorrower(b); + + if(m_addToCalendar && !m_oldLoan->inCalendar()) { + Data::LoanVec loans; + loans.append(m_newLoan); + CalendarHandler::addLoans(loans); + } else if(!m_addToCalendar && m_oldLoan->inCalendar()) { + Data::LoanVec loans; + loans.append(m_newLoan); // CalendarHandler checks via uid + CalendarHandler::removeLoans(loans); + } +} + +void ModifyLoans::unexecute() { + if(!m_oldLoan || !m_newLoan) { + return; + } + + Data::BorrowerPtr b = m_oldLoan->borrower(); + b->removeLoan(m_newLoan); + b->addLoan(m_oldLoan); + Controller::self()->modifiedBorrower(b); + + if(m_addToCalendar && !m_oldLoan->inCalendar()) { + Data::LoanVec loans; + loans.append(m_newLoan); + CalendarHandler::removeLoans(loans); + } else if(!m_addToCalendar && m_oldLoan->inCalendar()) { + Data::LoanVec loans; + loans.append(m_oldLoan); + CalendarHandler::addLoans(loans); + } +} + +QString ModifyLoans::name() const { + return i18n("Modify Loan"); +} |
