changeset 556:9df20285bb1c annotations

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 01 Sep 2026 14:48:35 +0200
parents 304d7b366580
children 79205cedcf39
files ViewerPlugin/Annotations/AnnotationsRestApi.cpp
diffstat 1 files changed, 100 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/ViewerPlugin/Annotations/AnnotationsRestApi.cpp	Tue Sep 01 14:43:16 2026 +0200
+++ b/ViewerPlugin/Annotations/AnnotationsRestApi.cpp	Tue Sep 01 14:48:35 2026 +0200
@@ -758,96 +758,96 @@
   };
 
 
-  class AnnotationsInfo : public ISerializable
-  {
-  private:
-    std::string        projectName_;
-    std::string        projectDescription_;
-    std::set<UserId>   activeUsers_;
-
-  public:
-    AnnotationsInfo()
-    {
-    }
-
-    AnnotationsInfo(const Json::Value& serialized)
-    {
-      projectName_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_NAME);
-      projectDescription_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_DESCRIPTION);
-
-      const Json::Value& users = serialized[KEY_ACTIVE_USERS];
-
-      if (!users.isArray())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-
-      for (Json::Value::ArrayIndex i = 0; i < users.size(); i++)
-      {
-        activeUsers_.insert(UserId(users[i]));
-      }
-    }
-
-    const std::string& GetProjectName() const
-    {
-      return projectName_;
-    }
-
-    void SetProjectName(const std::string& name)
-    {
-      projectName_ = name;
-    }
-
-    const std::string& GetProjectDescription() const
-    {
-      return projectDescription_;
-    }
-
-    void SetProjectDescription(const std::string& description)
-    {
-      projectDescription_ = description;
-    }
-
-    // Return "true" iff. the user was not already tagged as active
-    bool AddActiveUser(const UserId& user)
-    {
-      if (activeUsers_.find(user) == activeUsers_.end())
-      {
-        activeUsers_.insert(user);
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-
-    const std::set<UserId>& GetActiveUsers() const
-    {
-      return activeUsers_;
-    }
-
-    virtual void Serialize(Json::Value& serialized) const ORTHANC_OVERRIDE
-    {
-      Json::Value users = Json::arrayValue;
-      for (std::set<UserId>::const_iterator it = activeUsers_.begin(); it != activeUsers_.end(); ++it)
-      {
-        Json::Value user;
-        it->Serialize(user);
-        users.append(user);
-      }
-
-      serialized = Json::objectValue;
-      serialized[KEY_PROJECT_NAME] = projectName_;
-      serialized[KEY_PROJECT_DESCRIPTION] = projectDescription_;
-      serialized[KEY_ACTIVE_USERS] = users;
-    }
-  };
-
-
   class AnnotationsManager : public Orthanc::IDynamicObject
   {
   private:
+    class Info : public ISerializable
+    {
+    private:
+      std::string        projectName_;
+      std::string        projectDescription_;
+      std::set<UserId>   activeUsers_;
+
+    public:
+      Info()
+      {
+      }
+
+      Info(const Json::Value& serialized)
+      {
+        projectName_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_NAME);
+        projectDescription_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_DESCRIPTION);
+
+        const Json::Value& users = serialized[KEY_ACTIVE_USERS];
+
+        if (!users.isArray())
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+
+        for (Json::Value::ArrayIndex i = 0; i < users.size(); i++)
+        {
+          activeUsers_.insert(UserId(users[i]));
+        }
+      }
+
+      const std::string& GetProjectName() const
+      {
+        return projectName_;
+      }
+
+      void SetProjectName(const std::string& name)
+      {
+        projectName_ = name;
+      }
+
+      const std::string& GetProjectDescription() const
+      {
+        return projectDescription_;
+      }
+
+      void SetProjectDescription(const std::string& description)
+      {
+        projectDescription_ = description;
+      }
+
+      // Return "true" iff. the user was not already tagged as active
+      bool AddActiveUser(const UserId& user)
+      {
+        if (activeUsers_.find(user) == activeUsers_.end())
+        {
+          activeUsers_.insert(user);
+          return true;
+        }
+        else
+        {
+          return false;
+        }
+      }
+
+      const std::set<UserId>& GetActiveUsers() const
+      {
+        return activeUsers_;
+      }
+
+      virtual void Serialize(Json::Value& serialized) const ORTHANC_OVERRIDE
+      {
+        Json::Value users = Json::arrayValue;
+        for (std::set<UserId>::const_iterator it = activeUsers_.begin(); it != activeUsers_.end(); ++it)
+        {
+          Json::Value user;
+          it->Serialize(user);
+          users.append(user);
+        }
+
+        serialized = Json::objectValue;
+        serialized[KEY_PROJECT_NAME] = projectName_;
+        serialized[KEY_PROJECT_DESCRIPTION] = projectDescription_;
+        serialized[KEY_ACTIVE_USERS] = users;
+      }
+    };
+
+
     void Load(const UserId& user)
     {
       const std::string key = GetLayersKey(id_, user);
@@ -868,7 +868,7 @@
 
     Orthanc::ReaderWriterLock         mutex_;
     AnnotationsManagerId              id_;
-    std::unique_ptr<AnnotationsInfo>  info_;
+    std::unique_ptr<Info>  info_;
     Content                           content_;
 
   public:
@@ -881,7 +881,7 @@
 
       if (LookupKeyValueStore(info, key))
       {
-        info_.reset(new AnnotationsInfo(info));
+        info_.reset(new Info(info));
 
         for (std::set<UserId>::const_iterator it = info_->GetActiveUsers().begin();
              it != info_->GetActiveUsers().end(); ++it)
@@ -891,7 +891,7 @@
       }
       else
       {
-        info_.reset(new AnnotationsInfo);
+        info_.reset(new Info);
 
         if (OrthancPlugins::RestApiGet(info, "/education/api-plugins/project?id=" + id.GetProjectId(), true))
         {
@@ -958,7 +958,7 @@
     {
     private:
       Orthanc::ReaderWriterLock::ReadLock lock_;
-      const AnnotationsInfo&              info_;
+      const Info&                         info_;
       UserId                              userId_;
       const UserAnnotationsSettings*      userSettings_;
 
@@ -987,9 +987,14 @@
         return userSettings_ != NULL;
       }
 
-      const AnnotationsInfo& GetAnnotationsInfo() const
+      const std::string& GetProjectName() const
       {
-        return info_;
+        return info_.GetProjectName();
+      }
+
+      const std::string& GetProjectDescription() const
+      {
+        return info_.GetProjectDescription();
       }
 
       void ListLayers(Json::Value& serialized) const
@@ -1283,9 +1288,9 @@
       AnnotationsManager::UserReader reader(context.GetAnnotations(), context.GetUser().GetAnnotatingId());
 
       Json::Value answer;
-      answer["description"] = reader.GetAnnotationsInfo().GetProjectDescription();
+      answer["description"] = reader.GetProjectDescription();
       answer["enabled"] = ViewerConfiguration::GetInstance().AreAnnotationsEnabled();
-      answer["name"] = reader.GetAnnotationsInfo().GetProjectName();
+      answer["name"] = reader.GetProjectName();
       answer["sharing"] = (ViewerConfiguration::GetInstance().AreAnnotationsEnabled() &&
                            ViewerConfiguration::GetInstance().IsAnnotationsSharingEnabled());
       answer["user"] = context.GetUser().Format();