Kandrashin Denis 13 лет назад
Родитель
Сommit
e72c406609
6 измененных файлов с 31 добавлено и 9 удалено
  1. 3 0
      source/fb2read.cpp
  2. 12 0
      source/fb2read.hpp
  3. 5 5
      source/fb2temp.cpp
  4. 3 2
      source/fb2temp.hpp
  5. 6 1
      source/fb2text.cpp
  6. 2 1
      source/fb2text.hpp

+ 3 - 0
source/fb2read.cpp

@@ -10,6 +10,8 @@
 
 FbReadThread::FbReadThread(QObject *parent, const QString &filename, const QString &xml)
     : QThread(parent)
+    , m_page(0)
+    , m_temp(0)
     , m_filename(filename)
     , m_xml(xml)
     , m_abort(false)
@@ -403,6 +405,7 @@ FbReadHandler::FbReadHandler(FbReadThread &thread, QXmlStreamWriter &writer)
     : FbXmlHandler()
     , m_thread(thread)
     , m_writer(writer)
+    , m_temp(thread.temp())
 {
     m_writer.setAutoFormatting(true);
     m_writer.setAutoFormattingIndent(2);

+ 12 - 0
source/fb2read.hpp

@@ -8,12 +8,21 @@
 #include <QThread>
 #include <QXmlDefaultHandler>
 
+class FbTextPage;
+class FbNetworkAccessManager;
+
 class FbReadThread : public QThread
 {
     Q_OBJECT
 public:
     FbReadThread(QObject *parent, const QString &filename, const QString &xml = QString());
     ~FbReadThread();
+
+public:
+    void setPage(FbTextPage *page) { m_page = page; }
+    void setTemp(QObject *temp) { m_temp = temp; }
+    FbTextPage * page() const { return m_page; }
+    QObject * temp() const { return m_temp; }
     QString * data() { return &m_html; }
 
 signals:
@@ -29,6 +38,8 @@ private:
     bool parse();
 
 private:
+    FbTextPage *m_page;
+    QObject *m_temp;
     const QString m_filename;
     const QString m_xml;
     QString m_html;
@@ -196,6 +207,7 @@ private:
     typedef QHash<QString, QString> StringHash;
     FbReadThread &m_thread;
     QXmlStreamWriter &m_writer;
+    QObject *m_temp;
     StringHash m_hash;
 };
 

+ 5 - 5
source/fb2temp.cpp

@@ -189,16 +189,16 @@ qint64 FbImageReply::readData(char *data, qint64 maxSize)
 //    http://doc.trolltech.com/qq/32/qq32-webkit-protocols.html
 //---------------------------------------------------------------------------
 
-FbNetworkAccessManager::FbNetworkAccessManager(FbTextEdit &view)
-    : QNetworkAccessManager(&view)
-    , m_view(view)
+FbNetworkAccessManager::FbNetworkAccessManager(QObject *parent)
+    : QNetworkAccessManager(parent)
 {
-    QWebSettings::clearMemoryCaches();
+//    QWebSettings::clearMemoryCaches();
 }
 
 QNetworkReply * FbNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
 {
-    if (request.url().scheme() == "fb2" && request.url().path() == m_view.url().path()) return imageRequest(op, request);
+    const QUrl &url = request.url();
+    if (url.scheme() == "fb2" && url.path() == m_path) return imageRequest(op, request);
     return QNetworkAccessManager::createRequest(op, request, outgoingData);
 }
 

+ 3 - 2
source/fb2temp.hpp

@@ -82,8 +82,9 @@ class FbNetworkAccessManager : public QNetworkAccessManager
     Q_OBJECT
 
 public:
-    explicit FbNetworkAccessManager(FbTextEdit &view);
+    explicit FbNetworkAccessManager(QObject *parent = 0);
     FbTemporaryList & files() { return m_files; }
+    void setPath(const QString &path) { m_path = path; }
 
 public slots:
     void data(QString name, QByteArray data);
@@ -104,7 +105,7 @@ private:
 
 private:
     FbTemporaryList m_files;
-    FbTextEdit &m_view;
+    QString m_path;
 };
 
 class FbListModel : public QAbstractListModel

+ 6 - 1
source/fb2text.cpp

@@ -382,7 +382,7 @@ void FbTextBase::addTools(QToolBar *tool)
 
 FbTextEdit::FbTextEdit(QWidget *parent)
     : FbTextBase(parent)
-    , m_files(*this)
+    , m_files(this)
     , m_noteView(0)
     , m_thread(0)
 {
@@ -472,6 +472,11 @@ void FbTextEdit::load(const QString &filename, const QString &xml)
 {
     if (m_thread) return;
     m_thread = new FbReadThread(this, filename, xml);
+    FbTextPage *page = new FbTextPage(m_thread);
+    FbNetworkAccessManager *temp = new FbNetworkAccessManager(page);
+    page->setNetworkAccessManager(temp);
+    m_thread->setPage(page);
+    m_thread->setTemp(temp);
     m_thread->start();
 }
 

+ 2 - 1
source/fb2text.hpp

@@ -18,6 +18,7 @@ class QWebInspector;
 QT_END_NAMESPACE
 
 class FbNoteView;
+class FbReadThread;
 class FbTextElement;
 
 class FbTextBase : public QWebView
@@ -152,7 +153,7 @@ private:
 private:
     FbNetworkAccessManager m_files;
     FbNoteView *m_noteView;
-    QThread *m_thread;
+    FbReadThread *m_thread;
     QPoint m_point;
 };