]> Shamusworld >> Repos - schematic/commitdiff
Added a bunch of new functionality
authorShamus Hammons <jlhamm@acm.org>
Fri, 21 Sep 2012 18:29:21 +0000 (13:29 -0500)
committerShamus Hammons <jlhamm@acm.org>
Fri, 21 Sep 2012 18:29:21 +0000 (13:29 -0500)
Added Vendor Class dialog, New Vendor dialog, some new UI files, and an
SQL configuration dialog for the case where it hasn't been configured
or misconfigured. Also new main icon.

19 files changed:
database-schema.txt
new-vendor.ui [new file with mode: 0644]
phase1.ui
res/schematic.png
schematic [deleted file]
schematic-schema.sql
schematic.pro
src/about.cpp
src/logindialog.cpp
src/logindialog.h
src/mainwin.cpp
src/mainwin.h
src/newvendordialog.cpp [new file with mode: 0644]
src/newvendordialog.h [new file with mode: 0644]
src/sqlsettingsdialog.cpp [new file with mode: 0644]
src/sqlsettingsdialog.h [new file with mode: 0644]
src/vendorclassdialog.cpp [new file with mode: 0644]
src/vendorclassdialog.h [new file with mode: 0644]
vendor-classes.ui [new file with mode: 0644]

index a7bc7415db41bee9bfdf0b86d17920b2eb96bf2a..3b5a34bafb70a1671cf2d6f6cd77f2d35f746cbb 100644 (file)
@@ -4,28 +4,28 @@ Supply Chain Management Database (SCheMatic: The Supply Chain Manager-O-Matic)
 TABLES:
 
 Vendor
-VID (P-key) | VLID | Name
-CREATE TABLE Vendor (vid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vlid INT, name VARCHAR(100), FOREIGN KEY (vlid) REFERENCES VendorLevel(vlid)) ENGINE=INNODB;
+VID (P-key) | VLID | signedNDA | Name
+CREATE TABLE Vendor (vid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vlid INT, signedNDA TINYINT(1) NOT NULL DEFAULT 0, name VARCHAR(100), FOREIGN KEY (vlid) REFERENCES VendorLevel(vlid)) ENGINE=INNODB;
 
 VendorLevel
 VLID (P-key) | VendorUseable | Color | Description
 CREATE TABLE VendorLevel (vlid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vendorUsable TINYINT(1) NOT NULL DEFAULT 0, color INT(4), description VARCHAR(100)) ENGINE=INNODB;
 
 VendorType
-VTID (P-key) | VGID | Description
-CREATE TABLE VendorType (vtid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vgid INT, description VARCHAR(100), FOREIGN KEY (vgid) REFERENCES VendorGroup(vgid)) ENGINE=INNODB;
+VTID (P-key) | VGID | SeqNo | Description
+CREATE TABLE VendorType (vtid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vgid INT, seqNo INT(4) NOT NULL, description VARCHAR(100), FOREIGN KEY (vgid) REFERENCES VendorGroup(vgid)) ENGINE=INNODB;
 
 VendorGroup
-VGID (P-key) | Description
-CREATE TABLE VendorGroup (vgid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, description VARCHAR(100)) ENGINE=INNODB;
+VGID (P-key) | SeqNo | Description
+CREATE TABLE VendorGroup (vgid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, seqNo INT(4) NOT NULL, description VARCHAR(100)) ENGINE=INNODB;
 
 VendorSpecificTypes
 VID (multi) | VTID (multi)
 CREATE TABLE VendorSpecificTypes (vid INT, vtid INT, FOREIGN KEY (vid) REFERENCES Vendor(vid), FOREIGN KEY (vtid) REFERENCES VendorType(vtid)) ENGINE=INNODB;
 
 Location
-LID (P-key) | VID | Description
-CREATE TABLE Location () ENGINE=INNODB;
+LID (P-key) | VID | Address | City | State | Country | Code
+CREATE TABLE Location (lid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vid INT, address VARCHAR(100), city VARCHAR(64), state VARCHAR(64), country VARCHAR(64), code VARCHAR(32), FOREIGN KEY (vid) REFERENCES Vendor(vid)) ENGINE=INNODB;
 
 Contact
 CID (P-key) | VID | CTID | Name | Email | Address | Phone1 | Phone2 | Fax
@@ -44,12 +44,12 @@ UCID | PrivilegeLevel | Description
 CREATE TABLE UserClass (ucid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, privilegeLevel INT NOT NULL DEFAULT 0, description VARCHAR(100)) ENGINE=INNODB;
 
 PurchaseOrder
-POID (P-key) | VID | Closed | Description
-CREATE TABLE PurchaseOrder (poid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vid INT, closed TINYINT(1) NOT NULL DEFAULT 0, description VARCHAR(200), FOREIGN KEY (vid) REFERENCES Vendor(vid)) ENGINE=INNODB;
+POID (P-key) | VID | Closed | PONumber | OriginalDate | AdjustedDate | Description
+CREATE TABLE PurchaseOrder (poid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vid INT, closed TINYINT(1) NOT NULL DEFAULT 0, poNumber VARCHAR(100), originalDate DATE, adjustedDate DATE, description VARCHAR(200), FOREIGN KEY (vid) REFERENCES Vendor(vid)) ENGINE=INNODB;
 
 Documents
-DID (P-key) | DTID | VID | POID | Document
-CREATE TABLE Documents (did INT NOT NULL PRIMARY KEY AUTO_INCREMENT, dtid INT, vid INT, poid INT, document LONGBLOB, FOREIGN KEY (dtid) REFERENCES DocumentType(dtid), FOREIGN KEY (vid) REFERENCES Vendor(vid), FOREIGN KEY (poid) REFERENCES PurchaseOrder(poid)) ENGINE=INNODB;
+DID (P-key) | DTID | VID | POID | Filename | Document
+CREATE TABLE Documents (did INT NOT NULL PRIMARY KEY AUTO_INCREMENT, dtid INT, vid INT, poid INT, filename VARCHAR(256), document LONGBLOB, FOREIGN KEY (dtid) REFERENCES DocumentType(dtid)) ENGINE=INNODB;
 
 DocumentType
 DTID (P-key) | Description
