Kaynağa Gözat

Switch mode

Kandrashin Denis 12 yıl önce
ebeveyn
işleme
290fc6dc9b
4 değiştirilmiş dosya ile 26 ekleme ve 1 silme
  1. 19 1
      source/fb2dock.cpp
  2. 1 0
      source/fb2dock.hpp
  3. 5 0
      source/fb2text.cpp
  4. 1 0
      source/fb2text.hpp

+ 19 - 1
source/fb2dock.cpp

@@ -1,6 +1,7 @@
 #include "fb2dock.hpp"
 #include "fb2dock.hpp"
 #include "fb2code.hpp"
 #include "fb2code.hpp"
 #include "fb2head.hpp"
 #include "fb2head.hpp"
+#include "fb2page.hpp"
 #include "fb2text.hpp"
 #include "fb2text.hpp"
 
 
 #include <QLayout>
 #include <QLayout>
@@ -21,7 +22,7 @@ FbModeAction::FbModeAction(FbMainDock *parent, Fb::Mode mode, const QString &tex
 
 
 void FbModeAction::switchMode()
 void FbModeAction::switchMode()
 {
 {
-    m_dock->setMode(m_mode);
+    m_dock->switchMode(m_mode);
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
@@ -45,6 +46,23 @@ FbMainDock::FbMainDock(QWidget *parent)
     addWidget(m_code);
     addWidget(m_code);
 }
 }
 
 
+void FbMainDock::switchMode(Fb::Mode mode)
+{
+    QString xml;
+    if (currentWidget() == m_code) {
+    } else {
+        switch (mode) {
+            case Fb::Code: m_text->save(&xml); break;
+            case Fb::Html: xml = m_text->toHtml(); break;
+            default: ;
+        }
+    }
+    setMode(mode);
+    if (!xml.isEmpty()) {
+        m_code->setPlainText(xml);
+    }
+}
+
 void FbMainDock::setMode(Fb::Mode mode)
 void FbMainDock::setMode(Fb::Mode mode)
 {
 {
     if (mode == m_mode) return;
     if (mode == m_mode) return;

+ 1 - 0
source/fb2dock.hpp

@@ -26,6 +26,7 @@ public:
     bool load(const QString &filename);
     bool load(const QString &filename);
     bool save(QIODevice *device, const QString &codec = QString());
     bool save(QIODevice *device, const QString &codec = QString());
     Fb::Mode mode() const { return m_mode; }
     Fb::Mode mode() const { return m_mode; }
+    void switchMode(Fb::Mode mode);
     void setMode(Fb::Mode mode);
     void setMode(Fb::Mode mode);
     void setTool(QToolBar *tool) { m_tool = tool; }
     void setTool(QToolBar *tool) { m_tool = tool; }
     void addMenu(QMenu *menu);
     void addMenu(QMenu *menu);

+ 5 - 0
source/fb2text.cpp

@@ -533,6 +533,11 @@ bool FbTextEdit::save(QString *string)
     return ok;
     return ok;
 }
 }
 
 
+QString FbTextEdit::toHtml()
+{
+    return page()->mainFrame()->toHtml();
+}
+
 void FbTextEdit::data(QString name, QByteArray data)
 void FbTextEdit::data(QString name, QByteArray data)
 {
 {
     files()->data(name, data);
     files()->data(name, data);

+ 1 - 0
source/fb2text.hpp

@@ -79,6 +79,7 @@ public:
     bool save(QIODevice *device, const QString &codec = QString());
     bool save(QIODevice *device, const QString &codec = QString());
     bool save(QByteArray *array);
     bool save(QByteArray *array);
     bool save(QString *string);
     bool save(QString *string);
+    QString toHtml();
 
 
     QAction * act(Fb::Actions index) const;
     QAction * act(Fb::Actions index) const;
     QAction * pAct(QWebPage::WebAction index) const;
     QAction * pAct(QWebPage::WebAction index) const;