mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-06 06:19:52 +08:00
add enable_flash_anchor config
It controls whether we need to flash the heading when we scroll to it in read mode.
This commit is contained in:
parent
ba13ac7dc3
commit
2bb2910fec
@ -464,6 +464,10 @@ VReadEditTab::VReadEditTab(QWidget *p_parent)
|
|||||||
zoomFactorLayout->addWidget(m_customWebZoom);
|
zoomFactorLayout->addWidget(m_customWebZoom);
|
||||||
zoomFactorLayout->addWidget(m_webZoomFactorSpin);
|
zoomFactorLayout->addWidget(m_webZoomFactorSpin);
|
||||||
|
|
||||||
|
// Web flash anchor.
|
||||||
|
m_flashAnchor = new QCheckBox(tr("Flash current heading"));
|
||||||
|
m_flashAnchor->setToolTip(tr("Flash current heading on change"));
|
||||||
|
|
||||||
// Swap file.
|
// Swap file.
|
||||||
m_swapFile = new QCheckBox(tr("Swap file"));
|
m_swapFile = new QCheckBox(tr("Swap file"));
|
||||||
m_swapFile->setToolTip(tr("Automatically save changes to a swap file for backup"));
|
m_swapFile->setToolTip(tr("Automatically save changes to a swap file for backup"));
|
||||||
@ -478,6 +482,7 @@ VReadEditTab::VReadEditTab(QWidget *p_parent)
|
|||||||
|
|
||||||
QVBoxLayout *readLayout = new QVBoxLayout();
|
QVBoxLayout *readLayout = new QVBoxLayout();
|
||||||
readLayout->addLayout(zoomFactorLayout);
|
readLayout->addLayout(zoomFactorLayout);
|
||||||
|
readLayout->addWidget(m_flashAnchor);
|
||||||
m_readBox->setLayout(readLayout);
|
m_readBox->setLayout(readLayout);
|
||||||
|
|
||||||
QFormLayout *editLayout = new QFormLayout();
|
QFormLayout *editLayout = new QFormLayout();
|
||||||
@ -509,6 +514,10 @@ bool VReadEditTab::loadConfiguration()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!loadFlashAnchor()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!loadSwapFile()) {
|
if (!loadSwapFile()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -526,6 +535,10 @@ bool VReadEditTab::saveConfiguration()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!saveFlashAnchor()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!saveSwapFile()) {
|
if (!saveSwapFile()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -567,6 +580,18 @@ bool VReadEditTab::saveWebZoomFactor()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VReadEditTab::loadFlashAnchor()
|
||||||
|
{
|
||||||
|
m_flashAnchor->setChecked(g_config->getEnableFlashAnchor());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool VReadEditTab::saveFlashAnchor()
|
||||||
|
{
|
||||||
|
g_config->setEnableFlashAnchor(m_flashAnchor->isChecked());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool VReadEditTab::loadSwapFile()
|
bool VReadEditTab::loadSwapFile()
|
||||||
{
|
{
|
||||||
m_swapFile->setChecked(g_config->getEnableBackupFile());
|
m_swapFile->setChecked(g_config->getEnableBackupFile());
|
||||||
|
@ -74,10 +74,16 @@ private:
|
|||||||
|
|
||||||
void showTipsAboutAutoSave();
|
void showTipsAboutAutoSave();
|
||||||
|
|
||||||
|
bool loadFlashAnchor();
|
||||||
|
bool saveFlashAnchor();
|
||||||
|
|
||||||
// Web zoom factor.
|
// Web zoom factor.
|
||||||
QCheckBox *m_customWebZoom;
|
QCheckBox *m_customWebZoom;
|
||||||
QDoubleSpinBox *m_webZoomFactorSpin;
|
QDoubleSpinBox *m_webZoomFactorSpin;
|
||||||
|
|
||||||
|
// Web flash anchor.
|
||||||
|
QCheckBox *m_flashAnchor;
|
||||||
|
|
||||||
// Swap file.
|
// Swap file.
|
||||||
QCheckBox *m_swapFile;
|
QCheckBox *m_swapFile;
|
||||||
|
|
||||||
|
@ -40,6 +40,10 @@ if (typeof VEnableImageCaption == 'undefined') {
|
|||||||
VEnableImageCaption = false;
|
VEnableImageCaption = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof VEnableFlashAnchor == 'undefined') {
|
||||||
|
VEnableFlashAnchor = false;
|
||||||
|
}
|
||||||
|
|
||||||
var getUrlScheme = function(url) {
|
var getUrlScheme = function(url) {
|
||||||
var idx = url.indexOf(':');
|
var idx = url.indexOf(':');
|
||||||
if (idx > -1) {
|
if (idx > -1) {
|
||||||
@ -132,7 +136,11 @@ var clearHighlightedAnchor = function() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var highlightAnchor = function(anchor) {
|
var flashAnchor = function(anchor) {
|
||||||
|
if (!VEnableFlashAnchor) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
clearHighlightedAnchor();
|
clearHighlightedAnchor();
|
||||||
anchor.classList.add(VHighlightedAnchorClass);
|
anchor.classList.add(VHighlightedAnchorClass);
|
||||||
};
|
};
|
||||||
@ -151,7 +159,7 @@ var scrollToAnchor = function(anchor) {
|
|||||||
var anc = document.getElementById(anchor);
|
var anc = document.getElementById(anchor);
|
||||||
if (anc != null) {
|
if (anc != null) {
|
||||||
anc.scrollIntoView();
|
anc.scrollIntoView();
|
||||||
highlightAnchor(anc);
|
flashAnchor(anc);
|
||||||
|
|
||||||
var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");
|
var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");
|
||||||
for (var i = 0; i < headers.length; ++i) {
|
for (var i = 0; i < headers.length; ++i) {
|
||||||
@ -935,7 +943,7 @@ var jumpTitle = function(forward, relativeLevel, repeat) {
|
|||||||
// Disable scroll temporarily.
|
// Disable scroll temporarily.
|
||||||
g_muteScroll = true;
|
g_muteScroll = true;
|
||||||
headers[targetIdx].scrollIntoView();
|
headers[targetIdx].scrollIntoView();
|
||||||
highlightAnchor(headers[targetIdx]);
|
flashAnchor(headers[targetIdx]);
|
||||||
currentHeaderIdx = targetIdx;
|
currentHeaderIdx = targetIdx;
|
||||||
content.setHeader(headers[targetIdx].getAttribute("id"));
|
content.setHeader(headers[targetIdx].getAttribute("id"));
|
||||||
setTimeout("g_muteScroll = false", 100);
|
setTimeout("g_muteScroll = false", 100);
|
||||||
|
@ -246,6 +246,8 @@ styles_to_inline_when_copied=all$border:color:display:font-family:font-size:font
|
|||||||
; j - fix XHTML tag like <img> and <br>
|
; j - fix XHTML tag like <img> and <br>
|
||||||
copy_targets="Without Background"$s:b(mark):c:i:x,Evernote$e:p:b(mark|pre):c(pre):g:m:a:x:n:j,OneNote$e:b(mark):c:i:m:a:x,"Microsoft Word"$s:p:b(mark|pre):c(pre):i:m:a:x,"WeChat Public Account"$s:p:b(mark|pre):c(pre):g:m:x:n:f,"Web Editor"$s:p:b(mark|pre):c(pre):m:x:n,"Raw HTML"$r:x
|
copy_targets="Without Background"$s:b(mark):c:i:x,Evernote$e:p:b(mark|pre):c(pre):g:m:a:x:n:j,OneNote$e:b(mark):c:i:m:a:x,"Microsoft Word"$s:p:b(mark|pre):c(pre):i:m:a:x,"WeChat Public Account"$s:p:b(mark|pre):c(pre):g:m:x:n:f,"Web Editor"$s:p:b(mark|pre):c(pre):m:x:n,"Raw HTML"$r:x
|
||||||
|
|
||||||
|
enable_flash_anchor=true
|
||||||
|
|
||||||
[shortcuts]
|
[shortcuts]
|
||||||
; Define shortcuts here, with each item in the form "operation=keysequence".
|
; Define shortcuts here, with each item in the form "operation=keysequence".
|
||||||
; Leave keysequence empty to disable the shortcut of an operation.
|
; Leave keysequence empty to disable the shortcut of an operation.
|
||||||
|
@ -695,6 +695,10 @@ QString VUtils::generateHtmlTemplate(const QString &p_template,
|
|||||||
"<script>var VEnableHighlightLineNumber = true;</script>\n";
|
"<script>var VEnableHighlightLineNumber = true;</script>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (g_config->getEnableFlashAnchor()) {
|
||||||
|
extraFile += "<script>var VEnableFlashAnchor = true;</script>\n";
|
||||||
|
}
|
||||||
|
|
||||||
extraFile += "<script>var VStylesToInline = '" + g_config->getStylesToInlineWhenCopied() + "';</script>\n";
|
extraFile += "<script>var VStylesToInline = '" + g_config->getStylesToInlineWhenCopied() + "';</script>\n";
|
||||||
|
|
||||||
QString htmlTemplate(p_template);
|
QString htmlTemplate(p_template);
|
||||||
|
@ -289,6 +289,9 @@ void VConfigManager::initialize()
|
|||||||
|
|
||||||
m_singleClickClosePreviousTab = getConfigFromSettings("global",
|
m_singleClickClosePreviousTab = getConfigFromSettings("global",
|
||||||
"single_click_close_previous_tab").toBool();
|
"single_click_close_previous_tab").toBool();
|
||||||
|
|
||||||
|
m_enableFlashAnchor = getConfigFromSettings("web",
|
||||||
|
"enable_flash_anchor").toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VConfigManager::initSettings()
|
void VConfigManager::initSettings()
|
||||||
|
@ -460,6 +460,9 @@ public:
|
|||||||
QString getWkhtmltopdfArgs() const;
|
QString getWkhtmltopdfArgs() const;
|
||||||
void setWkhtmltopdfArgs(const QString &p_args);
|
void setWkhtmltopdfArgs(const QString &p_args);
|
||||||
|
|
||||||
|
bool getEnableFlashAnchor() const;
|
||||||
|
void setEnableFlashAnchor(bool p_enabled);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Look up a config from user and default settings.
|
// Look up a config from user and default settings.
|
||||||
QVariant getConfigFromSettings(const QString §ion, const QString &key) const;
|
QVariant getConfigFromSettings(const QString §ion, const QString &key) const;
|
||||||
@ -857,6 +860,9 @@ private:
|
|||||||
// Single click to open file and then close previous tab.
|
// Single click to open file and then close previous tab.
|
||||||
bool m_singleClickClosePreviousTab;
|
bool m_singleClickClosePreviousTab;
|
||||||
|
|
||||||
|
// Whether flash anchor in read mode.
|
||||||
|
bool m_enableFlashAnchor;
|
||||||
|
|
||||||
// The name of the config file in each directory, obsolete.
|
// The name of the config file in each directory, obsolete.
|
||||||
// Use c_dirConfigFile instead.
|
// Use c_dirConfigFile instead.
|
||||||
static const QString c_obsoleteDirConfigFile;
|
static const QString c_obsoleteDirConfigFile;
|
||||||
@ -2111,4 +2117,19 @@ inline void VConfigManager::setWkhtmltopdfArgs(const QString &p_file)
|
|||||||
{
|
{
|
||||||
setConfigToSettings("export", "wkhtmltopdfArgs", p_file);
|
setConfigToSettings("export", "wkhtmltopdfArgs", p_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool VConfigManager::getEnableFlashAnchor() const
|
||||||
|
{
|
||||||
|
return m_enableFlashAnchor;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void VConfigManager::setEnableFlashAnchor(bool p_enabled)
|
||||||
|
{
|
||||||
|
if (p_enabled == m_enableFlashAnchor) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_enableFlashAnchor = p_enabled;
|
||||||
|
setConfigToSettings("web", "enable_flash_anchor", m_enableFlashAnchor);
|
||||||
|
}
|
||||||
#endif // VCONFIGMANAGER_H
|
#endif // VCONFIGMANAGER_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user