Files
SimpleAccount/util.cpp
2026-02-27 12:29:27 +08:00

146 lines
2.8 KiB
C++

#include "util.h"
#include <QDir>
#include <QUuid>
#include <fstream>
static std::string gConfigPath;
static std::string gWorkDir;
static nlohmann::json gConfig;
void GenerateDefaultConfig(const std::string& path)
{
nlohmann::json config;
config["MainWidth"] = 1000;
config["MainHeight"] = 600;
config["Editor"] = "Notepad";
config["MediaDir"] = "./Media";
config["CurCash"] = 0;
config["CurSave"] = 0;
std::ofstream configFile(path);
configFile << config.dump(4);
configFile.close();
gConfig = config;
}
Util::Util()
{
}
bool Util::Init()
{
gWorkDir = QDir::homePath().toStdString() + "/.config/SimpleAccount";
if (!QDir(QString::fromStdString(gWorkDir)).exists()) {
QDir().mkdir(QString::fromStdString(gWorkDir));
}
gConfigPath = gWorkDir + "/config.json";
return LoadConfig();
}
std::string Util::GetWorkDir()
{
return gWorkDir;
}
std::string Util::GetMediaDir()
{
return gConfig["MediaDir"].get<std::string>();
}
std::string Util::GetConfigPath()
{
return gConfigPath;
}
std::pair<int, int> Util::GetMainSize()
{
return std::make_pair(gConfig["MainWidth"].get<int>(), gConfig["MainHeight"].get<int>());
}
bool Util::SetMainSize(int w, int h)
{
LoadConfig();
gConfig["MainWidth"] = w;
gConfig["MainHeight"] = h;
std::ofstream configFile(gConfigPath);
if (!configFile.is_open()) {
return false;
}
configFile << gConfig.dump(4);
configFile.close();
return true;
}
std::string Util::GetEditor()
{
return gConfig["Editor"].get<std::string>();
}
QString Util::NewUUIDName(const QString& path)
{
QFileInfo fileInfo(path);
QString originalSuffix = fileInfo.suffix();
QString newName = QUuid::createUuid().toString(QUuid::WithoutBraces);
if (!originalSuffix.isEmpty()) {
newName += "." + originalSuffix;
}
return newName;
}
double Util::GetCurCash()
{
return gConfig["CurCash"].get<double>();
}
double Util::GetCurSave()
{
return gConfig["CurSave"].get<double>();
}
int Util::CashInt(double cash)
{
return static_cast<int32_t>(round(cash * 100));
}
double Util::CashDouble(int cash)
{
return static_cast<double>(cash) / 100.0;
}
bool Util::LoadConfig()
{
QFile file(QString::fromStdString(gConfigPath));
if (file.exists()) {
std::ifstream configFile(gConfigPath);
if (!configFile.is_open()) {
return false;
}
gConfig = nlohmann::json::parse(configFile);
configFile.close();
} else {
GenerateDefaultConfig(gConfigPath);
}
return true;
}
SharedData::~SharedData()
{
}
SharedData* SharedData::instance()
{
static SharedData data;
return &data;
}
void SharedData::ClearTt()
{
ttCashOut_ = 0;
ttCashIn_ = 0;
ttCreditIn_ = 0;
ttCreditOut_ = 0;
ttCreditCash_ = 0;
ttCashPay_ = 0;
}