LimeReport/limereport/lrpreviewreportwindow.h

151 lines
6.0 KiB
C
Raw Normal View History

2016-02-17 10:11:00 +03:00
/***************************************************************************
* This file is part of the Lime Report project *
2021-08-18 20:21:36 +03:00
* Copyright (C) 2021 by Alexander Arin *
2016-02-17 10:11:00 +03:00
* arin_a@bk.ru *
* *
** GNU General Public License Usage **
* *
* This library is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
** GNU Lesser General Public License **
* *
* This library 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. *
* You should have received a copy of the GNU Lesser General Public *
* License along with this library. *
* If not, see <http://www.gnu.org/licenses/>. *
* *
* This library 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. *
****************************************************************************/
#ifndef LRPREVIEWREPORTWINDOW_H
#define LRPREVIEWREPORTWINDOW_H
#include <QMainWindow>
#include <QDomComment>
#include <QSpinBox>
#include <QComboBox>
#include <QSettings>
#include <QEventLoop>
#include <QPrinter>
#include <QProgressBar>
2016-02-17 10:11:00 +03:00
#include "serializators/lrxmlreader.h"
#include "lrpreparedpagesintf.h"
2016-06-10 18:05:18 +03:00
namespace LimeReport {
2016-02-17 10:11:00 +03:00
namespace Ui {
class PreviewReportWindow;
}
class PreviewReportWidget;
class FontEditorWidget;
class TextAlignmentEditorWidget;
class ReportEngine;
class PageItemDesignIntf;
typedef QList< QSharedPointer<PageItemDesignIntf> > ReportPages;
2016-02-17 10:11:00 +03:00
class PreviewReportWindow : public QMainWindow
{
Q_OBJECT
public:
2021-08-23 08:07:08 +03:00
explicit PreviewReportWindow(ReportEngine *report, QWidget *parent = 0, QSettings* settings=0, Qt::WindowFlags flags=Qt::WindowFlags());
2016-02-17 10:11:00 +03:00
~PreviewReportWindow();
void setPages(ReportPages pages);
void setDefaultPrinter(QPrinter* printer);
2016-02-17 10:11:00 +03:00
void exec();
void initPreview(int pagesCount);
void reloadPreview();
2016-02-17 10:11:00 +03:00
void setSettings(QSettings* value);
void setErrorMessages(const QStringList& value);
void setToolBarVisible(bool value);
void setStatusBarVisible(bool value);
void setMenuVisible(bool value);
void setHideResultEditButton(bool value);
void setHidePrintButton(bool value);
void setHideSaveToFileButton(bool value);
void setHidePrintToPdfButton(bool value);
void setEnablePrintMenu(bool value);
2016-02-17 10:11:00 +03:00
QSettings* settings();
2018-07-11 02:42:43 +03:00
ScaleType previewScaleType() const;
void setPreviewScaleType(const ScaleType &previewScaleType, int percent = 0);
QColor previewPageBackgroundColor();
void setPreviewPageBackgroundColor(QColor color);
2016-02-17 10:11:00 +03:00
protected:
void writeSetting();
void restoreSetting();
void closeEvent(QCloseEvent *);
void resizeEvent(QResizeEvent *e);
void moveEvent(QMoveEvent *e);
2016-06-10 18:05:18 +03:00
void showEvent(QShowEvent *);
void selectStateIcon();
2016-02-17 10:11:00 +03:00
public slots:
void slotPrint();
void slotPriorPage();
void slotNextPage();
void slotZoomIn();
void slotZoomOut();
void slotPageNavigatorChanged(int value);
void slotShowErrors();
void on_actionSaveToFile_triggered();
2016-06-10 18:05:18 +03:00
void slotSelectionChanged();
void on_actionEdit_Mode_triggered(bool checked);
2016-02-17 10:11:00 +03:00
void slotFirstPage();
void slotLastPage();
2016-02-17 10:19:50 +03:00
void slotPrintToPDF();
void slotPageChanged(int pageIndex);
void slotInsertNewTextItem();
void slotActivateItemSelectionMode();
void slotDeleteSelectedItems();
private slots:
void on_actionFit_page_width_triggered();
void on_actionFit_page_triggered();
void on_actionOne_to_one_triggered();
void scaleComboboxChanged(QString text);
void slotScalePercentChanged(int percent);
void on_actionShowMessages_toggled(bool value);
void on_actionShow_Toolbar_triggered();
void slotCurrentPageChanged(int page);
void slotItemInserted(LimeReport::PageDesignIntf* report, QPointF pos, const QString& ItemType);
void slotPrintingStarted(int pageCount);
void slotPagePrintingFinished(int pageIndex);
void slotPrintingFinished();
void slotCancelPrinting(bool);
signals:
void onSave(bool& saved, LimeReport::IPreparedPages* pages);
2016-02-17 10:11:00 +03:00
private:
ItemsReaderIntf* reader();
void initPercentCombobox();
2016-02-17 10:11:00 +03:00
private:
Ui::PreviewReportWindow *ui;
QSpinBox* m_pagesNavigator;
QSharedPointer<ItemsReaderIntf> m_reader;
QEventLoop m_eventLoop;
bool m_changingPage;
QSettings* m_settings;
bool m_ownedSettings;
2016-06-10 18:05:18 +03:00
FontEditorWidget* m_fontEditor;
TextAlignmentEditorWidget* m_textAlignmentEditor;
int m_priorScrolValue;
PreviewReportWidget* m_previewReportWidget;
QComboBox* m_scalePercent;
2018-07-11 02:42:43 +03:00
ScaleType m_previewScaleType;
int m_previewScalePercent;
2018-08-07 23:30:40 +03:00
bool m_scalePercentChanging;
QProgressBar* m_progressBar;
QWidget* m_progressWidget;
2016-02-17 10:11:00 +03:00
};
} //namespace LimeReport
2016-02-17 10:11:00 +03:00
#endif // LRPREVIEWREPORTWINDOW_H