diff options
Diffstat (limited to 'kmymoney2/widgets/kmymoneybriefschedule.cpp')
-rw-r--r-- | kmymoney2/widgets/kmymoneybriefschedule.cpp | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/kmymoney2/widgets/kmymoneybriefschedule.cpp b/kmymoney2/widgets/kmymoneybriefschedule.cpp new file mode 100644 index 0000000..82776af --- /dev/null +++ b/kmymoney2/widgets/kmymoneybriefschedule.cpp @@ -0,0 +1,191 @@ +/*************************************************************************** + kmymoneybriefschedule.cpp - description + ------------------- + begin : Sun Jul 6 2003 + copyright : (C) 2000-2003 by Michael Edwardes + email : [email protected] + Javier Campos Morales <[email protected]> + Felix Rodriguez <[email protected]> + John C <[email protected]> + Thomas Baumgart <[email protected]> + Kevin Tambascio <[email protected]> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +// ---------------------------------------------------------------------------- +// QT Includes + +#include <qlabel.h> +#include <qlineedit.h> +#include <qtextedit.h> +#include <qtoolbutton.h> + +// ---------------------------------------------------------------------------- +// KDE Includes + +#include <kglobal.h> +#include <klocale.h> +#include <kiconloader.h> +#include <kpushbutton.h> + +// ---------------------------------------------------------------------------- +// Project Includes + +#include <kmymoney/mymoneyscheduled.h> +#include "kmymoneybriefschedule.h" +#include "../kmymoneyutils.h" + +KMyMoneyBriefSchedule::KMyMoneyBriefSchedule(QWidget *parent, const char *name ) + : kScheduleBriefWidget(parent,name, WStyle_Customize | WStyle_NoBorder) +{ + KIconLoader *ic = KGlobal::iconLoader(); + m_nextButton->setPixmap(BarIcon(QString::fromLatin1("1rightarrow"))); + m_prevButton->setPixmap(BarIcon(QString::fromLatin1("1leftarrow"))); + + connect(m_prevButton, SIGNAL(clicked()), this, SLOT(slotPrevClicked())); + connect(m_nextButton, SIGNAL(clicked()), this, SLOT(slotNextClicked())); + connect(m_closeButton, SIGNAL(clicked()), this, SLOT(hide())); + connect(m_skipButton, SIGNAL(clicked()), this, SLOT(slotSkipClicked())); + connect(m_buttonEnter, SIGNAL(clicked()), this, SLOT(slotEnterClicked())); + + KGuiItem skipGuiItem( i18n("&Skip"), + QIconSet(ic->loadIcon("player_fwd", KIcon::Small, KIcon::SizeSmall)), + i18n("Skip this transaction"), + i18n("Use this button to skip this transaction")); + m_skipButton->setGuiItem(skipGuiItem); + + KGuiItem enterGuiItem( i18n("&Enter"), + QIconSet(ic->loadIcon("key_enter", KIcon::Small, KIcon::SizeSmall)), + i18n("Record this transaction into the register"), + i18n("Use this button to record this transaction")); + m_buttonEnter->setGuiItem(enterGuiItem); +} + +KMyMoneyBriefSchedule::~KMyMoneyBriefSchedule() +{ +} + +void KMyMoneyBriefSchedule::setSchedules(QValueList<MyMoneySchedule> list, const QDate& date) +{ + m_scheduleList = list; + m_date = date; + + m_index = 0; + if (list.count() >= 1) + { + loadSchedule(); + } +} + +void KMyMoneyBriefSchedule::loadSchedule() +{ + try + { + if (m_index < m_scheduleList.count()) + { + MyMoneySchedule sched = m_scheduleList[m_index]; + + m_indexLabel->setText(i18n("%1 of %2") + .arg(QString::number(m_index+1)) + .arg(QString::number(m_scheduleList.count()))); + m_name->setText(sched.name()); + m_type->setText(KMyMoneyUtils::scheduleTypeToString(sched.type())); + m_account->setText(sched.account().name()); + QString text; + MyMoneyMoney amount = sched.transaction().splitByAccount(sched.account().id()).value(); + amount = amount.abs(); + + if (sched.willEnd()) + { + int transactions = sched.paymentDates(m_date, sched.endDate()).count()-1; + text = i18n("Payment on %1 for %2 with %3 transactions remaining occuring %4.") + .arg(KGlobal::locale()->formatDate(m_date, true)) + .arg(amount.formatMoney(sched.account().fraction())) + .arg(QString::number(transactions)) + .arg(i18n(sched.occurenceToString())); + } else { + text = i18n("Payment on %1 for %2 occuring %4.") + .arg(KGlobal::locale()->formatDate(m_date, true)) + .arg(amount.formatMoney(sched.account().fraction())) + .arg(i18n(sched.occurenceToString())); + } + + if (m_date < QDate::currentDate()) + { + if (sched.isOverdue()) + { + QDate startD = (sched.lastPayment().isValid()) ? + sched.lastPayment() : + sched.startDate(); + + if (m_date.isValid()) + startD = m_date; + + int days = startD.daysTo(QDate::currentDate()); + int transactions = sched.paymentDates(startD, QDate::currentDate()).count(); + + text += "<br><font color=red>"; + text += i18n("%1 days overdue (%2 occurences).") + .arg(QString::number(days)) + .arg(QString::number(transactions)); + text += "</color>"; + } + } + + m_details->setText(text); + + m_prevButton->setEnabled(true); + m_nextButton->setEnabled(true); + m_skipButton->setEnabled(sched.occurencePeriod() != MyMoneySchedule::OCCUR_ONCE); + + if (m_index == 0) + m_prevButton->setEnabled(false); + if (m_index == (m_scheduleList.count()-1)) + m_nextButton->setEnabled(false); + } + } + catch (MyMoneyException *e) + { + delete e; + } +} + +void KMyMoneyBriefSchedule::slotPrevClicked() +{ + if (m_index >= 1) + { + --m_index; + loadSchedule(); + } +} + +void KMyMoneyBriefSchedule::slotNextClicked() +{ + if (m_index < (m_scheduleList.count()-1)) + { + m_index++; + loadSchedule(); + } +} + +void KMyMoneyBriefSchedule::slotEnterClicked() +{ + hide(); + emit enterClicked(m_scheduleList[m_index], m_date); +} + +void KMyMoneyBriefSchedule::slotSkipClicked() +{ + hide(); + emit skipClicked(m_scheduleList[m_index], m_date); +} + +#include "kmymoneybriefschedule.moc" |