mirror of https://github.com/qt/qtdoc.git
112 lines
2.9 KiB
C++
112 lines
2.9 KiB
C++
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
#ifndef ABSTRACTVIEWER_H
|
|
#define ABSTRACTVIEWER_H
|
|
|
|
#include "abstractviewerglobal.h"
|
|
|
|
#include <QObject>
|
|
#include <QLocale>
|
|
#include <QtCompilerDetection>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QAction;
|
|
class QFile;
|
|
class QMainWindow;
|
|
class QMenu;
|
|
class QMenuBar;
|
|
class QPrinter;
|
|
class QToolBar;
|
|
class QTabWidget;
|
|
class QScrollArea;
|
|
class QStatusBar;
|
|
QT_END_NAMESPACE
|
|
|
|
class Translator;
|
|
|
|
class ABSTRACTVIEWER_EXPORT AbstractViewer : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
protected:
|
|
AbstractViewer();
|
|
|
|
public:
|
|
virtual ~AbstractViewer();
|
|
virtual void init(QFile *file, QWidget *widget, QMainWindow *mainWindow);
|
|
void initViewer(QAction *back, QAction *forward, QAction *help, QTabWidget *tabs);
|
|
virtual bool isModified() const;
|
|
virtual bool saveDocument();
|
|
virtual bool saveDocumentAs();
|
|
virtual QString viewerName() const = 0;
|
|
virtual void retranslate() { };
|
|
virtual bool supportsOverview() const;
|
|
virtual QByteArray saveState() const = 0;
|
|
virtual bool restoreState(QByteArray &) = 0;
|
|
virtual bool hasContent() const;
|
|
virtual QStringList supportedMimeTypes() const = 0;
|
|
virtual QStringList supportedExtensions() const { return {}; }
|
|
virtual bool isDefaultViewer() const;
|
|
virtual void cleanup();
|
|
void setTranslationBaseName(const QString &baseName);
|
|
void updateTranslation(QLocale::Language lang);
|
|
bool isEmpty() const;
|
|
bool isPrintingEnabled() const;
|
|
AbstractViewer *viewer();
|
|
const AbstractViewer *viewer() const;
|
|
|
|
QList<QAction *> actions() const;
|
|
QWidget *widget() const;
|
|
QList<QMenu *> menus() const;
|
|
|
|
#ifdef DOCUMENTVIEWER_PRINTSUPPORT
|
|
protected:
|
|
virtual void printDocument(QPrinter *) const {};
|
|
#endif
|
|
|
|
signals:
|
|
void uiInitialized();
|
|
void printingEnabledChanged(bool enabled);
|
|
void showMessage(const QString &message, int timeout = 8000);
|
|
void documentLoaded(const QString &fileName);
|
|
|
|
public slots:
|
|
void print();
|
|
|
|
protected:
|
|
|
|
struct UiAssets {
|
|
QMainWindow *mainWindow = nullptr;
|
|
QAction *back = nullptr;
|
|
QAction *forward = nullptr;
|
|
QAction *help = nullptr;
|
|
QTabWidget *tabs = nullptr;
|
|
} m_uiAssets;
|
|
|
|
void statusMessage(const QString &message, const QString &type = QString(), int timeout = 8000);
|
|
QToolBar *addToolBar(const QString &);
|
|
QMenu *addMenu(const QString &);
|
|
QMainWindow *mainWindow() const;
|
|
QStatusBar *statusBar() const;
|
|
QMenuBar *menuBar() const;
|
|
|
|
std::unique_ptr<QFile> m_file;
|
|
QList<QAction *> m_actions;
|
|
QWidget *m_widget = nullptr;
|
|
QList<QMetaObject::Connection> m_connections;
|
|
|
|
protected slots:
|
|
void maybeSetPrintingEnabled(bool enabled);
|
|
void maybeEnablePrinting();
|
|
void disablePrinting();
|
|
|
|
private:
|
|
QList<QMenu *> m_menus;
|
|
QList<QToolBar *> m_toolBars;
|
|
bool m_printingEnabled = false;
|
|
std::unique_ptr<Translator> m_translator;
|
|
};
|
|
|
|
#endif // ABSTRACTVIEWER_H
|