Developer Documentation

processManagerWidget.hh
1 /*===========================================================================*\
2 * *
3 * OpenFlipper *
4 * Copyright (c) 2001-2015, RWTH-Aachen University *
5 * Department of Computer Graphics and Multimedia *
6 * All rights reserved. *
7 * www.openflipper.org *
8 * *
9 *---------------------------------------------------------------------------*
10 * This file is part of OpenFlipper. *
11 *---------------------------------------------------------------------------*
12 * *
13 * Redistribution and use in source and binary forms, with or without *
14 * modification, are permitted provided that the following conditions *
15 * are met: *
16 * *
17 * 1. Redistributions of source code must retain the above copyright notice, *
18 * this list of conditions and the following disclaimer. *
19 * *
20 * 2. Redistributions in binary form must reproduce the above copyright *
21 * notice, this list of conditions and the following disclaimer in the *
22 * documentation and/or other materials provided with the distribution. *
23 * *
24 * 3. Neither the name of the copyright holder nor the names of its *
25 * contributors may be used to endorse or promote products derived from *
26 * this software without specific prior written permission. *
27 * *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39 * *
40 \*===========================================================================*/
41
42
43
44 #pragma once
45
46
47 #include "ui_processManagerWidget.h"
48 #include <QPushButton>
49 #include <QProgressBar>
50
51 // A button class that additionally stores
52 // an attached job's id.
53 class JobCancelButton : public QPushButton {
54 Q_OBJECT
55
56 public:
57 JobCancelButton(QString _caption, QString _jobId, QWidget* _parent = 0) :
58 QPushButton(_caption, _parent),
59 jobId_(_jobId) {};
60
61 // Set job's id
62 void setJobId(const QString& _jobId) { jobId_ = _jobId; };
63
64 // Get job's id
65 QString jobId() { return jobId_; }
66
67 private:
68 QString jobId_;
69 };
70
71 class ProcessManagerWidget : public QWidget, public Ui::ProcessManagerWidget
72 {
73 Q_OBJECT
74
75 signals:
76
77 void cancelJobRequested(QString _jobId);
78
79 public:
80
81 explicit ProcessManagerWidget(QWidget* parent = 0) : QWidget(parent) {
82
83 setupUi(this);
84 };
85
86 virtual ~ProcessManagerWidget() {};
87
88 void updateStatus(QString _id, int _status);
89
90 void setJobName(QString _id, QString _desc);
91
92 void setJobDescription(QString _id, QString _desc);
93
94 void addJob(QString _id, QString _description = "",
95 int _minSteps = 0, int _maxSteps = 100);
96
97 void removeJob(QString _jobName);
98
99 size_t getNumJobs() { return processMap_.size(); }
100
101 private slots:
102
103 void cancelButtonPressed();
104
105 private:
106
107 // A container to hold the widget items
108 struct JobContainer {
109 QTableWidgetItem* id;
110 QTableWidgetItem* description;
111 QProgressBar* progress;
112 JobCancelButton* button;
113 };
114
115 QHash<QString, JobContainer> processMap_;
116 };
117
ProcessManagerWidget
Definition: processManagerWidget.hh:71
JobCancelButton
Definition: processManagerWidget.hh:53
ProcessManagerWidget::JobContainer
Definition: processManagerWidget.hh:108