]> Shamusworld >> Repos - schematic/blobdiff - src/mainwin.cpp
Added a bunch of new functionality
[schematic] / src / mainwin.cpp
index b7e174818d91a468e5b7156eeeff78a957d6b3c7..44161ba81c6f6deec3bfffd6e7a82c9c21f2f870 100644 (file)
 //#define DEBUGTP                              // Toolpalette debugging...
 
 #include "mainwin.h"
-#include <QtSql>
-//#include "main.h"
 #include "about.h"
+#include "configdialog.h"
 #include "logindialog.h"
+#include "newvendordialog.h"
+#include "sqlsettingsdialog.h"
+#include "vendorclassdialog.h"
 
 
 MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
@@ -41,6 +43,18 @@ MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
        aboutAct->setStatusTip(tr("Blatant self-promotion"));
        connect(aboutAct, SIGNAL(triggered()), this, SLOT(ShowAboutWin()));
 
+       configAct = new QAction(QIcon(":/res/schematic.png"), tr("&Configure..."), this);
+       configAct->setStatusTip(tr("Configure SCheMatic"));
+       connect(configAct, SIGNAL(triggered()), this, SLOT(HandleConfigDialog()));
+
+       vendorClassAct = new QAction(QIcon(":/res/schematic.png"), tr("&Edit Vendor Classes..."), this);
+       vendorClassAct->setStatusTip(tr("Edit Vendor Classes"));
+       connect(vendorClassAct, SIGNAL(triggered()), this, SLOT(HandleVendorClassDialog()));
+
+       newVendorAct = new QAction(QIcon(":/res/schematic.png"), tr("&Add Vendor..."), this);
+       newVendorAct->setStatusTip(tr("Create a new vendor"));
+       connect(newVendorAct, SIGNAL(triggered()), this, SLOT(HandleNewVendorDialog()));
+
 //     helpAct = new QAction(QIcon(":/res/vj-icon.png"), tr("&Contents..."), this);
 //     helpAct->setStatusTip(tr("Help is available, if you should need it"));
 //     connect(helpAct, SIGNAL(triggered()), this, SLOT(ShowHelpWin()));
@@ -56,6 +70,11 @@ MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
 //     fileMenu->addAction(configAct);
        menu->addAction(quitAppAct);
 
+       menu = menuBar()->addMenu(tr("&Edit"));
+       menu->addAction(configAct);
+       menu->addAction(vendorClassAct);
+       menu->addAction(newVendorAct);
+
        menu = menuBar()->addMenu(tr("&Help"));
 //     menu->addAction(helpAct);
        menu->addAction(aboutAct);
@@ -83,17 +102,43 @@ MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
 
        // Finally, set up database connection
 
-       QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
-       db.setHostName("localhost");
-       db.setDatabaseName("schematic");
-       db.setUserName("scm_user");
-       db.setPassword("scm_user");
-       bool ok = db.open();
+       db = QSqlDatabase::addDatabase("QMYSQL");
+       bool ok = false;
 
-#warning "!!! NEED TO SET UP DB SETUP DIALOG IF CONNECTION FAILED !!!"
+       // Prime the SQL Settings dialog (in case we need it)
 
+       SQLSettingsDialog sqlSettings;
+       sqlSettings.edit1->setText(dbHostName);
+       sqlSettings.edit2->setText(dbName);
+       sqlSettings.edit3->setText(dbUserName);
+       sqlSettings.edit4->setText(dbPassword);
 
-//     printf("Database connection was %sopened successfully.\n", (ok ? "" : "NOT "));
+       do
+       {
+               // Set up the DB connection with saved settings
+               db.setHostName(dbHostName);
+               db.setDatabaseName(dbName);
+               db.setUserName(dbUserName);
+               db.setPassword(dbPassword);
+               ok = db.open();
+
+               // If unsuccessful, run the SQL settings/test dialog
+               if (!ok)
+               {
+                       if (sqlSettings.exec())
+                       {
+                               // User thinks this will work (hit OK button), so prime the variables
+                               // for the next attempt
+                               dbHostName = sqlSettings.edit1->text();
+                               dbName = sqlSettings.edit2->text();
+                               dbUserName = sqlSettings.edit3->text();
+                               dbPassword = sqlSettings.edit4->text();
+                       }
+                       else
+                               return;                                         // User cancelled the dialog, so quit
+               }
+       }
+       while (!ok);
 
        // Do Login dialog
        LoginDialog login;
@@ -144,6 +189,31 @@ void MainWindow::ShowAboutWin(void)
 }
 
 
+void MainWindow::HandleConfigDialog(void)
+{
+       ConfigDialog dialog(this);
+       dialog.exec();
+}
+
+
+void MainWindow::HandleVendorClassDialog(void)
+{
+       VendorClassDialog dialog(this);
+
+       if (!dialog.exec())
+               return;
+}
+
+
+void MainWindow::HandleNewVendorDialog(void)
+{
+       NewVendorDialog dialog(this);
+
+       if (!dialog.exec())
+               return;
+}
+
+
 void MainWindow::ReadSettings(void)
 {
        QSettings settings("Underground Software", "SCheMatic");
@@ -155,6 +225,11 @@ void MainWindow::ReadSettings(void)
 //     size = settings.value("charWndSize", QSize(200, 200)).toSize();
 //     ((TTEdit *)qApp)->charWnd->resize(size);
 //     ((TTEdit *)qApp)->charWnd->move(pos);
+
+       dbHostName = settings.value("dbHostName", "localhost").toString();
+       dbName = settings.value("dbName", "schematic").toString();
+       dbUserName = settings.value("dbUserName", "scm_user").toString();
+       dbPassword = settings.value("dbPassword", "scm_user").toString();
 }
 
 
@@ -165,4 +240,10 @@ void MainWindow::WriteSettings(void)
        settings.setValue("size", size());
 //     settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
 //     settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
+
+       settings.setValue("dbHostName", dbHostName);
+       settings.setValue("dbName", dbName);
+       settings.setValue("dbUserName", dbUserName);
+       settings.setValue("dbPassword", dbPassword);
 }
+