File indexing completed on 2024-05-12 05:06:35

0001 /*
0002     SPDX-FileCopyrightText: 2000-2001 Michael Edwardes <mte@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2017 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef MYMONEYCATEGORY_H
0008 #define MYMONEYCATEGORY_H
0009 
0010 // ----------------------------------------------------------------------------
0011 // QT Includes
0012 
0013 #include "qcontainerfwd.h"
0014 #include <qglobal.h>
0015 
0016 class QString;
0017 
0018 /**
0019   * @deprecated This class represents an Income or Expense category. Please don't
0020   *             use it anymore, as it will be removed sooner or later.
0021   */
0022 class MyMoneyCategoryPrivate;
0023 class MyMoneyCategory
0024 {
0025     Q_DECLARE_PRIVATE(MyMoneyCategory)
0026     MyMoneyCategoryPrivate * d_ptr;
0027 
0028     friend QDataStream &operator<<(QDataStream &, MyMoneyCategory &);
0029     friend QDataStream &operator>>(QDataStream &, MyMoneyCategory &);
0030 
0031 public:
0032     MyMoneyCategory();
0033     explicit MyMoneyCategory(const bool income, const QString& name);
0034     explicit MyMoneyCategory(const bool income, const QString& name, QStringList minors);
0035     MyMoneyCategory(const MyMoneyCategory & other);
0036     MyMoneyCategory(MyMoneyCategory && other);
0037     MyMoneyCategory & operator=(MyMoneyCategory other);
0038     friend void swap(MyMoneyCategory& first, MyMoneyCategory& second);
0039     ~MyMoneyCategory();
0040 
0041     // Simple get operations
0042     QString name() const;
0043     QStringList& minorCategories();
0044 
0045     // Simple set operations
0046     bool isIncome() const;
0047     void setIncome(const bool val);
0048     void setName(const QString& val);
0049 
0050     bool setMinorCategories(QStringList values);
0051     bool addMinorCategory(const QString& val);
0052     bool removeMinorCategory(const QString& val);
0053     bool renameMinorCategory(const QString& oldVal, const QString& newVal);
0054     bool addMinorCategory(QStringList values);
0055     bool removeAllMinors();
0056     QString firstMinor();
0057 
0058     void clear();
0059 };
0060 
0061 inline void swap(MyMoneyCategory& first, MyMoneyCategory& second) // krazy:exclude=inline
0062 {
0063     using std::swap;
0064     swap(first.d_ptr, second.d_ptr);
0065 }
0066 
0067 inline MyMoneyCategory::MyMoneyCategory(MyMoneyCategory && other) : MyMoneyCategory() // krazy:exclude=inline
0068 {
0069     swap(*this, other);
0070 }
0071 
0072 inline MyMoneyCategory & MyMoneyCategory::operator=(MyMoneyCategory other) // krazy:exclude=inline
0073 {
0074     swap(*this, other);
0075     return *this;
0076 }
0077 
0078 #endif