1 /***************************************************************************
2                           menuenums.h
3                              -------------------
4     copyright            : (C) 2017, 2018 by Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
5 
6 ***************************************************************************/
7 
8 /***************************************************************************
9  *                                                                         *
10  *   This program is free software; you can redistribute it and/or modify  *
11  *   it under the terms of the GNU General Public License as published by  *
12  *   the Free Software Foundation; either version 2 of the License, or     *
13  *   (at your option) any later version.                                   *
14  *                                                                         *
15  ***************************************************************************/
16 
17 #ifndef MENUENUMS_H
18 #define MENUENUMS_H
19 
20 #include "kmm_menus_export.h"
21 #include <QHashFunctions>
22 #include <QHash>
23 
24 class QAction;
25 class QMenu;
26 
27 namespace eMenu {
28   enum class Action {
29     // *************
30     // The File menu
31     // *************
32     FileOpenDatabase, FileSaveAsDatabase, FileBackup,
33     FileImportStatement,
34     FileImportTemplate, FileExportTemplate,
35     Print,
36     #ifdef KMM_DEBUG
37     FileDump,
38     #endif
39     FilePersonalData, FileInformation,
40     // *************
41     // The edit menu
42     // *************
43     EditFindTransaction,
44     // *************
45     // The view menu
46     // *************
47     ViewTransactionDetail, ViewHideReconciled,
48     ViewHideCategories, ViewShowAll,
49     // *************
50     // The institution menu
51     // *************
52     NewInstitution, EditInstitution,
53     DeleteInstitution,
54 
55     // *************
56     // The account menu
57     // *************
58     NewAccount, EditAccount, DeleteAccount,
59     OpenAccount, CloseAccount, ReopenAccount,
60     StartReconciliation, FinishReconciliation,
61     PostponeReconciliation,
62     ReportAccountTransactions, ChartAccountBalance,
63     UpdateAccountMenu, UpdateAccount, UpdateAllAccounts,
64     MapOnlineAccount, UnmapOnlineAccount,
65     AccountCreditTransfer,
66     // *************
67     // The category menu
68     // *************
69     NewCategory, EditCategory, DeleteCategory,
70     // *************
71     // The transaction menu
72     // *************
73     NewTransaction, EditTransaction, DeleteTransaction,
74     EnterTransaction, CancelTransaction,
75     DuplicateTransaction, AddReversingTransaction,
76     MatchTransaction, AcceptTransaction,
77     EditSplits, CopySplits,
78     ToggleReconciliationFlag, MarkCleared,
79     MarkReconciled, MarkNotReconciled,
80     SelectAllTransactions,
81     GoToAccount, GoToPayee,
82     NewScheduledTransaction, AssignTransactionsNumber,
83     CombineTransactions,
84     // *************
85     // The tools menu
86     // *************
87     ToolCurrencies,
88     ToolPrices, ToolUpdatePrices,
89     ToolConsistency, ToolPerformance,
90     ToolSQL, ToolCalculator,
91     // *************
92     // The help menu
93     // *************
94     SettingsAllMessages,
95     HelpShow,
96     // *************
97     // The investment menu
98     // *************
99     NewInvestment, EditInvestment, DeleteInvestment,
100     UpdatePriceOnline, UpdatePriceManually,
101     // *************
102     // The schedule menu
103     // *************
104     NewSchedule, EditSchedule,
105     DeleteSchedule, DuplicateSchedule,
106     EnterSchedule, SkipSchedule,
107     // *************
108     // The payee menu
109     // *************
110     NewPayee, RenamePayee, DeletePayee,
111     MergePayee,
112     // *************
113     // The tag menu
114     // *************
115     NewTag, RenameTag, DeleteTag,
116     // *************
117     // The budget menu
118     // *************
119     NewBudget, RenameBudget, DeleteBudget,
120     CopyBudget, ChangeBudgetYear, BudgetForecast,
121     // *************
122     // The show actions
123     // *************
124     ShowHomeView, ShowInstitutionsView, ShowAccountsView,
125     ShowSchedulesView, ShowCategoriesView, ShowTagsView,
126     ShowPayeesView, ShowLedgersView, ShowInvestmentsView,
127     ShowReportsView, ShowBudgetView, ShowForecastView,
128     ShowOnlineJobOutboxView,
129     // *************
130     // The misc actions
131     // *************
132 #ifdef KMM_DEBUG
133     WizardNewUser, DebugTraces,
134 #endif
135     DebugTimers,
136     DeleteOnlineJob, EditOnlineJob, LogOnlineJob
137   };
138 
qHash(const Action key,uint seed)139   inline uint qHash(const Action key, uint seed) { return ::qHash(static_cast<uint>(key), seed); }
140 
141   enum class Menu {
142     Institution,
143     Account,
144     Schedule,
145     Category,
146     Tag,
147     Payee,
148     Investment,
149     Transaction,
150     MoveTransaction,
151     MarkTransaction,
152     MarkTransactionContext,
153     OnlineJob
154   };
155 
qHash(const Menu key,uint seed)156   inline uint qHash(const Menu key, uint seed) { return ::qHash(static_cast<uint>(key), seed); }
157 }
158 
159 KMM_MENUS_EXPORT extern QHash<eMenu::Action, QAction *> pActions;
160 KMM_MENUS_EXPORT extern QHash<eMenu::Menu, QMenu *> pMenus;
161 
162 #endif
163