Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lintest/fb2edit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorKandrashin Denis <mail@lintest.ru>2012-11-05 16:52:30 +0400
committerKandrashin Denis <mail@lintest.ru>2012-11-05 16:52:30 +0400
commite1993fe9b639489e45c78c0b161fd5243823ef0b (patch)
tree7b5f24da6ca448a3fc8d76c58f7df4d7dca309db /source
parent664812bac9d6bd163030f5a94f1345096517df70 (diff)
Class FbListWidget::FbProxy
Diffstat (limited to 'source')
-rw-r--r--source/fb2temp.cpp24
-rw-r--r--source/fb2temp.hpp81
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