Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,96 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Shows a report of combat power in form of curves
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "lts_report_display_widget.h"
|
||||
|
||||
#include <QResizeEvent>
|
||||
#include <QPainter>
|
||||
#include <QPaintEvent>
|
||||
#include <QTimer>
|
||||
|
||||
// Taken from KDReportsLayoutHelper.cpp START
|
||||
// (WebCMS-TES-UAE-RP 2953 Falsche Positionierung im AAR)
|
||||
QT_BEGIN_NAMESPACE
|
||||
Q_GUI_EXPORT extern int qt_defaultDpi(); // This is what QTextDocument uses...
|
||||
QT_END_NAMESPACE
|
||||
// Taken from KDReportsLayoutHelper.cpp END
|
||||
|
||||
namespace LtsWidgets
|
||||
{
|
||||
|
||||
LtsReportDisplayWidget::LtsReportDisplayWidget(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
{
|
||||
// setAttribute(Qt::WA_OpaquePaintEvent);
|
||||
// minimale Breite, danach sollte die ScrollArea einen horizontalen Scrollbar darstellen
|
||||
setMinimumWidth(400);
|
||||
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
||||
}
|
||||
|
||||
void LtsReportDisplayWidget::setReport(KDReports::Report *report)
|
||||
{
|
||||
m_report = report;
|
||||
update();
|
||||
}
|
||||
|
||||
void LtsReportDisplayWidget::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
if (!m_report)
|
||||
{
|
||||
QWidget::paintEvent(event);
|
||||
return;
|
||||
}
|
||||
if (m_pixmap.size() != size())
|
||||
{
|
||||
QImage img(size(), QImage::Format_ARGB32);
|
||||
QPainter p(&img);
|
||||
p.fillRect(rect(), Qt::white);
|
||||
m_report->paintPage(0, p);
|
||||
p.end();
|
||||
m_pixmap = QPixmap::fromImage(img);
|
||||
}
|
||||
QPainter p(this);
|
||||
p.drawPixmap(0, 0, m_pixmap);
|
||||
p.end();
|
||||
}
|
||||
|
||||
void LtsReportDisplayWidget::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
QWidget::resizeEvent(event);
|
||||
if (!m_report)
|
||||
return;
|
||||
qreal withPixel = size().width();
|
||||
// qreal withMM = withPixel / physicalDpiX() * 25.4;
|
||||
qreal withMM = withPixel / qt_defaultDpi() * 25.4;
|
||||
m_report->setWidthForEndlessPrinter(withMM);
|
||||
|
||||
if (!m_bNewMinSizeSlotCalled)
|
||||
{
|
||||
m_bNewMinSizeSlotCalled = true;
|
||||
QTimer::singleShot(10, this, &LtsReportDisplayWidget::setNewMinimumSize);
|
||||
}
|
||||
}
|
||||
|
||||
void LtsReportDisplayWidget::setNewMinimumSize()
|
||||
{
|
||||
m_bNewMinSizeSlotCalled = false;
|
||||
if (!m_report)
|
||||
return;
|
||||
// die neue minimale Höhe festlegen um ggf. einen vertikalen Scrollbar anzuzeigen
|
||||
QSize newSize = m_report->paperSize().toSize();
|
||||
// DEBUG_LOG(m_logger) << "old min height: " << minimumHeight() << " - new min height: " << newSize.height() << END_LOG;
|
||||
// Zur Erklärung: es kann passieren, dass die ScrollArea entscheidet, dass der vertikale Scrollbar jetzt nicht mehr nötig ist
|
||||
// dies triggert ein resize Event und demnach eine neue Breite. Dadurch verändert sich dann natürlich auch die
|
||||
// neue minimale Höhe was widerrum dazu führt, dass der Scrollbar wieder nötig ist usw.
|
||||
// deshalb eine kleine hysterese, hoffentlich reicht es so
|
||||
if (minimumHeight() >= newSize.height() && minimumHeight() - 20 <= newSize.height())
|
||||
return;
|
||||
setMinimumHeight(newSize.height());
|
||||
}
|
||||
|
||||
} // namespace LtsWidgets
|
||||
Reference in new issue
Block a user