Browse Source

Use cursor

Kandrashin Denis 13 years ago
parent
commit
2f4da36130
3 changed files with 26 additions and 16 deletions
  1. 3 2
      source/fb2main.cpp
  2. 6 8
      source/fb2read.cpp
  3. 17 6
      source/fb2read.h

+ 3 - 2
source/fb2main.cpp

@@ -299,18 +299,19 @@ void MainWindow::createActions()
     QAction * actText = act = new QAction(tr("&Text"), this);
     act->setCheckable(true);
     connect(act, SIGNAL(triggered()), this, SLOT(viewText()));
-    menu->addAction(act);
 
     QAction * actQsci = act = new QAction(tr("&XML"), this);
     act->setCheckable(true);
     connect(act, SIGNAL(triggered()), this, SLOT(viewQsci()));
-    menu->addAction(act);
 
     QActionGroup * viewGroup = new QActionGroup(this);
     viewGroup->addAction(actText);
     viewGroup->addAction(actQsci);
     actText->setChecked(true);
 
+    menu->addAction(actText);
+    menu->addAction(actQsci);
+
     menuBar()->addSeparator();
 
     menu = menuBar()->addMenu(tr("&Help"));

+ 6 - 8
source/fb2read.cpp

@@ -80,8 +80,8 @@ FB2_END_KEYHASH
 Fb2Handler::RootHandler::RootHandler(Fb2MainDocument &document, const QString &name)
     : BaseHandler(name)
     , m_document(document)
-    , m_cursor1(&document)
-    , m_cursor2(&document.child())
+    , m_cursor1(&document, false)
+    , m_cursor2(&document.child(), true)
     , m_empty(true)
 {
     m_cursor1.beginEditBlock();
@@ -132,7 +132,7 @@ bool Fb2Handler::DescrHandler::doEnd(const QString &name, bool & exit)
 //  Fb2Handler::TextHandler
 //---------------------------------------------------------------------------
 
-Fb2Handler::TextHandler::TextHandler(QTextCursor &cursor, const QString &name)
+Fb2Handler::TextHandler::TextHandler(Fb2TextCursor &cursor, const QString &name)
     : BaseHandler(name)
     , m_cursor(cursor)
     , m_blockFormat(m_cursor.blockFormat())
@@ -171,7 +171,7 @@ FB2_BEGIN_KEYHASH(BodyHandler)
     insert("v",        Verse);
 FB2_END_KEYHASH
 
-Fb2Handler::BodyHandler::BodyHandler(QTextCursor &cursor, const QString &name)
+Fb2Handler::BodyHandler::BodyHandler(Fb2TextCursor &cursor, const QString &name)
     : TextHandler(cursor, name)
     , m_feed(false)
 {
@@ -291,6 +291,7 @@ Fb2Handler::TitleHandler::TitleHandler(TextHandler &parent, const QString &name,
     , m_feed(false)
 {
     Q_UNUSED(attributes);
+
     QTextTableFormat format1;
     format1.setBorder(0);
     format1.setCellPadding(4);
@@ -300,11 +301,8 @@ Fb2Handler::TitleHandler::TitleHandler(TextHandler &parent, const QString &name,
 
     QTextTableCellFormat format2;
     format2.setBackground(Qt::darkGreen);
+    format2.setForeground(Qt::white);
     m_table->cellAt(cursor()).setFormat(format2);
-
-    QTextCharFormat format3 = cursor().charFormat();
-    format3.setForeground(Qt::white);
-    m_table->cellAt(cursor()).setFormat(format3);
 }
 
 bool Fb2Handler::TitleHandler::doStart(const QString &name, const QXmlAttributes &attributes)

+ 17 - 6
source/fb2read.h

@@ -32,6 +32,17 @@ public:
     QString errorString() const;
 
 private:
+    class Fb2TextCursor : public QTextCursor
+    {
+    public:
+        explicit Fb2TextCursor(QTextDocument *document, bool foot)
+            : QTextCursor(document), m_foot(foot) {}
+        bool foot()
+            { return m_foot; }
+    private:
+        const bool m_foot;
+    };
+
     class BaseHandler
     {
     public:
@@ -59,8 +70,8 @@ private:
         virtual bool doStart(const QString & name, const QXmlAttributes &attributes);
     private:
         Fb2MainDocument &m_document;
-        QTextCursor m_cursor1;
-        QTextCursor m_cursor2;
+        Fb2TextCursor m_cursor1;
+        Fb2TextCursor m_cursor2;
         bool m_empty;
     };
 
@@ -75,12 +86,12 @@ private:
     class TextHandler : public BaseHandler
     {
     public:
-        explicit TextHandler(QTextCursor &cursor, const QString &name);
+        explicit TextHandler(Fb2TextCursor &cursor, const QString &name);
         explicit TextHandler(TextHandler &parent, const QString &name);
         bool doEnd(const QString &name, bool & exit);
     protected:
-        QTextCursor & cursor() { return m_cursor; }
-        QTextCursor & m_cursor;
+        Fb2TextCursor & cursor() { return m_cursor; }
+        Fb2TextCursor & m_cursor;
         QTextBlockFormat m_blockFormat;
         QTextCharFormat m_charFormat;
     };
@@ -98,7 +109,7 @@ private:
             Verse,
        FB2_END_KEYLIST
     public:
-        explicit BodyHandler(QTextCursor &cursor, const QString &name);
+        explicit BodyHandler(Fb2TextCursor &cursor, const QString &name);
         virtual bool doStart(const QString &name, const QXmlAttributes &attributes);
     private:
         bool m_feed;