diff --git a/new-vendor.ui b/new-vendor.ui
new file mode 100644 (file)
index 0000000..a6d4399
--- /dev/null
@@ -0,0 +1,634 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>728</width>
+    <height>652</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>New Vendor</string>
+  </property>
+  <widget class="QDialogButtonBox" name="buttonBox">
+   <property name="geometry">
+    <rect>
+     <x>530</x>
+     <y>600</y>
+     <width>171</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="orientation">
+    <enum>Qt::Horizontal</enum>
+   </property>
+   <property name="standardButtons">
+    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+   </property>
+  </widget>
+  <widget class="QGroupBox" name="groupBox">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>160</y>
+     <width>421</width>
+     <height>171</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Primary Location</string>
+   </property>
+   <widget class="QWidget" name="formLayoutWidget_2">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>30</y>
+      <width>401</width>
+      <height>141</height>
+     </rect>
+    </property>
+    <layout class="QFormLayout" name="formLayout_2">
+     <item row="0" column="0">
+      <widget class="QLabel" name="label_11">
+       <property name="text">
+        <string>Address:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="lineEdit_8"/>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="label_12">
+       <property name="text">
+        <string>City:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="label_13">
+       <property name="text">
+        <string>State:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QLineEdit" name="lineEdit_9"/>
+     </item>
+     <item row="3" column="1">
+      <widget class="QLineEdit" name="lineEdit_10"/>
+     </item>
+     <item row="3" column="0">
+      <widget class="QLabel" name="label_14">
+       <property name="text">
+        <string>Country:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QLineEdit" name="lineEdit_11"/>
+     </item>
+     <item row="4" column="0">
+      <widget class="QLabel" name="label_7">
+       <property name="text">
+        <string>Postal Code:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="1">
+      <widget class="QLineEdit" name="lineEdit_6"/>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_2">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>350</y>
+     <width>421</width>
+     <height>231</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Primary Contact</string>
+   </property>
+   <widget class="QWidget" name="formLayoutWidget">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>30</y>
+      <width>401</width>
+      <height>201</height>
+     </rect>
+    </property>
+    <layout class="QFormLayout" name="formLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="label_3">
+       <property name="text">
+        <string>Type:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="label_4">
+       <property name="text">
+        <string>Name:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QLineEdit" name="lineEdit_4"/>
+     </item>
+     <item row="3" column="1">
+      <widget class="QLineEdit" name="lineEdit_5"/>
+     </item>
+     <item row="3" column="0">
+      <widget class="QLabel" name="label_6">
+       <property name="text">
+        <string>Address:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QLineEdit" name="lineEdit_3"/>
+     </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="label_5">
+       <property name="text">
+        <string>Email:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="0">
+      <widget class="QLabel" name="label_8">
+       <property name="text">
+        <string>Phone 1:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="5" column="0">
+      <widget class="QLabel" name="label_15">
+       <property name="text">
+        <string>Phone 2:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="1">
+      <widget class="QLineEdit" name="lineEdit_7"/>
+     </item>
+     <item row="5" column="1">
+      <widget class="QLineEdit" name="lineEdit_12"/>
+     </item>
+     <item row="6" column="1">
+      <widget class="QLineEdit" name="lineEdit_13"/>
+     </item>
+     <item row="6" column="0">
+      <widget class="QLabel" name="label_16">
+       <property name="text">
+        <string>Fax:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QComboBox" name="comboBox">
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_3">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>10</y>
+     <width>421</width>
+     <height>141</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Vendor</string>
+   </property>
+   <widget class="QWidget" name="formLayoutWidget_3">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>40</y>
+      <width>401</width>
+      <height>61</height>
+     </rect>
+    </property>
+    <layout class="QFormLayout" name="formLayout_3">
+     <property name="fieldGrowthPolicy">
+      <enum>QFormLayout::ExpandingFieldsGrow</enum>
+     </property>
+     <item row="1" column="0">
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Name:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QLineEdit" name="lineEdit"/>
+     </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>Level:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QComboBox" name="comboBox_2"/>
+     </item>
+    </layout>
+   </widget>
+   <widget class="QCheckBox" name="checkBox_3">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>110</y>
+      <width>141</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>NDA Signed</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_4">
+   <property name="geometry">
+    <rect>
+     <x>440</x>
+     <y>10</y>
+     <width>281</width>
+     <height>581</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Vendor Classes</string>
+   </property>
+   <widget class="QListWidget" name="listWidget">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>40</y>
+      <width>256</width>
+      <height>531</height>
+     </rect>
+    </property>
+    <item>
+     <property name="text">
+      <string>Machine</string>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Cutter</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Sheet Metal</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>EDM Wire</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>CNC</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Casting</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Electronic Parts</string>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Distributor</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Manufacturer</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Broker Grey</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Representative</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Printed Circuit Boards</string>
+     </property>
+     <property name="flags">
+      <set>ItemIsSelectable|ItemIsDragEnabled|ItemIsEnabled</set>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>PCB</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>PCBA</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Testing</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Raw Materials</string>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Metal</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Plastic</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Extruded</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Lenses</string>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Distributor</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Manufacturer</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Representative</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Filters</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Cubes</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Lenses</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>COTS</string>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Screws</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>O-Ring</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Switches</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Captive Fasteners</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Springs &amp; Pins</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Retaining Rings</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Coatings</string>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Anodized</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Nickel</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+    <item>
+     <property name="text">
+      <string>Paint</string>
+     </property>
+     <property name="checkState">
+      <enum>Unchecked</enum>
+     </property>
+    </item>
+   </widget>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
index 768c40c74e981a41963115b01354993be161765d..380c1156112a103b4cad5c57df14421fa5753b17 100644 (file)
--- a/phase1.ui
+++ b/phase1.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>932</width>
-    <height>626</height>
+    <height>826</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -17,8 +17,8 @@
    <widget class="QTextBrowser" name="textBrowser">
     <property name="geometry">
      <rect>
-      <x>570</x>
-      <y>410</y>
+      <x>790</x>
+      <y>230</y>
       <width>141</width>
       <height>111</height>
      </rect>
      <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
 &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
 p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Here's some stuff to look at, isn't it purty? :-)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;Still need Action List &amp;amp; Notes&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
    </widget>
    <widget class="QLabel" name="label">
     <property name="geometry">
      <rect>
-      <x>10</x>
+      <x>60</x>
       <y>50</y>
       <width>221</width>
       <height>16</height>
@@ -85,37 +85,11 @@ p, li { white-space: pre-wrap; }
      <enum>Qt::Horizontal</enum>
     </property>
    </widget>
-   <widget class="QLabel" name="label_7">
-    <property name="geometry">
-     <rect>
-      <x>20</x>
-      <y>230</y>
-      <width>61</width>
-      <height>14</height>
-     </rect>
-    </property>
-    <property name="text">
-     <string>Contact1:</string>
-    </property>
-   </widget>
-   <widget class="QLineEdit" name="lineEdit_6">
-    <property name="geometry">
-     <rect>
-      <x>90</x>
-      <y>230</y>
-      <width>221</width>
-      <height>22</height>
-     </rect>
-    </property>
-    <property name="text">
-     <string>Title, email, phone, fax, etc.</string>
-    </property>
-   </widget>
    <widget class="QCheckBox" name="checkBox">
     <property name="geometry">
      <rect>
