You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmymoney/kmymoney2/wizards/newaccountwizard/knewaccountwizard_p.h

339 lines
9.1 KiB

/***************************************************************************
knewaccountwizard_p.h
-------------------
begin : Tue Sep 25 2007
copyright : (C) 2007 Thomas Baumgart
email : Thomas Baumgart <ipwizard@users.sourceforge.net>
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef KNEWACCOUNTWIZARD_P_H
#define KNEWACCOUNTWIZARD_P_H
// ----------------------------------------------------------------------------
// QT Includes
#include <tqcheckbox.h>
// ----------------------------------------------------------------------------
// KDE Includes
#include <kcombobox.h>
#include <klineedit.h>
#include <klistview.h>
// ----------------------------------------------------------------------------
// Project Includes
#include <kmymoney/kmymoneywizard.h>
#include <kmymoney/kmymoneydateinput.h>
#include <kmymoney/kmymoneycurrencyselector.h>
#include <kmymoney/mymoneyaccount.h>
#include <kmymoney/kmymoneyedit.h>
#include <kmymoney/kmymoneycategory.h>
#include <kmymoney/kmymoneyaccounttreebase.h>
#include "kinstitutionpagedecl.h"
#include "kaccounttypepagedecl.h"
#include "kbrokeragepagedecl.h"
#include "kschedulepagedecl.h"
#include "kgeneralloaninfopagedecl.h"
#include "kloandetailspagedecl.h"
#include "kloanpaymentpagedecl.h"
#include "kloanschedulepagedecl.h"
#include "kloanpayoutpagedecl.h"
#include "khierarchypagedecl.h"
#include "kaccountsummarypagedecl.h"
class Wizard;
class MyMoneyInstitution;
class KMyMoneyAccountTreeItem;
namespace NewAccountWizard {
class InstitutionPage : public KInstitutionPageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
InstitutionPage(Wizard* parent, const char* name = 0);
~InstitutionPage();
KMyMoneyWizardPage* nextPage(void) const;
TQWidget* initialFocusWidget(void) const { return m_institutionComboBox; }
/**
* Returns the information about an institution if entered by
* the user. If the id field is empty, then he did not enter
* such information.
*/
const MyMoneyInstitution& institution(void) const;
private slots:
void slotLoadWidgets(void);
void slotNewInstitution(void);
void slotSelectInstitution(int id);
private:
/// \internal d-pointer class.
class Private;
/// \internal d-pointer instance.
Private* const d;
};
class AccountTypePage : public KAccountTypePageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
AccountTypePage(Wizard* parent, const char* name = 0);
virtual bool isComplete(void) const;
KMyMoneyWizardPage* nextPage(void) const;
TQWidget* initialFocusWidget(void) const { return m_accountName; }
MyMoneyAccount::accountTypeE accountType(void) const;
const MyMoneyAccount& parentAccount(void);
bool allowsParentAccount(void) const;
const MyMoneySecurity& currency(void) const;
void setAccount(const MyMoneyAccount& acc);
private:
void hideShowPages(MyMoneyAccount::accountTypeE i) const;
void priceWarning(bool);
private slots:
void slotLoadWidgets(void);
void slotUpdateType(int i);
void slotUpdateCurrency(void);
void slotUpdateConversionRate(const TQString&);
void slotGetOnlineQuote(void);
void slotPriceWarning(void);
private:
bool m_showPriceWarning;
};
class BrokeragePage : public KBrokeragePageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
BrokeragePage(Wizard* parent, const char* name = 0);
KMyMoneyWizardPage* nextPage(void) const;
void enterPage(void);
TQWidget* initialFocusWidget(void) const { return m_createBrokerageButton; }
private slots:
void slotLoadWidgets(void);
};
class CreditCardSchedulePage : public KSchedulePageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
CreditCardSchedulePage(Wizard* parent, const char* name = 0);
KMyMoneyWizardPage* nextPage(void) const;
virtual bool isComplete(void) const;
void enterPage(void);
TQWidget* initialFocusWidget(void) const { return m_reminderCheckBox; }
private slots:
void slotLoadWidgets(void);
};
class GeneralLoanInfoPage : public KGeneralLoanInfoPageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
GeneralLoanInfoPage(Wizard* parent, const char* name = 0);
KMyMoneyWizardPage* nextPage(void) const;
virtual bool isComplete(void) const;
void enterPage(void);
const MyMoneyAccount& parentAccount(void);
TQWidget* initialFocusWidget(void) const { return m_loanDirection; }
/**
* Returns @p true if the user decided to record all payments, @p false otherwise.
*/
bool recordAllPayments(void) const;
private slots:
void slotLoadWidgets(void);
private:
bool m_firstTime;
};
class LoanDetailsPage : public KLoanDetailsPageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
LoanDetailsPage(Wizard* parent, const char* name = 0);
void enterPage(void);
KMyMoneyWizardPage* nextPage(void) const;
virtual bool isComplete(void) const;
TQWidget* initialFocusWidget(void) const { return m_paymentDue; }
/**
* This method returns the number of payments depending on
* the settings of m_termAmount and m_termUnit widgets
*/
int term(void) const;
private:
/**
* This method is used to update the term widgets
* according to the length of the given @a term.
* The term is also converted into a string and returned.
*/
TQString updateTermWidgets(const long double term);
private:
bool m_needCalculate;
private slots:
void slotValuesChanged(void);
void slotCalculate(void);
};
class LoanPaymentPage : public KLoanPaymentPageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
LoanPaymentPage(Wizard* parent, const char* name = 0);
~LoanPaymentPage();
KMyMoneyWizardPage* nextPage(void) const;
void enterPage(void);
/**
* This method returns the sum of the additional fees
*/
MyMoneyMoney additionalFees(void) const;
/**
* This method returns the base payment, that's principal and interest
*/
MyMoneyMoney basePayment(void) const;
/**
* This method returns the splits that make up the additional fees in @p list.
* @note The splits may contain assigned ids which the caller must remove before
* adding the splits to a MyMoneyTransaction object.
*/
void additionalFeesSplits(TQValueList<MyMoneySplit>& list);
protected slots:
void slotAdditionalFees(void);
protected:
void updateAmounts(void);
private:
/// \internal d-pointer class.
class Private;
/// \internal d-pointer instance.
Private* const d;
};
class LoanSchedulePage : public KLoanSchedulePageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
LoanSchedulePage(Wizard* parent, const char* name = 0);
void enterPage(void);
KMyMoneyWizardPage* nextPage(void) const;
/**
* This method returns the due date of the first payment to be recorded.
*/
TQDate firstPaymentDueDate(void) const;
TQWidget* initialFocusWidget(void) const { return m_interestCategory; }
private slots:
void slotLoadWidgets(void);
void slotCreateCategory(const TQString& name, TQString& id);
};
class LoanPayoutPage : public KLoanPayoutPageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
LoanPayoutPage(Wizard* parent, const char* name = 0);
void enterPage(void);
virtual bool isComplete(void) const;
KMyMoneyWizardPage* nextPage(void) const;
TQWidget* initialFocusWidget(void) const { return m_noPayoutTransaction; }
const TQString& payoutAccountId(void) const;
private slots:
void slotLoadWidgets(void);
void slotCreateAssetAccount(void);
void slotButtonsToggled(void);
};
class HierarchyPage : public KHierarchyPageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
HierarchyPage(Wizard* parent, const char* name = 0);
void enterPage(void);
KMyMoneyWizardPage* nextPage(void) const;
TQWidget* initialFocusWidget(void) const { return m_qlistviewParentAccounts; }
const MyMoneyAccount& parentAccount(void);
private:
KMyMoneyAccountTreeItem* buildAccountTree
( KMyMoneyAccountTreeBase* parent
, const MyMoneyAccount& account
, bool open = false ) const;
KMyMoneyAccountTreeItem* buildAccountTree
( KMyMoneyAccountTreeItem* parent
, const MyMoneyAccount& account
, bool open = false ) const;
MyMoneyAccount m_topAccount; // Last populated top account
bool bFirstTime;
};
class AccountSummaryPage : public KAccountSummaryPageDecl, public WizardPage<Wizard>
{
Q_OBJECT
TQ_OBJECT
public:
AccountSummaryPage(Wizard* parent, const char* name = 0);
void enterPage(void);
TQWidget* initialFocusWidget(void) const { return m_dataList; }
};
} // namespace
#endif