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(
"");
120 newItem->setData(0, Qt::UserRole, qVariantFromValue(workOrder));
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 *)),
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()) {
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) {
The main project for cnetsuite.
void markUndone(QTreeWidgetItem *)
Display the item as an item that has been undone.
QList< WorkOrder * > workOrderHistory()
Get the entire list of work orders that have executed.
void addToHistory(WorkOrder *)
Add a single work order to the display.
int sizeHintForColumn(int column) const
Get the preferred size of a given column.
bool createsCleanState() const
Returns the CleanState status (whether the Project has been saved to disk or not).
void markNotUndone(QTreeWidgetItem *)
Display the item as not an item that has been undone - it's working or done.
HistoryTreeWidget(Project *project, QWidget *parent=0)
Construct a history tree widget.
virtual ~HistoryTreeWidget()
Clean up allocated memory.
void handleUndoIndexChanged(int)
The project's undo stack has changed.
Parent class for anything that performs an action in Project.
void removeFromHistory(QObject *)
A work order was lost...
void updateProgressWidgets()
We need to manually manage these progress widgets because QTreeWidget does a poor job of it...
void showHistory()
This resets the tree widget and re-initializes.
void refit()
This resizes the columns to an okay width for viewing all of the data cleanly.
QTreeWidgetItem * undoCommandToTreeItem(const QUndoCommand *)
Get the QTreeWidgetItem associated with the given undo command (work order).
QString statusText() const
WorkOrder::statusText.
QString bestText() const
We don't use action text anymore because Directory likes to rename our actions.
QDateTime executionTime() const
Gets the execution time of this WorkOrder.
ProgressBar * progressBar()
Returns the ProgressBar.