blob: 9de01ae09adeed24d26c00ef91f0ff8c62074e04 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
#ifndef CASHFLOW_H
#define CASHFLOW_H
#include <QMainWindow>
#include <QTableWidget>
#include <QDate>
#include "database.h"
#include "transaction.h"
QT_BEGIN_NAMESPACE
namespace Ui { class CashFlow; }
QT_END_NAMESPACE
class CashFlow : public QMainWindow
{
Q_OBJECT
public:
CashFlow(QWidget *parent = nullptr);
~CashFlow();
private slots:
void onDateRangeChanged();
void onTransactionSelected();
void onSaveTransaction();
void onTransactionFieldChanged();
void onNewTransaction();
void onDeleteTransaction();
void onRecurringSelected();
void onSaveRecurring();
void onNewRecurring();
void onDeleteRecurring();
void onPeriodChanged();
private:
Ui::CashFlow *ui;
Database *database;
int currentTransactionId;
int currentRecurringId;
double startingBalance;
QFont currentAmountFont;
enum PeriodType {
Daily,
Weekly,
Monthly,
Quarterly
};
void setupConnections();
void refreshView();
void refreshTransactionTable();
void refreshRecurringTable();
void calculateAndDisplayBalance();
QList<Transaction> getAllTransactionsInRange();
QList<Transaction> generateProjectedTransactions();
void clearTransactionEntry();
void loadTransactionToEntry(const Transaction &t);
void clearRecurringEntry();
void loadRecurringToEntry(const RecurringRule &r);
QDate getPeriodEnd(const QDate &date, PeriodType periodType);
QDate getPeriodStart(const QDate &date, PeriodType periodType);
QString getPeriodLabel(const QDate &date, PeriodType periodType, int count);
void insertPeriodEndRow(const QString &label, double balance, const QMap<QString, double> &accountBalances);
void updateAmountColors();
void loadSettings();
void applySettings();
void onSaveSettings();
void onChooseAmountFont();
QString formatCurrency(double amount) const;
};
#endif // CASHFLOW_H
|