Просмотр исходного кода

VMetaWordManager: lazy initialization

Le Tan 7 лет назад
Родитель
Сommit
3c8ac8094d

+ 1 - 0
src/resources/themes/v_moonlight/v_moonlight.qss

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

+ 1 - 0
src/resources/themes/v_pure/v_pure.qss

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

+ 16 - 1
src/utils/vmetawordmanager.cpp

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

+ 6 - 2
src/utils/vmetawordmanager.h

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

+ 0 - 2
src/utils/vutils.cpp

@@ -1036,8 +1036,6 @@ bool VUtils::splitPathInBasePath(const QString &p_base,
     }
     }
 
 
     p_parts = b.right(b.size() - a.size() - 1).split("/", QString::SkipEmptyParts);
     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;
     return true;
 }
 }
 
 

+ 0 - 2
src/vdirectory.cpp

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

+ 0 - 1
src/veditarea.cpp

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

+ 0 - 2
src/vnote.cpp

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