File indexing completed on 2024-05-12 05:07:34

0001 /*
0002     SPDX-FileCopyrightText: 2018 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 // ----------------------------------------------------------------------------
0007 // QT Includes
0008 
0009 #include <QFontDatabase>
0010 #include <QRegularExpression>
0011 
0012 // ----------------------------------------------------------------------------
0013 // KDE Includes
0014 
0015 #include <KColorScheme>
0016 
0017 // ----------------------------------------------------------------------------
0018 // Project Includes
0019 
0020 QFont KMyMoneySettings::listCellFontEx()
0021 {
0022     if (useSystemFont()) {
0023         return QFontDatabase::systemFont(QFontDatabase::GeneralFont);
0024     } else {
0025         return listCellFont();
0026     }
0027 }
0028 
0029 QFont KMyMoneySettings::listHeaderFontEx()
0030 {
0031     if (useSystemFont()) {
0032         QFont font = QFontDatabase::systemFont(QFontDatabase::GeneralFont);
0033         font.setBold(true);
0034         return font;
0035     } else {
0036         return listHeaderFont();
0037     }
0038 }
0039 
0040 QColor KMyMoneySettings::schemeColor(const SchemeColor color)
0041 {
0042     switch(color) {
0043     case SchemeColor::ListBackground1:
0044         return KColorScheme (QPalette::Active, KColorScheme::View).background(KColorScheme::NormalBackground).color();
0045     case SchemeColor::ListBackground2:
0046         return KColorScheme (QPalette::Active, KColorScheme::View).background(KColorScheme::AlternateBackground).color();
0047     case SchemeColor::ListGrid:
0048         return KColorScheme (QPalette::Active, KColorScheme::View).foreground(KColorScheme::InactiveText).color();
0049     case SchemeColor::ListHighlightText:
0050         return KColorScheme (QPalette::Active, KColorScheme::Selection).foreground(KColorScheme::NormalText).color();
0051     case SchemeColor::ListHighlight:
0052         return KColorScheme (QPalette::Active, KColorScheme::Selection).background(KColorScheme::NormalBackground).color();
0053     case SchemeColor::WindowText:
0054         return KColorScheme (QPalette::Active, KColorScheme::Window).foreground(KColorScheme::NormalText).color();
0055     case SchemeColor::WindowBackground:
0056         return KColorScheme (QPalette::Active, KColorScheme::Window).background(KColorScheme::NormalBackground).color();
0057     case SchemeColor::Positive:
0058         return KColorScheme (QPalette::Active, KColorScheme::View).foreground(KColorScheme::PositiveText).color();
0059     case SchemeColor::Negative:
0060         return KColorScheme (QPalette::Active, KColorScheme::View).foreground(KColorScheme::NegativeText).color();
0061     case SchemeColor::TransactionImported:
0062         if (useCustomColors())
0063             return transactionImportedColor();
0064         else
0065             return KColorScheme (QPalette::Active, KColorScheme::View).background(KColorScheme::LinkBackground).color();
0066     case SchemeColor::TransactionMatched:
0067         if (useCustomColors())
0068             return transactionMatchedColor();
0069         else
0070             return KColorScheme (QPalette::Active, KColorScheme::View).background(KColorScheme::LinkBackground).color();
0071     case SchemeColor::TransactionErroneous:
0072         if (useCustomColors())
0073             return transactionErroneousColor();
0074         else
0075             return KColorScheme (QPalette::Active, KColorScheme::View).foreground(KColorScheme::NegativeText).color();
0076     case SchemeColor::FieldRequired:
0077         if (useCustomColors())
0078             return fieldRequiredColor();
0079         else
0080             return KColorScheme (QPalette::Active, KColorScheme::View).background(KColorScheme::NeutralBackground).color();
0081     case SchemeColor::GroupMarker:
0082         if (useCustomColors())
0083             return groupMarkerColor();
0084         else
0085             return KColorScheme (QPalette::Active, KColorScheme::Selection).background(KColorScheme::LinkBackground).color();
0086     case SchemeColor::MissingConversionRate:
0087         if (useCustomColors())
0088             return missingConversionRateColor();
0089         else
0090             return KColorScheme (QPalette::Active, KColorScheme::Complementary).foreground(KColorScheme::LinkText).color();
0091     default:
0092         return QColor();
0093 
0094     }
0095 }
0096 
0097 QStringList KMyMoneySettings::listOfItems()
0098 {
0099     bool prevValue = self()->useDefaults(true);
0100     QStringList all = itemList().split(',', Qt::SkipEmptyParts);
0101     self()->useDefaults(prevValue);
0102     QStringList list = itemList().split(',', Qt::SkipEmptyParts);
0103 
0104     // now add all from 'all' that are missing in 'list'
0105     static const QRegularExpression exp(QLatin1String("-?(\\d+)"));
0106     QStringList::iterator it_s;
0107     for (it_s = all.begin(); it_s != all.end(); ++it_s) {
0108         const auto item(exp.match(*it_s));
0109         if ((item.hasMatch()) && !list.contains(item.captured(1)) && !list.contains(QString("-%1").arg(item.captured(1)))) {
0110             list << *it_s;
0111         }
0112     }
0113     return list;
0114 }
0115 
0116 int KMyMoneySettings::firstFiscalMonth()
0117 {
0118     return fiscalYearBegin() + 1;
0119 }
0120 
0121 int KMyMoneySettings::firstFiscalDay()
0122 {
0123     return fiscalYearBeginDay();
0124 }
0125 
0126 QDate KMyMoneySettings::firstFiscalDate()
0127 {
0128     QDate date = QDate(QDate::currentDate().year(), firstFiscalMonth(), firstFiscalDay());
0129     if (date > QDate::currentDate())
0130         date = date.addYears(-1);
0131     return date;
0132 }
0133