-      <x>90</x>
-      <y>200</y>
+      <x>10</x>
+      <y>80</y>
       <width>121</width>
       <height>21</height>
      </rect>
@@ -124,93 +98,6 @@ p, li { white-space: pre-wrap; }
      <string>NDA Signed</string>
     </property>
    </widget>
-   <widget class="QWidget" name="formLayoutWidget">
-    <property name="geometry">
-     <rect>
-      <x>10</x>
-      <y>80</y>
-      <width>281</width>
-      <height>111</height>
-     </rect>
-    </property>
-    <layout class="QFormLayout" name="formLayout">
-     <item row="0" column="0">
-      <widget class="QLabel" name="label_3">
-       <property name="text">
-        <string>Address:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1">
-      <widget class="QLineEdit" name="lineEdit_2"/>
-     </item>
-     <item row="1" column="0">
-      <widget class="QLabel" name="label_4">
-       <property name="text">
-        <string>City:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="0">
-      <widget class="QLabel" name="label_5">
-       <property name="text">
-        <string>State:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="1">
-      <widget class="QLineEdit" name="lineEdit_4"/>
-     </item>
-     <item row="3" column="1">
-      <widget class="QLineEdit" name="lineEdit_5"/>
-     </item>
-     <item row="3" column="0">
-      <widget class="QLabel" name="label_6">
-       <property name="text">
-        <string>ZIP:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="1">
-      <widget class="QLineEdit" name="lineEdit_3"/>
-     </item>
-    </layout>
-   </widget>
-   <widget class="QLabel" name="label_8">
-    <property name="geometry">
-     <rect>
-      <x>20</x>
-      <y>250</y>
-      <width>61</width>
-      <height>14</height>
-     </rect>
-    </property>
-    <property name="text">
-     <string>Contact2:</string>
-    </property>
-   </widget>
-   <widget class="QLineEdit" name="lineEdit_7">
-    <property name="geometry">
-     <rect>
-      <x>90</x>
-      <y>250</y>
-      <width>113</width>
-      <height>22</height>
-     </rect>
-    </property>
-   </widget>
    <widget class="QLabel" name="label_9">
     <property name="geometry">
      <rect>
@@ -227,9 +114,9 @@ p, li { white-space: pre-wrap; }
    <widget class="QTableWidget" name="tableWidget">
     <property name="geometry">
      <rect>
-      <x>320</x>
-      <y>50</y>
-      <width>591</width>
+      <x>20</x>
+      <y>570</y>
+      <width>901</width>
       <height>192</height>
      </rect>
     </property>
@@ -272,8 +159,8 @@ p, li { white-space: pre-wrap; }
    <widget class="QGroupBox" name="groupBox">
     <property name="geometry">
      <rect>
-      <x>410</x>
-      <y>380</y>
+      <x>600</x>
+      <y>370</y>
       <width>121</width>
       <height>121</height>
      </rect>
@@ -324,8 +211,8 @@ p, li { white-space: pre-wrap; }
    <widget class="QFrame" name="frame">
     <property name="geometry">
      <rect>
-      <x>10</x>
-      <y>380</y>
+      <x>290</x>
+      <y>370</y>
       <width>131</width>
       <height>121</height>
      </rect>
@@ -364,9 +251,9 @@ p, li { white-space: pre-wrap; }
    <widget class="QTreeWidget" name="treeWidget">
     <property name="geometry">
      <rect>
-      <x>150</x>
-      <y>380</y>
-      <width>256</width>
+      <x>10</x>
+      <y>310</y>
+      <width>271</width>
       <height>192</height>
      </rect>
     </property>
@@ -421,6 +308,397 @@ p, li { white-space: pre-wrap; }
      </property>
     </item>
    </widget>
