Browse Source

Use dark green document titles

Kandrashin Denis 13 năm trước cách đây
mục cha
commit
44f573d215
3 tập tin đã thay đổi với 44 bổ sung15 xóa
  1. 23 8
      source/fb2main.cpp
  2. 3 2
      source/fb2main.h
  3. 18 5
      source/fb2read.cpp

+ 23 - 8
source/fb2main.cpp

@@ -22,7 +22,7 @@ MainWindow::MainWindow(const QString &filename)
     setCurrentFile(filename);
 }
 
-MainWindow::MainWindow(const QString &filename, QTextDocument * document)
+MainWindow::MainWindow(const QString &filename, Fb2MainDocument * document)
 {
     init();
     createText();
@@ -86,7 +86,7 @@ void MainWindow::fileOpen()
     }
 
     if (textEdit) {
-        QTextDocument * document = loadFB2(filename);
+        Fb2MainDocument * document = loadFB2(filename);
         if (!document) return;
 
         if (isUntitled && textEdit->document()->isEmpty() && !isWindowModified()) {
@@ -151,6 +151,10 @@ void MainWindow::init()
     createActions();
     createStatusBar();
 
+    textEdit = NULL;
+    noteEdit = NULL;
+    qsciEdit = NULL;
+
     readSettings();
 
     setUnifiedTitleAndToolBarOnMac(true);
@@ -465,7 +469,7 @@ bool MainWindow::saveFile(const QString &fileName)
     return true;
 }
 
-void MainWindow::setCurrentFile(const QString &filename, QTextDocument * document)
+void MainWindow::setCurrentFile(const QString &filename, Fb2MainDocument * document)
 {
     static int sequenceNumber = 1;
 
@@ -483,8 +487,18 @@ void MainWindow::setCurrentFile(const QString &filename, QTextDocument * documen
 
     if (textEdit && document) {
         textEdit->setDocument(document);
-        textEdit->document()->setModified(false);
         connectTextDocument(textEdit->document());
+        if (!document->child().isEmpty()) {
+            if (!noteEdit) {
+                noteEdit = new QTextEdit(this);
+                noteEdit->setDocument(&document->child());
+                QDockWidget * dock = new QDockWidget("Footnotes", this);
+                dock->setAttribute(Qt::WA_DeleteOnClose);
+                dock->setFeatures(QDockWidget::AllDockWidgetFeatures);
+                dock->setWidget(noteEdit);
+                addDockWidget(Qt::BottomDockWidgetArea, dock);
+            }
+        }
     }
 
     setWindowModified(false);
@@ -520,10 +534,11 @@ void MainWindow::viewText()
 
 void MainWindow::currentCharFormatChanged(const QTextCharFormat &format)
 {
-    actionTextBold   -> setChecked(format.font().bold());
-    actionTextItalic -> setChecked(format.font().italic());
-    actionTextUnder  -> setChecked(format.font().underline());
-    actionTextStrike -> setChecked(format.font().strikeOut());
+    QFont font = format.font();
+    actionTextBold   -> setChecked(font.bold());
+    actionTextItalic -> setChecked(font.italic());
+    actionTextUnder  -> setChecked(font.underline());
+    actionTextStrike -> setChecked(font.strikeOut());
 }
 
 void MainWindow::cursorPositionChanged()

+ 3 - 2
source/fb2main.h

@@ -22,7 +22,7 @@ class MainWindow : public QMainWindow
 public:
     explicit MainWindow();
     explicit MainWindow(const QString &filename);
-    explicit MainWindow(const QString &filename, QTextDocument * document);
+    explicit MainWindow(const QString &filename, Fb2MainDocument * document);
 
 protected:
     void closeEvent(QCloseEvent *event);
@@ -63,11 +63,12 @@ private:
     void writeSettings();
     bool maybeSave();
     bool saveFile(const QString &fileName);
-    void setCurrentFile(const QString &fileName, QTextDocument * document = NULL);
+    void setCurrentFile(const QString &fileName, Fb2MainDocument * document = NULL);
     void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
     MainWindow *findMainWindow(const QString &fileName);
 
     QTextEdit *textEdit;
+    QTextEdit *noteEdit;
     QsciScintilla *qsciEdit;
     QString curFile;
     bool isUntitled;

+ 18 - 5
source/fb2read.cpp

@@ -291,11 +291,20 @@ Fb2Handler::TitleHandler::TitleHandler(TextHandler &parent, const QString &name,
     , m_feed(false)
 {
     Q_UNUSED(attributes);
-    QTextTableFormat format;
-    format.setBorder(0);
-    format.setCellPadding(4);
-    format.setCellSpacing(4);
-    m_table = cursor().insertTable(1, 1, format);
+    QTextTableFormat format1;
+    format1.setBorder(0);
+    format1.setCellPadding(4);
+    format1.setCellSpacing(4);
+    format1.setWidth(QTextLength(QTextLength::PercentageLength, 100));
+    m_table = cursor().insertTable(1, 1, format1);
+
+    QTextTableCellFormat format2;
+    format2.setBackground(Qt::darkGreen);
+    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)
@@ -533,6 +542,10 @@ Fb2Handler::~Fb2Handler()
 {
     m_document.clearUndoRedoStacks();
     m_document.child().clearUndoRedoStacks();
+
+    m_document.setModified(false);
+    m_document.child().setModified(false);
+
     if (m_handler) delete m_handler;
 }