File indexing completed on 2024-05-19 05:07:15

0001 /*
0002     SPDX-FileCopyrightText: 2012-2019 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "mymoneycostcenter.h"
0007 
0008 // ----------------------------------------------------------------------------
0009 // QT Includes
0010 
0011 #include <QCollator>
0012 #include <QRegularExpression>
0013 #include <QRegularExpressionMatch>
0014 #include <QSet>
0015 
0016 // ----------------------------------------------------------------------------
0017 // Project Includes
0018 
0019 #include "mymoneyobject_p.h"
0020 #include "mymoneyexception.h"
0021 
0022 MyMoneyCostCenter MyMoneyCostCenter::null;
0023 
0024 class MyMoneyCostCenterPrivate : public MyMoneyObjectPrivate
0025 {
0026 public:
0027     void collectReferencedObjects() override
0028     {
0029     }
0030 
0031     QString m_name;
0032 };
0033 
0034 MyMoneyCostCenter::MyMoneyCostCenter() :
0035     MyMoneyObject(*new MyMoneyCostCenterPrivate)
0036 {
0037 }
0038 
0039 MyMoneyCostCenter::MyMoneyCostCenter(const QString &id) :
0040     MyMoneyObject(*new MyMoneyCostCenterPrivate, id)
0041 {
0042 }
0043 
0044 MyMoneyCostCenter::MyMoneyCostCenter(const MyMoneyCostCenter& other) :
0045     MyMoneyObject(*new MyMoneyCostCenterPrivate(*other.d_func()), other.id())
0046 {
0047 }
0048 
0049 MyMoneyCostCenter::MyMoneyCostCenter(const QString& id, const MyMoneyCostCenter& other) :
0050     MyMoneyObject(*new MyMoneyCostCenterPrivate(*other.d_func()), id)
0051 {
0052 }
0053 
0054 MyMoneyCostCenter::~MyMoneyCostCenter()
0055 {
0056 }
0057 
0058 bool MyMoneyCostCenter::operator == (const MyMoneyCostCenter& right) const
0059 {
0060     Q_D(const MyMoneyCostCenter);
0061     auto d2 = static_cast<const MyMoneyCostCenterPrivate *>(right.d_func());
0062     return (MyMoneyObject::operator==(right) &&
0063             ((d->m_name.length() == 0 && d2->m_name.length() == 0) || (d->m_name == d2->m_name)));
0064 }
0065 
0066 bool MyMoneyCostCenter::operator < (const MyMoneyCostCenter& right) const
0067 {
0068     Q_D(const MyMoneyCostCenter);
0069     auto d2 = static_cast<const MyMoneyCostCenterPrivate *>(right.d_func());
0070     QCollator col;
0071     return col.compare(d->m_name, d2->m_name);
0072 }
0073 
0074 QString MyMoneyCostCenter::name() const
0075 {
0076     Q_D(const MyMoneyCostCenter);
0077     return d->m_name;
0078 }
0079 
0080 void MyMoneyCostCenter::setName(const QString& val)
0081 {
0082     Q_D(MyMoneyCostCenter);
0083     d->m_name = val;
0084 }
0085 
0086 
0087 QString MyMoneyCostCenter::shortName() const
0088 {
0089     Q_D(const MyMoneyCostCenter);
0090     static const QRegularExpression shortNumberExp("^(\\d+)\\s.+");
0091     const auto shortNumber(shortNumberExp.match(d->m_name));
0092     if (shortNumber.hasMatch()) {
0093         return shortNumber.captured(1);
0094     }
0095     return d->m_name;
0096 }