changeset 218:c3f47d489097

Implement global transactions viewer dialog.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 06 Mar 2018 14:37:39 +0200
parents 58af72da7f60
children c740d5177b4e
files Makefile.gen src/main.cpp src/main.h src/mainwindow.ui src/viewtransactions.ui
diffstat 5 files changed, 170 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.gen	Tue Jan 02 01:47:38 2018 +0200
+++ b/Makefile.gen	Tue Mar 06 14:37:39 2018 +0200
@@ -113,7 +113,7 @@
 	@echo " Qt:RCC $@ $<"
 	@$(QT_RCC) -name "Syntilista" $< -o $@
 
-$(OBJPATH)main.o: $(addprefix $(APP_SRC),main.cpp main.h ui_mainwindow.h ui_editperson.h ui_aboutwindow.h) VERSION
+$(OBJPATH)main.o: $(addprefix $(APP_SRC),main.cpp main.h ui_viewtransactions.h ui_mainwindow.h ui_editperson.h ui_aboutwindow.h) VERSION
 	@echo " CXX $@"
 	@$(CXX) $(CXXFLAGS) $(DEFINES) $(INCPATH) -c -o $@ $<
 
--- a/src/main.cpp	Tue Jan 02 01:47:38 2018 +0200
+++ b/src/main.cpp	Tue Mar 06 14:37:39 2018 +0200
@@ -14,6 +14,7 @@
 #include "ui_mainwindow.h"
 #include "ui_editperson.h"
 #include "ui_aboutwindow.h"
+#include "ui_viewtransactions.h"
 
 
 //
@@ -845,6 +846,12 @@
 }
 
 
+void SyntilistaMainWindow::on_button_ViewTransactions_clicked()
+{
+    new ViewTransactions(this);
+}
+
+
 void SyntilistaMainWindow::on_button_DeletePerson_clicked()
 {
     if (currPerson.id <= 0)
@@ -1582,3 +1589,63 @@
 {
     close();
 }
+
+
+//
+// Global transactions list viewer
+//
+ViewTransactions::ViewTransactions(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::ViewTransactions)
+{
+    ui->setupUi(this);
+
+    slSetCommonStyleSheet(this);
+
+    setModal(true);
+    setAttribute(Qt::WA_DeleteOnClose);
+    show();
+    activateWindow();
+    raise();
+    setFocus();
+
+    model_Transactions = new SLTransactionSQLModel();
+    ui->tableview_Transactions->setModel(model_Transactions);
+    ui->tableview_Transactions->setItemDelegate(new QSqlRelationalDelegate(ui->tableview_Transactions));
+    ui->tableview_Transactions->verticalHeader()->setVisible(false);
+    ui->tableview_Transactions->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
+
+    QSqlQuery query;
+    query.prepare(QStringLiteral(
+        "SELECT transactions.id,transactions.value,transactions.added,"
+        "people.last_name,people.first_name FROM transactions "
+        "LEFT JOIN people ON transactions.person=people.id ORDER BY transactions.added DESC"
+        ));
+
+    query.exec();
+    slCheckAndReportSQLError("SELECT transactions for tableview_Transactions", query.lastError());
+
+    model_Transactions->setQuery(query);
+
+    model_Transactions->setHeaderData(0, Qt::Horizontal, tr("ID"));
+    model_Transactions->setHeaderData(1, Qt::Horizontal, tr("Summa"));
+    model_Transactions->setHeaderData(2, Qt::Horizontal, tr("Aika"));
+    model_Transactions->setHeaderData(3, Qt::Horizontal, tr("Sukunimi"));
+    model_Transactions->setHeaderData(4, Qt::Horizontal, tr("Etunimi"));
+
+    ui->tableview_Transactions->setModel(model_Transactions);
+    ui->tableview_Transactions->setColumnHidden(0, true);
+}
+
+
+ViewTransactions::~ViewTransactions()
+{
+    delete ui;
+    delete model_Transactions;
+}
+
+
+void ViewTransactions::on_button_Close_clicked()
+{
+    close();
+}
--- a/src/main.h	Tue Jan 02 01:47:38 2018 +0200
+++ b/src/main.h	Tue Mar 06 14:37:39 2018 +0200
@@ -138,6 +138,7 @@
     class SyntilistaMainWindow;
     class EditPerson;
     class AboutWindow;
+    class ViewTransactions;
 }
 
 typedef struct
@@ -185,6 +186,7 @@
     void on_button_Quit_clicked();
     void on_button_About_clicked();
     void on_button_Print_clicked();
+    void on_button_ViewTransactions_clicked();
 
     void on_button_AddDebt_clicked();
     void on_button_PayDebt_clicked();
@@ -288,6 +290,29 @@
 
 
 //
+// Global transactions list viewer
+//
+class ViewTransactions : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ViewTransactions(QWidget *parent = 0);
+    ~ViewTransactions();
+
+//    void statusMsg(const QString &msg);
+
+private slots:
+    void on_button_Close_clicked();
+
+private:
+    Ui::ViewTransactions *ui;
+
+    SLTransactionSQLModel *model_Transactions;
+};
+
+
+//
 // Custom painter drawing helper class
 //
 class SLDrawContext : public QObject
--- a/src/mainwindow.ui	Tue Jan 02 01:47:38 2018 +0200
+++ b/src/mainwindow.ui	Tue Mar 06 14:37:39 2018 +0200
@@ -308,6 +308,13 @@
          </widget>
         </item>
         <item>
+         <widget class="QPushButton" name="button_ViewTransactions">
+          <property name="text">
+           <string>Tapahtumat</string>
+          </property>
+         </widget>
+        </item>
+        <item>
          <spacer name="horizontalSpacer_2">
           <property name="orientation">
            <enum>Qt::Horizontal</enum>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/viewtransactions.ui	Tue Mar 06 14:37:39 2018 +0200
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ViewTransactions</class>
+ <widget class="QDialog" name="ViewTransactions">
+  <property name="windowModality">
+   <enum>Qt::NonModal</enum>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1024</width>
+    <height>700</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Kaikki viimeisimmät tapahtumat</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Tapahtumat:</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <item>
+       <widget class="QTableView" name="tableview_Transactions">
+        <property name="contextMenuPolicy">
+         <enum>Qt::DefaultContextMenu</enum>
+        </property>
+        <property name="selectionBehavior">
+         <enum>QAbstractItemView::SelectRows</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="button_Close">
+       <property name="text">
+        <string>Sulje</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>button_Close</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>