#pragma once

#include "try_engine/try_engine.hpp"
#include "rrr/content/content.hpp"
#include "rrr/utils/func.hpp"

namespace rrr::layers::gui
{
  class preview : public try_engine::layer
  {
    BASE_TYPE_DEFINE();

    public:
      CONSTRUCT_IMPL(preview);

    public:
      BASE_OVERIDE_IMPL();

    public:
      SET_EVENT_MANAGER_IMPL();

    public:
      void set_content(content* c) { cnt = c; };

    private:
      FLAGS_STRUCT_DEFINED();

      bool show = true;
      event_manager* em;
      content* cnt;
      file selected_file;
      files* data;

      float width = 0.f;
      float height = 0.f;
      float pos_x = 0.f;
      float pos_y = 0.f;

      // все что нужно для установки курсора при длинных списках 
      int current_position = 0; // позиция курсора относительно списка
      int cursor_position = 0; // позиция курсора относительно высоты экрана
      int delta = 0;
      enum class MOVE_DIRECTION { UP, DOWN };

      std::filesystem::path media_path;
      try_engine::texture tx;
      cv::Mat frame;
      cv::VideoCapture cap;
      bool media_show = false;
      bool make_media = false;
      
    private:
      const ImVec4 dir_color = func::get_IMGUI_color<ImVec4>(91.f, 128.f, 191.f);
      const ImVec4 file_color = func::get_IMGUI_color<ImVec4>(186.f, 186.f, 186.f);
      const ImVec4 link_color = func::get_IMGUI_color<ImVec4>(51.f, 95.f, 165.f);

    private:
      void resize();
      void update_content(); 
      void set_delta(MOVE_DIRECTION);
      void set_scroll();
  };
}

