|
|
@@ -49,6 +49,10 @@ VEditTab::~VEditTab()
|
|
|
void VEditTab::setupUI()
|
|
|
{
|
|
|
textEditor = new VEdit(noteFile);
|
|
|
+ connect(textEditor, &VEdit::headersChanged,
|
|
|
+ this, &VEditTab::updateTocFromHeaders);
|
|
|
+ connect(textEditor, SIGNAL(curHeaderChanged(int)),
|
|
|
+ this, SLOT(updateCurHeader(int)));
|
|
|
addWidget(textEditor);
|
|
|
|
|
|
switch (noteFile->docType) {
|
|
|
@@ -220,8 +224,8 @@ void VEditTab::setupMarkdownPreview()
|
|
|
channel->registerObject(QStringLiteral("content"), &document);
|
|
|
connect(&document, &VDocument::tocChanged,
|
|
|
this, &VEditTab::updateTocFromHtml);
|
|
|
- connect(&document, &VDocument::headerChanged,
|
|
|
- this, &VEditTab::updateCurHeader);
|
|
|
+ connect(&document, SIGNAL(headerChanged(const QString&)),
|
|
|
+ this, SLOT(updateCurHeader(const QString &)));
|
|
|
page->setWebChannel(channel);
|
|
|
|
|
|
if (mdConverterType == MarkdownConverterType::Marked) {
|
|
|
@@ -273,6 +277,16 @@ void VEditTab::updateTocFromHtml(const QString &tocHtml)
|
|
|
emit outlineChanged(tableOfContent);
|
|
|
}
|
|
|
|
|
|
+void VEditTab::updateTocFromHeaders(const QVector<VHeader> &headers)
|
|
|
+{
|
|
|
+ tableOfContent.type = VHeaderType::LineNumber;
|
|
|
+ tableOfContent.headers = headers;
|
|
|
+ tableOfContent.filePath = QDir::cleanPath(QDir(noteFile->basePath).filePath(noteFile->fileName));
|
|
|
+ tableOfContent.valid = true;
|
|
|
+
|
|
|
+ emit outlineChanged(tableOfContent);
|
|
|
+}
|
|
|
+
|
|
|
void VEditTab::parseTocUl(QXmlStreamReader &xml, QVector<VHeader> &headers, int level)
|
|
|
{
|
|
|
Q_ASSERT(xml.isStartElement() && xml.name() == "ul");
|
|
|
@@ -349,7 +363,7 @@ void VEditTab::scrollToAnchor(const VAnchor &anchor)
|
|
|
{
|
|
|
if (isEditMode) {
|
|
|
if (anchor.lineNumber > -1) {
|
|
|
-
|
|
|
+ textEditor->scrollToLine(anchor.lineNumber);
|
|
|
}
|
|
|
} else {
|
|
|
if (!anchor.anchor.isEmpty()) {
|
|
|
@@ -369,3 +383,15 @@ void VEditTab::updateCurHeader(const QString &anchor)
|
|
|
emit curHeaderChanged(curHeader);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+void VEditTab::updateCurHeader(int lineNumber)
|
|
|
+{
|
|
|
+ if (curHeader.lineNumber == lineNumber) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ curHeader = VAnchor(QDir::cleanPath(QDir(noteFile->basePath).filePath(noteFile->fileName)),
|
|
|
+ "", lineNumber);
|
|
|
+ if (lineNumber > -1) {
|
|
|
+ emit curHeaderChanged(curHeader);
|
|
|
+ }
|
|
|
+}
|