File indexing completed on 2024-05-19 05:06:54

0001 /*
0002     SPDX-FileCopyrightText: 2017, 2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0003     SPDX-FileCopyrightText: 2021 Dawid Wróbel <me@dawidwrobel.com>
0004     SPDX-FileCopyrightText: 2023 Thomas Baumgart <tbaumgart@kde.org>
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef MENUENUMS_H
0009 #define MENUENUMS_H
0010 
0011 #include "kmm_menus_export.h"
0012 #include <QHashFunctions>
0013 #include <QHash>
0014 
0015 #include "qhashseedtype.h"
0016 
0017 class QAction;
0018 class QMenu;
0019 
0020 namespace eMenu {
0021 // clang-format off
0022 enum class Action {
0023     // *************
0024     // The File menu
0025     // *************
0026     None,
0027     FileNew, FileClose,
0028     FileOpenDatabase, FileSaveAsDatabase, FileBackup,
0029     FileImportStatement,
0030     FileImportTemplate, FileExportTemplate,
0031     Print,
0032     PrintPreview,
0033 #ifdef KMM_DEBUG
0034     FileDump,
0035 #endif
0036     FilePersonalData, FileInformation,
0037     // *************
0038     // The edit menu
0039     // *************
0040     EditFindTransaction,
0041     EditUndo,
0042     EditRedo,
0043     // *************
0044     // The view menu
0045     // *************
0046     ViewTransactionDetail, ViewHideReconciled,
0047     ViewHideCategories, ViewShowAll,
0048     // *************
0049     // The institution menu
0050     // *************
0051     NewInstitution, EditInstitution,
0052     DeleteInstitution,
0053 
0054     // *************
0055     // The account menu
0056     // *************
0057     NewAccount, EditAccount, DeleteAccount,
0058     OpenAccount, CloseAccount, ReopenAccount,
0059     StartReconciliation, FinishReconciliation,
0060     PostponeReconciliation,
0061     CancelReconciliation,
0062     ReconciliationReport,
0063     ReportAccountTransactions, ChartAccountBalance,
0064     UpdateAccountMenu, UpdateAccount, UpdateAllAccounts,
0065     MapOnlineAccount, UnmapOnlineAccount,
0066     // *************
0067     // The category menu
0068     // *************
0069     NewCategory, EditCategory, DeleteCategory,
0070     // *************
0071     // The transaction menu
0072     // *************
0073     NewTransaction, EditTransaction, DeleteTransaction,
0074     EnterTransaction, CancelTransaction,
0075     DuplicateTransaction, AddReversingTransaction,
0076     MatchTransaction, AcceptTransaction,
0077     DisplayTransactionDetails,
0078     EditSplits, CopySplits,
0079     ToggleReconciliationFlag, MarkCleared,
0080     MarkReconciled, MarkNotReconciled,
0081     SelectAllTransactions,
0082     GoToAccount, GoToPayee,
0083     NewScheduledTransaction, AssignTransactionsNumber,
0084     CombineTransactions,
0085     MoveTransactionTo,
0086     MoveToToday,
0087     // *************
0088     // The tools menu
0089     // *************
0090     ToolCurrencies,
0091     ToolPrices, ToolUpdatePrices,
0092     ToolConsistency, ToolPerformance,
0093     ToolSQL, ToolCalculator,
0094     // *************
0095     // The help menu
0096     // *************
0097     SettingsAllMessages,
0098     GetOnlineHelp, WhatsNew, VisitWebsite,
0099     // *************
0100     // The investment menu
0101     // *************
0102     NewInvestment, EditInvestment, DeleteInvestment,
0103     UpdatePriceOnline, UpdatePriceManually,
0104     EditSecurity, DeleteSecurity,
0105     // *************
0106     // The schedule menu
0107     // *************
0108     NewSchedule, EditSchedule,
0109     DeleteSchedule, DuplicateSchedule,
0110     EnterSchedule, SkipSchedule,
0111     // *************
0112     // The payee menu
0113     // *************
0114     NewPayee, RenamePayee, DeletePayee,
0115     MergePayee,
0116     // *************
0117     // The tag menu
0118     // *************
0119     NewTag, RenameTag, DeleteTag,
0120     // *************
0121     // The show actions
0122     // *************
0123     ShowHomeView, ShowInstitutionsView, ShowAccountsView,
0124     ShowSchedulesView, ShowCategoriesView, ShowTagsView,
0125     ShowPayeesView, ShowLedgersView, ShowInvestmentsView,
0126     ShowReportsView, ShowBudgetView, ShowForecastView,
0127     ShowOnlineJobOutboxView, ShowFilterWidget,
0128     // *************
0129     // The misc actions
0130     // *************
0131     EditTabOrder,
0132 #ifdef KMM_DEBUG
0133     NewFeature, DebugTraces,
0134 #endif
0135     DebugTimers,
0136     DeleteOnlineJob, EditOnlineJob, LogOnlineJob,
0137     ReportOpen, ReportNew, ReportCopy, ReportConfigure,
0138     ReportExport, ReportDelete, ReportClose, ReportToggleChart,
0139     // *************
0140     // Actions only used by code
0141     // *************
0142     ShowTransaction,
0143 };
0144 // clang-format on
0145 
0146 inline qHashSeedType qHash(const Action key, qHashSeedType seed)
0147 {
0148     return ::qHash(static_cast<uint>(key), seed);
0149 }
0150 
0151 enum class Menu {
0152     Institution,
0153     Account,
0154     Schedule,
0155     Category,
0156     Tag,
0157     Payee,
0158     Investment,
0159     Security,
0160     Transaction,
0161     MoveTransaction,
0162     MarkTransaction,
0163     MarkTransactionContext,
0164     OnlineJob,
0165 };
0166 
0167 inline qHashSeedType qHash(const Menu key, qHashSeedType seed)
0168 {
0169     return ::qHash(static_cast<uint>(key), seed);
0170 }
0171 }
0172 
0173 KMM_MENUS_EXPORT extern QHash<eMenu::Action, QAction *> pActions;
0174 KMM_MENUS_EXPORT extern QHash<eMenu::Menu, QMenu *> pMenus;
0175 
0176 #endif