1 #include "HistoryTreeWidget.h"
6 #include "ProgressBar.h"
21 headers.append(
"Operation");
22 headers.append(
"Progress");
23 headers.append(
"Time Executed");
25 setHeaderLabels(headers);
27 connect(m_project, SIGNAL(workOrderStarting(
WorkOrder *)),
29 connect(m_project, SIGNAL(projectLoaded(
Project *)),
31 connect(m_project->undoStack(), SIGNAL(indexChanged(
int)),
61 QFontMetrics metrics(invisibleRootItem()->font(1));
62 int dateTimeColumnWidth = qRound(metrics.width(QDateTime::currentDateTime().toString()) * 1.10);
64 int progressBarColumnWidth = 200;
68 int operationColumnWidth = width() - dateTimeColumnWidth - progressBarColumnWidth - 12;
70 if (operationColumnWidth > 0) {
72 result = operationColumnWidth;
74 result = progressBarColumnWidth;
76 result = dateTimeColumnWidth;
88 resizeColumnToContents(0);
89 resizeColumnToContents(1);
90 resizeColumnToContents(2);
98 updateStatus(workOrder);
109 QString data = workOrder->bestText();
111 connect(workOrder, SIGNAL(destroyed(
QObject *)),
115 columnData.append(data);
116 columnData.append(
"");
117 columnData.append(workOrder->executionTime().toString());
120 newItem->setData(0, Qt::UserRole, qVariantFromValue(workOrder));
123 if (workOrder->createsCleanState()) {
124 QFont saveFont = newItem->font(0);
125 saveFont.setBold(
true);
126 saveFont.setItalic(
true);
127 newItem->setFont(0, saveFont);
128 newItem->setForeground(0, Qt::gray);
132 QFont progressFont = newItem->font(1);
133 progressFont.setItalic(
true);
134 newItem->setFont(1, progressFont);
135 newItem->setForeground(1, Qt::gray);
137 invisibleRootItem()->addChild(newItem);
139 connect(workOrder, SIGNAL(statusChanged(
WorkOrder *)),
141 connect(workOrder, SIGNAL(creatingProgress(
WorkOrder *)),
143 connect(workOrder, SIGNAL(deletingProgress(
WorkOrder *)),
146 if (workOrder->progressBar()) {
147 setItemWidget(newItem, 1, workOrder->progressBar());
150 scrollToItem(newItem);
164 for (
int i = 0; i < invisibleRootItem()->childCount(); i++) {
168 if (workOrder && itemWidget(item, 1) != workOrder->progressBar()) {
169 setItemWidget(item, 1, workOrder->progressBar());
183 treeItem->setForeground(0, Qt::black);
184 updateStatus(treeItem);
197 treeItem->setForeground(0, Qt::gray);
198 updateStatus(treeItem);
208 m_project->undoStack()->command(newIndex - 1));
216 scrollToItem(prevItem);
217 scrollToItem(curItem);
229 int indexToDelete = invisibleRootItem()->indexOfChild(itemToRemove);
231 if (indexToDelete < invisibleRootItem()->childCount()) {
233 setItemWidget(invisibleRootItem()->child(indexToDelete), 1, NULL);
236 delete invisibleRootItem()->takeChild(indexToDelete);
253 for (
int i = invisibleRootItem()->childCount() - 1; !result && i >= 0; i--) {
257 if (undoCommand == workOrder)
283 void HistoryTreeWidget::updateStatus(
WorkOrder *workOrder) {