File indexing completed on 2024-05-12 16:43:57

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 "fancydategroupmarkers.h"
0008 #include "fancydategroupmarker_p.h"
0009 
0010 // ----------------------------------------------------------------------------
0011 // QT Includes
0012 
0013 #include <QStyleOptionViewItem>
0014 #include <QPainter>
0015 #include <QPalette>
0016 
0017 // ----------------------------------------------------------------------------
0018 // KDE Includes
0019 
0020 // ----------------------------------------------------------------------------
0021 // Project Includes
0022 
0023 #include "kmymoneysettings.h"
0024 #include "widgetenums.h"
0025 
0026 using namespace KMyMoneyRegister;
0027 using namespace eMyMoney;
0028 
0029 namespace KMyMoneyRegister {
0030 class StatementGroupMarkerPrivate : public FancyDateGroupMarkerPrivate
0031 {
0032 public:
0033     eWidgets::eRegister::CashFlowDirection m_dir;
0034 };
0035 }
0036 
0037 StatementGroupMarker::StatementGroupMarker(Register* parent, eWidgets::eRegister::CashFlowDirection dir, const QDate& date, const QString& txt) :
0038     FancyDateGroupMarker(*new StatementGroupMarkerPrivate, parent, date, txt)
0039 {
0040     Q_D(StatementGroupMarker);
0041     d->m_dir = dir;
0042     d->m_showDate = true;
0043 }
0044 
0045 StatementGroupMarker::~StatementGroupMarker()
0046 {
0047 }
0048 
0049 eWidgets::eRegister::CashFlowDirection StatementGroupMarker::sortType() const
0050 {
0051     Q_D(const StatementGroupMarker);
0052     return d->m_dir;
0053 }
0054 
0055 int StatementGroupMarker::sortSamePostDate() const
0056 {
0057     return 3;
0058 }
0059 
0060 FiscalYearGroupMarker::FiscalYearGroupMarker(Register* parent, const QDate& date, const QString& txt) :
0061     FancyDateGroupMarker(parent, date, txt)
0062 {
0063 }
0064 
0065 FiscalYearGroupMarker::~FiscalYearGroupMarker()
0066 {
0067 }
0068 
0069 const char* FiscalYearGroupMarker::className()
0070 {
0071     return "FiscalYearGroupMarker";
0072 }
0073 
0074 int FiscalYearGroupMarker::sortSamePostDate() const
0075 {
0076     return 1;
0077 }
0078 
0079 SimpleDateGroupMarker::SimpleDateGroupMarker(Register* parent, const QDate& date, const QString& txt) :
0080     FancyDateGroupMarker(parent, date, txt)
0081 {
0082 }
0083 
0084 SimpleDateGroupMarker::~SimpleDateGroupMarker()
0085 {
0086 }
0087 
0088 int SimpleDateGroupMarker::rowHeightHint() const
0089 {
0090     Q_D(const FancyDateGroupMarker);
0091     if (!d->m_visible)
0092         return 0;
0093 
0094     return RegisterItem::rowHeightHint() / 2;
0095 }
0096 
0097 const char* SimpleDateGroupMarker::className()
0098 {
0099     return "SimpleDateGroupMarker";
0100 }
0101 
0102 void SimpleDateGroupMarker::paintRegisterCell(QPainter *painter, QStyleOptionViewItem &option, const QModelIndex &index)
0103 {
0104     Q_D(FancyDateGroupMarker);
0105     QRect cellRect = option.rect;
0106     painter->save();
0107     cellRect.setWidth(d->m_parent->viewport()->width());
0108     cellRect.setHeight(d->m_parent->rowHeight(index.row() + d->m_startRow));
0109 
0110     if (d->m_alternate)
0111         option.palette.setColor(QPalette::Base, KMyMoneySettings::schemeColor(SchemeColor::ListBackground2));
0112     else
0113         option.palette.setColor(QPalette::Base, KMyMoneySettings::schemeColor(SchemeColor::ListBackground1));
0114 
0115     QBrush backgroundBrush(option.palette.color(QPalette::Base));
0116     backgroundBrush.setStyle(Qt::Dense5Pattern);
0117     backgroundBrush.setColor(KMyMoneySettings::schemeColor(SchemeColor::ListGrid));
0118     painter->eraseRect(cellRect);
0119     painter->fillRect(cellRect, backgroundBrush);
0120     painter->setPen(KMyMoneySettings::schemeColor(SchemeColor::ListGrid));
0121     painter->restore();
0122 }