VMetaWordManager: lazy initialization

This commit is contained in:
Le Tan 2018-05-23 20:08:58 +08:00
parent b076e87509
commit 3c8ac8094d
8 changed files with 24 additions and 10 deletions

View File

@ -290,6 +290,7 @@ QPushButton[ToolBoxActiveBtn="true"] {
padding: 4px 10px 4px 4px;
margin: 0px;
border: none;
font-weight: bold;
color: @pushbutton_toolboxbtn_active_fg;
background-color: @pushbutton_toolboxbtn_active_bg;
min-width: -1;

View File

@ -290,6 +290,7 @@ QPushButton[ToolBoxActiveBtn="true"] {
padding: 4px 10px 4px 4px;
margin: 0px;
border: none;
font-weight: bold;
color: @pushbutton_toolboxbtn_active_fg;
background-color: @pushbutton_toolboxbtn_active_bg;
min-width: -1;

View File

@ -48,12 +48,19 @@ static QString allMetaWordsInfo(const VMetaWord *p_metaWord)
const QChar VMetaWordManager::c_delimiter = '%';
VMetaWordManager::VMetaWordManager(QObject *p_parent)
: QObject(p_parent)
: QObject(p_parent),
m_initialized(false)
{
}
void VMetaWordManager::init()
{
if (m_initialized) {
return;
}
m_initialized = true;
using namespace std::placeholders;
// %d%.
@ -300,6 +307,8 @@ QString VMetaWordManager::evaluate(const QString &p_text,
return p_text;
}
const_cast<VMetaWordManager *>(this)->init();
// Update datetime for later parse.
const_cast<VMetaWordManager *>(this)->m_dateTime = QDateTime::currentDateTime();
@ -330,11 +339,15 @@ QString VMetaWordManager::evaluate(const QString &p_text,
bool VMetaWordManager::contains(const QString &p_word) const
{
const_cast<VMetaWordManager *>(this)->init();
return m_metaWords.contains(p_word);
}
const VMetaWord *VMetaWordManager::findMetaWord(const QString &p_word) const
{
const_cast<VMetaWordManager *>(this)->init();
auto it = m_metaWords.find(p_word);
if (it != m_metaWords.end()) {
return &it.value();
@ -368,6 +381,8 @@ void VMetaWordManager::addMetaWord(MetaWordType p_type,
bool VMetaWordManager::findOverriddenValue(const QString &p_word,
QString &p_value) const
{
const_cast<VMetaWordManager *>(this)->init();
auto it = m_overriddenWords.find(p_word);
if (it != m_overriddenWords.end()) {
p_value = it.value();

View File

@ -161,8 +161,6 @@ class VMetaWordManager : public QObject
public:
explicit VMetaWordManager(QObject *p_parent = nullptr);
void init();
// Expand meta words in @p_text and return the expanded text.
// @p_overriddenWords: a table containing overridden meta words.
QString evaluate(const QString &p_text,
@ -184,6 +182,8 @@ public:
static const QChar c_delimiter;
private:
void init();
void addMetaWord(MetaWordType p_type,
const QString &p_word,
const QString &p_definition,
@ -191,6 +191,8 @@ private:
void initCustomMetaWords();
bool m_initialized;
// Map using word as key.
QHash<QString, VMetaWord> m_metaWords;
@ -210,6 +212,8 @@ inline const QDateTime &VMetaWordManager::getDateTime() const
inline const QHash<QString, VMetaWord> &VMetaWordManager::getAllMetaWords() const
{
const_cast<VMetaWordManager *>(this)->init();
return m_metaWords;
}

View File

@ -1036,8 +1036,6 @@ bool VUtils::splitPathInBasePath(const QString &p_base,
}
p_parts = b.right(b.size() - a.size() - 1).split("/", QString::SkipEmptyParts);
qDebug() << QString("split path %1 based on %2 to %3 parts").arg(p_path).arg(p_base).arg(p_parts.size());
return true;
}

View File

@ -605,7 +605,6 @@ void VDirectory::setExpanded(bool p_expanded)
VNoteFile *VDirectory::tryLoadFile(QStringList &p_filePath)
{
qDebug() << "directory" << m_name << "tryLoadFile()" << p_filePath.join("/");
if (p_filePath.isEmpty()) {
return NULL;
}
@ -644,7 +643,6 @@ VNoteFile *VDirectory::tryLoadFile(QStringList &p_filePath)
VDirectory *VDirectory::tryLoadDirectory(QStringList &p_filePath)
{
qDebug() << "directory" << m_name << "tryLoadDirectory()" << p_filePath.join("/");
if (p_filePath.isEmpty()) {
return NULL;
}

View File

@ -33,7 +33,6 @@ VEditArea::VEditArea(QWidget *parent)
registerCaptainTargets();
QString keySeq = g_config->getShortcutKeySequence("ActivateNextTab");
qDebug() << "set ActivateNextTab shortcut to" << keySeq;
QShortcut *activateNextTab = new QShortcut(QKeySequence(keySeq), this);

View File

@ -71,8 +71,6 @@ VNote::VNote(QObject *parent)
g_config->getNotebooks(m_notebooks, this);
m_metaWordMgr.init();
g_mwMgr = &m_metaWordMgr;
}