preferences: add per account options to AutoAnswer and WaterMark

GitLab: #21
Change-Id: I5261fec7ee29aa4a422dce880b5da3bc22b3a5ba
diff --git a/WaterMark/main.cpp b/WaterMark/main.cpp
index 7971c3e..b8113e3 100644
--- a/WaterMark/main.cpp
+++ b/WaterMark/main.cpp
@@ -25,6 +25,7 @@
 #include <plugin/jamiplugin.h>
 
 #include "WatermarkMediaHandler.h"
+#include "PluginPreferenceHandler.h"
 
 #ifdef WIN32
 #define EXPORT_PLUGIN __declspec(dllexport)
@@ -32,7 +33,7 @@
 #define EXPORT_PLUGIN
 #endif
 
-#define WaterMark_VERSION_MAJOR 1
+#define WaterMark_VERSION_MAJOR 2
 #define WaterMark_VERSION_MINOR 0
 #define WaterMark_VERSION_PATCH 0
 
@@ -51,21 +52,31 @@
     std::cout << "Version " << WaterMark_VERSION_MAJOR << "." << WaterMark_VERSION_MINOR << "."
               << WaterMark_VERSION_PATCH << std::endl;
 
-    // If invokeService doesn't return an error
     if (api) {
-        std::map<std::string, std::string> preferences;
-        api->invokeService(api, "getPluginPreferences", &preferences);
+        if (api->version.api < JAMI_PLUGIN_API_VERSION)
+            return nullptr;
+
+        std::map<std::string, std::map<std::string, std::string>> preferences;
+        api->invokeService(api, "getPluginAccPreferences", &preferences);
         std::string dataPath;
         api->invokeService(api, "getPluginDataPath", &dataPath);
 
+        auto fmpPluginPreferenceHandler
+            = std::make_unique<jami::PluginPreferenceHandler>(api, std::move(preferences), dataPath);
         auto fmpWatermarkMediaHandler
-            = std::make_unique<jami::WatermarkMediaHandler>(std::move(preferences),
-                                                            std::move(dataPath));
+            = std::make_unique<jami::WatermarkMediaHandler>(std::move(dataPath),
+                                                            fmpPluginPreferenceHandler.get());
+        fmpPluginPreferenceHandler->setWaterMarkHandler(fmpWatermarkMediaHandler.get());
         if (api->manageComponent(api,
                                  "CallMediaHandlerManager",
                                  fmpWatermarkMediaHandler.release())) {
             return nullptr;
         }
+        if (api->manageComponent(api,
+                                 "PreferenceHandlerManager",
+                                 fmpPluginPreferenceHandler.release())) {
+            return nullptr;
+        }
     }
     return pluginExit;
 }