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 }