+   <widget class="QTabWidget" name="tabWidget">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>110</y>
+      <width>271</width>
+      <height>181</height>
+     </rect>
+    </property>
+    <property name="currentIndex">
+     <number>0</number>
+    </property>
+    <widget class="QWidget" name="tab">
+     <attribute name="title">
+      <string>Primary</string>
+     </attribute>
+     <widget class="QWidget" name="formLayoutWidget_2">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>10</y>
+        <width>261</width>
+        <height>141</height>
+       </rect>
+      </property>
+      <layout class="QFormLayout" name="formLayout_2">
+       <item row="0" column="0">
+        <widget class="QLabel" name="label_11">
+         <property name="text">
+          <string>Address:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QLineEdit" name="lineEdit_8"/>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_12">
+         <property name="text">
+          <string>City:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="label_13">
+         <property name="text">
+          <string>State:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1">
+        <widget class="QLineEdit" name="lineEdit_9"/>
+       </item>
+       <item row="3" column="1">
+        <widget class="QLineEdit" name="lineEdit_10"/>
+       </item>
+       <item row="3" column="0">
+        <widget class="QLabel" name="label_14">
+         <property name="text">
+          <string>Country:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QLineEdit" name="lineEdit_11"/>
+       </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="label_7">
+         <property name="text">
+          <string>Postal Code:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1">
+        <widget class="QLineEdit" name="lineEdit_6"/>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+    <widget class="QWidget" name="tab_2">
+     <attribute name="title">
+      <string>2nd</string>
+     </attribute>
+    </widget>
+   </widget>
+   <widget class="QTabWidget" name="tabWidget_2">
+    <property name="geometry">
+     <rect>
+      <x>290</x>
+      <y>100</y>
+      <width>481</width>
+      <height>241</height>
+     </rect>
+    </property>
+    <property name="currentIndex">
+     <number>0</number>
+    </property>
+    <widget class="QWidget" name="tab_3">
+     <attribute name="title">
+      <string>Contact #1</string>
+     </attribute>
+     <widget class="QWidget" name="formLayoutWidget">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>10</y>
+        <width>471</width>
+        <height>201</height>
+       </rect>
+      </property>
+      <layout class="QFormLayout" name="formLayout">
+       <item row="0" column="0">
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>Type:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QLineEdit" name="lineEdit_2"/>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>Name:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1">
+        <widget class="QLineEdit" name="lineEdit_4"/>
+       </item>
+       <item row="3" column="1">
+        <widget class="QLineEdit" name="lineEdit_5"/>
+       </item>
+       <item row="3" column="0">
+        <widget class="QLabel" name="label_6">
+         <property name="text">
+          <string>Address:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QLineEdit" name="lineEdit_3"/>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>Email:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>Phone 1:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="0">
+        <widget class="QLabel" name="label_15">
+         <property name="text">
+          <string>Phone 2:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1">
+        <widget class="QLineEdit" name="lineEdit_7"/>
+       </item>
+       <item row="5" column="1">
+        <widget class="QLineEdit" name="lineEdit_12"/>
+       </item>
+       <item row="6" column="1">
+        <widget class="QLineEdit" name="lineEdit_13"/>
+       </item>
+       <item row="6" column="0">
+        <widget class="QLabel" name="label_16">
+         <property name="text">
+          <string>Fax:</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+    <widget class="QWidget" name="tab_4">
+     <attribute name="title">
+      <string>#2</string>
+     </attribute>
+    </widget>
+    <widget class="QWidget" name="tab_5">
+     <attribute name="title">
+      <string>#3</string>
+     </attribute>
+    </widget>
+   </widget>
+   <widget class="QPushButton" name="pushButton_4">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>50</y>
+      <width>21</width>
+      <height>25</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="pushButton_5">
+    <property name="geometry">
+     <rect>
+      <x>30</x>
+      <y>50</y>
+      <width>21</width>
+      <height>25</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&gt;</string>
+    </property>
+   </widget>
+   <widget class="QListView" name="listView">
+    <property name="geometry">
+     <rect>
+      <x>740</x>
+      <y>360</y>
+      <width>171</width>
+      <height>161</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLabel" name="label_17">
+    <property name="geometry">
+     <rect>
+      <x>297</x>
+      <y>350</y>
+      <width>121</width>
+      <height>20</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Caution Advised</string>
+    </property>
+   </widget>
+   <widget class="QGroupBox" name="groupBox_2">
+    <property name="geometry">
+     <rect>
+      <x>440</x>
+      <y>370</y>
+      <width>141</width>
+      <height>121</height>
+     </rect>
+    </property>
+    <property name="title">
+     <string>Vendor Actions</string>
+    </property>
+    <widget class="QPushButton" name="pushButton_8">
+     <property name="geometry">
+      <rect>
+       <x>20</x>
+       <y>90</y>
+       <width>106</width>
+       <height>25</height>
+      </rect>
+     </property>
+     <property name="text">
+      <string>Add Location</string>
+     </property>
+    </widget>
+    <widget class="QPushButton" name="pushButton_7">
+     <property name="geometry">
+      <rect>
+       <x>20</x>
+       <y>60</y>
+       <width>106</width>
+       <height>25</height>
+      </rect>
+     </property>
+     <property name="text">
+      <string>Add Contact</string>
+     </property>
+    </widget>
+    <widget class="QPushButton" name="pushButton_6">
+     <property name="geometry">
+      <rect>
+       <x>20</x>
+       <y>30</y>
+       <width>106</width>
+       <height>25</height>
+      </rect>
+     </property>
+     <property name="text">
+      <string>Add Vendor</string>
+     </property>
+    </widget>
+   </widget>
+   <widget class="QLabel" name="label_18">
+    <property name="geometry">
+     <rect>
+      <x>20</x>
+      <y>540</y>
+      <width>151</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Purchase Orders</string>
+    </property>
+   </widget>
+   <widget class="QToolButton" name="toolButton">
+    <property name="geometry">
+     <rect>
+      <x>170</x>
+      <y>540</y>
+      <width>61</width>
+      <height>25</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Open</string>
+    </property>
+    <property name="checkable">
+     <bool>true</bool>
+    </property>
+    <property name="checked">
+     <bool>true</bool>
+    </property>
+   </widget>
+   <widget class="QToolButton" name="toolButton_2">
+    <property name="geometry">
+     <rect>
+      <x>240</x>
+      <y>540</y>
+      <width>61</width>
+      <height>25</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Closed</string>
+    </property>
+   </widget>
+   <widget class="QToolButton" name="toolButton_3">
+    <property name="geometry">
+     <rect>
+      <x>310</x>
+      <y>540</y>
+      <width>61</width>
+      <height>25</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>All</string>
+    </property>
+   </widget>
+   <widget class="Line" name="line_2">
+    <property name="geometry">
+     <rect>
+      <x>20</x>
+      <y>510</y>
+      <width>701</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="orientation">
+     <enum>Qt::Horizontal</enum>
+    </property>
+   </widget>
   </widget>
   <widget class="QMenuBar" name="menubar">
    <property name="geometry">
@@ -428,7 +706,7 @@ p, li { white-space: pre-wrap; }
      <x>0</x>
      <y>0</y>
      <width>932</width>
-     <height>20</height>
+     <height>22</height>
     </rect>
    </property>
    <widget class="QMenu" name="menuMenu1">
