/*
    SPDX-FileCopyrightText: 2007 Thomas Baumgart <ipwizard@users.sourceforge.net>
    SPDX-License-Identifier: GPL-2.0-or-later
*/

#ifndef KNEWACCOUNTWIZARD_P_H
#define KNEWACCOUNTWIZARD_P_H

// ----------------------------------------------------------------------------
// QT Includes

// ----------------------------------------------------------------------------
// KDE Includes

// ----------------------------------------------------------------------------
// Project Includes

#include "kmymoneywizard_p.h"
#include "knewaccountwizard.h"
#include "kaccounttypepage.h"
#include "mymoneyaccountloan.h"
#include "mymoneymoney.h"
#include "mymoneyschedule.h"
#include "mymoneysecurity.h"

class KCurrencyCalculator;

namespace NewAccountWizard
{
class AccountTypePage;
class InstitutionPage;
class BrokeragePage;
class CreditCardSchedulePage;
class GeneralLoanInfoPage;
class LoanDetailsPage;
class LoanPaymentPage;
class LoanSchedulePage;
class LoanPayoutPage;
class HierarchyPage;
class AccountSummaryPage;

class WizardPrivate : public KMyMoneyWizardPrivate
{
    Q_DISABLE_COPY(WizardPrivate)

public:
    explicit WizardPrivate(Wizard* qq)
        : KMyMoneyWizardPrivate(qq)
        , m_institutionPage(nullptr)
        , m_accountTypePage(nullptr)
        , m_brokeragepage(nullptr)
        , m_schedulePage(nullptr)
        , m_generalLoanInfoPage(nullptr)
        , m_loanDetailsPage(nullptr)
        , m_loanPaymentPage(nullptr)
        , m_loanSchedulePage(nullptr)
        , m_loanPayoutPage(nullptr)
        , m_hierarchyPage(nullptr)
        , m_accountSummaryPage(nullptr)
        , m_currencyCalculator(nullptr)
    {
    }

    ~WizardPrivate()
    {
    }

    /**
    * This method returns the currently selected currency for the account
    */
    const MyMoneySecurity& currency() const
    {
        return m_accountTypePage->currency();
    }

    /**
    * This method returns the precision in digits for the selected currency.
    * @sa currency()
    */
    int precision() const
    {
        return MyMoneyMoney::denomToPrec(currency().smallestAccountFraction());
    }

    InstitutionPage* m_institutionPage;
    AccountTypePage* m_accountTypePage;
    BrokeragePage* m_brokeragepage;
    CreditCardSchedulePage* m_schedulePage;
    GeneralLoanInfoPage* m_generalLoanInfoPage;
    LoanDetailsPage* m_loanDetailsPage;
    LoanPaymentPage* m_loanPaymentPage;
    LoanSchedulePage* m_loanSchedulePage;
    LoanPayoutPage* m_loanPayoutPage;
    HierarchyPage* m_hierarchyPage;
    AccountSummaryPage* m_accountSummaryPage;

    KCurrencyCalculator* m_currencyCalculator;

    MyMoneyAccountLoan m_account;
    MyMoneySchedule m_schedule;
};
} // namespace

#endif
