57 lines
2.0 KiB
C++
57 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include <array>
|
|
#include <filesystem>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
class UserData
|
|
{
|
|
public:
|
|
UserData();
|
|
~UserData();
|
|
|
|
[[nodiscard]] const std::filesystem::path &directory() const { return directory_; }
|
|
[[nodiscard]] const std::string &imguiIniPath() const { return imgui_ini_path_; }
|
|
[[nodiscard]] const std::vector<std::string> &recentlyClosed() const { return recently_closed_; }
|
|
[[nodiscard]] const std::vector<std::string> &openRepositories() const { return open_repositories_; }
|
|
[[nodiscard]] size_t activeRepository() const { return active_repository_; }
|
|
[[nodiscard]] float sidebarWidth() const { return sidebar_width_; }
|
|
[[nodiscard]] float detailsWidth() const { return details_width_; }
|
|
[[nodiscard]] float sidebarSectionHeight(size_t index) const { return sidebar_section_heights_.at(index); }
|
|
[[nodiscard]] int pullMode() const { return pull_mode_; }
|
|
[[nodiscard]] int zoomPercent() const { return zoom_percent_; }
|
|
|
|
void setSidebarWidth(float width) { sidebar_width_ = width; }
|
|
void setDetailsWidth(float width) { details_width_ = width; }
|
|
void setSidebarSectionHeight(size_t index, float height) { sidebar_section_heights_.at(index) = height; }
|
|
void setPullMode(int mode)
|
|
{
|
|
pull_mode_ = mode;
|
|
save();
|
|
}
|
|
void setZoomPercent(int percent)
|
|
{
|
|
zoom_percent_ = percent;
|
|
save();
|
|
}
|
|
void addRecentlyClosed(const std::string &path);
|
|
std::string takeRecentlyClosed();
|
|
void setRepositorySession(std::vector<std::string> paths, size_t active_repository);
|
|
void save() const;
|
|
|
|
private:
|
|
void load();
|
|
|
|
std::filesystem::path directory_;
|
|
std::string imgui_ini_path_;
|
|
std::vector<std::string> recently_closed_;
|
|
std::vector<std::string> open_repositories_;
|
|
size_t active_repository_ = 0;
|
|
float sidebar_width_ = 230.0f;
|
|
float details_width_ = 368.0f;
|
|
std::array<float, 4> sidebar_section_heights_ = {110.0f, 220.0f, 90.0f, 150.0f};
|
|
int pull_mode_ = 1;
|
|
int zoom_percent_ = 100;
|
|
};
|