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

0001 /*
0002     SPDX-FileCopyrightText: 2023 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "ledgersortorder.h"
0007 
0008 // ----------------------------------------------------------------------------
0009 // QT Includes
0010 
0011 #include <QMap>
0012 
0013 // ----------------------------------------------------------------------------
0014 // KDE Includes
0015 
0016 // ----------------------------------------------------------------------------
0017 // Project Includes
0018 
0019 #include "mymoneyenums.h"
0020 #include "widgetenums.h"
0021 
0022 LedgerSortOrder::LedgerSortOrder(const QString& sortOrder)
0023     : QList<ColumnSortItem>()
0024 {
0025     setSortOrder(sortOrder);
0026 }
0027 
0028 LedgerSortOrder::LedgerSortOrder()
0029     : QList<ColumnSortItem>()
0030 {
0031     ColumnSortItem defaultSortColumnItem;
0032     defaultSortColumnItem.sortRole = eMyMoney::Model::TransactionPostDateRole;
0033     defaultSortColumnItem.sortOrder = Qt::AscendingOrder;
0034 
0035     append(defaultSortColumnItem);
0036 }
0037 
0038 void LedgerSortOrder::setSortOrder(const QString& sortOrder)
0039 {
0040     const QMap<eWidgets::SortField, int> sortFieldToColumn{
0041         {eWidgets::SortField::PostDate, eMyMoney::Model::TransactionPostDateRole},
0042         {eWidgets::SortField::EntryDate, eMyMoney::Model::TransactionEntryDateRole},
0043         {eWidgets::SortField::Payee, eMyMoney::Model::SplitPayeeRole},
0044         {eWidgets::SortField::Value, eMyMoney::Model::SplitSharesRole},
0045         {eWidgets::SortField::NoSort, eMyMoney::Model::SplitNumberRole},
0046         {eWidgets::SortField::EntryOrder, eMyMoney::Model::IdRole},
0047         {eWidgets::SortField::Category, eMyMoney::Model::TransactionCounterAccountRole},
0048         {eWidgets::SortField::ReconcileState, eMyMoney::Model::SplitReconcileFlagRole},
0049         {eWidgets::SortField::Security, eMyMoney::Model::JournalSplitSecurityNameRole},
0050         {eWidgets::SortField::Type, eMyMoney::Model::SplitSharesSuffixRole},
0051         {eWidgets::SortField::ReconciliationDate, eMyMoney::Model::SplitReconcileDateRole},
0052     };
0053 
0054     clear();
0055     const auto sortOrderList = sortOrder.split(QLatin1Char(','), Qt::SkipEmptyParts);
0056     for (const auto& sortOrderEntry : sortOrderList) {
0057         const int numericEntry = sortOrderEntry.toInt();
0058         ColumnSortItem item;
0059         item.sortRole = sortFieldToColumn.value(static_cast<eWidgets::SortField>(qAbs(numericEntry)), eMyMoney::Model::TransactionPostDateRole);
0060         item.sortOrder = (numericEntry >= 0) ? Qt::AscendingOrder : Qt::DescendingOrder;
0061         append(item);
0062     }
0063 }