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