File indexing completed on 2024-04-28 05:47:44

0001 /*
0002     ark: A program for modifying archives via a GUI.
0003 
0004     SPDX-FileCopyrightText: 2004-2008 Henrique Pinto <henrique.pinto@kdemail.net>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #ifndef ARKVIEWER_H
0010 #define ARKVIEWER_H
0011 
0012 #include "ui_arkviewer.h"
0013 
0014 #include <KParts/MainWindow>
0015 #include <KParts/ReadOnlyPart>
0016 #include <KService>
0017 
0018 #include <QMimeType>
0019 #include <QPointer>
0020 
0021 #include <optional>
0022 
0023 class ArkViewer : public KParts::MainWindow, public Ui::ArkViewer
0024 {
0025     Q_OBJECT
0026 
0027 public:
0028     ~ArkViewer() override;
0029 
0030     static void view(const QString &fileName, const QString &entryPath = QString(), const QMimeType &mimeType = QMimeType());
0031 
0032 private:
0033     explicit ArkViewer();
0034 
0035     static KService::Ptr getExternalViewer(const QString &mimeType);
0036     static std::optional<KPluginMetaData> getInternalViewer(const QString &mimeType);
0037 
0038     static void openExternalViewer(const KService::Ptr viewer, const QString &fileName);
0039 
0040     static void openInternalViewer(const KPluginMetaData &viewer, const QString &fileName, const QString &entryPath, const QMimeType &mimeType);
0041 
0042     static bool askViewAsPlainText(const QMimeType &mimeType);
0043 
0044     bool viewInInternalViewer(const KPluginMetaData &viewer, const QString &fileName, const QString &entryPath, const QMimeType &mimeType);
0045 
0046 private Q_SLOTS:
0047     void aboutKPart();
0048 
0049 private:
0050     QPointer<KParts::ReadOnlyPart> m_part;
0051     QString m_fileName;
0052 };
0053 
0054 #endif // ARKVIEWER_H