mirror of
				https://github.com/JakubMelka/PDF4QT.git
				synced 2025-06-05 21:59:17 +02:00 
			
		
		
		
	Lite version of the viewer
This commit is contained in:
		| @@ -26,7 +26,8 @@ SUBDIRS += \ | |||||||
|     UnitTests \ |     UnitTests \ | ||||||
|     Pdf4QtViewer \ |     Pdf4QtViewer \ | ||||||
|     Pdf4QtViewerPlugins \ |     Pdf4QtViewerPlugins \ | ||||||
|     Pdf4QtViewerProfi |     Pdf4QtViewerProfi \ | ||||||
|  |     Pdf4QtViewerLite | ||||||
|  |  | ||||||
| CodeGenerator.depends = Pdf4QtLib | CodeGenerator.depends = Pdf4QtLib | ||||||
| JBIG2_Viewer.depends = Pdf4QtLib | JBIG2_Viewer.depends = Pdf4QtLib | ||||||
| @@ -36,3 +37,4 @@ UnitTests.depends = Pdf4QtLib | |||||||
| Pdf4QtViewer.depends = Pdf4QtLib | Pdf4QtViewer.depends = Pdf4QtLib | ||||||
| Pdf4QtViewerPlugins.depends = Pdf4QtLib | Pdf4QtViewerPlugins.depends = Pdf4QtLib | ||||||
| Pdf4QtViewerProfi.depends = Pdf4QtViewer | Pdf4QtViewerProfi.depends = Pdf4QtViewer | ||||||
|  | Pdf4QtViewerLite.depends = Pdf4QtViewer | ||||||
|   | |||||||
| @@ -50,6 +50,7 @@ SOURCES += \ | |||||||
|         pdftexttospeech.cpp \ |         pdftexttospeech.cpp \ | ||||||
|         pdfundoredomanager.cpp \ |         pdfundoredomanager.cpp \ | ||||||
|         pdfviewermainwindow.cpp \ |         pdfviewermainwindow.cpp \ | ||||||
|  |         pdfviewermainwindowlite.cpp \ | ||||||
|         pdfviewersettings.cpp \ |         pdfviewersettings.cpp \ | ||||||
|         pdfviewersettingsdialog.cpp |         pdfviewersettingsdialog.cpp | ||||||
|  |  | ||||||
| @@ -67,6 +68,7 @@ HEADERS += \ | |||||||
|         pdfundoredomanager.h \ |         pdfundoredomanager.h \ | ||||||
|         pdfviewerglobal.h \ |         pdfviewerglobal.h \ | ||||||
|         pdfviewermainwindow.h \ |         pdfviewermainwindow.h \ | ||||||
|  |         pdfviewermainwindowlite.h \ | ||||||
|         pdfviewersettings.h \ |         pdfviewersettings.h \ | ||||||
|         pdfviewersettingsdialog.h |         pdfviewersettingsdialog.h | ||||||
|  |  | ||||||
| @@ -78,6 +80,7 @@ FORMS += \ | |||||||
|         pdfrendertoimagesdialog.ui \ |         pdfrendertoimagesdialog.ui \ | ||||||
|         pdfsidebarwidget.ui \ |         pdfsidebarwidget.ui \ | ||||||
|         pdfviewermainwindow.ui \ |         pdfviewermainwindow.ui \ | ||||||
|  |         pdfviewermainwindowlite.ui \ | ||||||
|         pdfviewersettingsdialog.ui |         pdfviewersettingsdialog.ui | ||||||
|  |  | ||||||
| CONFIG += force_debug_info | CONFIG += force_debug_info | ||||||
|   | |||||||
							
								
								
									
										441
									
								
								Pdf4QtViewer/pdfviewermainwindowlite.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										441
									
								
								Pdf4QtViewer/pdfviewermainwindowlite.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,441 @@ | |||||||
