瀏覽代碼

Extend ctkErrorLogModel API - Add ability to save/restore enabled handlers

Method "QStringList msgHandlerEnabled()const" allows to save
the list of enabled handlers.

Method "setMsgHandlerEnabled(const QStringList& handlerNames)" allows
to restore them.

Also added convenient methods setAllMsgHandlerEnabled and enableAllMsgHandler
Jean-Christophe Fillion-Robin 14 年之前
父節點
當前提交
332431faf2
共有 3 個文件被更改,包括 78 次插入2 次删除
  1. 33 0
      Libs/Core/Testing/Cpp/ctkErrorLogModelTest1.cpp
  2. 37 1
      Libs/Core/ctkErrorLogModel.cpp
  3. 8 1
      Libs/Core/ctkErrorLogModel.h

+ 33 - 0
Libs/Core/Testing/Cpp/ctkErrorLogModelTest1.cpp

@@ -90,6 +90,18 @@ void printErrorMessage(const QString& errorMessage)
   fflush(stderr);
 }
 
+//-----------------------------------------------------------------------------
+QString checkInteger(int line, const char* valueName, int current, int expected)
+{
+  if (current != expected)
+    {
+    QString errorMsg("Line %1 - Expected %2: %3 - Current %4: %5\n");
+    return errorMsg.arg(line).arg(valueName).
+        arg(expected).arg(valueName).arg(current);
+    }
+  return QString();
+}
+
 } // end namespace
 
 //-----------------------------------------------------------------------------
@@ -102,6 +114,16 @@ int ctkErrorLogModelTest1(int argc, char * argv [])
   modelTester.setVerbose(false);
   QString errorMsg;
 
+  QStringList enabledMessageHandlers = model.msgHandlerEnabled();
+  int currentEnabledMessageHandlersCount = enabledMessageHandlers.count();
+  errorMsg = checkInteger(__LINE__, "EnabledMessageHandlersCount", currentEnabledMessageHandlersCount, 0);
+  if (!errorMsg.isEmpty())
+    {
+    model.disableAllMsgHandler();
+    printErrorMessage(errorMsg);
+    return EXIT_FAILURE;
+    }
+
   try
     {
     modelTester.setModel(&model);
@@ -149,6 +171,17 @@ int ctkErrorLogModelTest1(int argc, char * argv [])
         return EXIT_FAILURE;
         }
 
+      // Check if msgHandlerEnabled() works as expected
+      enabledMessageHandlers = model.msgHandlerEnabled();
+      currentEnabledMessageHandlersCount = enabledMessageHandlers.count();
+      errorMsg = checkInteger(__LINE__, "EnabledMessageHandlersCount", currentEnabledMessageHandlersCount, 1);
+      if (!errorMsg.isEmpty())
+        {
+        model.disableAllMsgHandler();
+        printErrorMessage(errorMsg);
+        return EXIT_FAILURE;
+        }
+
       // Clear
       model.clear();
 

+ 37 - 1
Libs/Core/ctkErrorLogModel.cpp

@@ -212,12 +212,48 @@ void ctkErrorLogModel::setMsgHandlerEnabled(const QString& handlerName, bool ena
 }
 
 //------------------------------------------------------------------------------
+QStringList ctkErrorLogModel::msgHandlerEnabled() const
+{
+  Q_D(const ctkErrorLogModel);
+  QStringList msgHandlers;
+  foreach(const QString& handlerName, d->RegisteredHandlers.keys())
+    {
+    if (d->RegisteredHandlers.value(handlerName)->enabled())
+      {
+      msgHandlers << handlerName;
+      }
+    }
+  return msgHandlers;
+}
+
+//------------------------------------------------------------------------------
+void ctkErrorLogModel::setMsgHandlerEnabled(const QStringList& handlerNames)
+{
+  foreach(const QString& handlerName, handlerNames)
+    {
+    this->setMsgHandlerEnabled(handlerName, true);
+    }
+}
+
+//------------------------------------------------------------------------------
+void ctkErrorLogModel::enableAllMsgHandler()
+{
+  this->setAllMsgHandlerEnabled(true);
+}
+
+//------------------------------------------------------------------------------
 void ctkErrorLogModel::disableAllMsgHandler()
 {
+  this->setAllMsgHandlerEnabled(false);
+}
+
+//------------------------------------------------------------------------------
+void ctkErrorLogModel::setAllMsgHandlerEnabled(bool enabled)
+{
   Q_D(ctkErrorLogModel);
   foreach(const QString& msgHandlerName, d->RegisteredHandlers.keys())
     {
-    this->setMsgHandlerEnabled(msgHandlerName, false);
+    this->setMsgHandlerEnabled(msgHandlerName, enabled);
     }
 }
 

+ 8 - 1
Libs/Core/ctkErrorLogModel.h

@@ -106,10 +106,17 @@ public:
   QStringList msgHandlerNames()const;
 
   bool msgHandlerEnabled(const QString& handlerName) const;
-
   void setMsgHandlerEnabled(const QString& handlerName, bool enabled);
 
+  /// Return names of the enabled message handlers
+  QStringList msgHandlerEnabled()const;
+
+  /// Enable handler identified by their names
+  void setMsgHandlerEnabled(const QStringList& handlerNames);
+
+  void enableAllMsgHandler();
   void disableAllMsgHandler();
+  void setAllMsgHandlerEnabled(bool enabled);
 
   QString logLevelAsString(LogLevel logLevel)const;