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

0001 /*
0002     SPDX-FileCopyrightText: 2002-2003 Michael Edwardes <mte@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2002-2016 Thomas Baumgart <tbaumgart@kde.org>
0004     SPDX-FileCopyrightText: 2002 Kevin Tambascio <ktambascio@users.sourceforge.net>
0005     SPDX-FileCopyrightText: 2017 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "mymoneyutils.h"
0010 
0011 #include <QDate>
0012 #include <QLocale>
0013 #include <QRegExp>
0014 
0015 #include <iostream>
0016 
0017 #include "mymoneyaccount.h"
0018 #include "mymoneymoney.h"
0019 #include "mymoneysecurity.h"
0020 
0021 #include <cstdio>
0022 #include <cstdarg>
0023 
0024 
0025 QString MyMoneyUtils::getFileExtension(QString strFileName)
0026 {
0027     QString strTemp;
0028     if (!strFileName.isEmpty()) {
0029         //find last . deliminator
0030         int nLoc = strFileName.lastIndexOf('.');
0031         if (nLoc != -1) {
0032             strTemp = strFileName.right(strFileName.length() - (nLoc + 1));
0033             return strTemp.toUpper();
0034         }
0035     }
0036     return strTemp;
0037 }
0038 
0039 QString MyMoneyUtils::formatMoney(const MyMoneyMoney& val,
0040                                   const MyMoneyAccount& acc,
0041                                   const MyMoneySecurity& sec,
0042                                   bool showThousandSeparator)
0043 {
0044     return val.formatMoney(sec.tradingSymbol(),
0045                            val.denomToPrec(acc.fraction()),
0046                            showThousandSeparator);
0047 }
0048 
0049 QString MyMoneyUtils::formatMoney(const MyMoneyMoney& val,
0050                                   const MyMoneySecurity& sec,
0051                                   bool showThousandSeparator)
0052 {
0053     return val.formatMoney(sec.tradingSymbol(),
0054                            val.denomToPrec(sec.smallestAccountFraction()),
0055                            showThousandSeparator);
0056 }
0057 
0058 QString MyMoneyUtils::dateToString(const QDate& date)
0059 {
0060     if (!date.isNull() && date.isValid())
0061         return date.toString(Qt::ISODate);
0062 
0063     return QString();
0064 }
0065 
0066 QDate MyMoneyUtils::stringToDate(const QString& str)
0067 {
0068     if (str.length()) {
0069         QDate date = QDate::fromString(str, Qt::ISODate);
0070         if (!date.isNull() && date.isValid())
0071             return date;
0072     }
0073     return QDate();
0074 }
0075 
0076 QString MyMoneyUtils::QStringEmpty(const QString& val)
0077 {
0078     if (!val.isEmpty())
0079         return QString(val);
0080 
0081     return QString();
0082 }
0083 
0084 unsigned long MyMoneyUtils::extractId(const QString& txt)
0085 {
0086     int pos;
0087     unsigned long rc = 0;
0088 
0089     pos = txt.indexOf(QRegExp("\\d+"), 0);
0090     if (pos != -1) {
0091         rc = txt.mid(pos).toInt();
0092     }
0093     return rc;
0094 }
0095 
0096 QString MyMoneyUtils::formatDate(const QDate& date)
0097 {
0098     static QString format;
0099     if (format.isEmpty()) {
0100         format = QLocale().dateFormat(QLocale::ShortFormat);
0101         if (!format.contains(QLatin1String("yyyy")) && format.contains(QLatin1String("yy"))) {
0102             format.replace(QLatin1String("yy"), QLatin1String("yyyy"));
0103         }
0104     }
0105     return date.toString(format);
0106 }
0107 
0108 bool MyMoneyUtils::isRunningAsAppImage()
0109 {
0110     return qEnvironmentVariableIsSet("RUNNING_AS_APPIMAGE");
0111 }