2023-01-26 17:31:16 +00:00
|
|
|
// Copyright (C) 2023 The Qt Company Ltd.
|
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
|
|
|
|
#ifndef PDFVIEWER_H
|
|
|
|
#define PDFVIEWER_H
|
|
|
|
|
2023-03-23 15:25:43 +00:00
|
|
|
#include "viewerinterfaces.h"
|
2023-01-26 17:31:16 +00:00
|
|
|
#include <QLoggingCategory>
|
|
|
|
|
|
|
|
Q_DECLARE_LOGGING_CATEGORY(lcExample)
|
|
|
|
|
2023-06-07 14:11:25 +00:00
|
|
|
QT_BEGIN_NAMESPACE
|
2023-01-26 17:31:16 +00:00
|
|
|
class QMainWindow;
|
|
|
|
class QPdfDocument;
|
|
|
|
class QPdfView;
|
|
|
|
class QPdfPageSelector;
|
|
|
|
class QListView;
|
|
|
|
class QTabWidget;
|
|
|
|
class QTreeView;
|
2023-06-07 14:11:25 +00:00
|
|
|
QT_END_NAMESPACE
|
|
|
|
|
2023-01-26 17:31:16 +00:00
|
|
|
class ZoomSelector;
|
2023-03-23 15:25:43 +00:00
|
|
|
class PdfViewer : public ViewerInterface
|
2023-01-26 17:31:16 +00:00
|
|
|
{
|
2023-03-23 15:25:43 +00:00
|
|
|
Q_OBJECT
|
|
|
|
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.Examples.DocumentViewer.ViewerInterface" FILE "pdfviewer.json")
|
|
|
|
Q_INTERFACES(ViewerInterface)
|
2023-01-26 17:31:16 +00:00
|
|
|
public:
|
2023-06-17 18:04:55 +00:00
|
|
|
PdfViewer();
|
2023-01-26 17:31:16 +00:00
|
|
|
~PdfViewer() override;
|
2023-03-23 15:25:43 +00:00
|
|
|
void init(QFile *file, QWidget *parent, QMainWindow *mainWindow) override;
|
2023-06-17 18:04:55 +00:00
|
|
|
void cleanup() override;
|
2023-06-20 13:36:15 +00:00
|
|
|
QString viewerName() const override { return QLatin1StringView(staticMetaObject.className()); };
|
2023-03-23 15:25:43 +00:00
|
|
|
QStringList supportedMimeTypes() const override;
|
2023-01-26 17:31:16 +00:00
|
|
|
bool supportsOverview() const override { return true; }
|
|
|
|
bool hasContent() const override;
|
|
|
|
QByteArray saveState() const override { return QByteArray(); }
|
|
|
|
bool restoreState(QByteArray &) override { return true; }
|
documentviewer: Add retranslate() method to all plugins
Previously, only the imageviewer plugin had a retranslate() method,
which meant that when switching languages, UI texts in other plugins
(jsonviewer, txtviewer, pdfviewer) would not be updated.
This change adds retranslate() methods to all plugins that contain
translatable UI text:
- jsonviewer: Updates menu titles, toolbar titles, actions, tab titles,
and bookmark tooltips
- txtviewer: Updates menu titles, toolbar titles, and action texts/tooltips
- pdfviewer: Updates toolbar title, action texts/tooltips, and tab titles
Each plugin now stores references to UI elements that need retranslation
and implements the retranslate() method to update all translatable text
when the language is changed.
Fixes: QTBUG-138344
Pick-to: 6.10
Change-Id: I9d294694a42c2c48e03b72e28e9c0f4015cd5c80
Reviewed-by: Masoud Jami <masoud.jami@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2025-07-09 11:40:55 +00:00
|
|
|
void retranslate() override;
|
2023-01-26 17:31:16 +00:00
|
|
|
|
2025-07-09 14:25:49 +00:00
|
|
|
#ifdef DOCUMENTVIEWER_PRINTSUPPORT
|
2023-01-26 17:31:16 +00:00
|
|
|
protected:
|
|
|
|
void printDocument(QPrinter *printer) const override;
|
2025-07-09 14:25:49 +00:00
|
|
|
#endif // DOCUMENTVIEWER_PRINTSUPPORT
|
2023-01-26 17:31:16 +00:00
|
|
|
|
|
|
|
public slots:
|
|
|
|
void openPdfFile();
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void initPdfViewer();
|
|
|
|
void bookmarkSelected(const QModelIndex &index);
|
|
|
|
void pageSelected(int page);
|
|
|
|
|
|
|
|
// action handlers
|
|
|
|
void onActionZoomInTriggered();
|
|
|
|
void onActionZoomOutTriggered();
|
|
|
|
void onActionPreviousPageTriggered();
|
|
|
|
void onActionNextPageTriggered();
|
|
|
|
void onActionBackTriggered();
|
|
|
|
void onActionForwardTriggered();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void populateQuestions();
|
|
|
|
|
|
|
|
const qreal zoomMultiplier = qSqrt(2.0);
|
|
|
|
QToolBar *m_toolBar = nullptr;
|
2023-03-23 15:25:43 +00:00
|
|
|
ZoomSelector *m_zoomSelector = nullptr;
|
|
|
|
QPdfPageSelector *m_pageSelector = nullptr;
|
|
|
|
QPdfDocument *m_document = nullptr;
|
|
|
|
QPdfView *m_pdfView = nullptr;
|
2023-01-26 17:31:16 +00:00
|
|
|
QAction *m_actionForward = nullptr;
|
|
|
|
QAction *m_actionBack = nullptr;
|
|
|
|
QTreeView *m_bookmarks = nullptr;
|
|
|
|
QListView *m_pages = nullptr;
|
documentviewer: Add retranslate() method to all plugins
Previously, only the imageviewer plugin had a retranslate() method,
which meant that when switching languages, UI texts in other plugins
(jsonviewer, txtviewer, pdfviewer) would not be updated.
This change adds retranslate() methods to all plugins that contain
translatable UI text:
- jsonviewer: Updates menu titles, toolbar titles, actions, tab titles,
and bookmark tooltips
- txtviewer: Updates menu titles, toolbar titles, and action texts/tooltips
- pdfviewer: Updates toolbar title, action texts/tooltips, and tab titles
Each plugin now stores references to UI elements that need retranslation
and implements the retranslate() method to update all translatable text
when the language is changed.
Fixes: QTBUG-138344
Pick-to: 6.10
Change-Id: I9d294694a42c2c48e03b72e28e9c0f4015cd5c80
Reviewed-by: Masoud Jami <masoud.jami@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2025-07-09 11:40:55 +00:00
|
|
|
QAction *m_actionZoomIn = nullptr;
|
|
|
|
QAction *m_actionZoomOut = nullptr;
|
2023-01-26 17:31:16 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif //PDFVIEWER_H
|