#include "sui_base_ex.h" void sui_json_to_data() { std::string json_str; // 默认配置函数 auto default_config = [=]() { // 默认配置 sui_config.font = 0; sui_config.font_bold = 0; sui_config.style = 1; sui_config.style_system = 0; }; // 读取json文件函数 auto read_json = [=](QString _file, std::string &_str) { QFile json_file(_file); if (!json_file.open(QIODevice::ReadOnly | QIODevice::Text)) { return false; } else { _str = json_file.readAll().toStdString(); } json_file.close(); return true; }; auto args_json = [=](json _data, SUI_CONFIG &_config) { _config.style = _data.at("sui").at("style"); _config.style_system = _data.at("sui").at("style_system"); _config.font = _data.at("sui").at("font"); _config.font_bold = _data.at("sui").at("font_bold"); }; // 检测文件是否存在 if (!QFile(sui_con_file).exists()) { default_config(); return; } // 读取json文件内容 if (!read_json(sui_con_file, json_str)) { default_config(); return; } try { json data = json::parse(json_str); if (data == nullptr) { default_config(); return; }else{ args_json(data, sui_config); } } catch (const std::exception &e) { // std::count << e.what() << '\n'; default_config(); } } json sui_data_to_json(json jsonData) { jsonData[toStr(sui)][toStr(style)] = sui_config.style; jsonData[toStr(sui)][toStr(font)] = sui_config.font; jsonData[toStr(sui)][toStr(style_system)] = sui_config.style_system; jsonData[toStr(sui)][toStr(font_bold)] = sui_config.font_bold; return jsonData; } void sui_save_json() { json jsonData = {}; jsonData = sui_data_to_json(jsonData); fs::path json_path = sui_con_file.toStdString(); if (!fs::exists(json_path.parent_path())) { fs::create_directories(json_path.parent_path()); } std::ofstream out(sui_con_file.toStdString(), std::ios::binary); out << std::setw(4) << jsonData; out.close(); } void sui_init_font_table() { sui_cur_dir = QDir::currentPath(); sui_con_file = sui_cur_dir + sui_con_name; QFontDatabase database; QString temp_family_name; foreach (const QString &family, database.families(QFontDatabase::SimplifiedChinese)) { if (temp_family_name != family) { font_table.append(family); temp_family_name = family; } } } void sui_init_style_table() { // 读取软件自带style样式到style_table变量中 QDir *styleDir = new QDir(":/res/qss/"); style_table = styleDir->entryList(QDir::Files); } void sui_init_config() { sui_init_font_table(); sui_init_style_table(); sui_json_to_data(); }