Update wm_layer
[apps/agl-service-windowmanager.git] / src / wm_layer.hpp
index ac74530..3362ba7 100644 (file)
 #include <memory>
 #include "wm_error.hpp"
 
+struct json_object;
+
 namespace wm
 {
 
+class WMClient;
 class LayerState
 {
   public:
     LayerState();
     ~LayerState() = default;
+    void attachIdToArea(const std::string& area, const WMClient&);
+    const std::unordered_map<std::string, std::string> popCurrentState();
+    const std::unordered_map<std::string, std::string> getCurrentState();
+    const std::vector<unsigned> getIviIdList();
+
   private:
-    std::vector<unsigned> _ivi_layer_id_list;
-    std::unordered_map<std::string, unsigned> area2ivi_layer_id;
-    // std::map<std::string, unsigned> _render_order;
+    std::vector<unsigned> render_order;
+    std::unordered_map<std::string, std::string> area2appid;
 };
 
-class LayerSetting
+class WMLayer
 {
   public:
     enum MANAGEMENT_TYPE
@@ -46,50 +53,30 @@ class LayerSetting
         STACK
     };
 
-    explicit LayerSetting(const std::string& name, MANAGEMENT_TYPE type, unsigned begin, unsigned end);
-    ~LayerSetting() = default;
-
-    const std::string& layerName() { return this->name; }
-    MANAGEMENT_TYPE layerType() { return this->type; };
-    void appendRole(const std::string& role);
-    void appendArea(const std::string& area);
+    explicit WMLayer(json_object* j);
+    ~WMLayer() = default;
+    unsigned getNewLayerID(const std::string& role);
     unsigned idBegin() { return this->id_begin; }
     unsigned idEnd()   { return this->id_end; }
-    unsigned getNewLayerID(const std::string& role);
+    const std::string& layerName();
+    MANAGEMENT_TYPE    layerType() { return this->type; }
+    void appendArea(const std::string& area);
     void removeLayerID(unsigned id);
-
-/*     unsigned getNewID(const std::string& role);
-    void remove(unsigned ivi_layer_id);
-    void clear();
-    bool attach(unsigned ivi_layer_id, const std::string& area);
-    void stack(unsigned ivi_layer_id, const std::string& area);
-    bool updateRenderOrder(const std::vector<unsigned> list); */
-
+    LayerState getLayerState() const { return before_state; }
+    WMError    setLayerState(const LayerState& l);
+    bool checkIDBelongTo(unsigned id);
   private:
+    LayerState before_state;
+    LayerState state;
     std::string name = ""; // Layer name
     MANAGEMENT_TYPE type;
-    std::vector<std::string> role_list;
+    std::string role_list;
     std::vector<std::string> area_list;
     std::vector<unsigned>    id_list;
     unsigned id_begin;
     unsigned id_end;
 };
 
-class WMLayer
-{
-  public:
-    WMLayer();
-    ~WMLayer() = default;
-    unsigned getNewLayerID(const std::string& role);
-    LayerState getLayerState() const { return before_state; }
-    WMError setLayerState(const LayerState& l);
-    bool checkIDBelongTo(unsigned id);
-  private:
-    LayerState before_state;
-    LayerState state;
-    std::unique_ptr<LayerSetting> setting;
-};
-
 } // namespace wm
 
 #endif // WM_LAYERS_H