#include "history.h" #include #include #include #include namespace fs = std::filesystem; CHistory::CHistory() { default_set(); } bool CHistory::push(const std::string& content) { std::vector vec; read_file(vec); if (std::find(vec.begin(), vec.end(), content) == vec.end()) { vec.push_back(content); } else { return true; } if (vec.size() > 10) { vec.erase(vec.begin()); } if (!write_file(vec)) { return false; } return true; } bool CHistory::get_history(std::vector& vec) { return read_file(vec); } void CHistory::default_set() { QDir dir; std::string path = dir.homePath().toStdString(); fs::path p(path); p.append(".config/OneLevelXmlOpr"); if (!fs::exists(p)) { fs::create_directories(p); } work_dir_ = p.string(); p.append("OneLevelXmlOpr.history"); work_file_ = p.string(); } bool CHistory::read_file(std::vector& vec) { vec.clear(); std::ifstream file(work_file_); if (!file.is_open()) { return false; } std::string line; while (std::getline(file, line)) { vec.push_back(line); } return true; } bool CHistory::write_file(std::vector& vec) { std::ofstream file(work_file_); if (!file.is_open()) { return false; } for (const auto& line : vec) { file << line << std::endl; } file.close(); return true; }