]> Shamusworld >> Repos - schematic/blob - src/scmwidget.cpp
78f757fe016bc01965f259d7e086bc6e36b073ac
[schematic] / src / scmwidget.cpp
1 //
2 // scmwidget.cpp - Main widget container
3 //
4 // by James Hammons
5 // (C) 2012 Underground Software
6 //
7 // JLH = James Hammons <jlhamm@acm.org>
8 //
9 // Who  When        What
10 // ---  ----------  -------------------------------------------------------------
11 // JLH  09/24/2012  Created this file
12 //
13
14 #include "scmwidget.h"
15 #include "addresswidget.h"
16 #include "contactwidget.h"
17
18
19 SCMWidget::SCMWidget(QWidget * parent/*= 0*/): QWidget(parent),
20         purchaseOrders(new QTreeView),
21         vendorName(new QLabel),
22         ndaSigned(new QLabel),
23         vendorAddress(new QTabWidget),
24         vendorContact(new QTabWidget),
25         vendorClass(new QListWidget),
26         username(new QLabel),
27         vendorLevel(new VendorLevelWidget),
28         alerts(new QListWidget),
29         notes(new QListWidget),
30         nextVendorButton(new QToolButton),
31         previousVendorButton(new QToolButton),
32         editVendor(new QPushButton("Edit Vendor")),
33         addVendor(new QPushButton("Add Vendor")),
34         addLocation(new QPushButton("Add Location")),
35         addContact(new QPushButton("Add Contact")),
36         createAlert(new QPushButton("Create")),
37         createNote(new QPushButton("Create")),
38         showOpen(new QPushButton("Open")),
39         showClosed(new QPushButton("Closed")),
40         showAll(new QPushButton("All")),
41         createPO(new QPushButton("Create"))
42 {
43         // Create main page widgets & layout
44
45         purchaseOrders->setRootIsDecorated(false);
46         purchaseOrders->setAlternatingRowColors(true);
47
48         QAbstractItemModel * model = new QStandardItemModel(0, 7);
49         model->setHeaderData(0, Qt::Horizontal, tr("PO #"));
50         model->setHeaderData(1, Qt::Horizontal, tr("Vendor"));
51         model->setHeaderData(2, Qt::Horizontal, tr("Desc."));
52         model->setHeaderData(3, Qt::Horizontal, tr("OAD"));
53         model->setHeaderData(4, Qt::Horizontal, tr("UAD"));
54         model->setHeaderData(5, Qt::Horizontal, tr("Docs"));
55         model->setHeaderData(6, Qt::Horizontal, tr("FAI"));
56
57         model->insertRow(0);
58         model->setData(model->index(0, 0), "FE823724");
59         model->setData(model->index(0, 1), "Sanford & Sons");
60         model->setData(model->index(0, 2), "Misc. Junk");
61         model->setData(model->index(0, 3), "09/30/2012");
62         model->setData(model->index(0, 4), "");
63         model->setData(model->index(0, 5), "");
64         model->setData(model->index(0, 6), "");
65
66         model->insertRow(0);
67         model->setData(model->index(0, 0), "89237923-123");
68         model->setData(model->index(0, 1), "Digikey");
69         model->setData(model->index(0, 2), "Small capacitors");
70         model->setData(model->index(0, 3), "10/08/2012");
71         model->setData(model->index(0, 4), "11/30/2012");
72         model->setData(model->index(0, 5), "1");
73         model->setData(model->index(0, 6), "Yes");
74
75         model->insertRow(0);
76         model->setData(model->index(0, 0), "T9234CS32");
77         model->setData(model->index(0, 1), "Big, Faceless Company");
78         model->setData(model->index(0, 2), "Important Stuff you need RIGHT NOW");
79         model->setData(model->index(0, 3), "09/28/2012");
80         model->setData(model->index(0, 4), "09/29/2012");
81         model->setData(model->index(0, 5), "5");
82         model->setData(model->index(0, 6), "Yes");
83
84         purchaseOrders->setModel(model);
85
86         nextVendorButton->setArrowType(Qt::RightArrow);
87         nextVendorButton->setToolTip(tr("Move to next Vendor in Database."));
88         previousVendorButton->setArrowType(Qt::LeftArrow);
89         previousVendorButton->setToolTip(tr("Move to previous Vendor in Database."));
90
91         QFont * vendorFont = new QFont;
92         vendorFont->setPointSize(12);
93         vendorName->setFont(*vendorFont);
94         vendorName->setText("Vendor Name");
95
96         QHBoxLayout * hbox1 = new QHBoxLayout;
97         hbox1->addWidget(previousVendorButton);
98         hbox1->addWidget(nextVendorButton);
99         hbox1->addWidget(vendorName);
100
101         // Vendor address widgets
102
103         AddressWidget * vaw1 = new AddressWidget(this);
104         vaw1->SetFields("123 Any Street", "Any City", "Anywhere", "USA", "01234");
105         vendorAddress->addTab(vaw1, tr("Primary"));
106         vendorAddress->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
107
108         // Vendor contact widgets
109
110         ContactWidget * vcw1 = new ContactWidget(this);
111         vcw1->SetFields("Sales", "Joe Blow", "joe.blow@widget.com", "Singapore", "512-222-2222", "", "512-122-2123");
112         vendorContact->addTab(vcw1, tr("Contact #1"));
113         vendorContact->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
114
115         // Vendor class list
116
117         QVBoxLayout * vbox1 = new QVBoxLayout;
118         vbox1->addWidget(vendorClass);
119         QGroupBox * gb1 = new QGroupBox(tr("Vendor Classes"));
120         gb1->setLayout(vbox1);
121
122         // Vendor action push buttons
123
124         QVBoxLayout * vbox4 = new QVBoxLayout;
125         QHBoxLayout * hbox3 = new QHBoxLayout;
126         QGroupBox * gb2 = new QGroupBox(tr("Vendor Actions"));
127
128         vbox4->addWidget(editVendor);
129         vbox4->addWidget(addVendor);
130         vbox4->addWidget(addLocation);
131         vbox4->addWidget(addContact);
132         gb2->setLayout(vbox4);
133
134         hbox3->addWidget(vendorLevel);
135         hbox3->addWidget(gb2);
136
137         // Alerts & notes
138
139         QVBoxLayout * vbox5 = new QVBoxLayout;
140         QHBoxLayout * hbox4 = new QHBoxLayout;
141         QHBoxLayout * hbox5 = new QHBoxLayout;
142
143         QLabel * label1 = new QLabel(tr("Alerts"));
144         QLabel * label2 = new QLabel(tr("Notes"));
145         hbox4->addWidget(label1);
146         hbox4->addStretch();
147         hbox4->addWidget(createAlert);
148         hbox5->addWidget(label2);
149         hbox5->addStretch();
150         hbox5->addWidget(createNote);
151
152         vbox5->addLayout(hbox4);
153         vbox5->addWidget(alerts);
154         vbox5->addLayout(hbox5);
155         vbox5->addWidget(notes);
156
157         // Purchase Order headers
158
159         QHBoxLayout * hbox6 = new QHBoxLayout;
160         QLabel * label3 = new QLabel(tr("Purchase Orders"));
161         hbox6->addWidget(label3);
162         hbox6->addSpacing(32);
163         hbox6->addWidget(showOpen);
164         hbox6->addWidget(showClosed);
165         hbox6->addWidget(showAll);
166         hbox6->addStretch();
167         hbox6->addWidget(createPO);
168
169         // Horizontal line
170
171         QFrame * hline = new QFrame(this);
172         hline->setFrameShape(QFrame::HLine);
173         hline->setFrameShadow(QFrame::Sunken);
174
175         QFrame * hline2 = new QFrame(this);
176         hline2->setFrameShape(QFrame::HLine);
177         hline2->setFrameShadow(QFrame::Sunken);
178
179         QHBoxLayout * hbox2 = new QHBoxLayout;
180         QVBoxLayout * vbox2 = new QVBoxLayout;
181         QVBoxLayout * vbox3 = new QVBoxLayout;
182
183         vbox3->addWidget(vendorContact);
184 //      vbox3->addWidget(vendorLevel);
185         vbox3->addLayout(hbox3);
186
187         vbox2->addWidget(vendorAddress);
188         vbox2->addWidget(gb1);
189
190         hbox2->addLayout(vbox2);
191         hbox2->addLayout(vbox3);
192         hbox2->addLayout(vbox5);
193
194         QVBoxLayout * mainLayout = new QVBoxLayout;
195         mainLayout->addWidget(username);
196         mainLayout->addWidget(hline);
197         mainLayout->addLayout(hbox1);
198         mainLayout->addLayout(hbox2);
199         mainLayout->addWidget(hline2);
200         mainLayout->addLayout(hbox6);
201         mainLayout->addWidget(purchaseOrders);
202         setLayout(mainLayout);
203 }
204