#include "configdialog.h"
#include "logindialog.h"
#include "newvendordialog.h"
+#include "scmwidget.h"
#include "sqlsettingsdialog.h"
#include "vendorclassdialog.h"
MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
+ scmWidget(new SCMWidget(this)),
+ boldFont(new QFont),
loggedInUID(0)
{
setWindowIcon(QIcon(":/res/schematic.png"));
statusBar()->showMessage(tr("Ready"));
ReadSettings();
+ boldFont->setBold(true);
// Finally, set up database connection
db.setPassword(dbPassword);
ok = db.open();
+//printf("Error: %s\n", db.lastError().databaseText().toAscii().data());
+//printf("Error: %s\n", db.lastError().driverText().toAscii().data());
+
// If unsuccessful, run the SQL settings/test dialog
if (!ok)
{
while (!ok);
// Do Login dialog
- LoginDialog login;
+ LoginDialog loginDlg;
bool done = false;
do
{
- bool accept = login.exec();
+ bool accept = loginDlg.exec();
// Check to see if user cancelled out
if (!accept)
else
{
// Search DB for this username/login pair
- QSqlQuery query("SELECT UID FROM User WHERE Login=? AND Password=?");
- query.addBindValue(login.edit1->text());
- query.addBindValue(login.edit2->text());
+ QSqlQuery query("SELECT UID, name, login FROM User WHERE Login=? AND Password=?");
+ query.addBindValue(loginDlg.edit1->text());
+ query.addBindValue(loginDlg.edit2->text());
query.exec();
while (query.next())
{
// We have a winner!
loggedInUID = query.value(0).toInt();
+ fullName = query.value(1).toString();
+ login = query.value(2).toString();
done = true;
}
}
}
while (!done);
+
+ QString s = QString("User: %1 (%2)").arg(fullName).arg(login);
+ scmWidget->username->setText(s);
+ setCentralWidget(scmWidget);
}
void MainWindow::HandleNewVendorDialog(void)
{
NewVendorDialog dialog(this);
+ FillVendorLevelCombo(dialog.combo1);
+ FillContactTypeCombo(dialog.contact->field1);
+ FillVendorClassList(dialog.list);
if (!dialog.exec())
return;
+
+ // Presumably, the user has given us good data, so we try to populate the
+ // database with this new vendor data.
+ QSqlQuery query1("INSERT INTO VALUES (?, ?, ?)");
+
+
+}
+
+
+void MainWindow::FillVendorLevelCombo(QComboBox * combo)
+{
+ QSqlQuery query("SELECT VLID, Description FROM VendorLevel");
+ query.exec();
+
+ while (query.next())
+ {
+ int vlid = query.value(0).toInt();
+ QString description = query.value(1).toString();
+
+ combo->addItem(description, vlid);
+ }
+}
+
+
+void MainWindow::FillContactTypeCombo(QComboBox * combo)
+{
+ QSqlQuery query("SELECT CTID, Description FROM ContactType");
+ query.exec();
+
+ while (query.next())
+ {
+ int ctid = query.value(0).toInt();
+ QString description = query.value(1).toString();
+
+ combo->addItem(description, ctid);
+ }
+}
+
+
+void MainWindow::FillVendorClassList(QListWidget * list)
+{
+ std::vector<VendorType> groupList;
+
+ // Pull in definitions from DB for Vendor Classes/Groups
+ QSqlQuery query1("SELECT vgid, description FROM VendorGroup ORDER BY seqNo");
+ query1.exec();
+
+ while (query1.next())
+ {
+ VendorType v;
+ v.key = query1.value(0).toInt();
+ v.description = query1.value(1).toString();
+ groupList.push_back(v);
+ }
+
+ QSqlQuery query2("SELECT vtid, vgid, description FROM VendorType ORDER BY seqNo");
+ query2.exec();
+
+ int previousID = -1, groupListIndex = 0;
+ QListWidgetItem * item;
+
+ while (query2.next())
+ {
+// VendorType v;
+ int vtid = query2.value(0).toInt();
+ int vgid = query2.value(1).toInt();
+ QString description = query2.value(2).toString();
+
+ // Check to see if we need to insert new header yet.
+ // If we're not still in same group, push the next group header into the list
+ // and continue
+ if (previousID != vgid)
+ {
+ item = new QListWidgetItem(groupList[groupListIndex].description);
+ item->setData(Qt::UserRole, groupList[groupListIndex++].key);
+ item->setFont(*boldFont);
+ list->addItem(item);
+ previousID = vgid;
+ }
+
+ item = new QListWidgetItem(description);
+ item->setData(Qt::UserRole, vtid);
+ item->setCheckState(Qt::Unchecked);
+ list->addItem(item);
+ }
}