mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-02-26 09:41:29 -05:00
88 lines
3.0 KiB
C++
88 lines
3.0 KiB
C++
/*******************************************************************************
|
|
* util/printpreview.h *
|
|
* *
|
|
* Copyright (C) 2004-2007 Trolltech ASA. All rights reserved. *
|
|
* *
|
|
* This program is free software: you can redistribute it and/or modify *
|
|
* it under the terms of the GNU Affero General Public License as *
|
|
* published by the Free Software Foundation, either version 3 of the *
|
|
* License, or (at your option) any later version. *
|
|
* *
|
|
* This program 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 Affero General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU Affero General Public License *
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
|
* *
|
|
*******************************************************************************/
|
|
|
|
// This file is inspired from the demonstration applications of the Qt Toolkit.
|
|
|
|
#ifndef PRINTPREVIEW_H
|
|
#define PRINTPREVIEW_H
|
|
|
|
#include <QAbstractScrollArea>
|
|
#include <QMainWindow>
|
|
#include <QPrinter>
|
|
#include <QPointF>
|
|
#include <QSizeF>
|
|
|
|
class PreviewView;
|
|
class QTextDocument;
|
|
|
|
class PrintPreview : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
PrintPreview(const QTextDocument *document, QWidget *parent);
|
|
virtual ~PrintPreview();
|
|
|
|
QSizeF paperSize;
|
|
QPointF pageTopLeft;
|
|
|
|
private slots:
|
|
void print();
|
|
void pageSetup();
|
|
|
|
private:
|
|
void setup();
|
|
|
|
QTextDocument *doc;
|
|
PreviewView *view;
|
|
QPrinter printer;
|
|
};
|
|
|
|
class PreviewView : public QAbstractScrollArea
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
PreviewView(QTextDocument *document, PrintPreview *printPrev);
|
|
|
|
inline void updateLayout() { resizeEvent(0); viewport()->update(); }
|
|
|
|
public slots:
|
|
void zoomIn();
|
|
void zoomOut();
|
|
|
|
protected:
|
|
virtual void paintEvent(QPaintEvent *e);
|
|
virtual void resizeEvent(QResizeEvent *);
|
|
virtual void mousePressEvent(QMouseEvent *e);
|
|
virtual void mouseMoveEvent(QMouseEvent *e);
|
|
virtual void mouseReleaseEvent(QMouseEvent *e);
|
|
|
|
private:
|
|
void paintPage(QPainter *painter, int page);
|
|
QTextDocument *doc;
|
|
qreal scale;
|
|
int interPageSpacing;
|
|
QPoint mousePressPos;
|
|
QPoint scrollBarValuesOnMousePress;
|
|
PrintPreview *printPreview;
|
|
};
|
|
|
|
#endif // PRINTPREVIEW_H
|
|
|