#pragma execution_character_set("utf-8") #include #include #include #include "SettingDialog.h" #include "Base.h" #include "SystemSettingModule.h" #include "DataManager.h" #include "common.h" #include "DataManager.h" #include "mainwindow.h" SettingDialog::SettingDialog(MainWindow* parent) : QDialog(parent), _frameless(nullptr), _parent(parent) { _webView = new WebEngineView(QUrl(BaseUrl + "#/setting"), this); QVBoxLayout* layout = new QVBoxLayout(); layout->setContentsMargins(0, 0, 0, 0); setLayout(layout); layout->addWidget(_webView); DataManager& root = GetDataRoot(); _webView->addEventModule(new SystemSettingModule(nullptr, &root)); _eventModule = new SignalEventModule("SettingDialog"); QObject::connect(_eventModule, &SignalEventModule::onmessage, this, &SettingDialog::onMessage); _webView->addEventModule(_eventModule); #ifdef Q_OS_WIN _frameless = std::move(std::unique_ptr(new QFramelessHelper(this, _webView, true, (QDialog*)this))); #endif } SettingDialog::~SettingDialog() { } #if (QT_VERSION >= QT_VERSION_CHECK(6,0,0)) bool SettingDialog::nativeEvent(const QByteArray& eventType, void* message, qintptr* result) #else bool SettingDialog::nativeEvent(const QByteArray& eventType, void* message, long* result) #endif { if (_frameless && _frameless->nativeEvent(eventType, message, result)) return true; return QDialog::nativeEvent(eventType, message, result); } bool SettingDialog::onMessage(const std::string& eventName, json& parameter) { LOG(INFO) << CommonHelper::utf8ToStdString("SettingDialog receive message......."); LOG(INFO) << eventName; LOG(INFO) << CommonHelper::jsonToString(parameter); TRY{ if (eventName == "closed") { close(); return true; } else if (eventName == "filedialog") { auto data = parameter["data"]; bool bFile = false; if (!data["file"].is_null()) { bFile = data["file"]; } if (bFile) { QString curPath = QCoreApplication::applicationDirPath(); QString selectDir = QFileDialog::getOpenFileName(this->parentWidget(), "选择文件", "", "*.dbp"); if (!selectDir.isEmpty()) { parameter["response"] = CommonHelper::qstringToUtf8(selectDir); } } else { QString selectDir = QFileDialog::getExistingDirectory(); parameter["response"] = CommonHelper::qstringToUtf8(selectDir); } return true; } else if (eventName == "db-connect") { parent()->DBConnect(parameter); return true; } } CATCH(parameter); return false; } MainWindow* SettingDialog::parent() { return _parent; } // bool SettingDialog::DBConnect(json& parameter) // { // using namespace DBPlatformSpace; // ResultMsg rm; // auto data = parameter["data"]; // // std::string sysDBPath = data["sysDBPath"]; // QString sysDBPath = CommonHelper::utf8ToQString(data["sysDBPath"]); // SysManager& sysMgr = GetSysManager(); // QString dbFile; // if (sysDBPath == "") // { // dbFile = sysMgr._sysDBPath; // } // else // { // dbFile = sysDBPath; // } // // QString msg = "SettingDialog::DBConnect: DBFile:" + dbFile; // LOG(INFO) << CommonHelper::qstringToString(msg); // // QFile file(dbFile); // if (!file.exists()) // { // //dbp文件不存在 // CommonHelper::message("数据库文件不存在", 2); // LOG(INFO) << CommonHelper::utf8ToStdString("no dbFile"); // this->broadcast("connect-status-change", json({ {"status",false} })); // return false; // } // if (_pDataManager->pTheDBPlatform) // { // delete _pDataManager->pTheDBPlatform; // _pDataManager->pTheDBPlatform = nullptr; // _pDataManager->clearAllProject(); // sysMgr.clearAllDictData(); // } // try { // _pDataManager->pTheDBPlatform = new DBPlatformSpace::DBPlatformNew(CommonHelper::qstringToStdString(dbFile)); // } // catch (...) { // parameter["error"] = "连接数据库文件失败"; // return false; // } // // string st = DBPlatformNew::getCurrPlatformStatus(); // if (st == "OK") // { // _pDataManager->_dbConnected = true; // LOG(INFO) << CommonHelper::utf8ToStdString("DBConnect::DBPlatformNew connect success"); // this->broadcast("connect-status-change", json({ {"status",true} })); // return true; // } // LOG(INFO) << CommonHelper::utf8ToStdString("DBConnect::DBPlatformNew connect failed"); // this->broadcast("connect-status-change", json({ {"status",false} })); // return false; // } void SettingDialog::message(const QString& message, int type) { json j; j["value"] = CommonHelper::qstringToUtf8(message); j["type"] = type; _eventModule->send("message", j); }