diff options
author | Kandrashin Denis <mail@lintest.ru> | 2012-11-05 16:52:30 +0400 |
---|---|---|
committer | Kandrashin Denis <mail@lintest.ru> | 2012-11-05 16:52:30 +0400 |
commit | e1993fe9b639489e45c78c0b161fd5243823ef0b (patch) | |
tree | 7b5f24da6ca448a3fc8d76c58f7df4d7dca309db /source | |
parent | 664812bac9d6bd163030f5a94f1345096517df70 (diff) |
Class FbListWidget::FbProxy
Diffstat (limited to 'source')
-rw-r--r-- | source/fb2temp.cpp | 24 | ||||
-rw-r--r-- | source/fb2temp.hpp | 81 |
2 files changed, 63 insertions, 42 deletions
diff --git a/source/fb2temp.cpp b/source/fb2temp.cpp index c9047bf..d0b4d4e 100644 --- a/source/fb2temp.cpp +++ b/source/fb2temp.cpp @@ -312,9 +312,8 @@ QVariant FbListModel::data(const QModelIndex &index, int role) const #include <QSplitter> #include <QScrollArea> -FbListView::FbListView(FbNetworkAccessManager *files, QWidget *parent) +FbListView::FbListView(QWidget *parent) : QTreeView(parent) - , m_files(*files) { setAllColumnsShowFocus(true); } @@ -332,6 +331,18 @@ FbListModel * FbListView::model() const } //--------------------------------------------------------------------------- +// FbListWidget::FbProxy +//--------------------------------------------------------------------------- + +QNetworkReply *FbListWidget::FbProxy::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData) +{ + if (FbNetworkAccessManager * m = qobject_cast<FbNetworkAccessManager*>(m_page->networkAccessManager())) { + return m->createRequest(op, request, outgoingData); + } + return QNetworkAccessManager::createRequest(op, request, outgoingData); +} + +//--------------------------------------------------------------------------- // FbListWidget //--------------------------------------------------------------------------- @@ -345,13 +356,16 @@ FbListWidget::FbListWidget(FbTextEdit *text, QWidget* parent) QSplitter *splitter = new QSplitter(Qt::Vertical, this); - m_list = new FbListView(text->files(), splitter); + m_list = new FbListView(splitter); splitter->addWidget(m_list); FbTextFrame *frame = new FbTextFrame(splitter); splitter->addWidget(frame); + FbProxy *proxy = new FbProxy(text->page(), this); + m_view = new FbTextBase(frame); + m_view->page()->setNetworkAccessManager(proxy); frame->layout()->addWidget(m_view); splitter->setSizes(QList<int>() << 100 << 100); @@ -365,10 +379,6 @@ FbListWidget::FbListWidget(FbTextEdit *text, QWidget* parent) void FbListWidget::loadFinished() { - if (m_view->page() && m_text->page()) { - m_view->page()->setNetworkAccessManager(m_text->page()->networkAccessManager()); - } - m_view->load(QUrl()); m_list->setModel(new FbListModel(m_text, this)); diff --git a/source/fb2temp.hpp b/source/fb2temp.hpp index 7496c0a..27edc86 100644 --- a/source/fb2temp.hpp +++ b/source/fb2temp.hpp @@ -13,6 +13,8 @@ class FbTextEdit; +class FbNetworkAccessManager; + class FbTemporaryFile : public QTemporaryFile { Q_OBJECT @@ -81,37 +83,6 @@ private: qint64 offset; }; -class FbNetworkAccessManager : public QNetworkAccessManager -{ - Q_OBJECT - -public: - explicit FbNetworkAccessManager(QObject *parent = 0); - FbTemporaryList & files() { return m_files; } - void setPath(const QString &path) { m_path = path; } - -public slots: - void binary(const QString &name, const QByteArray &data); - -public: - QString add(const QString &path, QByteArray &data) { return m_files.add(path, data); } - bool exists(const QString &name) const { return m_files.exists(name); } - FbTemporaryFile * get(const QString &name) const { return m_files.get(name); } - int count() const { return m_files.count(); } - QByteArray data(int index) const; - QVariant info(int row, int col) const; - -protected: - virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0); - -private: - QNetworkReply *imageRequest(Operation op, const QNetworkRequest &request); - -private: - FbTemporaryList m_files; - QString m_path; -}; - class FbListModel : public QAbstractListModel { Q_OBJECT @@ -137,7 +108,7 @@ class FbListView : public QTreeView Q_OBJECT public: - explicit FbListView(FbNetworkAccessManager *files, QWidget *parent = 0); + explicit FbListView(QWidget *parent = 0); FbListModel *model() const; protected: @@ -145,9 +116,6 @@ protected: signals: void showImage(const QString &name); - -private: - FbNetworkAccessManager &m_files; }; class FbListWidget : public QWidget @@ -155,6 +123,17 @@ class FbListWidget : public QWidget Q_OBJECT public: + class FbProxy : public QNetworkAccessManager + { + public: + FbProxy(QWebPage *page, QObject *parent): QNetworkAccessManager(parent), m_page(page) {} + protected: + virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0); + private: + QWebPage *m_page; + }; + +public: explicit FbListWidget(FbTextEdit *text, QWidget* parent = 0); QSize sizeHint() const { return QSize(200,200); } @@ -171,4 +150,36 @@ private: QWebView *m_view; }; +class FbNetworkAccessManager : public QNetworkAccessManager +{ + Q_OBJECT + +public: + explicit FbNetworkAccessManager(QObject *parent = 0); + FbTemporaryList & files() { return m_files; } + void setPath(const QString &path) { m_path = path; } + +public slots: + void binary(const QString &name, const QByteArray &data); + +public: + QString add(const QString &path, QByteArray &data) { return m_files.add(path, data); } + bool exists(const QString &name) const { return m_files.exists(name); } + FbTemporaryFile * get(const QString &name) const { return m_files.get(name); } + int count() const { return m_files.count(); } + QByteArray data(int index) const; + QVariant info(int row, int col) const; + +protected: + virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0); + +private: + QNetworkReply *imageRequest(Operation op, const QNetworkRequest &request); + +private: + FbTemporaryList m_files; + QString m_path; + friend class FbListWidget::FbProxy; +}; + #endif // FB2TEMP_H |