Removal of 'Platform' data items implemented.
[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     QModelIndex index = selModel->currentIndex();
67     QVariant vName = tblModel->data(index);
68     QString name = vName.toString();
69     disableSelection();
70
71     QString msg =  tr("Do you want to delete") + name + "?";
72     int yn = QMessageBox::question(this, "Confirm", msg, QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
73     if (yn == QMessageBox::Yes)
74     {
75         qDebug() << "Deleting item..." << name << ".";
76         deleteItem();
77     }
78 }
79
80 void DbObjectDialog::layout()
81 {
82     QHBoxLayout *mainLayout = new QHBoxLayout;
83     mainLayout->addWidget(objectList);
84     mainLayout->addWidget(buttonBox);
85     setLayout(mainLayout);
86 }
87
88 void DbObjectDialog::listObjectClicked(const QModelIndex &index)
89 {
90     const QModelIndex *x;
91     x = &index;
92     qDebug() << "Row " << x->row() << ", column " << x->column() << " clicked.";
93     setButtonsEnabled(index.isValid());
94     if(!index.isValid()) 
95         return;
96 }
97
98 void DbObjectDialog::setButtonsEnabled(bool enabled)
99 {
100     editButton->setEnabled(enabled);
101     deleteButton->setEnabled(enabled);
102 }
103
104 void DbObjectDialog::disableSelection()
105 {
106     setButtonsEnabled(false);
107 }
108
109 void DbObjectDialog::updateData()
110 {
111     updateList();
112 }