index 2b9c7fdd15450b4de5c8338c632776ffda44aad0..d07c302ba75d57f063dda51f92ab089eb3897bfb 100644 (file)
Binary files a/res/schematic.png and b/res/schematic.png differ
diff --git a/schematic b/schematic
deleted file mode 100755 (executable)
index 56c06a2..0000000
Binary files a/schematic and /dev/null differ
index acc74fc54249ecba546340174baef45b7593aa0a..4d1a59d9d70e1153d4474a5a7020b7153de1659c 100644 (file)
@@ -135,6 +135,7 @@ CREATE TABLE `Documents` (
   `dtid` int(11) DEFAULT NULL,
   `vid` int(11) DEFAULT NULL,
   `poid` int(11) DEFAULT NULL,
+  `filename` varchar(256) DEFAULT NULL,
   `document` longblob,
   PRIMARY KEY (`did`),
   KEY `dtid` (`dtid`),
@@ -178,6 +179,36 @@ LOCK TABLES `History` WRITE;
 /*!40000 ALTER TABLE `History` ENABLE KEYS */;
 UNLOCK TABLES;
 
+--
+-- Table structure for table `Location`
+--
+
+DROP TABLE IF EXISTS `Location`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `Location` (
+  `lid` int(11) NOT NULL AUTO_INCREMENT,
+  `vid` int(11) DEFAULT NULL,
+  `address` varchar(100) DEFAULT NULL,
+  `city` varchar(64) DEFAULT NULL,
+  `state` varchar(64) DEFAULT NULL,
+  `country` varchar(64) DEFAULT NULL,
+  `code` varchar(32) DEFAULT NULL,
+  PRIMARY KEY (`lid`),
+  KEY `vid` (`vid`),
+  CONSTRAINT `Location_ibfk_1` FOREIGN KEY (`vid`) REFERENCES `Vendor` (`vid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `Location`
+--
+
+LOCK TABLES `Location` WRITE;
+/*!40000 ALTER TABLE `Location` DISABLE KEYS */;
+/*!40000 ALTER TABLE `Location` ENABLE KEYS */;
+UNLOCK TABLES;
+
 --
 -- Table structure for table `Notes`
 --
@@ -213,6 +244,9 @@ CREATE TABLE `PurchaseOrder` (
   `poid` int(11) NOT NULL AUTO_INCREMENT,
   `vid` int(11) DEFAULT NULL,
   `closed` tinyint(1) NOT NULL DEFAULT '0',
+  `poNumber` varchar(100) DEFAULT NULL,
+  `originalDate` date DEFAULT NULL,
+  `adjustedDate` date DEFAULT NULL,
   `description` varchar(200) DEFAULT NULL,
   PRIMARY KEY (`poid`),
   KEY `vid` (`vid`),
@@ -245,7 +279,7 @@ CREATE TABLE `User` (
   PRIMARY KEY (`uid`),
   KEY `ucid` (`ucid`),
   CONSTRAINT `User_ibfk_1` FOREIGN KEY (`ucid`) REFERENCES `UserClass` (`ucid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -254,6 +288,7 @@ CREATE TABLE `User` (
 
 LOCK TABLES `User` WRITE;
 /*!40000 ALTER TABLE `User` DISABLE KEYS */;
+INSERT INTO `User` VALUES (1,1,'Administrator','admin','admin_123');
 /*!40000 ALTER TABLE `User` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -269,7 +304,7 @@ CREATE TABLE `UserClass` (
   `privilegeLevel` int(11) NOT NULL DEFAULT '0',
   `description` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`ucid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -278,6 +313,7 @@ CREATE TABLE `UserClass` (
 
 LOCK TABLES `UserClass` WRITE;
 /*!40000 ALTER TABLE `UserClass` DISABLE KEYS */;
+INSERT INTO `UserClass` VALUES (1,1,'Administrator');
 /*!40000 ALTER TABLE `UserClass` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -291,6 +327,7 @@ DROP TABLE IF EXISTS `Vendor`;
 CREATE TABLE `Vendor` (
   `vid` int(11) NOT NULL AUTO_INCREMENT,
   `vlid` int(11) DEFAULT NULL,
+  `signedNDA` tinyint(1) NOT NULL DEFAULT '0',
   `name` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`vid`),
   KEY `vlid` (`vlid`),
@@ -316,6 +353,7 @@ DROP TABLE IF EXISTS `VendorGroup`;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `VendorGroup` (
   `vgid` int(11) NOT NULL AUTO_INCREMENT,
+  `seqNo` int(4) NOT NULL,
   `description` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`vgid`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -391,6 +429,7 @@ DROP TABLE IF EXISTS `VendorType`;
 CREATE TABLE `VendorType` (
   `vtid` int(11) NOT NULL AUTO_INCREMENT,
   `vgid` int(11) DEFAULT NULL,
+  `seqNo` int(4) NOT NULL,
   `description` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`vtid`),
   KEY `vgid` (`vgid`),
@@ -416,4 +455,4 @@ UNLOCK TABLES;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2012-09-18 19:39:04
+-- Dump completed on 2012-09-19 21:10:12
index 8cb96897cf03cdfe747a5ff829352158473b1e42..ffee4fbc59ebb16c4b286f0cc5a6595ec0818d36 100644 (file)
@@ -27,12 +27,18 @@ HEADERS += src/about.h \
        src/generaltab.h \
        src/logindialog.h \
        src/main.h \
-       src/mainwin.h
+       src/mainwin.h \
+       src/newvendordialog.h \
+       src/sqlsettingsdialog.h \
+       src/vendorclassdialog.h
 
 SOURCES += src/about.cpp \
        src/configdialog.cpp \
        src/generaltab.cpp \
        src/logindialog.cpp \
        src/main.cpp \
-       src/mainwin.cpp
+       src/mainwin.cpp \
+       src/newvendordialog.cpp \
+       src/sqlsettingsdialog.cpp \
+       src/vendorclassdialog.cpp
 
index dc43bdb78ce8a75d5c46e9218ac8a3765d38de2f..86d3ac2527abebda5c760b9b5f4f97b75262ce3b 100644 (file)
@@ -42,7 +42,7 @@ AboutWindow::AboutWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog)
                "<br><br>"
                "<i>The SCheMatic team would like to express their gratitude to:</i>"
                "<br><br>"
-               "<b>Tracking Point</b> for underwriting the creation of SCheMatic<br>"
+               "Everyone who helped make SCheMatic a reality.<br>"
 //             "<b>David Raingeard</b> for the original Virtual Jaguar sources<br>"
 //             "<b>Bernd Schmidt</b> for his UAE 68K emulator<br>"
 //             "<b>Sam Lantinga</b> for his amazing SDL libraries<br>"
index fdd6ce6d1acc7450c77b25e648251321f9618c06..e2a80181b3b033ca8a2ccf80f100a06e3c208cd3 100644 (file)
@@ -8,14 +8,12 @@
 //
 // WHO  WHEN        WHAT
 // ---  ----------  ------------------------------------------------------------
-// JLH  06/04/2011  Created this file
+// JLH  09/18/2011  Created this file
 
 #include "logindialog.h"
 
 
 LoginDialog::LoginDialog(QWidget * parent/*= 0*/): QDialog(parent),
-//     label1(new QLabel(tr("Username:"))),
-//     label2(new QLabel(tr("Password:"))),
        buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)),
        edit1(new QLineEdit()),
        edit2(new QLineEdit())
@@ -30,7 +28,6 @@ LoginDialog::LoginDialog(QWidget * parent/*= 0*/): QDialog(parent),
        formLayout->addRow(tr("&Password:"), edit2);
 
        QVBoxLayout * mainLayout = new QVBoxLayout;
-//     mainLayout->addWidget(tabWidget);
        mainLayout->addLayout(formLayout);
        mainLayout->addWidget(buttonBox);
        setLayout(mainLayout);
index d583c63c7b23e46ce804714add4125117f234916..d9a1d839d21efce6b26169b2371a7273879387c9 100644 (file)
@@ -12,9 +12,7 @@ class LoginDialog: public QDialog
                ~LoginDialog();
 
        private:
-//             QLabel * label1;
-//             QLabel * label2;
-               QLabel * title;
+//             QLabel * title;
                QDialogButtonBox * buttonBox;
 
        public:
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);
 }
