File indexing completed on 2024-11-24 04:53:15
0001 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net> 0002 0003 This file is part of the Trojita Qt IMAP e-mail client, 0004 http://trojita.flaska.net/ 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public License as 0008 published by the Free Software Foundation; either version 2 of 0009 the License or (at your option) version 3 or any later version 0010 accepted by the membership of KDE e.V. (or its successor approved 0011 by the membership of KDE e.V.), which shall act as a proxy 0012 defined in Section 14 of version 3 of the license. 0013 0014 This program is distributed in the hope that it will be useful, 0015 but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 GNU General Public License for more details. 0018 0019 You should have received a copy of the GNU General Public License 0020 along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 */ 0022 #ifndef MSGPARTNETACCESSMANAGER_H 0023 #define MSGPARTNETACCESSMANAGER_H 0024 0025 #include <QNetworkAccessManager> 0026 #include <QPersistentModelIndex> 0027 0028 class QUrl; 0029 0030 namespace Imap 0031 { 0032 0033 namespace Network 0034 { 0035 0036 /** @short Implement access to the MIME Parts of the current message and optiojnally also to the public Internet */ 0037 class MsgPartNetAccessManager : public QNetworkAccessManager 0038 { 0039 Q_OBJECT 0040 public: 0041 explicit MsgPartNetAccessManager(QObject *parent=0); 0042 void setModelMessage(const QModelIndex &message); 0043 static QModelIndex pathToPart(const QModelIndex &message, const QByteArray &path); 0044 static QModelIndex cidToPart(const QModelIndex &rootIndex, const QByteArray &cid); 0045 QString translateToSupportedMimeType(const QString &originalMimeType) const; 0046 void registerMimeTypeTranslation(const QString &originalMimeType, const QString &translatedMimeType); 0047 Q_INVOKABLE void wrapQmlWebViewRequest(QObject *request, QObject *reply); 0048 protected: 0049 virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData=0); 0050 signals: 0051 void requestingExternal(const QUrl &url); 0052 public slots: 0053 void setExternalsEnabled(bool enabled); 0054 private: 0055 QPersistentModelIndex message; 0056 0057 bool externalsEnabled; 0058 QMap<QString, QString> m_mimeTypeFixups; 0059 0060 MsgPartNetAccessManager(const MsgPartNetAccessManager &); // don't implement 0061 MsgPartNetAccessManager &operator=(const MsgPartNetAccessManager &); // don't implement 0062 }; 0063 0064 } 0065 } 0066 #endif // MSGPARTNETACCESSMANAGER_H