Mercurial > hg > syntilista
view src/main.h @ 109:62e570222f66
Return inserted person ID from addPerson() (or negative value in case of errors.)
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 04 Jul 2017 09:53:38 +0300 |
parents | 6d02b4ae936c |
children | 2524434a7193 |
line wrap: on
line source
// // Syntilista - velkalistasovellus Kampus-kahvilaan // Programmed and designed by Matti Hämäläinen <ccr@tnsp.org> // (C) Copyright 2017 Tecnic Software productions (TNSP) // // Distributed under 3-clause BSD style license, refer to // included file "COPYING" for exact terms. // #ifndef SYNTILISTA_H #define SYNTILISTA_H #include <QMainWindow> #include <QShortcut> #include <QDialog> #include <QtSql> #include <QSqlQueryModel> // // Global application defines // #define APP_VENDOR "TNSP" // Vendor ID (for settings, etc.) #define APP_ID "Kampus Syntilista" // Application ID (for settings) #define APP_NAME "Café Kampus Syntilista" // Application title/name #define APP_SQLITE_FILE "syntilista.sqlite3" // SQLite3 database file name (without path) // // Custom SQL models // class PersonInfo : public QObject { Q_OBJECT public: explicit PersonInfo() { id = -1; firstName = ""; lastName = ""; extraInfo = ""; balance = 0; } ~PersonInfo() { } void dump(); qint64 id; QString firstName, lastName, extraInfo; double balance; QDateTime added, updated; }; class PersonSQLModel : public QSqlQueryModel { Q_OBJECT private: public: PersonSQLModel(QObject *parent = 0); QVariant data(const QModelIndex &item, int role) const Q_DECL_OVERRIDE; int updatePerson(const PersonInfo &person); qint64 addPerson(const PersonInfo &person); int deletePerson(qint64 id); void updateModel(); }; class TransactionSQLModel : public QSqlQueryModel { Q_OBJECT private: public: TransactionSQLModel(QObject *parent = 0); QVariant data(const QModelIndex &item, int role) const Q_DECL_OVERRIDE; void updateModel(); }; // // Main window // namespace Ui { class SyntilistaMainWindow; class EditPerson; class AboutWindow; } class SyntilistaMainWindow : public QMainWindow { Q_OBJECT public: explicit SyntilistaMainWindow(QWidget *parent = 0); ~SyntilistaMainWindow(); void statusMsg(const QString &msg); void readSettings(); void saveSettings(); void setActivePerson(qint64 id); int addTransaction(qint64 id, double value, PersonInfo &info); int addTransactionGUI(qint64 id, bool debt, double value); void updatePersonList(); PersonSQLModel *model_People; public slots: void focusDebtEdit(); private slots: void on_button_AddPerson_clicked(); void on_button_EditPerson_clicked(); void on_button_DeletePerson_clicked(); void on_edit_PersonFilter_textChanged(const QString &arg1); void on_button_ClearFilter_clicked(); void on_button_Quit_clicked(); void on_button_About_clicked(); void on_button_AddDebt_clicked(); void on_button_PayDebt_clicked(); void on_button_PayFullDebt_clicked(); void on_tableview_People_doubleClicked(const QModelIndex &index); void selectedPersonChanged(const QModelIndex &, const QModelIndex &); void selectRowPrev(); void selectRowNext(); void changeUIZoomIn(); void changeUIZoomOut(); void changeUIZoomReset(); void updateSortOrder(int index, Qt::SortOrder order); private: Ui::SyntilistaMainWindow *ui; TransactionSQLModel *model_Latest; PersonInfo currPerson; int peopleSortIndex; Qt::SortOrder peopleSortOrder; QString peopleFilter; }; // // Person edit / new person dialog // class EditPerson : public QDialog { Q_OBJECT public: explicit EditPerson(QWidget *parent = 0); ~EditPerson(); void statusMsg(const QString &msg); void clearForm(); bool validateForm(); void setPerson(qint64 id); private slots: void on_button_OK_clicked(); void on_button_Cancel_clicked(); void on_edit_FirstName_textChanged(const QString &arg1); void on_edit_LastName_textChanged(const QString &arg1); private: Ui::EditPerson *ui; PersonInfo selPerson; TransactionSQLModel *model_Transactions; }; // // About dialog // class AboutWindow : public QDialog { Q_OBJECT public: explicit AboutWindow(QWidget *parent = 0); ~AboutWindow(); private slots: void on_button_Close_clicked(); private: Ui::AboutWindow *ui; }; #endif // SYNTILISTA_H