Banking_System_Client  1.0.0
Qt-based banking app for user/admin account management, transactions, secure server communication via PostgreSQL/Supabase.
UserWidget.h
Go to the documentation of this file.
1 
8 #ifndef USERWIDGET_H
9 #define USERWIDGET_H
10 
11 #include <QWidget>
12 #include <QVBoxLayout>
13 #include <QLabel>
14 #include <QLineEdit>
15 #include <QStackedWidget>
16 #include <QTableWidget>
17 #include "qtmaterialtabs.h"
18 #include "qtmaterialflatbutton.h"
19 #include "qtmaterialdialog.h"
20 #include "qtmaterialsnackbar.h"
21 #include "qtmaterialtextfield.h"
22 
23 #include "RequestManager.h"
24 
43 class UserWidget : public QWidget
44 {
45  Q_OBJECT
46 
47 public:
56  UserWidget(QString email, QString first_name, QString account_number, QString balance, QWidget* parent = nullptr);
57 
58 signals:
62  void logout();
63 
64 public slots:
69  void onTransactionsFetched(const QList<QMap<QString, QString>>& transactions);
70 
75  void onBalanceFetched(const QString balance);
76 
81  void onSuccessfullRequest(QString message);
82 
87  void onFailedRequest(QString message);
88 
89 private slots:
93  void onUpdateEmail();
94 
98  void onUpdatePassword();
99 
103  void onLogoutClicked();
104 
108  void onLogoutConfirmed();
109 
113  void updateTransactionsTable();
114 
118  void onBalanceLabelClicked();
119 
123  void updateFirstNameLabel();
124 
128  void onTransferFieldsChanged();
129 
133  void onTransferButtonClicked();
134 
135 private:
140  QWidget* createHomeTab();
141 
146  QWidget* createTransferTab();
147 
152  QWidget* createSettingsTab();
153 
158  QVBoxLayout* createTabLayout();
159 
160  QString email_;
161  QString new_email_;
162  QString first_name_;
163  QString account_number_;
164  QString balance_;
165  QList<QMap<QString, QString>> transactions_;
166 
167  RequestManager* requestManager;
168 
169  QtMaterialSnackbar* notificationSnackbar;
170  QtMaterialTabs* tabs;
171  QStackedWidget* tabContents;
172  QtMaterialDialog* logoutDialog;
173  QtMaterialFlatButton* balanceLabel;
174  QtMaterialFlatButton* welcomeLabel;
175 
176  QtMaterialTextField* toAccountField;
177  QtMaterialTextField* toEmailField;
178  QtMaterialTextField* amountField;
179  QtMaterialFlatButton* transferButton;
180  QTableWidget* transactionsTable;
181 };
182 
183 #endif // USERWIDGET_H
Header file for the RequestManager class.
Manages the creation and dispatching of requests in the system.
Definition: RequestManager.h:31
The UserWidget class provides a user interface for managing user accounts, performing transactions,...
Definition: UserWidget.h:44
void onBalanceFetched(const QString balance)
Slot to handle successful fetch of balance.
Definition: UserWidget.cpp:381
void onFailedRequest(QString message)
Slot to handle failed request.
Definition: UserWidget.cpp:477
void logout()
Emitted when the user requests to log out.
void onSuccessfullRequest(QString message)
Slot to handle successful request.
Definition: UserWidget.cpp:464
UserWidget(QString email, QString first_name, QString account_number, QString balance, QWidget *parent=nullptr)
Constructs a UserWidget instance.
Definition: UserWidget.cpp:14
void onTransactionsFetched(const QList< QMap< QString, QString >> &transactions)
Slot to handle successful fetch of transactions.
Definition: UserWidget.cpp:335