summaryrefslogtreecommitdiffstats
path: root/src/commands/modifyloans.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/modifyloans.cpp')
-rw-r--r--src/commands/modifyloans.cpp76
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");
+}