aboutsummaryrefslogtreecommitdiffstats
path: root/src/layout_manager/layout.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout_manager/layout.hpp')
-rw-r--r--src/layout_manager/layout.hpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/layout_manager/layout.hpp b/src/layout_manager/layout.hpp
new file mode 100644
index 0000000..bfa4a6c
--- /dev/null
+++ b/src/layout_manager/layout.hpp
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef TMCAGLWM_LAYOUT_HPP
+#define TMCAGLWM_LAYOUT_HPP
+
+#include <cstdint>
+#include <string>
+#include <map>
+#include "result.hpp"
+#include "wayland_ivi_wm.hpp"
+
+namespace wm {
+
+struct LayoutState {
+ int main{-1};
+ int sub{-1};
+
+ bool operator==(const LayoutState &b) const {
+ return main == b.main && sub == b.sub;
+ }
+
+ bool operator!=(const LayoutState &b) const {
+ return !(*this == b);
+ }
+};
+
+} // namespace wm
+
+class LayoutManager {
+public:
+ explicit LayoutManager();
+ ~LayoutManager() = default;
+
+ typedef std::unordered_map<std::string, std::string> TypeRolCtg;
+ typedef std::unordered_map<std::string, TypeRolCtg> TypeAreas;
+ typedef std::unordered_map<std::string, TypeAreas> TypeLayouts;
+ typedef std::unordered_map<std::string, TypeLayouts> TypeLayers;
+
+ int initialize();
+ bool updateLayout(json_object* obj, const char* new_role, const char* new_area);
+ TypeLayers getCurrentLayers();
+ TypeLayers getPreviousLayers();
+ compositor::rect getAreaSize(const char* area);
+ bool isLayoutChanged(const char* layer);
+
+ void updateArea(const char* layer, const char* role, const char* area);
+
+private:
+ // Disable copy and move
+ LayoutManager(LayoutManager const &) = delete;
+ LayoutManager &operator=(LayoutManager const &) = delete;
+ LayoutManager(LayoutManager &&) = delete;
+ LayoutManager &operator=(LayoutManager &&) = delete;
+
+ TypeLayouts layout_define_;
+ std::unordered_map<std::string, compositor::rect> area2size_;
+
+ TypeLayers crr_layers_, prv_layers_;
+ TypeLayers prv_layers_car_stop_;
+
+ std::unordered_map<std::string, bool> is_layout_changed_;
+
+ std::string getAreaName(TypeAreas area, const char* role, const char* category);
+ int loadLayoutDb();
+ std::string role2App(std::string role, void* ptr);
+};
+
+
+
+#endif // TMCAGLWM_LAYOUT_HPP