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 }