-
Notifications
You must be signed in to change notification settings - Fork 0
/
agentsdialog.cpp
77 lines (72 loc) · 2.5 KB
/
agentsdialog.cpp
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
73
74
75
76
#include "agentsdialog.h"
#include "ui_agentsdialog.h"
#include "dateDelegate.h"
#include <QTimer>
#include <QCloseEvent>
agentsDialog::agentsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::agentsDialog)
{
ui->setupUi(this);
}
void agentsDialog::closeEvent(QCloseEvent *e)
{
if(!model->submitAll())
{
qDebug()<<"Error "<<model->lastError().text();
e->ignore();
}
else
{
e->accept();
}
}
agentsDialog::agentsDialog(dataBase* base, QWidget *parent) : agentsDialog(parent)
{
db = base;
qDebug()<<db->agentsDb.connectionName();
bool t = db->agentsDb.open();
model = std::shared_ptr<QSqlTableModel>(new QSqlTableModel(this, QSqlDatabase::database(db->agentsDb.connectionName())));
model->setTable("agents");
model->select();
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setHeaderData(1,Qt::Horizontal, tr("Second name"));
model->setHeaderData(0,Qt::Horizontal, tr("First name"));
model->setHeaderData(2,Qt::Horizontal, tr("Fird name"));
model->setHeaderData(3,Qt::Horizontal, tr("Contract's number"));
model->setHeaderData(4,Qt::Horizontal, tr("Contract's date"));
ui->agentsTable->setModel(model.get());
ui->agentsTable->setItemDelegateForColumn(4,new DateDelegate(ui->agentsTable));
//ui->agentsTable->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
connect(ui->agentsTable->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(adjust()));
connect(this->ui->addAgentButton, SIGNAL(clicked()), this, SLOT(addAgent()));
connect(this->ui->delAgentButton, SIGNAL(clicked()), this, SLOT(delAgent()));
}
agentsDialog::~agentsDialog()
{
delete ui;
}
void agentsDialog::adjust()
{
}
void agentsDialog::addAgent()
{
if(!ui->agentsTable->model()->insertRow(0));
{
qDebug()<<"Error"<<model->database().lastError().text();
qDebug()<<"Error"<<model->lastError().text();
}
ui->agentsTable->setFocus();
this->ui->agentsTable->edit(this->ui->agentsTable->model()->index(0,0));
}
void agentsDialog::delAgent()
{
QModelIndexList lst = ui->agentsTable->selectionModel()->selection().indexes();
qSort(lst.begin(), lst.end(), qGreater<QModelIndex>());
std::for_each(lst.begin(), lst.end(), [this](const QModelIndex& index)
{
this->ui->agentsTable->model()->removeRow(index.row());
this->ui->agentsTable->reset();
});
this->ui->agentsTable->edit(this->ui->agentsTable->model()->index(0,0));
}