Selaa lähdekoodia

Optimize HTML to FB2 convertation

Kandrashin Denis 12 vuotta sitten
vanhempi
commit
d4ab1a2b04
6 muutettua tiedostoa jossa 15 lisäystä ja 37 poistoa
  1. 5 0
      source/fb2dock.cpp
  2. 1 3
      source/fb2main.cpp
  3. 4 18
      source/fb2save.cpp
  4. 0 10
      source/fb2save.hpp
  5. 1 0
      source/fb2text.cpp
  6. 4 6
      source/js/export.js

+ 5 - 0
source/fb2dock.cpp

@@ -50,6 +50,11 @@ void FbMainDock::switchMode(Fb::Mode mode)
 {
     QString xml;
     if (currentWidget() == m_code) {
+        switch (mode) {
+            case Fb::Text:
+            case Fb::Head:
+            default: ;
+        }
     } else {
         switch (mode) {
             case Fb::Code: m_text->save(&xml); break;

+ 1 - 3
source/fb2main.cpp

@@ -216,8 +216,6 @@ void FbMainWindow::createActions()
 
     menu = menuBar()->addMenu(tr("&Edit"));
 
-    connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged()));
-
     act = new FbTextAction(FbIcon("edit-undo"), tr("&Undo"), QWebPage::Undo, text);
     text->setAction(Fb::EditUndo, act);
     code->setAction(Fb::EditUndo, act);
@@ -553,7 +551,7 @@ bool FbMainWindow::saveFile(const QString &fileName, const QString &codec)
         QMessageBox::warning(this, qApp->applicationName(), tr("Cannot write file %1: %2.").arg(fileName).arg(file.errorString()));
         return false;
     }
-    bool ok = mainDock->save(&file);
+    bool ok = mainDock->save(&file, codec);
     setCurrentFile(fileName);
     return ok;
 }

+ 4 - 18
source/fb2save.cpp

@@ -375,21 +375,6 @@ int FbSaveHandler::TextHandler::nextLevel() const
     return m_level ? m_level + 1 : 0;
 }
 
-//---------------------------------------------------------------------------
-//  FbSaveHandler::RootHandler
-//---------------------------------------------------------------------------
-
-FbSaveHandler::RootHandler::RootHandler(FbSaveWriter &writer, const QString &name)
-    : NodeHandler(name)
-    , m_writer(writer)
-{
-}
-
-FbXmlHandler::NodeHandler * FbSaveHandler::RootHandler::NewTag(const QString &name, const QXmlAttributes &atts)
-{
-    return name == "body" ? new BodyHandler(m_writer, name, atts) : NULL;
-}
-
 //---------------------------------------------------------------------------
 //  FbSaveHandler::BodyHandler
 //---------------------------------------------------------------------------
@@ -493,8 +478,8 @@ bool FbSaveHandler::comment(const QString& ch)
 FbXmlHandler::NodeHandler * FbSaveHandler::CreateRoot(const QString &name, const QXmlAttributes &atts)
 {
     Q_UNUSED(atts);
-    if (name == "html") return new RootHandler(m_writer, name);
-    m_error = QObject::tr("The tag <html> was not found.");
+    if (name == "body") return new BodyHandler(m_writer, name, atts);
+    m_error = QObject::tr("The tag <body> was not found.");
     return 0;
 }
 
@@ -529,7 +514,8 @@ bool FbSaveHandler::save()
     m_writer.writeStartDocument();
     QString javascript = jScript("export.js");
     frame->addToJavaScriptWindowObject("handler", this);
-    frame->evaluateJavaScript(javascript);
+    QWebElement body = frame->findFirstElement("body");
+    body.evaluateJavaScript(javascript);
     m_writer.writeEndDocument();
 
     return true;

+ 0 - 10
source/fb2save.hpp

@@ -129,16 +129,6 @@ private:
         bool m_hasChild;
     };
 
-    class RootHandler : public NodeHandler
-    {
-    public:
-        explicit RootHandler(FbSaveWriter &writer, const QString &name);
-    protected:
-        virtual NodeHandler * NewTag(const QString &name, const QXmlAttributes &atts);
-    protected:
-        FbSaveWriter &m_writer;
-    };
-
     class BodyHandler : public TextHandler
     {
     public:

+ 1 - 0
source/fb2text.cpp

@@ -385,6 +385,7 @@ void FbTextEdit::viewInspector(bool show)
 
 void FbTextEdit::hideDocks()
 {
+    return;
     if (dockTree) {
         dockTree->deleteLater();
         dockTree = 0;

+ 4 - 6
source/js/export.js

@@ -4,13 +4,11 @@
     } else if (node.nodeName === "#comment") {
         handler.onCom(node.data);
     } else {
-        if (node.nodeName !== "#document") {
-            var atts = node.attributes;
-            var count = atts.length;
-            for (var i = 0; i < count; i++) handler.onAttr(atts[i].name, atts[i].value);
-        }
+        var atts = node.attributes;
+        var count = atts.length;
+        for (var i = 0; i < count; i++) handler.onAttr(atts[i].name, atts[i].value);
         handler.onNew(node.nodeName);
         for (var n = node.firstChild; n !== null; n = n.nextSibling) f(n);
         handler.onEnd(node.nodeName);
     }
-})(document);
+})(this);