#pragma once

#include <vector>

#include "navigation/navigation.hpp"
#include "history/history.hpp"
#include "preview/preview.hpp"

namespace rrr 
{
  enum class TYPE_WIN
  {
    HISTORY, NAVIGATION, PREVIEW
  };
    
  using files = std::vector<file>;

  // Именно этот класс работает с данными
  // вычисляет для каждых данных позиции курсора. какие нужно сейчас отрисовать
  // и т.п. Отсюда забираются данные для вывода н экран
  class content
  {
    public:
      content() = default;
      ~content() = default;

    public:
      void set_pwd(std::filesystem::path);
      void fill();
      files* get(TYPE_WIN);
      void increment_position(int);
      void navigation_right();
      void navigation_left();
      void create_file(std::string);
      void rename_file(std::filesystem::path, std::filesystem::path);
      void paste(std::filesystem::path);
      void cut(std::filesystem::path);
      void delete_file(file);
      
      file get_selected_file(TYPE_WIN);

    private:
      content_type::navigation nav;
      content_type::history his;
      content_type::preview prev;

      // текущая виртуальная дирректория расположения пользователя, 
      // она может отличается от его расположения в терминале по факту
      std::filesystem::path PWD; 

      int navigation_cursor_position = 0;
      int preview_cursor_position = 0;
      int history_cursor_position = 0;


    private:
      void set_history_cursor_position();
      void set_preview_cursor_position();
      void check_cursor_position();

      file navigation_selected_file;
  };
}