|  | //    Copyright (C) 2020 Jakub Melka | ||||||
|  | // | ||||||
|  | //    This file is part of Pdf4Qt. | ||||||
|  | // | ||||||
|  | //    Pdf4Qt 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. | ||||||
|  | // | ||||||
|  | //    Pdf4Qt 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 Lesser General Public License for more details. | ||||||
|  | // | ||||||
|  | //    You should have received a copy of the GNU Lesser General Public License | ||||||
|  | //    along with Pdf4Qt.  If not, see <https://www.gnu.org/licenses/>. | ||||||
|  |  | ||||||
|  | #include "PDFViewerMainWindowLite.h" | ||||||
|  | #include "ui_PDFViewerMainWindowLite.h" | ||||||
|  |  | ||||||
|  | #include "pdfaboutdialog.h" | ||||||
|  | #include "pdfsidebarwidget.h" | ||||||
|  | #include "pdfadvancedfindwidget.h" | ||||||
|  | #include "pdfviewersettingsdialog.h" | ||||||
|  | #include "pdfdocumentpropertiesdialog.h" | ||||||
|  | #include "pdfrendertoimagesdialog.h" | ||||||
|  | #include "pdfoptimizedocumentdialog.h" | ||||||
|  |  | ||||||
|  | #include "pdfdocumentreader.h" | ||||||
|  | #include "pdfvisitor.h" | ||||||
|  | #include "pdfstreamfilters.h" | ||||||
|  | #include "pdfdrawwidget.h" | ||||||
|  | #include "pdfdrawspacecontroller.h" | ||||||
|  | #include "pdfrenderingerrorswidget.h" | ||||||
|  | #include "pdffont.h" | ||||||
|  | #include "pdfitemmodels.h" | ||||||
|  | #include "pdfutils.h" | ||||||
|  | #include "pdfsendmail.h" | ||||||
|  | #include "pdfexecutionpolicy.h" | ||||||
|  | #include "pdfwidgetutils.h" | ||||||
|  | #include "pdfdocumentwriter.h" | ||||||
|  | #include "pdfsignaturehandler.h" | ||||||
|  | #include "pdfadvancedtools.h" | ||||||
|  | #include "pdfwidgetutils.h" | ||||||
|  |  | ||||||
|  | #include <QPainter> | ||||||
|  | #include <QSettings> | ||||||
|  | #include <QFileDialog> | ||||||
|  | #include <QMessageBox> | ||||||
|  | #include <QCloseEvent> | ||||||
|  | #include <QApplication> | ||||||
|  | #include <QDesktopWidget> | ||||||
|  | #include <QStandardPaths> | ||||||
|  | #include <QDockWidget> | ||||||
|  | #include <QTreeView> | ||||||
|  | #include <QLayout> | ||||||
|  | #include <QHeaderView> | ||||||
|  | #include <QInputDialog> | ||||||
|  | #include <QSpinBox> | ||||||
|  | #include <QLabel> | ||||||
|  | #include <QDoubleSpinBox> | ||||||
|  | #include <QDesktopServices> | ||||||
|  | #include <QFileDialog> | ||||||
|  | #include <QLockFile> | ||||||
|  | #include <QtPrintSupport/QPrinter> | ||||||
|  | #include <QtPrintSupport/QPrintDialog> | ||||||
|  | #include <QtConcurrent/QtConcurrent> | ||||||
|  | #include <QPluginLoader> | ||||||
|  | #include <QToolButton> | ||||||
|  | #include <QActionGroup> | ||||||
|  |  | ||||||
|  | #ifdef Q_OS_WIN | ||||||
|  | #include "Windows.h" | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | namespace pdfviewer | ||||||
|  | { | ||||||
|  |  | ||||||
|  | PDFViewerMainWindowLite::PDFViewerMainWindowLite(QWidget* parent) : | ||||||
|  |     QMainWindow(parent), | ||||||
|  |     ui(new Ui::PDFViewerMainWindowLite), | ||||||
|  |     m_actionManager(new PDFActionManager(this)), | ||||||
|  |     m_programController(new PDFProgramController(this)), | ||||||
|  |     m_sidebarWidget(nullptr), | ||||||
|  |     m_sidebarDockWidget(nullptr), | ||||||
|  |     m_pageNumberSpinBox(nullptr), | ||||||
|  |     m_pageNumberLabel(nullptr), | ||||||
|  |     m_pageZoomSpinBox(nullptr), | ||||||
|  |     m_isLoadingUI(false), | ||||||
|  |     m_progress(new pdf::PDFProgress(this)), | ||||||
|  |     m_taskbarButton(new QWinTaskbarButton(this)), | ||||||
|  |     m_progressTaskbarIndicator(nullptr), | ||||||
|  |     m_progressDialog(nullptr), | ||||||
|  |     m_isChangingProgressStep(false) | ||||||
|  | { | ||||||
|  |     ui->setupUi(this); | ||||||
|  |  | ||||||
|  |     setAcceptDrops(true); | ||||||
|  |  | ||||||
|  |     // Initialize toolbar icon size | ||||||
|  |     adjustToolbar(ui->mainToolBar); | ||||||
|  |  | ||||||
|  |     // Initialize task bar progress | ||||||
|  |     m_progressTaskbarIndicator = m_taskbarButton->progress(); | ||||||
|  |  | ||||||
|  |     // Initialize actions | ||||||
|  |     m_actionManager->setAction(PDFActionManager::Open, ui->actionOpen); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::Close, ui->actionClose); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::Quit, ui->actionQuit); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::ZoomIn, ui->actionZoom_In); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::ZoomOut, ui->actionZoom_Out); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RotateRight, ui->actionRotateRight); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RotateLeft, ui->actionRotateLeft); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::Print, ui->actionPrint); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::GoToDocumentStart, ui->actionGoToDocumentStart); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::GoToDocumentEnd, ui->actionGoToDocumentEnd); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::GoToNextPage, ui->actionGoToNextPage); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::GoToPreviousPage, ui->actionGoToPreviousPage); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::GoToNextLine, ui->actionGoToNextLine); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::GoToPreviousLine, ui->actionGoToPreviousLine); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RenderOptionAntialiasing, ui->actionRenderOptionAntialiasing); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RenderOptionTextAntialiasing, ui->actionRenderOptionTextAntialiasing); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RenderOptionSmoothPictures, ui->actionRenderOptionSmoothPictures); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RenderOptionIgnoreOptionalContentSettings, ui->actionRenderOptionIgnoreOptionalContentSettings); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RenderOptionDisplayAnnotations, ui->actionRenderOptionDisplayAnnotations); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::RenderOptionInvertColors, ui->actionInvertColors); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::Properties, ui->actionProperties); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::Options, ui->actionOptions); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::About, ui->actionAbout); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::SendByMail, ui->actionSend_by_E_Mail); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::FitPage, ui->actionFitPage); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::FitWidth, ui->actionFitWidth); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::FitHeight, ui->actionFitHeight); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::ShowRenderingErrors, ui->actionRendering_Errors); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::PageLayoutSinglePage, ui->actionPageLayoutSinglePage); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::PageLayoutContinuous, ui->actionPageLayoutContinuous); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::PageLayoutTwoPages, ui->actionPageLayoutTwoPages); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::PageLayoutTwoColumns, ui->actionPageLayoutTwoColumns); | ||||||
|  |     m_actionManager->setAction(PDFActionManager::PageLayoutFirstPageOnRightSide, ui->actionFirstPageOnRightSide); | ||||||
|  |     m_actionManager->initActions(pdf::PDFWidgetUtils::scaleDPI(this, QSize(24, 24)), true); | ||||||
|  |  | ||||||
|  |     for (QAction* action : m_programController->getRecentFileManager()->getActions()) | ||||||
|  |     { | ||||||
|  |         ui->menuFile->insertAction(ui->actionQuit, action); | ||||||
|  |     } | ||||||
|  |     ui->menuFile->insertSeparator(ui->actionQuit); | ||||||
|  |  | ||||||
|  |     connect(ui->actionQuit, &QAction::triggered, this, &PDFViewerMainWindowLite::onActionQuitTriggered); | ||||||
|  |  | ||||||
|  |     m_pageNumberSpinBox = new QSpinBox(this); | ||||||
|  |     m_pageNumberLabel = new QLabel(this); | ||||||
|  |     m_pageNumberSpinBox->setFixedWidth(pdf::PDFWidgetUtils::scaleDPI_x(m_pageNumberSpinBox, 80)); | ||||||
|  |     m_pageNumberSpinBox->setAlignment(Qt::AlignCenter); | ||||||
|  |     connect(m_pageNumberSpinBox, &QSpinBox::editingFinished, this, &PDFViewerMainWindowLite::onPageNumberSpinboxEditingFinished); | ||||||
|  |  | ||||||
|  |     // Page control | ||||||
|  |     ui->mainToolBar->addSeparator(); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionGoToDocumentStart); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionGoToPreviousPage); | ||||||
|  |     ui->mainToolBar->addWidget(m_pageNumberSpinBox); | ||||||
|  |     ui->mainToolBar->addWidget(m_pageNumberLabel); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionGoToNextPage); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionGoToDocumentEnd); | ||||||
|  |  | ||||||
|  |     // Zoom | ||||||
|  |     ui->mainToolBar->addSeparator(); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionZoom_In); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionZoom_Out); | ||||||
|  |  | ||||||
|  |     m_pageZoomSpinBox = new QDoubleSpinBox(this); | ||||||
|  |     m_pageZoomSpinBox->setMinimum(pdf::PDFDrawWidgetProxy::getMinZoom() * 100); | ||||||
|  |     m_pageZoomSpinBox->setMaximum(pdf::PDFDrawWidgetProxy::getMaxZoom() * 100); | ||||||
|  |     m_pageZoomSpinBox->setDecimals(2); | ||||||
|  |     m_pageZoomSpinBox->setSuffix(tr("%")); | ||||||
|  |     m_pageZoomSpinBox->setFixedWidth(pdf::PDFWidgetUtils::scaleDPI_x(m_pageNumberSpinBox, 80)); | ||||||
|  |     m_pageZoomSpinBox->setAlignment(Qt::AlignVCenter | Qt::AlignRight); | ||||||
|  |     connect(m_pageZoomSpinBox, &QDoubleSpinBox::editingFinished, this, &PDFViewerMainWindowLite::onPageZoomSpinboxEditingFinished); | ||||||
|  |     ui->mainToolBar->addWidget(m_pageZoomSpinBox); | ||||||
|  |  | ||||||
|  |     // Fit page, width, height | ||||||
|  |     ui->mainToolBar->addAction(ui->actionFitPage); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionFitWidth); | ||||||
|  |     ui->mainToolBar->addAction(ui->actionFitHeight); | ||||||
|  |     ui->mainToolBar->addSeparator(); | ||||||
|  |  | ||||||
|  |     // Special tools | ||||||
|  |     m_programController->initialize(PDFProgramController::TextToSpeech, this, this, m_actionManager, m_progress); | ||||||
|  |     setCentralWidget(m_programController->getPdfWidget()); | ||||||
|  |     setFocusProxy(m_programController->getPdfWidget()); | ||||||
|  |  | ||||||
|  |     m_sidebarWidget = new PDFSidebarWidget(m_programController->getPdfWidget()->getDrawWidgetProxy(), m_programController->getTextToSpeech(), m_programController->getCertificateStore(), m_programController->getSettings(), this); | ||||||
|  |     m_sidebarDockWidget = new QDockWidget(tr("Sidebar"), this); | ||||||
|  |     m_sidebarDockWidget->setObjectName("SidebarDockWidget"); | ||||||
|  |     m_sidebarDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); | ||||||
|  |     m_sidebarDockWidget->setWidget(m_sidebarWidget); | ||||||
|  |     addDockWidget(Qt::LeftDockWidgetArea, m_sidebarDockWidget); | ||||||
|  |     m_sidebarDockWidget->hide(); | ||||||
|  |     connect(m_sidebarWidget, &PDFSidebarWidget::actionTriggered, m_programController, &PDFProgramController::onActionTriggered); | ||||||
|  |  | ||||||
|  |     ui->menuView->addSeparator(); | ||||||
|  |     ui->menuView->addAction(m_sidebarDockWidget->toggleViewAction()); | ||||||
|  |     m_sidebarDockWidget->toggleViewAction()->setObjectName("actionSidebar"); | ||||||
|  |     m_actionManager->addAdditionalAction(m_sidebarDockWidget->toggleViewAction()); | ||||||
|  |  | ||||||
|  |     connect(m_progress, &pdf::PDFProgress::progressStarted, this, &PDFViewerMainWindowLite::onProgressStarted); | ||||||
|  |     connect(m_progress, &pdf::PDFProgress::progressStep, this, &PDFViewerMainWindowLite::onProgressStep); | ||||||
|  |     connect(m_progress, &pdf::PDFProgress::progressFinished, this, &PDFViewerMainWindowLite::onProgressFinished); | ||||||
|  |  | ||||||
|  |     m_programController->finishInitialization(); | ||||||
|  |  | ||||||
|  |     if (pdf::PDFToolManager* toolManager = m_programController->getToolManager()) | ||||||
|  |     { | ||||||
|  |         connect(toolManager, &pdf::PDFToolManager::messageDisplayRequest, statusBar(), &QStatusBar::showMessage); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | PDFViewerMainWindowLite::~PDFViewerMainWindowLite() | ||||||
|  | { | ||||||
|  |     delete m_programController; | ||||||
|  |     m_programController = nullptr; | ||||||
|  |  | ||||||
|  |     delete m_actionManager; | ||||||
|  |     m_actionManager = nullptr; | ||||||
|  |  | ||||||
|  |     delete ui; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::onActionQuitTriggered() | ||||||
|  | { | ||||||
|  |     close(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::onPageNumberSpinboxEditingFinished() | ||||||
|  | { | ||||||
|  |     if (m_isLoadingUI) | ||||||
|  |     { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (m_pageNumberSpinBox->hasFocus()) | ||||||
|  |     { | ||||||
|  |         m_programController->getPdfWidget()->setFocus(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     m_programController->getPdfWidget()->getDrawWidgetProxy()->goToPage(m_pageNumberSpinBox->value() - 1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::onPageZoomSpinboxEditingFinished() | ||||||
|  | { | ||||||
|  |     if (m_isLoadingUI) | ||||||
|  |     { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (m_pageZoomSpinBox->hasFocus()) | ||||||
|  |     { | ||||||
|  |         m_programController->getPdfWidget()->setFocus(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     m_programController->getPdfWidget()->getDrawWidgetProxy()->zoom(m_pageZoomSpinBox->value() / 100.0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::onProgressStarted(pdf::ProgressStartupInfo info) | ||||||
|  | { | ||||||
|  |     Q_ASSERT(!m_progressDialog); | ||||||
|  |     if (info.showDialog) | ||||||
|  |     { | ||||||
|  |         m_progressDialog = new QProgressDialog(info.text, QString(), 0, 100, this); | ||||||
|  |         m_progressDialog->setWindowModality(Qt::WindowModal); | ||||||
|  |         m_progressDialog->setCancelButton(nullptr); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     m_progressTaskbarIndicator->setRange(0, 100); | ||||||
|  |     m_progressTaskbarIndicator->reset(); | ||||||
|  |     m_progressTaskbarIndicator->show(); | ||||||
|  |  | ||||||
|  |     m_programController->setIsBusy(true); | ||||||
|  |     m_programController->updateActionsAvailability(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::onProgressStep(int percentage) | ||||||
|  | { | ||||||
|  |     if (m_isChangingProgressStep) | ||||||
|  |     { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     pdf::PDFTemporaryValueChange guard(&m_isChangingProgressStep, true); | ||||||
|  |  | ||||||
|  |     if (m_progressDialog) | ||||||
|  |     { | ||||||
|  |         m_progressDialog->setValue(percentage); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     m_progressTaskbarIndicator->setValue(percentage); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::onProgressFinished() | ||||||
|  | { | ||||||
|  |     if (m_progressDialog) | ||||||
|  |     { | ||||||
|  |         m_progressDialog->hide(); | ||||||
|  |         m_progressDialog->deleteLater(); | ||||||
|  |         m_progressDialog = nullptr; | ||||||
|  |     } | ||||||
|  |     m_progressTaskbarIndicator->hide(); | ||||||
|  |  | ||||||
|  |     m_programController->setIsBusy(false); | ||||||
|  |     m_programController->updateActionsAvailability(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::updateUI(bool fullUpdate) | ||||||
|  | { | ||||||
|  |     pdf::PDFTemporaryValueChange guard(&m_isLoadingUI, true); | ||||||
|  |  | ||||||
|  |     if (fullUpdate) | ||||||
|  |     { | ||||||
|  |         if (pdf::PDFDocument* document = m_programController->getDocument()) | ||||||
|  |         { | ||||||
|  |             size_t pageCount = document->getCatalog()->getPageCount(); | ||||||
|  |             m_pageNumberSpinBox->setMinimum(1); | ||||||
|  |             m_pageNumberSpinBox->setMaximum(static_cast<int>(pageCount)); | ||||||
|  |             m_pageNumberSpinBox->setEnabled(true); | ||||||
|  |             m_pageNumberLabel->setText(tr(" / %1").arg(pageCount)); | ||||||
|  |         } | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             m_pageNumberSpinBox->setEnabled(false); | ||||||
|  |             m_pageNumberLabel->setText(QString()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |         std::vector<pdf::PDFInteger> currentPages = m_programController->getPdfWidget()->getDrawWidget()->getCurrentPages(); | ||||||
|  |         if (!currentPages.empty()) | ||||||
|  |         { | ||||||
|  |             m_pageNumberSpinBox->setValue(currentPages.front() + 1); | ||||||
|  |  | ||||||
|  |             // Prefetch pages, if it is enabled | ||||||
|  |             if (m_programController->getSettings()->isPagePrefetchingEnabled()) | ||||||
|  |             { | ||||||
|  |                 m_programController->getPdfWidget()->getDrawWidgetProxy()->prefetchPages(currentPages.back()); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         m_sidebarWidget->setCurrentPages(currentPages); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     m_pageZoomSpinBox->setValue(m_programController->getPdfWidget()->getDrawWidgetProxy()->getZoom() * 100); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QMenu* PDFViewerMainWindowLite::addToolMenu(QString name) | ||||||
|  | { | ||||||
|  |     return ui->menuTools->addMenu(name); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::setStatusBarMessage(QString message, int time) | ||||||
|  | { | ||||||
|  |     statusBar()->showMessage(message, time); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::setDocument(const pdf::PDFModifiedDocument& document) | ||||||
|  | { | ||||||
|  |     if (m_sidebarWidget) | ||||||
|  |     { | ||||||
|  |         m_sidebarWidget->setDocument(document, *m_programController->getSignatures()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (m_sidebarWidget) | ||||||
|  |     { | ||||||
|  |         if (m_sidebarWidget->isEmpty()) | ||||||
|  |         { | ||||||
|  |             m_sidebarDockWidget->hide(); | ||||||
|  |         } | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             m_sidebarDockWidget->show(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::adjustToolbar(QToolBar* toolbar) | ||||||
|  | { | ||||||
|  |     QSize iconSize = pdf::PDFWidgetUtils::scaleDPI(this, QSize(24, 24)); | ||||||
|  |     toolbar->setIconSize(iconSize); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::closeEvent(QCloseEvent* event) | ||||||
|  | { | ||||||
|  |     if (!m_programController->canClose()) | ||||||
|  |     { | ||||||
|  |         // Jakub Melka: Do not allow to close the application, if document | ||||||
|  |         // reading is running. | ||||||
|  |         event->ignore(); | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |         m_programController->writeSettings(); | ||||||
|  |         m_programController->closeDocument(); | ||||||
|  |         event->accept(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::showEvent(QShowEvent* event) | ||||||
|  | { | ||||||
|  |     Q_UNUSED(event); | ||||||
|  |     m_taskbarButton->setWindow(windowHandle()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::dragEnterEvent(QDragEnterEvent* event) | ||||||
|  | { | ||||||
|  |     if (event->mimeData()->hasUrls()) | ||||||
|  |     { | ||||||
|  |         event->setDropAction(Qt::LinkAction); | ||||||
|  |         event->accept(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::dragMoveEvent(QDragMoveEvent* event) | ||||||
|  | { | ||||||
|  |     if (event->mimeData()->hasUrls()) | ||||||
|  |     { | ||||||
|  |         event->setDropAction(Qt::LinkAction); | ||||||
|  |         event->accept(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PDFViewerMainWindowLite::dropEvent(QDropEvent* event) | ||||||
|  | { | ||||||
|  |     if (event->mimeData()->hasUrls()) | ||||||
|  |     { | ||||||
|  |         QList<QUrl> urls = event->mimeData()->urls(); | ||||||
|  |         if (urls.size() == 1) | ||||||
|  |         { | ||||||
|  |             m_programController->openDocument(urls.front().toLocalFile()); | ||||||
|  |             event->acceptProposedAction(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | }   // namespace pdfviewer | ||||||
							
								
								
									
										125
									
								
								Pdf4QtViewer/pdfviewermainwindowlite.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								Pdf4QtViewer/pdfviewermainwindowlite.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | |||||||
|  | //    Copyright (C) 2020 Jakub Melka | ||||||
|  | // | ||||||
|  | //    This file is part of Pdf4Qt. | ||||||
|  | // | ||||||
|  | //    Pdf4Qt 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. | ||||||
|  | // | ||||||
|  | //    Pdf4Qt 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 Lesser General Public License for more details. | ||||||
|  | // | ||||||
|  | //    You should have received a copy of the GNU Lesser General Public License | ||||||
|  | //    along with Pdf4Qt.  If not, see <https://www.gnu.org/licenses/>. | ||||||
|  |  | ||||||
|  | #ifndef PDFVIEWERMAINWINDOWLITE_H | ||||||
|  | #define PDFVIEWERMAINWINDOWLITE_H | ||||||
|  |  | ||||||
|  | #include "pdfviewerglobal.h" | ||||||
|  | #include "pdfcatalog.h" | ||||||
|  | #include "pdfrenderer.h" | ||||||
|  | #include "pdfprogress.h" | ||||||
|  | #include "pdfdocument.h" | ||||||
|  | #include "pdfviewersettings.h" | ||||||
|  | #include "pdfdocumentreader.h" | ||||||
|  | #include "pdfdocumentpropertiesdialog.h" | ||||||
|  | #include "pdfwidgettool.h" | ||||||
|  | #include "pdfrecentfilemanager.h" | ||||||
|  | #include "pdftexttospeech.h" | ||||||
|  | #include "pdfannotation.h" | ||||||
|  | #include "pdfform.h" | ||||||
|  | #include "pdfundoredomanager.h" | ||||||
|  | #include "pdfplugin.h" | ||||||
|  | #include "pdfprogramcontroller.h" | ||||||
|  |  | ||||||
|  | #include <QFuture> | ||||||
|  | #include <QTreeView> | ||||||
|  | #include <QMainWindow> | ||||||
|  | #include <QWinTaskbarButton> | ||||||
|  | #include <QWinTaskbarProgress> | ||||||
|  | #include <QFutureWatcher> | ||||||
|  | #include <QProgressDialog> | ||||||
|  |  | ||||||
|  | class QLabel; | ||||||
|  | class QSpinBox; | ||||||
|  | class QSettings; | ||||||
|  | class QDoubleSpinBox; | ||||||
|  |  | ||||||
|  | namespace Ui | ||||||
|  | { | ||||||
|  | class PDFViewerMainWindowLite; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | namespace pdf | ||||||
|  | { | ||||||
|  | class PDFAction; | ||||||
|  | class PDFWidget; | ||||||
|  | class PDFDocument; | ||||||
|  | class PDFOptionalContentTreeItemModel; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | namespace pdfviewer | ||||||
|  | { | ||||||
|  | class PDFSidebarWidget; | ||||||
|  | class PDFAdvancedFindWidget; | ||||||
|  |  | ||||||
|  | class Pdf4QtVIEWERLIBSHARED_EXPORT PDFViewerMainWindowLite : public QMainWindow, public IMainWindow | ||||||
|  | { | ||||||
|  |     Q_OBJECT | ||||||
|  |  | ||||||
|  | public: | ||||||
|  |     explicit PDFViewerMainWindowLite(QWidget *parent = nullptr); | ||||||
|  |     virtual ~PDFViewerMainWindowLite() override; | ||||||
|  |  | ||||||
|  |     virtual void closeEvent(QCloseEvent* event) override; | ||||||
|  |     virtual void showEvent(QShowEvent* event) override; | ||||||
|  |  | ||||||
|  |     PDFProgramController* getProgramController() const { return m_programController; } | ||||||
|  |  | ||||||
|  |     virtual void updateUI(bool fullUpdate) override; | ||||||
|  |     virtual QMenu* addToolMenu(QString name) override; | ||||||
|  |     virtual void setStatusBarMessage(QString message, int time) override; | ||||||
|  |     virtual void setDocument(const pdf::PDFModifiedDocument& document) override; | ||||||
|  |     virtual void adjustToolbar(QToolBar* toolbar) override; | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  |     virtual void dragEnterEvent(QDragEnterEvent* event) override; | ||||||
|  |     virtual void dragMoveEvent(QDragMoveEvent* event) override; | ||||||
|  |     virtual void dropEvent(QDropEvent* event) override; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |     void onActionQuitTriggered(); | ||||||
|  |  | ||||||
|  |     void onPageNumberSpinboxEditingFinished(); | ||||||
|  |     void onPageZoomSpinboxEditingFinished(); | ||||||
|  |  | ||||||
|  |     void onProgressStarted(pdf::ProgressStartupInfo info); | ||||||
|  |     void onProgressStep(int percentage); | ||||||
|  |     void onProgressFinished(); | ||||||
|  |  | ||||||
|  |     QIcon createStickyNoteIcon(QString key) const; | ||||||
|  |  | ||||||
|  |     Ui::PDFViewerMainWindowLite* ui; | ||||||
|  |     PDFActionManager* m_actionManager; | ||||||
|  |     PDFProgramController* m_programController; | ||||||
|  |  | ||||||
|  |     PDFSidebarWidget* m_sidebarWidget; | ||||||
|  |     QDockWidget* m_sidebarDockWidget; | ||||||
|  |     QSpinBox* m_pageNumberSpinBox; | ||||||
|  |     QLabel* m_pageNumberLabel; | ||||||
|  |     QDoubleSpinBox* m_pageZoomSpinBox; | ||||||
|  |     bool m_isLoadingUI; | ||||||
|  |     pdf::PDFProgress* m_progress; | ||||||
|  |     QWinTaskbarButton* m_taskbarButton; | ||||||
|  |     QWinTaskbarProgress* m_progressTaskbarIndicator; | ||||||
|  |  | ||||||
|  |     QProgressDialog* m_progressDialog; | ||||||
|  |     bool m_isChangingProgressStep; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | }   // namespace pdfviewer | ||||||
|  |  | ||||||
|  | #endif // PDFVIEWERMAINWINDOWLITE_H | ||||||
							
								
								
									
										437
									
								
								Pdf4QtViewer/pdfviewermainwindowlite.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										437
									
								
								Pdf4QtViewer/pdfviewermainwindowlite.ui
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,437 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <ui version="4.0"> | ||||||
|  |  <class>PDFViewerMainWindowLite</class> | ||||||
|  |  <widget class="QMainWindow" name="PDFViewerMainWindowLite"> | ||||||
|  |   <property name="geometry"> | ||||||
|  |    <rect> | ||||||
|  |     <x>0</x> | ||||||
|  |     <y>0</y> | ||||||
|  |     <width>770</width> | ||||||
|  |     <height>572</height> | ||||||
|  |    </rect> | ||||||
|  |   </property> | ||||||
|  |   <property name="windowTitle"> | ||||||
|  |    <string>PDF Viewer</string> | ||||||
|  |   </property> | ||||||
|  |   <widget class="QWidget" name="centralWidget"/> | ||||||
|  |   <widget class="QMenuBar" name="menuBar"> | ||||||
|  |    <property name="geometry"> | ||||||
|  |     <rect> | ||||||
|  |      <x>0</x> | ||||||
|  |      <y>0</y> | ||||||
|  |      <width>770</width> | ||||||
|  |      <height>21</height> | ||||||
|  |     </rect> | ||||||
|  |    </property> | ||||||
|  |    <widget class="QMenu" name="menuFile"> | ||||||
|  |     <property name="title"> | ||||||
|  |      <string>File</string> | ||||||
|  |     </property> | ||||||
|  |     <addaction name="actionOpen"/> | ||||||
|  |     <addaction name="actionClose"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionSend_by_E_Mail"/> | ||||||
|  |     <addaction name="actionPrint"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionProperties"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionQuit"/> | ||||||
|  |    </widget> | ||||||
|  |    <widget class="QMenu" name="menuGoTo"> | ||||||
|  |     <property name="title"> | ||||||
|  |      <string>Go To</string> | ||||||
|  |     </property> | ||||||
|  |     <addaction name="actionGoToDocumentStart"/> | ||||||
|  |     <addaction name="actionGoToDocumentEnd"/> | ||||||
|  |     <addaction name="actionGoToPreviousPage"/> | ||||||
|  |     <addaction name="actionGoToNextPage"/> | ||||||
|  |     <addaction name="actionGoToPreviousLine"/> | ||||||
|  |     <addaction name="actionGoToNextLine"/> | ||||||
|  |    </widget> | ||||||
|  |    <widget class="QMenu" name="menuView"> | ||||||
|  |     <property name="title"> | ||||||
|  |      <string>View</string> | ||||||
|  |     </property> | ||||||
|  |     <widget class="QMenu" name="menuPage_Layout"> | ||||||
|  |      <property name="title"> | ||||||
|  |       <string>Page Layout</string> | ||||||
|  |      </property> | ||||||
|  |      <addaction name="actionPageLayoutSinglePage"/> | ||||||
|  |      <addaction name="actionPageLayoutContinuous"/> | ||||||
|  |      <addaction name="actionPageLayoutTwoPages"/> | ||||||
|  |      <addaction name="actionPageLayoutTwoColumns"/> | ||||||
|  |      <addaction name="separator"/> | ||||||
|  |      <addaction name="actionFirstPageOnRightSide"/> | ||||||
|  |     </widget> | ||||||
|  |     <widget class="QMenu" name="menuRendering_Options"> | ||||||
|  |      <property name="title"> | ||||||
|  |       <string>Rendering Options</string> | ||||||
|  |      </property> | ||||||
|  |      <addaction name="actionRenderOptionAntialiasing"/> | ||||||
|  |      <addaction name="actionRenderOptionTextAntialiasing"/> | ||||||
|  |      <addaction name="actionRenderOptionSmoothPictures"/> | ||||||
|  |      <addaction name="actionRenderOptionIgnoreOptionalContentSettings"/> | ||||||
|  |      <addaction name="actionRenderOptionDisplayAnnotations"/> | ||||||
|  |     </widget> | ||||||
|  |     <addaction name="menuPage_Layout"/> | ||||||
|  |     <addaction name="menuRendering_Options"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionRotateRight"/> | ||||||
|  |     <addaction name="actionRotateLeft"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionZoom_In"/> | ||||||
|  |     <addaction name="actionZoom_Out"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionFitPage"/> | ||||||
|  |     <addaction name="actionFitWidth"/> | ||||||
|  |     <addaction name="actionFitHeight"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionInvertColors"/> | ||||||
|  |    </widget> | ||||||
|  |    <widget class="QMenu" name="menuTools"> | ||||||
|  |     <property name="title"> | ||||||
|  |      <string>Tools</string> | ||||||
|  |     </property> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionRendering_Errors"/> | ||||||
|  |     <addaction name="separator"/> | ||||||
|  |     <addaction name="actionOptions"/> | ||||||
|  |    </widget> | ||||||
|  |    <widget class="QMenu" name="menuHelp"> | ||||||
|  |     <property name="title"> | ||||||
|  |      <string>Help</string> | ||||||
|  |     </property> | ||||||
|  |     <addaction name="actionAbout"/> | ||||||
|  |    </widget> | ||||||
|  |    <addaction name="menuFile"/> | ||||||
|  |    <addaction name="menuView"/> | ||||||
|  |    <addaction name="menuGoTo"/> | ||||||
|  |    <addaction name="menuTools"/> | ||||||
|  |    <addaction name="menuHelp"/> | ||||||
|  |   </widget> | ||||||
|  |   <widget class="QToolBar" name="mainToolBar"> | ||||||
|  |    <attribute name="toolBarArea"> | ||||||
|  |     <enum>TopToolBarArea</enum> | ||||||
|  |    </attribute> | ||||||
|  |    <attribute name="toolBarBreak"> | ||||||
|  |     <bool>false</bool> | ||||||
|  |    </attribute> | ||||||
|  |    <addaction name="actionOpen"/> | ||||||
|  |   </widget> | ||||||
|  |   <widget class="QStatusBar" name="statusBar"/> | ||||||
|  |   <action name="actionOpen"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/open.svg</normaloff>:/resources/open.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Open</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionClose"> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Close</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionQuit"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/quit.svg</normaloff>:/resources/quit.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Quit</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionPageLayoutSinglePage"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Single Page</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>Ctrl+1</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionPageLayoutContinuous"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Continuous</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>Ctrl+2</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionPageLayoutTwoPages"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Two Pages</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>Ctrl+3</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionPageLayoutTwoColumns"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Two columns</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>Ctrl+4</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionFirstPageOnRightSide"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>First page on right side</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="toolTip"> | ||||||
|  |     <string>First page on right side</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>Ctrl+5</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRendering_Errors"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/rendering-errors.svg</normaloff>:/resources/rendering-errors.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Rendering Errors</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>Ctrl+E</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRenderOptionAntialiasing"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Antialiasing</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRenderOptionTextAntialiasing"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Text Antialiasing</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRenderOptionSmoothPictures"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Smooth Pictures</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRenderOptionIgnoreOptionalContentSettings"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Ignore Optional Content Settings</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionOptions"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/settings.svg</normaloff>:/resources/settings.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Options...</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>Ctrl+K</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionZoom_In"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/zoom-in.svg</normaloff>:/resources/zoom-in.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Zoom In</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionZoom_Out"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/zoom-out.svg</normaloff>:/resources/zoom-out.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Zoom Out</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionAbout"> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>About</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionFitPage"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/zoom-fit.svg</normaloff>:/resources/zoom-fit.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Fit Page</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionFitWidth"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/zoom-fit-horizontal.svg</normaloff>:/resources/zoom-fit-horizontal.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Fit Width</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>W</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionFitHeight"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/zoom-fit-vertical.svg</normaloff>:/resources/zoom-fit-vertical.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Fit Height</string> | ||||||
|  |    </property> | ||||||
|  |    <property name="shortcut"> | ||||||
|  |     <string>H</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionProperties"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/info.svg</normaloff>:/resources/info.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Properties</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionSend_by_E_Mail"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/send-mail.svg</normaloff>:/resources/send-mail.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Send by E-Mail</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionInvertColors"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Invert Colors</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRotateRight"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/rotate-right.svg</normaloff>:/resources/rotate-right.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Rotate Right</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRotateLeft"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/rotate-left.svg</normaloff>:/resources/rotate-left.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Rotate Left</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionPrint"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/print.svg</normaloff>:/resources/print.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Print</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionRenderOptionDisplayAnnotations"> | ||||||
|  |    <property name="checkable"> | ||||||
|  |     <bool>true</bool> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Display Annotations</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionGoToDocumentStart"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/previous-start.svg</normaloff>:/resources/previous-start.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Go to document start</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionGoToDocumentEnd"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/next-end.svg</normaloff>:/resources/next-end.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Go to document end</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionGoToNextPage"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/next-page.svg</normaloff>:/resources/next-page.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Go to next page</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionGoToPreviousPage"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/previous-page.svg</normaloff>:/resources/previous-page.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Go to previous page</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionGoToNextLine"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/next.svg</normaloff>:/resources/next.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Go to next line</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |   <action name="actionGoToPreviousLine"> | ||||||
|  |    <property name="icon"> | ||||||
|  |     <iconset resource="pdf4qtviewer.qrc"> | ||||||
|  |      <normaloff>:/resources/previous.svg</normaloff>:/resources/previous.svg</iconset> | ||||||
|  |    </property> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Go to previous line</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  |  </widget> | ||||||
|  |  <layoutdefault spacing="6" margin="11"/> | ||||||
|  |  <resources> | ||||||
|  |   <include location="pdf4qtviewer.qrc"/> | ||||||
|  |  </resources> | ||||||
|  |  <connections/> | ||||||
|  | </ui> | ||||||
							
								
								
									
										44
									
								
								Pdf4QtViewerLite/Pdf4QtViewerLite.pro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								Pdf4QtViewerLite/Pdf4QtViewerLite.pro
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | |||||||
|  | #    Copyright (C) 2018-2020 Jakub Melka | ||||||
|  | # | ||||||
|  | #    This file is part of Pdf4Qt. | ||||||
|  | # | ||||||
|  | #    Pdf4Qt 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. | ||||||
|  | # | ||||||
|  | #    Pdf4Qt 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 Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | #    You should have received a copy of the GNU Lesser General Public License | ||||||
|  | #    along with Pdf4Qt.  If not, see <https://www.gnu.org/licenses/>. | ||||||
|  |  | ||||||
|  | QT += core gui widgets winextras | ||||||
|  |  | ||||||
|  | TARGET = Pdf4QtViewerLite | ||||||
|  | TEMPLATE = app | ||||||
|  |  | ||||||
|  | VERSION = 1.0.0 | ||||||
|  |  | ||||||
|  | RC_ICONS = $$PWD/app-icon.ico | ||||||
|  |  | ||||||
|  | QMAKE_TARGET_DESCRIPTION = "PDF viewer for Qt, Lite version" | ||||||
|  | QMAKE_TARGET_COPYRIGHT = "(c) Jakub Melka 2018-2020" | ||||||
|  |  | ||||||
|  | DEFINES += QT_DEPRECATED_WARNINGS | ||||||
|  | QMAKE_CXXFLAGS += /std:c++latest /utf-8 | ||||||
|  |  | ||||||
|  | INCLUDEPATH += $$PWD/../PDF4QtLib/Sources $$PWD/../PDF4QtViewer | ||||||
|  | DESTDIR = $$OUT_PWD/.. | ||||||
|  | LIBS += -L$$OUT_PWD/.. | ||||||
|  | LIBS += -lPDF4QtLib -lPDF4QtViewer | ||||||
|  | CONFIG += force_debug_info | ||||||
|  |  | ||||||
|  | application.files = $$DESTDIR/Pdf4QtViewerLite.exe | ||||||
|  | application.path = $$DESTDIR/install | ||||||
|  | INSTALLS += application | ||||||
|  |  | ||||||
|  | SOURCES += \ | ||||||
|  |     main.cpp | ||||||
							
								
								
									
										
											BIN
										
									
								
								Pdf4QtViewerLite/app-icon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Pdf4QtViewerLite/app-icon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 251 KiB | 
							
								
								
									
										34
									
								
								Pdf4QtViewerLite/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Pdf4QtViewerLite/main.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | #include "pdfviewermainwindowlite.h" | ||||||
|  |  | ||||||
|  | #include <QApplication> | ||||||
|  | #include <QCommandLineParser> | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  |     QApplication::setAttribute(Qt::AA_CompressHighFrequencyEvents, true); | ||||||
|  |     QApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true); | ||||||
|  |     QApplication::setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity, true); | ||||||
|  |     QApplication application(argc, argv); | ||||||
|  |  | ||||||
|  |     QCoreApplication::setOrganizationName("MelkaJ"); | ||||||
|  |     QCoreApplication::setApplicationName("PDF4QT Viewer Lite"); | ||||||
|  |     QCoreApplication::setApplicationVersion("1.0.0"); | ||||||
|  |     QApplication::setApplicationDisplayName(QApplication::translate("Application", "PDF4QT Viewer Lite")); | ||||||
|  |     QCommandLineParser parser; | ||||||
|  |     parser.setApplicationDescription(QCoreApplication::applicationName()); | ||||||
|  |     parser.addHelpOption(); | ||||||
|  |     parser.addVersionOption(); | ||||||
|  |     parser.addPositionalArgument("file", "The PDF file to open."); | ||||||
|  |     parser.process(application); | ||||||
|  |  | ||||||
|  |     pdfviewer::PDFViewerMainWindowLite mainWindow; | ||||||
|  |     mainWindow.show(); | ||||||
|  |  | ||||||
|  |     QStringList arguments = application.arguments(); | ||||||
|  |     if (arguments.size() > 1) | ||||||
|  |     { | ||||||
|  |         mainWindow.getProgramController()->openDocument(arguments[1]); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return application.exec(); | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user