From 4a1f15dbb8d8c27795bccec8e5d55ae2bdc1345c Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Wed, 13 Oct 2010 15:33:51 +0200 Subject: [PATCH] Qt4ProjectManager: Compress the folderChanged via a small timer Reviewed-By: hunger --- src/plugins/qt4projectmanager/qt4project.cpp | 18 +++++++++++++++++- src/plugins/qt4projectmanager/qt4project.h | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index aa5f93474ac..af546f26ba1 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -1132,6 +1132,10 @@ namespace { CentralizedFolderWatcher::CentralizedFolderWatcher() { + m_compressTimer.setSingleShot(true); + m_compressTimer.setInterval(200); + connect(&m_compressTimer, SIGNAL(timeout()), + this, SLOT(onTimer())); connect (&m_watcher, SIGNAL(directoryChanged(QString)), this, SLOT(folderChanged(QString))); } @@ -1225,8 +1229,20 @@ void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4 } } - void CentralizedFolderWatcher::folderChanged(const QString &folder) +{ + m_changedFolders.insert(folder); + m_compressTimer.start(); +} + +void CentralizedFolderWatcher::onTimer() +{ + foreach(const QString &folder, m_changedFolders) + delayedFolderChanged(folder); + m_changedFolders.clear(); +} + +void CentralizedFolderWatcher::delayedFolderChanged(const QString &folder) { if (debugCFW) qDebug()<<"CFW::folderChanged"<<folder; diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 7141fbb8140..6b2f7b21c6b 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -122,6 +122,8 @@ public: private slots: void folderChanged(const QString &folder); + void onTimer(); + void delayedFolderChanged(const QString &folder); private: QSet<QString> recursiveDirs(const QString &folder); @@ -129,6 +131,8 @@ private: QMultiMap<QString, Qt4PriFileNode *> m_map; QSet<QString> m_recursiveWatchedFolders; + QTimer m_compressTimer; + QSet<QString> m_changedFolders; }; } -- GitLab