+
index 0f4cb2442a5df3c93dc70223b5cd437ecf42cebd..5be8fd6f02273dae3dac3a34bcece3a7b3bf3cb5 100644 (file)
@@ -9,6 +9,7 @@
 #define __MAINWINDOW_H__
 
 #include <QtGui>
+#include <QtSql>
 
 class AboutWindow;
 
@@ -26,6 +27,9 @@ class MainWindow: public QMainWindow
        private slots:
                void Open();
                void ShowAboutWin(void);
+               void HandleConfigDialog(void);
+               void HandleVendorClassDialog(void);
+               void HandleNewVendorDialog(void);
 
        private:
                void ReadSettings(void);
@@ -35,6 +39,16 @@ class MainWindow: public QMainWindow
 
                QAction * quitAppAct;
                QAction * aboutAct;
+               QAction * configAct;
+               QAction * vendorClassAct;
+               QAction * newVendorAct;
+
+               QString dbHostName;
+               QString dbName;
+               QString dbUserName;
+               QString dbPassword;
+
+               QSqlDatabase db;
 
        public:
                int loggedInUID;
diff --git a/src/newvendordialog.cpp b/src/newvendordialog.cpp
new file mode 100644 (file)
index 0000000..8737af3
--- /dev/null
@@ -0,0 +1,98 @@
+//
+// newvendordialog.cpp: Create New Vendor dialog
+//
+// Part of the SCheMatic Project
+// (C) 2012 Underground Software
+//
+// JLH = James Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  09/21/2012  Created this file
+
+#include "newvendordialog.h"
+
+
+NewVendorDialog::NewVendorDialog(QWidget * parent/*= 0*/): QDialog(parent),
+       buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)),
+       edit1(new QLineEdit),
+       combo1(new QComboBox),
+       checkbox1(new QCheckBox(tr("NDA Signed"))),
+       edit2(new QLineEdit),
+       edit3(new QLineEdit),
+       edit4(new QLineEdit),
+       edit5(new QLineEdit),
+       edit6(new QLineEdit),
+       combo2(new QComboBox),
+       edit7(new QLineEdit),
+       edit8(new QLineEdit),
+       edit9(new QLineEdit),
+       edit10(new QLineEdit),
+       edit11(new QLineEdit),
+       edit12(new QLineEdit),
+       list(new QListWidget)
+{
+       connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
+       connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
+
+       QVBoxLayout * vbox1 = new QVBoxLayout;
+       QVBoxLayout * vbox2 = new QVBoxLayout;
+       QVBoxLayout * vbox3 = new QVBoxLayout;
+       QHBoxLayout * hbox1 = new QHBoxLayout;
+
+       QGroupBox * gb1 = new QGroupBox(tr("Vendor"));
+       QGroupBox * gb2 = new QGroupBox(tr("Primary Location"));
+       QGroupBox * gb3 = new QGroupBox(tr("Primary Contact"));
+       QGroupBox * gb4 = new QGroupBox(tr("Vendor Classes"));
+
+       QFormLayout * form1 = new QFormLayout;
+       QFormLayout * form2 = new QFormLayout;
+       QFormLayout * form3 = new QFormLayout;
+
+       form1->addRow(tr("Name:"), edit1);
+       form1->addRow(tr("Level:"), combo1);
+
+       form2->addRow(tr("Address:"), edit2);
+       form2->addRow(tr("City:"), edit3);
+       form2->addRow(tr("State:"), edit4);
+       form2->addRow(tr("Country:"), edit5);
+       form2->addRow(tr("Postal Code:"), edit6);
+
+       form3->addRow(tr("Type:"), combo2);
+       form3->addRow(tr("Name:"), edit7);
+       form3->addRow(tr("Email:"), edit8);
+       form3->addRow(tr("Address:"), edit9);
+       form3->addRow(tr("Phone 1:"), edit10);
+       form3->addRow(tr("Phone 2:"), edit11);
+       form3->addRow(tr("Fax:"), edit12);
+
+       vbox1->addLayout(form1);
+       vbox1->addWidget(checkbox1);
+       gb1->setLayout(vbox1);
+
+       gb2->setLayout(form2);
+
+       gb3->setLayout(form3);
+
+       vbox2->addWidget(gb1);
+       vbox2->addWidget(gb2);
+       vbox2->addWidget(gb3);
+
+       vbox3->addWidget(list);
+       gb4->setLayout(vbox3);
+
+       hbox1->addLayout(vbox2);
+       hbox1->addWidget(gb4);
+
+       QVBoxLayout * mainLayout = new QVBoxLayout;
+       mainLayout->addLayout(hbox1);
+       mainLayout->addWidget(buttonBox);
+       setLayout(mainLayout);
+
+       setWindowTitle(tr("New Vendor"));
+}
+
+NewVendorDialog::~NewVendorDialog()
+{
+}
+
diff --git a/src/newvendordialog.h b/src/newvendordialog.h
new file mode 100644 (file)
index 0000000..e224bb1
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef __NEWVENDORDIALOG_H__
+#define __NEWVENDORDIALOG_H__
+
+#include <QtGui>
+
+class NewVendorDialog: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               NewVendorDialog(QWidget * parent = 0);
+               ~NewVendorDialog();
+
+       private:
+               QDialogButtonBox * buttonBox;
+
+       public:
+               QLineEdit * edit1;
+               QComboBox * combo1;
+               QCheckBox * checkbox1;
+
+               QLineEdit * edit2;
+               QLineEdit * edit3;
+               QLineEdit * edit4;
+               QLineEdit * edit5;
+               QLineEdit * edit6;
+
+               QComboBox * combo2;
+               QLineEdit * edit7;
+               QLineEdit * edit8;
+               QLineEdit * edit9;
+               QLineEdit * edit10;
+               QLineEdit * edit11;
+               QLineEdit * edit12;
+
+               QListWidget * list;
+};
+
+#endif // __NEWVENDORDIALOG_H__
diff --git a/src/sqlsettingsdialog.cpp b/src/sqlsettingsdialog.cpp
new file mode 100644 (file)
index 0000000..30b1a53
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// sqlsettingsdialog.cpp: The SQL Settings dialog
+//
+// Part of the SCheMatic Project
+// (C) 2012 Underground Software
+//
+// JLH = James Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  09/19/2012  Created this file
+
+#include "sqlsettingsdialog.h"
+
+
+SQLSettingsDialog::SQLSettingsDialog(QWidget * parent/*= 0*/): QDialog(parent),
+       buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)),
+       edit1(new QLineEdit()),
+       edit2(new QLineEdit()),
+       edit3(new QLineEdit()),
+       edit4(new QLineEdit())
+{
+       connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
+       connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
+
+       edit4->setEchoMode(QLineEdit::Password);
+
+       QFormLayout * formLayout = new QFormLayout;
+       formLayout->addRow(tr("&MySQL Server Hostname:"), edit1);
+       formLayout->addRow(tr("&Database Name:"), edit2);
+       formLayout->addRow(tr("&Database Username:"), edit3);
+       formLayout->addRow(tr("&Database Password:"), edit4);
+
+       QVBoxLayout * mainLayout = new QVBoxLayout;
+       mainLayout->addLayout(formLayout);
+       mainLayout->addWidget(buttonBox);
+       setLayout(mainLayout);
+
+       setWindowTitle(tr("MySQL Server Connection"));
+}
+
+SQLSettingsDialog::~SQLSettingsDialog()
+{
+}
diff --git a/src/sqlsettingsdialog.h b/src/sqlsettingsdialog.h
new file mode 100644 (file)
index 0000000..e1a9c8c
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef __SQLSETTINGSDIALOG_H__
+#define __SQLSETTINGSDIALOG_H__
+
+#include <QtGui>
+
+class SQLSettingsDialog: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               SQLSettingsDialog(QWidget * parent = 0);
+               ~SQLSettingsDialog();
+
+       private:
+//             QLabel * title;
+               QPushButton * testButton;
+               QDialogButtonBox * buttonBox;
+
+       public:
+               QLineEdit * edit1;
+               QLineEdit * edit2;
+               QLineEdit * edit3;
+               QLineEdit * edit4;
+};
+
+#endif // __SQLSETTINGSDIALOG_H__
diff --git a/src/vendorclassdialog.cpp b/src/vendorclassdialog.cpp
new file mode 100644 (file)
index 0000000..aef142b
--- /dev/null
@@ -0,0 +1,218 @@
+//
+// vendorclassdialog.cpp: Vendor Class editing dialog
+//
+// Part of the SCheMatic Project
+// (C) 2012 Underground Software
+//
+// JLH = James Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  09/20/2011  Created this file
+
+#include "vendorclassdialog.h"
+#include <QtSql>
+
+
+VendorClassDialog::VendorClassDialog(QWidget * parent/*= 0*/): QDialog(parent),
+       buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)),
+       addItem(new QToolButton),
+       deleteItem(new QToolButton),
+       moveItemUp(new QToolButton),
+       moveItemDown(new QToolButton),
+       makeHeader(new QCheckBox(tr("&Heading"))),
+       normalFont(new QFont),
+       boldFont(new QFont),
+       list(new QListWidget)
+//     dbRef(db)
+{
+       addItem->setToolButtonStyle(Qt::ToolButtonTextOnly);
+       addItem->setText("+");
+       addItem->setToolTip(tr("Add new vendor class or group."));
+       deleteItem->setToolButtonStyle(Qt::ToolButtonTextOnly);
+       deleteItem->setText("-");
+       deleteItem->setToolTip(tr("Delete highlighted item."));
+       moveItemUp->setArrowType(Qt::UpArrow);
+       moveItemUp->setToolTip(tr("Move highlighted item up in the list."));
+       moveItemDown->setArrowType(Qt::DownArrow);
+       moveItemDown->setToolTip(tr("Move highlighted item down in the list."));
+       makeHeader->setToolTip(tr("Make highlighted item into a vendor group."));
+//     list->setToolTip(tr(""));
+
+       QHBoxLayout * buttonLayout = new QHBoxLayout;
+       buttonLayout->addWidget(addItem);
+       buttonLayout->addWidget(deleteItem);
+       buttonLayout->addWidget(moveItemUp);
+       buttonLayout->addWidget(moveItemDown);
+       buttonLayout->addStretch();
+       buttonLayout->addWidget(makeHeader);
+
+       QVBoxLayout * mainLayout = new QVBoxLayout;
+       mainLayout->addWidget(list);
+       mainLayout->addLayout(buttonLayout);
+       mainLayout->addWidget(buttonBox);
+       setLayout(mainLayout);
+
+       setWindowTitle(tr("Vendor Class Editor"));
+
+       connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
+       connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
+
+       connect(addItem, SIGNAL(clicked()), this, SLOT(AddItem()));
+       connect(deleteItem, SIGNAL(clicked()), this, SLOT(DeleteItem()));
+       connect(moveItemUp, SIGNAL(clicked()), this, SLOT(MoveItemUp()));
+       connect(moveItemDown, SIGNAL(clicked()), this, SLOT(MoveItemDown()));
+       connect(makeHeader, SIGNAL(clicked()), this, SLOT(SetHeaderStateOnItem()));
+       connect(list, SIGNAL(currentRowChanged(int)), this, SLOT(CurrentRowChanged(int)));
+
+       boldFont->setBold(true);
+       LoadList();
+}
+
+
+VendorClassDialog::~VendorClassDialog()
+{
+}
+
+
+void VendorClassDialog::AddItem(void)
+{
+       QListWidgetItem * item  = new QListWidgetItem(tr("New Vendor Class"));
+       item->setFlags(item->flags() | Qt::ItemIsEditable);
+
+       // We'll have to use the setData(Qt::UserRole, bool) to set the header/no header data...
+
+//     item->setCheckState(Qt::Unchecked);
+//     Qt::ItemFlags f = item->flags();
+//     //nope, this doesn't work. the above fucks something up that's not unfuckable.
+//     f &= ~Qt::ItemIsUserCheckable;
+//     item->setFlags(f | Qt::ItemIsEditable);
+
+       int row = list->row(list->currentItem());
+       list->insertItem(row + 1, item);
+}
+
+
+void VendorClassDialog::DeleteItem(void)
+{
+       int row = list->row(list->currentItem());
+       QListWidgetItem * item = list->takeItem(row);
+
+       // This could be called on an empty list, so we have a sanity check here...
+       if (item)
+               delete item;
+}
+
+
+void VendorClassDialog::MoveItemUp(void)
+{
+       int row = list->row(list->currentItem());
+
+       if (row == 0)
+               return;
+
+       QListWidgetItem * item = list->takeItem(row);
+       list->insertItem(row - 1, item);
+       list->setCurrentItem(item);
+}
+
+
+void VendorClassDialog::MoveItemDown(void)
+{
+       int row = list->row(list->currentItem());
+
+       if (row == list->count() - 1)
+               return;
+
+       QListWidgetItem * item = list->takeItem(row);
+       list->insertItem(row + 1, item);
+       list->setCurrentItem(item);
+}
+
+
+void VendorClassDialog::SetHeaderStateOnItem(void)
+{
+       QListWidgetItem * item = list->currentItem();
+       item->setData(Qt::UserRole, makeHeader->isChecked());
+
+       if (makeHeader->isChecked())
+               item->setFont(*boldFont);
+       else
+               item->setFont(*normalFont);
+}
+
+
+void VendorClassDialog::CurrentRowChanged(int /*row*/)
+{
+       // Show our indicator that this item is a header/group or not
+       QListWidgetItem * item = list->currentItem();
+       bool isHeader = item->data(Qt::UserRole).toBool();
+       makeHeader->setChecked(isHeader);
+}
+
+
+// This probably should be in the mainwin class...
+void VendorClassDialog::LoadList(void)
+{
+       std::vector<VendorType> groupList;
+
+       // Pull in definitions from DB for Vendor Classes/Groups
+       QSqlQuery query1("SELECT vgid, seqNo, description FROM VendorGroup ORDER BY seqNo");
+       query1.exec();
+
+       while (query1.next())
+       {
+               VendorType v;
+               v.key         = query1.value(0).toInt();
+               v.seqNo       = query1.value(1).toInt();
+               v.description = query1.value(2).toString();
+               v.isHeader    = true;
+
+               groupList.push_back(v);
+       }
+
+       QSqlQuery query2("SELECT vtid, vgid, seqNo, description FROM VendorType ORDER BY seqNo");
+       query2.exec();
+
+       int previousID = -1, groupListIndex = 0;
+
+       while (query2.next())
+       {
+               VendorType v;
+               v.key         = query2.value(0).toInt();
+               int vgid      = query2.value(1).toInt();
+               v.seqNo       = query2.value(2).toInt();
+               v.description = query2.value(3).toString();
+               v.isHeader    = false;
+
+               // 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)
+               {
+                       oldList.push_back(groupList[groupListIndex++]);
+                       previousID = vgid;
+               }
+
+               oldList.push_back(v);
+       }
+
+       // Finally, populate the QListWidget
+       for(int i=0; i<oldList.size(); i++)
+       {
+               QListWidgetItem * item  = new QListWidgetItem(oldList[i].description);
+               item->setFlags(item->flags() | Qt::ItemIsEditable);
+               item->setData(Qt::UserRole, oldList[i].isHeader);
+
+               if (oldList[i].isHeader)
+                       item->setFont(*boldFont);
+
+               list->insertItem(i, item);
+       }
+}
+
+
+void VendorClassDialog::SaveList(void)
+{
+}
+
diff --git a/src/vendorclassdialog.h b/src/vendorclassdialog.h
new file mode 100644 (file)
index 0000000..4a0b702
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef __VENDORCLASSDIALOG_H__
+#define __VENDORCLASSDIALOG_H__
+
+#include <QtGui>
+#include <vector>
+
+struct VendorType
+{
+       int key;
+       int seqNo;
+       bool isHeader;
+       QString description;
+};
+
+
+class VendorClassDialog: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               VendorClassDialog(QWidget * parent = 0);
+               ~VendorClassDialog();
+
+       private slots:
+               void AddItem(void);
+               void DeleteItem(void);
+               void MoveItemUp(void);
+               void MoveItemDown(void);
+               void SetHeaderStateOnItem(void);
+               void CurrentRowChanged(int);
+
+       private:
+               void LoadList(void);
+               void SaveList(void);
+
+       private:
+               QDialogButtonBox * buttonBox;
+               QToolButton * addItem;
+               QToolButton * deleteItem;
+               QToolButton * moveItemUp;
+               QToolButton * moveItemDown;
+               QCheckBox * makeHeader;
+               std::vector<VendorType> oldList;
+               QFont * normalFont;
+               QFont * boldFont;
+
+       public:
+               QListWidget * list;
+//             QSqlDatabase & dbRef;
+};
+
+#endif // __VENDORCLASSDIALOG_H__
diff --git a/vendor-classes.ui b/vendor-classes.ui
new file mode 100644 (file)
index 0000000..0c6e050
--- /dev/null
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>343</width>
+    <height>439</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QDialogButtonBox" name="buttonBox">
+   <property name="geometry">
+    <rect>
+     <x>130</x>
+     <y>310</y>
+     <width>171</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="orientation">
+    <enum>Qt::Horizontal</enum>
+   </property>
+   <property name="standardButtons">
+    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+   </property>
+  </widget>
+  <widget class="QListWidget" name="listWidget">
+   <property name="geometry">
+    <rect>
+     <x>50</x>
+     <y>50</y>
+     <width>256</width>
+     <height>201</height>
+    </rect>
+   </property>
+   <item>
+    <property name="text">
+     <string>Machine</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Cutter</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Sheet Metal</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>EDM Wire</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>CNC</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Casting</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Electronic Parts</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Distributor</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Manufacturer</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Broker Grey</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Representative</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Printed Circuit Boards</string>
+    </property>
+    <property name="flags">
+     <set>ItemIsSelectable|ItemIsDragEnabled|ItemIsEnabled</set>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>PCB</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>PCBA</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Testing</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Raw Materials</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Metal</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Plastic</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Extruded</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Lenses</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Distributor</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Manufacturer</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Representative</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Filters</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Cubes</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Lenses</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>COTS</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Screws</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>O-Ring</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Switches</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Captive Fasteners</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Springs &amp; Pins</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Retaining Rings</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Coatings</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Anodized</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Nickel</string>
+    </property>
+   </item>
+   <item>
+    <property name="text">
+     <string>Paint</string>
+    </property>
+   </item>
+  </widget>
+  <widget class="QWidget" name="horizontalLayoutWidget">
+   <property name="geometry">
+    <rect>
+     <x>50</x>
+     <y>260</y>
+     <width>251</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <layout class="QHBoxLayout" name="horizontalLayout">
+    <item>
+     <widget class="QToolButton" name="toolButton_3">
+      <property name="text">
+       <string>+</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QToolButton" name="toolButton_4">
+      <property name="text">
+       <string>-</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QToolButton" name="toolButton">
+      <property name="text">
+       <string>^</string>
+      </property>
+      <property name="arrowType">
+       <enum>Qt::UpArrow</enum>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QToolButton" name="toolButton_2">
+      <property name="text">
+       <string/>
+      </property>
+      <property name="arrowType">
+       <enum>Qt::DownArrow</enum>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <spacer name="horizontalSpacer">
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="sizeHint" stdset="0">
+       <size>
+        <width>40</width>
+        <height>20</height>
+       </size>
+      </property>
+     </spacer>
+    </item>
+    <item>
+     <widget class="QCheckBox" name="checkBox">
+      <property name="text">
+       <string>Heading</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>