55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
#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);
|
||
int get_cursor_position(TYPE_WIN) const;
|
||
void increment_position(int);
|
||
void navigation_right();
|
||
void navigation_left();
|
||
|
||
private:
|
||
content_type::navigation nav;
|
||
content_type::history his;
|
||
content_type::preview prev;
|
||
|
||
// текущая виртуальная дирректория расположения пользователя,
|
||
// она может отличается от его расположения в терминале по факту
|
||
std::filesystem::path PWD;
|
||
|
||
// чтобы не устанавливалась стрелка изначально
|
||
// полезно при первом открытии окна prev
|
||
int cursor_position = 0;
|
||
|
||
private:
|
||
int get_history_cursor_position() const;
|
||
int get_preview_cursor_position();
|
||
void check_cursor_position();
|
||
};
|
||
}
|