File indexing completed on 2024-05-12 16:44:07

0001 /*
0002     SPDX-FileCopyrightText: 2006-2018 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "registeritem.h"
0008 #include "registeritem_p.h"
0009 
0010 // ----------------------------------------------------------------------------
0011 // QT Includes
0012 
0013 // ----------------------------------------------------------------------------
0014 // KDE Includes
0015 
0016 // ----------------------------------------------------------------------------
0017 // Project Includes
0018 
0019 #include "register.h"
0020 #include "kmymoneysettings.h"
0021 #include "mymoneyobject.h"
0022 #include "mymoneymoney.h"
0023 #include "mymoneyenums.h"
0024 #include "widgetenums.h"
0025 
0026 using namespace KMyMoneyRegister;
0027 
0028 QDate RegisterItemPrivate::nullDate;
0029 QString RegisterItemPrivate::nullString;
0030 MyMoneyMoney RegisterItemPrivate::nullValue;
0031 
0032 RegisterItem::RegisterItem(Register* parent) :
0033     d_ptr(new RegisterItemPrivate)
0034 {
0035     Q_D(RegisterItem);
0036     d->m_parent = parent;
0037     parent->addItem(this);
0038 }
0039 
0040 RegisterItem::RegisterItem(RegisterItemPrivate &dd, Register* parent) :
0041     d_ptr(&dd)
0042 {
0043     Q_D(RegisterItem);
0044     d->m_parent = parent;
0045     parent->addItem(this);
0046 }
0047 
0048 RegisterItem::~RegisterItem()
0049 {
0050     Q_D(RegisterItem);
0051     d->m_parent->removeItem(this);
0052     delete d;
0053 }
0054 
0055 bool RegisterItem::isSelected() const
0056 {
0057     return false;
0058 }
0059 
0060 void RegisterItem::setSelected(bool /* selected*/)
0061 {
0062 }
0063 
0064 bool RegisterItem::hasFocus() const {
0065     return false;
0066 }
0067 
0068 bool RegisterItem::hasEditorOpen() const
0069 {
0070     return false;
0071 }
0072 
0073 void RegisterItem::setFocus(bool /*focus*/, bool updateLens)
0074 {
0075     Q_UNUSED(updateLens);
0076 }
0077 
0078 QDate RegisterItem::sortPostDate() const
0079 {
0080     return KMyMoneyRegister::RegisterItemPrivate::nullDate;
0081 }
0082 
0083 QDate RegisterItem::sortEntryDate() const
0084 {
0085     return KMyMoneyRegister::RegisterItemPrivate::nullDate;
0086 }
0087 
0088 const QString& RegisterItem::sortPayee() const
0089 {
0090     return KMyMoneyRegister::RegisterItemPrivate::nullString;
0091 }
0092 
0093 MyMoneyMoney RegisterItem::sortValue() const
0094 {
0095     return KMyMoneyRegister::RegisterItemPrivate::nullValue;
0096 }
0097 
0098 QString RegisterItem::sortNumber() const
0099 {
0100     return KMyMoneyRegister::RegisterItemPrivate::nullString;
0101 }
0102 
0103 const QString& RegisterItem::sortEntryOrder() const
0104 {
0105     return KMyMoneyRegister::RegisterItemPrivate::nullString;
0106 }
0107 
0108 eWidgets::eRegister::CashFlowDirection RegisterItem::sortType() const
0109 {
0110     return eWidgets::eRegister::CashFlowDirection::Deposit;
0111 }
0112 
0113 const QString& RegisterItem::sortCategory() const
0114 {
0115     return KMyMoneyRegister::RegisterItemPrivate::nullString;
0116 }
0117 
0118 eMyMoney::Split::State RegisterItem::sortReconcileState() const
0119 {
0120     return eMyMoney::Split::State::MaxReconcileState;
0121 }
0122 
0123 const QString RegisterItem::sortSecurity() const
0124 {
0125     return KMyMoneyRegister::RegisterItemPrivate::nullString;
0126 }
0127 
0128 void RegisterItem::setStartRow(int row)
0129 {
0130     Q_D(RegisterItem);
0131     d->m_startRow = row;
0132 }
0133 
0134 int RegisterItem::startRow() const
0135 {
0136     Q_D(const RegisterItem);
0137     return d->m_startRow;
0138 }
0139 
0140 QString RegisterItem::id() const
0141 {
0142     return QString();
0143 }
0144 
0145 void RegisterItem::setParent(Register* parent)
0146 {
0147     Q_D(RegisterItem);
0148     d->m_parent = parent;
0149 }
0150 
0151 Register* RegisterItem::getParent() const
0152 {
0153     Q_D(const RegisterItem);
0154     return d->m_parent;
0155 }
0156 
0157 void RegisterItem::setNeedResize()
0158 {
0159     Q_D(RegisterItem);
0160     d->m_needResize = true;
0161 }
0162 
0163 bool RegisterItem::isVisible() const
0164 {
0165     Q_D(const RegisterItem);
0166     return d->m_visible;
0167 }
0168 
0169 void RegisterItem::setNumRowsRegister(int rows)
0170 {
0171     Q_D(RegisterItem);
0172     if (rows != d->m_rowsRegister) {
0173         d->m_rowsRegister = rows;
0174         if (d->m_parent)
0175             d->m_parent->forceUpdateLists();
0176     }
0177 }
0178 
0179 void RegisterItem::setNumRowsForm(int rows)
0180 {
0181     Q_D(RegisterItem);
0182     d->m_rowsForm = rows;
0183 }
0184 
0185 int RegisterItem::numRowsRegister() const
0186 {
0187     Q_D(const RegisterItem);
0188     return d->m_rowsRegister;
0189 }
0190 
0191 int RegisterItem::numRowsForm() const
0192 {
0193     Q_D(const RegisterItem);
0194     return d->m_rowsForm;
0195 }
0196 
0197 int RegisterItem::numColsForm() const
0198 {
0199     return 1;
0200 }
0201 
0202 void RegisterItem::setAlternate(bool alternate)
0203 {
0204     Q_D(RegisterItem);
0205     d->m_alternate = alternate;
0206 }
0207 
0208 bool RegisterItem::markVisible(bool visible)
0209 {
0210     Q_D(RegisterItem);
0211     if (d->m_visible == visible)
0212         return false;
0213     d->m_visible = visible;
0214     return true;
0215 }
0216 
0217 void  RegisterItem::setNextItem(RegisterItem* p)
0218 {
0219     Q_D(RegisterItem);
0220     d->m_next = p;
0221 }
0222 
0223 void  RegisterItem::setPrevItem(RegisterItem* p)
0224 {
0225     Q_D(RegisterItem);
0226     d->m_prev = p;
0227 }
0228 
0229 RegisterItem*  RegisterItem::nextItem() const
0230 {
0231     Q_D(const RegisterItem);
0232     return d->m_next;
0233 }
0234 
0235 RegisterItem*  RegisterItem::prevItem() const
0236 {
0237     Q_D(const RegisterItem);
0238     return d->m_prev;
0239 }
0240 
0241 bool RegisterItem::maybeTip(const QPoint& /* relpos */, int /* row */, int /* col */, QRect& /* r */, QString& /* msg */)
0242 {
0243     return false;
0244 }
0245 
0246 void RegisterItem::setVisible(bool visible)
0247 {
0248     Q_D(RegisterItem);
0249     if (markVisible(visible) && d->m_parent) {
0250         int numRows = d->m_parent->rowCount();
0251         if (visible) {
0252             for (int i = startRow(); i < startRow() + numRowsRegister(); ++i) {
0253                 if (numRows > i) {
0254                     d->m_parent->showRow(i);
0255                     d->m_parent->setRowHeight(i, rowHeightHint());
0256                 }
0257             }
0258         } else {
0259             for (int i = startRow(); i < startRow() + numRowsRegister(); ++i) {
0260                 if (numRows > i) {
0261                     d->m_parent->hideRow(i);
0262                 }
0263             }
0264         }
0265     }
0266 }
0267 
0268 int RegisterItem::rowHeightHint() const
0269 {
0270     Q_D(const RegisterItem);
0271     if (!d->m_visible)
0272         return 0;
0273 
0274     if (d->m_parent) {
0275         return d->m_parent->rowHeightHint();
0276     }
0277 
0278     QFontMetrics fm(KMyMoneySettings::listCellFontEx());
0279     return fm.lineSpacing() + 6;
0280 }