2 // Copyright Mikko Keinänen 2010
4 // This file is part of EmuFront.
7 // EmuFront is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
12 // Foobar is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License
18 // along with Foobar. If not, see <http://www.gnu.org/licenses/>.
21 #include "namedialog.h"
23 NameDialog::NameDialog(QWidget *parent, EmuFrontObject *efObj)
24 : EmuFrontDialog(parent), efObject(efObj)
26 nameLabel = new QLabel(tr("&Name: "));
27 nameEdit = new QLineEdit;
28 nameLabel->setBuddy(nameEdit);
29 buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Abort, Qt::Horizontal);
32 setWindowTitle(tr("Set names"));
35 NameDialog::~NameDialog()
39 /* deleting parenteed QT-objects in heap is not needed here
40 * because when deleting a parent widget
41 * the child widgets will be also deleted
45 void NameDialog::connectSignals()
47 connect(nameEdit, SIGNAL(textChanged(const QString &)), this, SLOT(enableSaveButton(const QString &)));
48 connect(buttonBox, SIGNAL(accepted()), this, SLOT(acceptChanges()));
49 connect(buttonBox, SIGNAL(rejected()), this, SLOT(close()));
52 void NameDialog::layout()
54 QHBoxLayout *topLayout = new QHBoxLayout;
55 topLayout->addWidget(nameLabel);
56 topLayout->addWidget(nameEdit);
58 QHBoxLayout *bottomLayout = new QHBoxLayout;
59 bottomLayout->addWidget(buttonBox);
61 QVBoxLayout *mainLayout = new QVBoxLayout;
62 mainLayout->addLayout(topLayout);
63 mainLayout->addLayout(bottomLayout);
64 setLayout(mainLayout);
67 void NameDialog::acceptChanges()
69 if (nameEdit->text() == 0 || nameEdit->text().trimmed().isEmpty())
71 QMessageBox::warning(this, tr("Invalid input"), tr("Empty string is not accepted as name!"));
75 QString name = nameEdit->text().simplified();
77 emit dataObjectUpdated();
78 efObject = 0; // TODO we should also se efObject to null when user clicks abort
82 void NameDialog::enableSaveButton(const QString &text)
84 //saveButton->setEnabled(!text.isEmpty());
87 void NameDialog::setDataObject(EmuFrontObject *ob)
90 // delete efObject; -> we should not delete the previously referenced data object here, it may be still used in the parent widget
91 // the parent widget will take of destruction
92 // we'll just refresh the name dialog pointer to a new object