add config table_format_interval for smart table

This commit is contained in:
Le Tan 2019-06-04 20:38:10 +08:00
parent 84edcbd26e
commit 13d0c60e59
6 changed files with 52 additions and 9 deletions

View File

@ -333,6 +333,9 @@ editor_font_family=
; Whether enable smart table ; Whether enable smart table
enable_smart_table=true enable_smart_table=true
; Interval (milliseconds) to format table
table_format_interval=3000
[export] [export]
; Path of the wkhtmltopdf tool ; Path of the wkhtmltopdf tool
wkhtmltopdf=wkhtmltopdf wkhtmltopdf=wkhtmltopdf

View File

@ -377,6 +377,8 @@ void VConfigManager::initEditorConfigs()
m_editorFontFamily = getConfigFromSettings(section, "editor_font_family").toString(); m_editorFontFamily = getConfigFromSettings(section, "editor_font_family").toString();
m_enableSmartTable = getConfigFromSettings(section, "enable_smart_table").toBool(); m_enableSmartTable = getConfigFromSettings(section, "enable_smart_table").toBool();
m_tableFormatIntervalMS = getConfigFromSettings(section, "table_format_interval").toInt();
} }
void VConfigManager::initMarkdownConfigs() void VConfigManager::initMarkdownConfigs()

View File

@ -643,6 +643,8 @@ public:
QDateTime getLastStartDateTime() const; QDateTime getLastStartDateTime() const;
void updateLastStartDateTime(); void updateLastStartDateTime();
int getTableFormatInterval() const;
private: private:
void initEditorConfigs(); void initEditorConfigs();
@ -1133,6 +1135,9 @@ private:
// Whether auto locate to current tab in note list. // Whether auto locate to current tab in note list.
bool m_syncNoteListToCurrentTab; bool m_syncNoteListToCurrentTab;
// Interval (milliseconds) to format table.
int m_tableFormatIntervalMS;
// The name of the config file in each directory. // The name of the config file in each directory.
static const QString c_dirConfigFile; static const QString c_dirConfigFile;
@ -2959,4 +2964,9 @@ inline void VConfigManager::setSyncNoteListToTab(bool p_enabled)
m_syncNoteListToCurrentTab = p_enabled; m_syncNoteListToCurrentTab = p_enabled;
setConfigToSettings("global", "sync_note_list_to_current_tab", m_syncNoteListToCurrentTab); setConfigToSettings("global", "sync_note_list_to_current_tab", m_syncNoteListToCurrentTab);
} }
inline int VConfigManager::getTableFormatInterval() const
{
return m_tableFormatIntervalMS;
}
#endif // VCONFIGMANAGER_H #endif // VCONFIGMANAGER_H

View File

@ -4,6 +4,7 @@
#include <QPrintDialog> #include <QPrintDialog>
#include <QPainter> #include <QPainter>
#include <QWebEnginePage> #include <QWebEnginePage>
#include <QRandomGenerator>
#include "vmainwindow.h" #include "vmainwindow.h"
#include "vdirectorytree.h" #include "vdirectorytree.h"
@ -3472,7 +3473,8 @@ void VMainWindow::kickOffStartUpTimer(const QStringList &p_files)
} }
if (g_config->getAllowUserTrack()) { if (g_config->getAllowUserTrack()) {
QTimer::singleShot(30 * 1000, this, SLOT(collectUserStat())); int interval = (30 + QRandomGenerator::global()->generate() % 60) * 1000;
QTimer::singleShot(interval, this, SLOT(collectUserStat()));
} }
m_syncNoteListToCurrentTab = true; m_syncNoteListToCurrentTab = true;

View File

@ -1,5 +1,7 @@
#include "vtablehelper.h" #include "vtablehelper.h"
#include <QTimer>
#include "veditor.h" #include "veditor.h"
#include "vconfigmanager.h" #include "vconfigmanager.h"
@ -9,10 +11,17 @@ VTableHelper::VTableHelper(VEditor *p_editor, QObject *p_parent)
: QObject(p_parent), : QObject(p_parent),
m_editor(p_editor) m_editor(p_editor)
{ {
m_timer = new QTimer(this);
m_timer->setSingleShot(true);
m_timer->setInterval(g_config->getTableFormatInterval());
connect(m_timer, &QTimer::timeout,
this, &VTableHelper::formatTables);
} }
void VTableHelper::updateTableBlocks(const QVector<VTableBlock> &p_blocks) void VTableHelper::updateTableBlocks(const QVector<VTableBlock> &p_blocks)
{ {
m_timer->stop();
if (m_editor->isReadOnlyW() || if (m_editor->isReadOnlyW() ||
!m_editor->isModified() || !m_editor->isModified() ||
!g_config->getEnableSmartTable()) { !g_config->getEnableSmartTable()) {
@ -24,14 +33,8 @@ void VTableHelper::updateTableBlocks(const QVector<VTableBlock> &p_blocks)
return; return;
} }
VTable table(m_editor, p_blocks[idx]); m_block = p_blocks[idx];
if (!table.isValid()) { m_timer->start();
return;
}
table.format();
table.write();
} }
int VTableHelper::currentCursorTableBlock(const QVector<VTableBlock> &p_blocks) const int VTableHelper::currentCursorTableBlock(const QVector<VTableBlock> &p_blocks) const
@ -66,3 +69,19 @@ void VTableHelper::insertTable(int p_nrRow, int p_nrCol, VTable::Alignment p_ali
table.write(); table.write();
} }
void VTableHelper::formatTables()
{
if (!m_block.isValid()) {
return;
}
VTable table(m_editor, m_block);
if (!table.isValid()) {
return;
}
table.format();
table.write();
}

View File

@ -2,6 +2,7 @@
#define VTABLEHELPER_H #define VTABLEHELPER_H
#include <QObject> #include <QObject>
#include <QTimer>
#include "markdownhighlighterdata.h" #include "markdownhighlighterdata.h"
#include "vtable.h" #include "vtable.h"
@ -24,7 +25,13 @@ private:
// Return the block index which contains the cursor. // Return the block index which contains the cursor.
int currentCursorTableBlock(const QVector<VTableBlock> &p_blocks) const; int currentCursorTableBlock(const QVector<VTableBlock> &p_blocks) const;
void formatTables();
VEditor *m_editor; VEditor *m_editor;
QTimer *m_timer;
VTableBlock m_block;
}; };
#endif // VTABLEHELPER_H #endif // VTABLEHELPER_H