Did some fast and dirty refactoring (check later that everything's ok):
[emufront] / src / dialogs / dbobjectdialog.cpp
1 #include <QtGui>
2 #include <QSqlTableModel>
3 #include "dbobjectdialog.h"
4 #include "../db/databasemanager.h"
5
6 DbObjectDialog::DbObjectDialog(QWidget *parent)
7     : EmuFrontDialog(parent)
8 {
9     dbObject = 0;
10     dbManager = 0;
11     //dbManager = new DatabaseManager(this);
12     editButton = new QPushButton(tr("&Edit")); 
13     editButton->setEnabled(false);
14     addButton = new QPushButton(tr("&Add"));
15     deleteButton = new QPushButton(tr("&Delete"));
16     deleteButton->setEnabled(false);
17     objectList = new QTableView(this);
18     buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Vertical);
19     buttonBox->addButton(editButton, QDialogButtonBox::ActionRole);
20     buttonBox->addButton(addButton, QDialogButtonBox::ActionRole);
21     buttonBox->addButton(deleteButton, QDialogButtonBox::ActionRole);
22     // nameDialog will be created on request
23     
24     //connectSignals();
25     layout();
26
27
28 DbObjectDialog::~DbObjectDialog()
29 {
30     delete dbObject;
31 }
32
33 void DbObjectDialog::connectSignals()
34 {
35     connect(buttonBox, SIGNAL(accepted()), this, SLOT(close()));
36     connect(objectList, SIGNAL(clicked(const QModelIndex &)),
37         this, SLOT(listObjectClicked(const QModelIndex &)));
38     connect(editButton, SIGNAL(clicked()), this, SLOT(editButtonClicked()));
39     connect(addButton, SIGNAL(clicked()), this, SLOT(addButtonClicked()));
40     connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteButtonClicked()));
41     //connect(nameDialog, SIGNAL(accepted()), this, SLOT(updateList()));
42     connect(nameDialog, SIGNAL(dataObjectUpdated()), this, SLOT(updateData()));
43 }
44
45 void DbObjectDialog::updateList() const
46 {
47     if (!dbManager) return;
48     dbManager->resetModel();
49 }
50
51 void DbObjectDialog::addButtonClicked()
52 {
53     disableSelection();
54     addObject();
55 }
56
57 void DbObjectDialog::editButtonClicked()
58 {
59     disableSelection();
60     editObject();
61 }
62
63 void DbObjectDialog::deleteButtonClicked()
64 {
65     QItemSelectionModel *selModel = objectList->selectionModel();
66     if (!selModel->hasSelection()) return;
67
68     QAbstractItemModel *tblModel = objectList->model();
69     QModelIndex index = selModel->currentIndex();
70     QVariant vName = tblModel->data(index);
71     QString name = vName.toString();
72     disableSelection();
73
74     QString msg =  tr("Do you want to delete") + name + "?";
75     int yn = QMessageBox::question(this, "Confirm", msg, QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
76     if (yn == QMessageBox::Yes)
77     {
78         qDebug() << "Deleting item..." << name << ".";
79         deleteItem();
80     }
81 }
82
83 void DbObjectDialog::layout()
84 {
85     QHBoxLayout *mainLayout = new QHBoxLayout;
86     mainLayout->addWidget(objectList);
87     mainLayout->addWidget(buttonBox);
88     setLayout(mainLayout);
89 }
90
91 void DbObjectDialog::listObjectClicked(const QModelIndex &index)
92 {
93     const QModelIndex *x;
94     x = &index;
95     qDebug() << "Row " << x->row() << ", column " << x->column() << " clicked.";
96     setButtonsEnabled(index.isValid());
97     if(!index.isValid()) 
98         return;
99 }
100
101 void DbObjectDialog::setButtonsEnabled(bool enabled)
102 {
103     editButton->setEnabled(enabled);
104     deleteButton->setEnabled(enabled);
105 }
106
107 void DbObjectDialog::disableSelection()
108 {
109     setButtonsEnabled(false);
110 }
111
112 void DbObjectDialog::updateData()
113 {
114     qDebug() << "DbObjectDialog::updateData()";
115     updateList();
116 }
117
118 void DbObjectDialog::activateNameDialog() const
119 {
120     if (!nameDialog) return;
121     nameDialog->show();
122     nameDialog->raise();
123     nameDialog->activateWindow();
124 }
125