2 // mainwin.cpp - The Supply Chain Manager-O-Matic
4 // (C) 2012 Underground Software
6 // JLH = James Hammons <jlhamm@acm.org>
9 // --- ---------- -------------------------------------------------------------
10 // JLH 09/14/2012 Created this file
13 // Uncomment this for debugging...
15 //#define DEBUGFOO // Various tool debugging...
16 //#define DEBUGTP // Toolpalette debugging...
20 #include "configdialog.h"
21 #include "logindialog.h"
22 #include "newvendordialog.h"
23 #include "sqlsettingsdialog.h"
24 #include "vendorclassdialog.h"
27 MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
30 setWindowIcon(QIcon(":/res/schematic.png"));
31 setWindowTitle("SCheMatic");
33 setUnifiedTitleAndToolBarOnMac(true);
37 quitAppAct = new QAction(tr("E&xit"), this);
38 quitAppAct->setShortcut(QKeySequence(tr("Ctrl+q")));
39 quitAppAct->setStatusTip(tr("Quit SCheMatic"));
40 connect(quitAppAct, SIGNAL(triggered()), this, SLOT(close()));
42 aboutAct = new QAction(QIcon(":/res/schematic.png"), tr("&About..."), this);
43 aboutAct->setStatusTip(tr("Blatant self-promotion"));
44 connect(aboutAct, SIGNAL(triggered()), this, SLOT(ShowAboutWin()));
46 configAct = new QAction(QIcon(":/res/schematic.png"), tr("&Configure..."), this);
47 configAct->setStatusTip(tr("Configure SCheMatic"));
48 connect(configAct, SIGNAL(triggered()), this, SLOT(HandleConfigDialog()));
50 vendorClassAct = new QAction(QIcon(":/res/schematic.png"), tr("&Edit Vendor Classes..."), this);
51 vendorClassAct->setStatusTip(tr("Edit Vendor Classes"));
52 connect(vendorClassAct, SIGNAL(triggered()), this, SLOT(HandleVendorClassDialog()));
54 newVendorAct = new QAction(QIcon(":/res/schematic.png"), tr("&Add Vendor..."), this);
55 newVendorAct->setStatusTip(tr("Create a new vendor"));
56 connect(newVendorAct, SIGNAL(triggered()), this, SLOT(HandleNewVendorDialog()));
58 // helpAct = new QAction(QIcon(":/res/vj-icon.png"), tr("&Contents..."), this);
59 // helpAct->setStatusTip(tr("Help is available, if you should need it"));
60 // connect(helpAct, SIGNAL(triggered()), this, SLOT(ShowHelpWin()));
62 // Create menus & toolbars
64 QMenu * menu = menuBar()->addMenu(tr("&File"));
65 // fileMenu->addAction(powerAct);
66 // fileMenu->addAction(pauseAct);
67 // fileMenu->addAction(frameAdvanceAct);
68 // fileMenu->addAction(filePickAct);
69 // fileMenu->addAction(useCDAct);
70 // fileMenu->addAction(configAct);
71 menu->addAction(quitAppAct);
73 menu = menuBar()->addMenu(tr("&Edit"));
74 menu->addAction(configAct);
75 menu->addAction(vendorClassAct);
76 menu->addAction(newVendorAct);
78 menu = menuBar()->addMenu(tr("&Help"));
79 // menu->addAction(helpAct);
80 menu->addAction(aboutAct);
82 QToolBar * toolbar = addToolBar(tr("Stuff"));
83 // toolbar->addAction(powerAct);
84 // toolbar->addAction(pauseAct);
85 // toolbar->addAction(filePickAct);
86 // toolbar->addAction(useCDAct);
87 // toolbar->addSeparator();
88 // toolbar->addAction(x1Act);
89 // toolbar->addAction(x2Act);
90 // toolbar->addAction(x3Act);
91 // toolbar->addSeparator();
92 // toolbar->addAction(ntscAct);
93 // toolbar->addAction(palAct);
94 // toolbar->addSeparator();
95 // toolbar->addAction(blurAct);
96 // toolbar->addAction(fullScreenAct);
99 statusBar()->showMessage(tr("Ready"));
103 // Finally, set up database connection
105 db = QSqlDatabase::addDatabase("QMYSQL");
108 // Prime the SQL Settings dialog (in case we need it)
110 SQLSettingsDialog sqlSettings;
111 sqlSettings.edit1->setText(dbHostName);
112 sqlSettings.edit2->setText(dbName);
113 sqlSettings.edit3->setText(dbUserName);
114 sqlSettings.edit4->setText(dbPassword);
118 // Set up the DB connection with saved settings
119 db.setHostName(dbHostName);
120 db.setDatabaseName(dbName);
121 db.setUserName(dbUserName);
122 db.setPassword(dbPassword);
125 // If unsuccessful, run the SQL settings/test dialog
128 if (sqlSettings.exec())
130 // User thinks this will work (hit OK button), so prime the variables
131 // for the next attempt
132 dbHostName = sqlSettings.edit1->text();
133 dbName = sqlSettings.edit2->text();
134 dbUserName = sqlSettings.edit3->text();
135 dbPassword = sqlSettings.edit4->text();
138 return; // User cancelled the dialog, so quit
149 bool accept = login.exec();
151 // Check to see if user cancelled out
156 // Search DB for this username/login pair
157 QSqlQuery query("SELECT UID FROM User WHERE Login=? AND Password=?");
158 query.addBindValue(login.edit1->text());
159 query.addBindValue(login.edit2->text());
165 loggedInUID = query.value(0).toInt();
174 void MainWindow::closeEvent(QCloseEvent * event)
177 event->accept(); // ignore() if can't close for some reason
181 void MainWindow::Open(void)
186 void MainWindow::ShowAboutWin(void)
192 void MainWindow::HandleConfigDialog(void)
194 ConfigDialog dialog(this);
199 void MainWindow::HandleVendorClassDialog(void)
201 VendorClassDialog dialog(this);
208 void MainWindow::HandleNewVendorDialog(void)
210 NewVendorDialog dialog(this);
217 void MainWindow::ReadSettings(void)
219 QSettings settings("Underground Software", "SCheMatic");
220 QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
221 QSize size = settings.value("size", QSize(400, 400)).toSize();
224 // pos = settings.value("charWndPos", QPoint(0, 0)).toPoint();
225 // size = settings.value("charWndSize", QSize(200, 200)).toSize();
226 // ((TTEdit *)qApp)->charWnd->resize(size);
227 // ((TTEdit *)qApp)->charWnd->move(pos);
229 dbHostName = settings.value("dbHostName", "localhost").toString();
230 dbName = settings.value("dbName", "schematic").toString();
231 dbUserName = settings.value("dbUserName", "scm_user").toString();
232 dbPassword = settings.value("dbPassword", "scm_user").toString();
236 void MainWindow::WriteSettings(void)
238 QSettings settings("Underground Software", "SCheMatic");
239 settings.setValue("pos", pos());
240 settings.setValue("size", size());
241 // settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
242 // settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
244 settings.setValue("dbHostName", dbHostName);
245 settings.setValue("dbName", dbName);
246 settings.setValue("dbUserName", dbUserName);
247 settings.setValue("dbPassword", dbPassword);