· 7 years ago · Mar 05, 2019, 02:44 AM
1typedef struct Param
2{
3 int mId;
4 QString mName;
5 QByteArray mSave;
6} Param;
7
8class Parameters
9{
10public:
11 Parameters() = default;
12 Parameters(Param newdata);
13 Parameters(int id, const QString &name, const QByteArray &save);
14 int id() const { return data.mId; }
15 QString name() const {return data.mName; }
16 QByteArray save() const {return data.mSave; }
17 Param getData() const { return data; }
18 void setData(Param ndat) { data = ndat; }
19private:
20 Param data;
21};
22
23#include "parameters.h"
24Parameters::Parameters(Param newdata) {
25 data = newdata;
26}
27Parameters::Parameters(int id, const QString &name,
28 const QByteArray &save) {
29 data.mId = id;
30 data.mSave = save;
31 data.mName = name;
32}
33
34public:
35 explicit dataLeftCamera(QObject *parent = nullptr);
36 bool addItem(Parameters* mParameters);
37 bool updateItem(int itemId, Parameters* mParameters);
38 QSqlDatabase getDatabase();
39private:
40 QString mError;
41 QSqlDatabase mDatabaseLeft;
42
43#define CREATE_TABLE
44 " CREATE TABLE IF NOT EXISTS leftCamTable"
45 " (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL"
46 ", name TEXT NOT NULL"
47 ", save BLOB NOT NULL)"
48
49dataLeftCamera::dataLeftCamera(QObject *parent) : QObject (parent)
50{}
51
52bool dataLeftCamera::addItem(Parameters *mParameters)
53{
54 QSqlQuery qry;
55 qry.prepare("INSERT INTO leftCamTable (name, save)"
56 " VALUES (?,?)");
57 qry.addBindValue(mParameters->name());
58 qry.addBindValue(mParameters->save());
59
60 bool ok = qry.exec();
61 if(!ok) {
62 mError = qry.lastError().text();
63 qDebug() << mError;
64 }
65}
66
67bool dataLeftCamera::updateItem(int itemId, Parameters *mParameters)
68{
69 QSqlQuery qry;
70 qry.prepare(" UPDATE lefCamTable SET "
71 " name = ?,"
72 " save = ?"
73 " WHERE id = ?");
74 qry.addBindValue(mParameters->name());
75 qry.addBindValue(mParameters->save());
76 qry.addBindValue(itemId);
77
78 bool ok = qry.exec();
79 if(!ok) {
80 mError = qry.lastError().text();
81 qDebug() << mError;
82 }
83}
84
85MainWindow::MainWindow(QWidget *parent) :
86 QMainWindow(parent),
87 ui(new Ui::MainWindow)
88{
89 ui->setupUi(this);
90 mDatabaseLeftCamera = new dataLeftCamera(this);
91 mModelLeftCamera = nullptr;
92 mModelLeftCamera = new QSqlTableModel(this);
93 ui->tableView->setModel(mModelLeftCamera);
94 connect(ui->tableView, SIGNAL(doubleClicked(QModelIndex)),
95 this, SLOT(onTableClick(QModelIndex)));
96// temporary folder
97 temporaryFolder = "/home/name/Desktop/tempDBFolder/tmp.db";
98 QFile dbRem(temporaryFolder);
99 dbRem.remove();
100 mDatabaseLeftCamera->inizializationDatabaseLeftCamera(temporaryFolder);
101 mDatabaseLeftCamera->configurationDatabaseLeftCamera();
102 mModelLeftCamera = new QSqlTableModel(this, mDatabaseLeftCamera->getDatabase());
103 mModelLeftCamera->setTable("leftCamTable");
104 mModelLeftCamera->select();
105 ui->tableView->setModel(mModelLeftCamera);
106 ui->tableView->showColumn(true);
107}
108
109// opening the dialog for the first time after capturing the image
110void MainWindow::contextMenuEvent(QContextMenuEvent *event)
111{
112 // operations
113
114 Param result = d.getData();
115 Parameters* param = new Parameters(result);
116 mDatabaseLeftCamera->addItem(param);
117 mModelLeftCamera->select();
118 ui->tableView->show();
119}
120
121// This is the doubleclick that re-opens the small dialog to change the name of the feature
122
123void MainWindow::onTableClick(const QModelIndex &index)
124{
125 int row = index.row();
126 Param currentData;
127 int ItemId = index.sibling(row, 0).data().toInt();
128 currentData.mName = index.sibling(row, 1).data().toString();
129 currentData.mSave = index.sibling(row, 2).data().toByteArray();
130 QPixmap iconPix;
131 if(!iconPix.loadFromData(index.sibling(row, 2).data().toByteArray())) {
132 }
133 clipSceneDialog d(this);
134 d.show();
135 d.setData(currentData);
136 d.setImage(iconPix.toImage());
137
138 if(d.exec() == QDialog::Rejected) {
139 return;
140 } else {
141 //
142 }
143 Param result = d.getData();
144 Parameters* param = new Parameters(result);
145 mDatabaseLeftCamera->updateItem(ItemId,param);
146 mModelLeftCamera->select();
147 ui->tableView->show();
148}