Fixed bugs: dialogs remained disabled (signals were not attached to
[emufront] / src / dialogs / executablemaindialog.cpp
1 // EmuFront
2 // Copyright 2010 Mikko Keinänen
3 //
4 // This file is part of EmuFront.
5 //
6 //
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.
11 //
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.
16 //
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/>.
19
20 #include <QtGui>
21 #include "executablemaindialog.h"
22 #include "executableeditdialog.h"
23 #include "../db/dbexecutable.h"
24 #include "../dataobjects/executable.h"
25
26 ExecutableMainDialog::ExecutableMainDialog(QWidget *parent)
27     : DbObjectDialog(parent)
28 {
29     setWindowTitle(tr("Emulators"));
30     dbManager = new DbExecutable(this);
31     initDataTable();
32     initEditDialog();
33     hiddenColumns << DbExecutable::Executable_Id;
34     hiddenColumns << DbExecutable::Executable_TypeId;
35     hiddenColumns << DbExecutable::Executable_SetupId;
36     hideColumns();
37     connectSignals();
38 }
39
40 ExecutableMainDialog::~ExecutableMainDialog()
41 {
42     deleteCurrentObject();
43 }
44
45 void ExecutableMainDialog::initEditDialog()
46 {
47     nameDialog = new ExecutableEditDialog(
48         this, dynamic_cast<Executable*>(dbObject));
49     connectNameDialogSignals();
50 }
51
52 void ExecutableMainDialog::deleteCurrentObject()
53 {
54     if (dbObject) {
55         Executable *exe =  dynamic_cast<Executable*>(dbObject);
56         if (exe) delete exe;
57         else qDebug() << "Failed deleting Executable";
58         dbObject = 0;
59     }
60 }
61
62 void ExecutableMainDialog::cleanUp()
63 {
64     deleteCurrentObject();
65     if (nameDialog) {
66         ExecutableEditDialog *pnd =
67             dynamic_cast<ExecutableEditDialog *>(nameDialog);
68         if (pnd) delete pnd;
69         else qDebug() << "Failed to delete PlatformNameDialog";
70         nameDialog = 0;
71     }
72 }
73
74 EmuFrontObject* ExecutableMainDialog::createObject()
75 {
76     Executable *ex = new Executable;
77     return ex;
78 }