2 // Copyright 2010 Mikko Keinänen
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 version 2 as published by
9 // the Free Software Foundation and appearing in the file gpl.txt included in the
10 // packaging of this file.
12 // EmuFront 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 EmuFront. If not, see <http://www.gnu.org/licenses/>.
21 #include "namedialog.h"
23 NameDialog::NameDialog(QWidget *parent, EmuFrontObject *efObj)
24 : DataObjectEditDialog(parent, efObj)
26 nameLabel = new QLabel(tr("&Name: "));
27 nameEdit = new QLineEdit;
28 nameLabel->setBuddy(nameEdit);
32 setWindowTitle(tr("Set names"));
33 setFocusProxy(nameEdit);
38 NameDialog::~NameDialog()
40 // should be deleted in implementing classes
43 /* no need to delete parented QT-objects in heap here
44 * because when deleting a parent widget
45 * the child widgets will be also deleted
49 void NameDialog::connectSignals()
51 DataObjectEditDialog::connectSignals();
52 connect(nameEdit, SIGNAL(textChanged(const QString &)), this, SLOT(enableSaveButton(const QString &)));
55 void NameDialog::layout()
57 QHBoxLayout *topLayout = new QHBoxLayout;
58 topLayout->addWidget(nameLabel);
59 topLayout->addWidget(nameEdit);
61 QHBoxLayout *bottomLayout = new QHBoxLayout;
62 bottomLayout->addWidget(buttonBox);
63 buttonBox->setFocusPolicy(Qt::NoFocus);
65 QVBoxLayout *mainLayout = new QVBoxLayout;
66 mainLayout->addLayout(topLayout);
67 mainLayout->addLayout(bottomLayout);
68 setLayout(mainLayout);
71 void NameDialog::acceptChanges()
73 if (nameEdit->text() == 0 || nameEdit->text().trimmed().isEmpty())
75 QMessageBox::warning(this, tr("Invalid input"), tr("Empty string is not accepted as name!"));
79 QString name = nameEdit->text().simplified();
80 qDebug() << "We have a name " << name << ".";
81 if (name != efObject->getName()) {
83 emit dataObjectUpdated();
85 qDebug() << "Signal emitted.";
86 efObject = 0; // TODO we should also set efObject to null when user clicks abort
90 void NameDialog::enableSaveButton(const QString &/*text*/)
92 //saveButton->setEnabled(!text.isEmpty());
95 void NameDialog::setDataObject(EmuFrontObject *ob)
98 // delete efObject; -> we should not delete the previously referenced data object here, it
99 // may be still used in the parent widget
100 // the parent widget will take care of destruction
101 // we'll just refresh the name dialog pointer to a new object
105 void NameDialog::clear()