File: ProgressWidgetGraphicsProxy.cpp

package info (click to toggle)
tulip 4.6.0dfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 139,284 kB
  • ctags: 35,942
  • sloc: cpp: 289,758; ansic: 27,264; python: 1,256; sh: 923; yacc: 522; xml: 337; makefile: 258; php: 66; lex: 55
file content (97 lines) | stat: -rw-r--r-- 3,353 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**
 *
 * This file is part of Tulip (www.tulip-software.org)
 *
 * Authors: David Auber and the Tulip development Team
 * from LaBRI, University of Bordeaux
 *
 * Tulip is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation, either version 3
 * of the License, or (at your option) any later version.
 *
 * Tulip is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 */

#include <QPainter>

#include "ProgressWidgetGraphicsProxy.h"
#include "ui_ProgressWidget.h"

using namespace tlp;

ProgressWidget::ProgressWidget(QWidget *parent) : QWidget(parent), _ui(new Ui::ProgressWidgetData), cancelClicked(true) {
  _ui->setupUi(this);
  connect(_ui->cancelButton, SIGNAL(clicked()), this, SLOT(cancelButtonClicked()));
}

ProgressWidget::~ProgressWidget() {
  delete _ui;
}

void ProgressWidget::setComment(const QString &comment) {
  _ui->commentLabel->setText(comment);
}

void ProgressWidget::setProgress(int value, int max) {
  _ui->progressBar->setMaximum(max);
  _ui->progressBar->setValue(value);
}

void ProgressWidget::showEvent(QShowEvent * event) {
  cancelClicked = false;
  QWidget::showEvent(event);
}

void ProgressWidget::cancelButtonClicked() {
  cancelClicked = true;
}

ProgressWidgetGraphicsProxy::ProgressWidgetGraphicsProxy() : frameColor(Qt::green) {
  progressWidget = new ProgressWidget();
  setWidget(progressWidget);
  setWindowFlags(Qt::Window);
  setWindowFrameMargins(0,0,0,0);
#if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0))
  setOpacity(0.8);
#endif
}

void ProgressWidgetGraphicsProxy::setComment(const QString &comment) {
  progressWidget->setComment(comment);
}

void ProgressWidgetGraphicsProxy::setProgress(int value, int max) {
  progressWidget->setProgress(value, max);
}

const float offset = 10.;

void ProgressWidgetGraphicsProxy::paintWindowFrame (QPainter * painter, const QStyleOptionGraphicsItem *, QWidget *) {
  QRectF widgetGeometry = windowFrameRect();
  QPainterPath path;
  path.addRect(widgetGeometry);
  path.moveTo(widgetGeometry.topLeft() + QPointF(0, -offset));
  path.quadTo(widgetGeometry.topLeft() + QPointF(-offset, -offset), widgetGeometry.topLeft() + QPointF(-offset, 0));
  path.lineTo(widgetGeometry.bottomLeft() + QPointF(-offset, 0));
  path.quadTo(widgetGeometry.bottomLeft() + QPointF(-offset, offset), widgetGeometry.bottomLeft() + QPointF(0, offset));
  path.lineTo(widgetGeometry.bottomRight() + QPointF(0, offset));
  path.quadTo(widgetGeometry.bottomRight() + QPointF(offset, offset), widgetGeometry.bottomRight() + QPointF(offset, 0));
  path.lineTo(widgetGeometry.topRight() + QPointF(offset, 0));
  path.quadTo(widgetGeometry.topRight() + QPointF(offset, -offset), widgetGeometry.topRight() + QPointF(0, -offset));
  path.lineTo(widgetGeometry.topLeft() + QPointF(0, -offset));

  painter->setPen(Qt::black);
  painter->setBrush(frameColor);
  painter->setRenderHint(QPainter::Antialiasing, true);
  painter->drawPath(path);
  painter->setRenderHint(QPainter::Antialiasing, false);
}

bool ProgressWidgetGraphicsProxy::cancelRequested() const {
  return progressWidget->cancelRequested();
}