]> Shamusworld >> Repos - schematic/blob - src/mainwin.cpp
Initial commit.
[schematic] / src / mainwin.cpp
1 //
2 // mainwin.cpp - The Supply Chain Manager-O-Matic
3 // by James Hammons
4 // (C) 2012 Underground Software
5 //
6 // JLH = James Hammons <jlhamm@acm.org>
7 //
8 // Who  When        What
9 // ---  ----------  -------------------------------------------------------------
10 // JLH  09/14/2012  Created this file
11 //
12
13 // Uncomment this for debugging...
14 //#define DEBUG
15 //#define DEBUGFOO                              // Various tool debugging...
16 //#define DEBUGTP                               // Toolpalette debugging...
17
18 #include "mainwin.h"
19 #include <QtSql>
20 //#include "main.h"
21 #include "about.h"
22 #include "logindialog.h"
23
24
25 MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
26         loggedInUID(0)
27 {
28         setWindowIcon(QIcon(":/res/schematic.png"));
29         setWindowTitle("SCheMatic");
30
31         setUnifiedTitleAndToolBarOnMac(true);
32
33         // Create actions
34
35         quitAppAct = new QAction(tr("E&xit"), this);
36         quitAppAct->setShortcut(QKeySequence(tr("Ctrl+q")));
37         quitAppAct->setStatusTip(tr("Quit SCheMatic"));
38         connect(quitAppAct, SIGNAL(triggered()), this, SLOT(close()));
39
40         aboutAct = new QAction(QIcon(":/res/schematic.png"), tr("&About..."), this);
41         aboutAct->setStatusTip(tr("Blatant self-promotion"));
42         connect(aboutAct, SIGNAL(triggered()), this, SLOT(ShowAboutWin()));
43
44 //      helpAct = new QAction(QIcon(":/res/vj-icon.png"), tr("&Contents..."), this);
45 //      helpAct->setStatusTip(tr("Help is available, if you should need it"));
46 //      connect(helpAct, SIGNAL(triggered()), this, SLOT(ShowHelpWin()));
47
48         // Create menus & toolbars
49
50         QMenu * menu = menuBar()->addMenu(tr("&File"));
51 //      fileMenu->addAction(powerAct);
52 //      fileMenu->addAction(pauseAct);
53 //      fileMenu->addAction(frameAdvanceAct);
54 //      fileMenu->addAction(filePickAct);
55 //      fileMenu->addAction(useCDAct);
56 //      fileMenu->addAction(configAct);
57         menu->addAction(quitAppAct);
58
59         menu = menuBar()->addMenu(tr("&Help"));
60 //      menu->addAction(helpAct);
61         menu->addAction(aboutAct);
62
63         QToolBar * toolbar = addToolBar(tr("Stuff"));
64 //      toolbar->addAction(powerAct);
65 //      toolbar->addAction(pauseAct);
66 //      toolbar->addAction(filePickAct);
67 //      toolbar->addAction(useCDAct);
68 //      toolbar->addSeparator();
69 //      toolbar->addAction(x1Act);
70 //      toolbar->addAction(x2Act);
71 //      toolbar->addAction(x3Act);
72 //      toolbar->addSeparator();
73 //      toolbar->addAction(ntscAct);
74 //      toolbar->addAction(palAct);
75 //      toolbar->addSeparator();
76 //      toolbar->addAction(blurAct);
77 //      toolbar->addAction(fullScreenAct);
78
79         //      Create status bar
80         statusBar()->showMessage(tr("Ready"));
81
82         ReadSettings();
83
84         // Finally, set up database connection
85
86         QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
87         db.setHostName("localhost");
88         db.setDatabaseName("schematic");
89         db.setUserName("scm_user");
90         db.setPassword("scm_user");
91         bool ok = db.open();
92
93 #warning "!!! NEED TO SET UP DB SETUP DIALOG IF CONNECTION FAILED !!!"
94
95
96 //      printf("Database connection was %sopened successfully.\n", (ok ? "" : "NOT "));
97
98         // Do Login dialog
99         LoginDialog login;
100         bool done = false;
101
102         do
103         {
104                 bool accept = login.exec();
105
106                 // Check to see if user cancelled out
107                 if (!accept)
108                         done = true;
109                 else
110                 {
111                         // Search DB for this username/login pair
112                         QSqlQuery query("SELECT UID FROM User WHERE Login=? AND Password=?");
113                         query.addBindValue(login.edit1->text());
114                         query.addBindValue(login.edit2->text());
115                         query.exec();
116
117                         while (query.next())
118                         {
119                                 // We have a winner!
120                                 loggedInUID = query.value(0).toInt();
121                                 done = true;
122                         }
123                 }
124         }
125         while (!done);
126 }
127
128
129 void MainWindow::closeEvent(QCloseEvent * event)
130 {
131         WriteSettings();
132         event->accept(); // ignore() if can't close for some reason
133 }
134
135
136 void MainWindow::Open(void)
137 {
138 }
139
140
141 void MainWindow::ShowAboutWin(void)
142 {
143         aboutWin->show();
144 }
145
146
147 void MainWindow::ReadSettings(void)
148 {
149         QSettings settings("Underground Software", "SCheMatic");
150         QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
151         QSize size = settings.value("size", QSize(400, 400)).toSize();
152         resize(size);
153         move(pos);
154 //      pos = settings.value("charWndPos", QPoint(0, 0)).toPoint();
155 //      size = settings.value("charWndSize", QSize(200, 200)).toSize();
156 //      ((TTEdit *)qApp)->charWnd->resize(size);
157 //      ((TTEdit *)qApp)->charWnd->move(pos);
158 }
159
160
161 void MainWindow::WriteSettings(void)
162 {
163         QSettings settings("Underground Software", "SCheMatic");
164         settings.setValue("pos", pos());
165         settings.setValue("size", size());
166 //      settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
167 //      settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
168 }