Change API in wm_layer
[apps/agl-service-windowmanager.git] / src / wm_layer.hpp
index 3362ba7..a6a359e 100644 (file)
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef WM_LAYERS_H
-#define WM_LAYERS_H
+#ifndef WM_LAYER_HPP
+#define WM_LAYER_HPP
 
 #include <string>
 #include <vector>
@@ -38,6 +38,12 @@ class LayerState
     const std::unordered_map<std::string, std::string> popCurrentState();
     const std::unordered_map<std::string, std::string> getCurrentState();
     const std::vector<unsigned> getIviIdList();
+    void addLayer(unsigned layer);
+    void removeLayer(unsigned layer);
+    void setArea(const std::string& app, const std::string& area);
+
+    // Debug
+    void dump();
 
   private:
     std::vector<unsigned> render_order;
@@ -53,21 +59,37 @@ class WMLayer
         STACK
     };
 
-    explicit WMLayer(json_object* j);
+    explicit WMLayer(json_object* j, unsigned uuid);
     ~WMLayer() = default;
+
+    // Status & Setting API
     unsigned getNewLayerID(const std::string& role);
     unsigned idBegin() { return this->id_begin; }
     unsigned idEnd()   { return this->id_end; }
+    unsigned getUuid() { return this->uuid; }
     const std::string& layerName();
     MANAGEMENT_TYPE    layerType() { return this->type; }
     void appendArea(const std::string& area);
-    void removeLayerID(unsigned id);
-    LayerState getLayerState() const { return before_state; }
-    WMError    setLayerState(const LayerState& l);
-    bool checkIDBelongTo(unsigned id);
+    LayerState& getLayerState() { return tmp_state; }
+    WMError setLayerState(const LayerState& l);
+    bool hasLayerID(unsigned id);
+    bool hasRole(const std::string& role);
+
+    // Manipulation
+    void addLayerToState(unsigned layer);
+    void removeLayerFromState(unsigned layer);
+    void setAreaToState(const std::string& app, const std::string& area);
+    void terminateApp(unsigned layer);
+    void update();
+    void undo();
+
+    // Debug
+    void dump();
+
   private:
-    LayerState before_state;
+    LayerState tmp_state;
     LayerState state;
+    unsigned uuid;
     std::string name = ""; // Layer name
     MANAGEMENT_TYPE type;
     std::string role_list;
@@ -79,4 +101,4 @@ class WMLayer
 
 } // namespace wm
 
-#endif // WM_LAYERS_H
+#endif // WM_LAYER_HPP