From 16431955ded411167ab60f6b98a9bec937270783 Mon Sep 17 00:00:00 2001 From: shouchih_chen Date: Fri, 20 Sep 2024 12:47:26 +0800 Subject: [PATCH] Refactor code, Split QFileDialog in Webassembly and other desktop OS. --- NameCreater/INameCreater.cpp | 45 ++- NameCreater/INameCreater.h | 6 +- NameCreater/NameCreater.cpp | 81 +++-- NameCreater/NameCreater.h | 1 + NameCreater/NameCreater.pro | 3 +- NameCreater/NameCreater.pro.user | 578 +++++++++++++++++++++++++++++-- NameCreater/customlogo.cpp | 40 +-- NameCreater/customlogo.h | 3 +- NameCreater/customlogo2.cpp | 67 ++-- NameCreater/customlogo2.h | 2 +- NameCreater/def.h | 2 +- 11 files changed, 657 insertions(+), 171 deletions(-) diff --git a/NameCreater/INameCreater.cpp b/NameCreater/INameCreater.cpp index 35dea29..90a0b6c 100644 --- a/NameCreater/INameCreater.cpp +++ b/NameCreater/INameCreater.cpp @@ -23,33 +23,42 @@ INameCreater::~INameCreater() void INameCreater::saveToImage(const QString& filename, QGraphicsScene* scene) { - scene->clearSelection(); // Selections would also render to the file - scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents - QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene - image.fill(Qt::transparent); // Start all pixels transparent - int dpm = 300 / 0.0254; // ~300 DPI - image.setDotsPerMeterX(dpm); - image.setDotsPerMeterY(dpm); + scene->clearSelection(); // Selections would also render to the file + scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents + QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene + image.fill(Qt::transparent); // Start all pixels transparent + int dpm = 300 / 0.0254; // ~300 DPI + image.setDotsPerMeterX(dpm); + image.setDotsPerMeterY(dpm); + + + QPainter painter(&image); + scene->render(&painter); - QPainter painter(&image); - scene->render(&painter); #ifdef Q_OS_MAC - QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); + QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); + qDebug() << "app director path" < getNameByFile(Name_Type_e type, const QString& filename); QList getNameByFileContent(Name_Type_e type, const QByteArray& conetent); @@ -46,4 +46,4 @@ private: QFont eng_Font; -}; \ No newline at end of file +}; diff --git a/NameCreater/NameCreater.cpp b/NameCreater/NameCreater.cpp index 1d67310..eeae0d3 100644 --- a/NameCreater/NameCreater.cpp +++ b/NameCreater/NameCreater.cpp @@ -121,43 +121,58 @@ void NameCreater::loadFont(const QByteArray& fontdata){ void NameCreater::OnClickedReadBtn() { auto sender =(QPushButton*) QObject::sender(); - auto fileContentReady = [this, sender](const QString &fileName, const QByteArray &fileContent) { - if (fileName.isEmpty()) { - // No file was selected - } - else { - // Use fileName and fileContent - if(sender == ui.fivesingle_btn) FiveToSingle().generaImageFromCSV(Name_Type_e::Name_zh,fileName, fileContent, this->font, this->font_color); - - if(sender == ui.birthday_btn) BirthdayCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); - if(sender == ui.fivenew_btn) NewFiveCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); - if(sender == ui.towel_btn) TowelCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font_towel, this->font_color); - if (sender == ui.birthday_zh_eng_btn) { - BirthdayCreater creater; - creater.setEnglishFont(font_english); - creater.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); - } - if (sender == ui.birthday_eng_eng_btn){ - BirthdayCreater b; - b.setEnglishFont(font_english); - b.generaImageFromCSV(Name_Type_e::Name_eng, fileName,fileContent,this->font, this->font_color); - } - if (sender == ui.handkerchief_btn) { - QFont newFont(font); - newFont.setPixelSize(78); - QColor newColor(0,0,0); - HKHolderCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, newFont, newColor); - } - if (sender == ui.fivesingle_zh_eng_btn) { - FiveToSingle f; - f.setEnglishFont(this->font_english); - f.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); - return; - } +#ifdef Q_OS_WASM + auto fileContentReady = [this, sender](const QString &fileName, const QByteArray &fileContent) { + if (!fileName.isEmpty()) { + this->execCreater(sender, fileName, fileContent); } + }; QFileDialog::getOpenFileContent("CSV (*.csv)", fileContentReady); + +#else + QString filename = QFileDialog::getOpenFileName(nullptr,"Open Name File", QDir::currentPath(),"CSV file(*.csv)"); + if(!filename.isEmpty()){ + QFile _f(filename); + if(_f.open(QIODevice::ReadOnly)){ + execCreater(sender, filename, _f.readAll()); + } + } +#endif +} + +void NameCreater::execCreater(QObject*sender, const QString&fileName, const QByteArray &fileContent){ + + // Use fileName and fileContent + if(sender == ui.fivesingle_btn) FiveToSingle().generaImageFromCSV(Name_Type_e::Name_zh,fileName, fileContent, this->font, this->font_color); + + if(sender == ui.birthday_btn) BirthdayCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); + if(sender == ui.fivenew_btn) NewFiveCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); + if(sender == ui.towel_btn) TowelCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font_towel, this->font_color); + if (sender == ui.birthday_zh_eng_btn) { + BirthdayCreater creater; + creater.setEnglishFont(font_english); + creater.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); + } + if (sender == ui.birthday_eng_eng_btn){ + BirthdayCreater b; + b.setEnglishFont(font_english); + b.generaImageFromCSV(Name_Type_e::Name_eng, fileName,fileContent,this->font, this->font_color); + } + if (sender == ui.handkerchief_btn) { + QFont newFont(font); + newFont.setPixelSize(78); + QColor newColor(0,0,0); + HKHolderCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, newFont, newColor); + } + if (sender == ui.fivesingle_zh_eng_btn) { + FiveToSingle f; + f.setEnglishFont(this->font_english); + f.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); + return; + } + } void NameCreater::OnClickedCustomLogoBtn() { diff --git a/NameCreater/NameCreater.h b/NameCreater/NameCreater.h index 5d43239..3b421e4 100644 --- a/NameCreater/NameCreater.h +++ b/NameCreater/NameCreater.h @@ -26,6 +26,7 @@ private: QNetworkAccessManager network_mgr; void loadFont(const QByteArray& fontdata); + void execCreater(QObject*sender, const QString&fileName, const QByteArray &fileContent); private Q_SLOTS: void OnClickedReadBtn(); diff --git a/NameCreater/NameCreater.pro b/NameCreater/NameCreater.pro index f179bc1..a685edd 100644 --- a/NameCreater/NameCreater.pro +++ b/NameCreater/NameCreater.pro @@ -21,6 +21,7 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin wasm-emscripten{ QMAKE_LFLAGS+= -s TOTAL_MEMORY=67108864 + QMAKE_LFLAGS += -s ALLOW_MEMORY_GROWTH=1 } -#QMAKE_LFLAGS += -s ALLOW_MEMORY_GROWTH=1 + diff --git a/NameCreater/NameCreater.pro.user b/NameCreater/NameCreater.pro.user index 9f8ec1c..a5b7718 100644 --- a/NameCreater/NameCreater.pro.user +++ b/NameCreater/NameCreater.pro.user @@ -1,14 +1,14 @@ - + EnvironmentId - {fcddcb90-0e4f-4f41-99d2-8ce9f168d92c} + {4a5c8cc9-7483-402d-a0a2-3701e5257fd0} ProjectExplorer.Project.ActiveTarget - 0 + 2 ProjectExplorer.Project.EditorSettings @@ -41,7 +41,7 @@ false true false - 2 + 0 true true 0 @@ -74,12 +74,17 @@ 0 true + + -fno-delayed-template-parsing + + true + Builtin.BuildSystem true true Builtin.DefaultTidyAndClazy 4 - true + false @@ -91,16 +96,16 @@ ProjectExplorer.Project.Target.0 Desktop - Desktop Qt 5.15.2 clang 64bit - Desktop Qt 5.15.2 clang 64bit - qt.qt5.5152.clang_64_kit + Desktop Qt 6.7.1 MSVC2019 64bit + Desktop Qt 6.7.1 MSVC2019 64bit + qt.qt6.671.win64_msvc2019_64_kit 0 0 0 0 - /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Debug - /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Debug + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_6_7_1_MSVC2019_64bit-Debug + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_6_7_1_MSVC2019_64bit-Debug true @@ -138,8 +143,8 @@ 2 - /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Release - /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Release + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_6_7_1_MSVC2019_64bit-Release + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_6_7_1_MSVC2019_64bit-Release true @@ -179,8 +184,8 @@ 0 - /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Profile - /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Profile + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_6_7_1_MSVC2019_64bit-Profile + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_6_7_1_MSVC2019_64bit-Profile true @@ -238,19 +243,18 @@ true 0 true + 2 false - -e cpu-cycles --call-graph dwarf,4096 -F 250 + -e cpu-cycles --call-graph "dwarf,4096" -F 250 - Qt4ProjectManager.Qt4RunConfiguration:/Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro - /Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro + ProjectExplorer.CustomExecutableRunConfiguration + false true - true true - /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Debug/NameCreater.app/Contents/MacOS 1 @@ -258,17 +262,17 @@ ProjectExplorer.Project.Target.1 - WebAssemblyDeviceType - Qt 5.15.2 WebAssembly - Qt 5.15.2 WebAssembly - qt.qt5.5152.wasm_32_kit + Desktop + Desktop Qt 5.15.2 MSVC2019 64bit + Desktop Qt 5.15.2 MSVC2019 64bit + qt.qt5.5152.win64_msvc2019_64_kit 0 - -1 + 0 0 0 - /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Debug - /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Debug + D:\_develop\_project\NameCreater\NameCreater\build\NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug + D:/_develop/_project/NameCreater/NameCreater/build/NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug true @@ -306,8 +310,8 @@ 2 - /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Release - /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Release + D:\_develop\_project\NameCreater\build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Release + D:/_develop/_project/NameCreater/build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Release true @@ -347,8 +351,176 @@ 0 - /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Profile - /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Profile + D:\_develop\_project\NameCreater\build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Profile + D:/_develop/_project/NameCreater/build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + true + + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + + Qt4ProjectManager.Qt4RunConfiguration:D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro + D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro + false + true + true + true + D:/_develop/_project/NameCreater/NameCreater/build/NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug + + 1 + + + + ProjectExplorer.Project.Target.2 + + WebAssemblyDeviceType + Qt 5.15.2 WebAssembly + Qt 5.15.2 WebAssembly + qt.qt5.5152.wasm_32_kit + 0 + -1 + 0 + + 0 + D:\_develop\_project\NameCreater\NameCreater\build\NameCreater-Qt_5_15_2_WebAssembly-Debug + D:/_develop/_project/NameCreater/NameCreater/build/NameCreater-Qt_5_15_2_WebAssembly-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + D:\_develop\_project\NameCreater\build-NameCreater-Qt_5_15_2_WebAssembly-Release + D:/_develop/_project/NameCreater/build-NameCreater-Qt_5_15_2_WebAssembly-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + D:\_develop\_project\NameCreater\build-NameCreater-Qt_5_15_2_WebAssembly-Profile + D:/_develop/_project/NameCreater/build-NameCreater-Qt_5_15_2_WebAssembly-Profile true @@ -392,13 +564,13 @@ true true - 0 true + - -e cpu-cycles --call-graph dwarf,4096 -F 250 + -e cpu-cycles --call-graph "dwarf,4096" -F 250 NameCreater - WebAssembly.RunConfiguration.Emrun/Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro - /Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro + WebAssembly.RunConfiguration.EmrunD:/_develop/_project/NameCreater/NameCreater/NameCreater.pro + D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro false true true @@ -407,9 +579,345 @@ 1 + + ProjectExplorer.Project.Target.3 + + Desktop + Desktop Qt 5.15.2 MinGW 64-bit + Desktop Qt 5.15.2 MinGW 64-bit + qt.qt5.5152.win64_mingw81_kit + 0 + 0 + 0 + + 0 + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_5_15_2_MinGW_64_bit-Debug + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_5_15_2_MinGW_64_bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_5_15_2_MinGW_64_bit-Release + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_5_15_2_MinGW_64_bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_5_15_2_MinGW_64_bit-Profile + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_5_15_2_MinGW_64_bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + 0 + true + + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + + Qt4ProjectManager.Qt4RunConfiguration:D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro + D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro + false + true + true + true + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_5_15_2_MinGW_64_bit-Debug + + 1 + + + + ProjectExplorer.Project.Target.4 + + Desktop + Desktop Qt 6.7.1 MinGW 64-bit + Desktop Qt 6.7.1 MinGW 64-bit + qt.qt6.671.win64_mingw_kit + 0 + 0 + 0 + + 0 + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_6_7_1_MinGW_64_bit-Debug + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_6_7_1_MinGW_64_bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_6_7_1_MinGW_64_bit-Release + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_6_7_1_MinGW_64_bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + D:\_develop\_project\NameCreater\NameCreater\build\Desktop_Qt_6_7_1_MinGW_64_bit-Profile + D:/_develop/_project/NameCreater/NameCreater/build/Desktop_Qt_6_7_1_MinGW_64_bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + 0 + true + + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + + ProjectExplorer.CustomExecutableRunConfiguration + + false + true + true + + 1 + + ProjectExplorer.Project.TargetCount - 2 + 5 ProjectExplorer.Project.Updater.FileVersion diff --git a/NameCreater/customlogo.cpp b/NameCreater/customlogo.cpp index 60efdb7..e1e0d6d 100644 --- a/NameCreater/customlogo.cpp +++ b/NameCreater/customlogo.cpp @@ -2,6 +2,7 @@ #include "ui_customlogo.h" #include "QFileDialog" + #include #include #include @@ -55,10 +56,7 @@ void CustomLogo::loadBGFromFile() }else{ qDebug()<<"Data content not image format"; } - } - - }; QFileDialog::getOpenFileContent("Image (*.jpg)", fileContentReady); @@ -124,7 +122,6 @@ void CustomLogo::gerneraImageFromList(const QList& nameList, Name_Ty QString name = name_info.name1; int name_len = name.length(); for (int j = 0; j < 1; j++) { // never reverse - int pos_idx = idx * 2 + j; qreal xscale, yscale; xscale = yscale = (j == 1) ? -1 : 1; @@ -154,7 +151,8 @@ void CustomLogo::gerneraImageFromList(const QList& nameList, Name_Ty if (is_export_page || n == nameList.count() - 1) { QString date_str = QDateTime::currentDateTime().toString("MMddhhmm"); QString file_name = QString("Signal_%2_%1.jpg").arg(QString::number(export_times + 1), date_str); - saveToImage(file_name, &scene); + //saveToImage(file_name, &scene); + INameCreater().saveToImage(file_name, &scene); export_times++; scene.clear(); @@ -230,35 +228,3 @@ void CustomLogo::onClickedBtn() { } - -void CustomLogo::saveToImage(const QString& filename, QGraphicsScene* scene) -{ - scene->clearSelection(); // Selections would also render to the file - scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents - QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene - image.fill(Qt::transparent); // Start all pixels transparent - int dpm = 300 / 0.0254; // ~300 DPI - image.setDotsPerMeterX(dpm); - image.setDotsPerMeterY(dpm); - - - QPainter painter(&image); - scene->render(&painter); - -#ifdef Q_OS_MAC - QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); -#else - QString folder_name = QCoreApplication::applicationDirPath() + "/export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); -#endif - - image.save(filename, "JPEG"); - - QByteArray imageData; - QBuffer buffer(&imageData); - buffer.open(QIODevice::WriteOnly); - QPixmap pixmap = QPixmap::fromImage(image); - pixmap.save(&buffer, "JPEG", 100); // You can also use other formats like "JPEG" or "BMP" - - QFileDialog::saveFileContent(imageData, filename); - -} diff --git a/NameCreater/customlogo.h b/NameCreater/customlogo.h index faddeb1..ccadc82 100644 --- a/NameCreater/customlogo.h +++ b/NameCreater/customlogo.h @@ -2,8 +2,8 @@ #define CUSTOMLOGO_H #include -#include "INameCreater.h" #include "QFont" +#include "INameCreater.h" namespace Ui { class CustomLogo; @@ -24,7 +24,6 @@ private: void loadBGFromFile(); void loadListFromFile(); void gerneraImageFromList(const QList& nameList, Name_Type_e type); - void saveToImage(const QString& filename, QGraphicsScene* scene); protected: QList getNameByFileContent(Name_Type_e type, const QByteArray& conetent); diff --git a/NameCreater/customlogo2.cpp b/NameCreater/customlogo2.cpp index 1d48796..886d1fd 100644 --- a/NameCreater/customlogo2.cpp +++ b/NameCreater/customlogo2.cpp @@ -25,7 +25,7 @@ static int BG_POS_COUNT = 12; customlogo2::customlogo2(QFont *font, QWidget *parent) - : QWidget(parent) + :QWidget(parent) , ui(new Ui::customlogo2) , zhFont(font) { @@ -73,6 +73,9 @@ void customlogo2::OnClickedBtn(){ void customlogo2::loadListFromFile() { + + +#ifdef Q_OS_WASM auto fileContentReady = [this](const QString& fileName, const QByteArray& fileContent) { if (fileName.isEmpty()) { // No file was selected @@ -80,8 +83,11 @@ void customlogo2::loadListFromFile() else { QList nameList = getNameByFileContent(Name_zh, fileContent); if (!nameList.isEmpty()) { - qDebug() << "List size: "<< QString::number(nameList.count()); - gerneraImageFromList(nameList, Name_zh); + QMetaObject::invokeMethod(this, [=]() { + qDebug() << "List size: "<< QString::number(nameList.count()); + gerneraImageFromList(nameList, Name_zh); + }, Qt::QueuedConnection); + } else { qDebug() << "List is empty!!"; @@ -91,7 +97,22 @@ void customlogo2::loadListFromFile() }; QFileDialog::getOpenFileContent("CSV file (*.csv)", fileContentReady); +#else + QString filename = QFileDialog::getOpenFileName(nullptr,"Open Name File", QDir::currentPath(),"CSV file(*.csv)"); + if(!filename.isEmpty()){ + QFile _f(filename); + if(_f.open(QIODevice::ReadOnly)){ + QList nameList = getNameByFileContent(Name_zh, _f.readAll()); + if (!nameList.isEmpty()) { + QMetaObject::invokeMethod(this, [=]() { + qDebug() << "List size: "<< QString::number(nameList.count()); + gerneraImageFromList(nameList, Name_zh); + }, Qt::QueuedConnection); + } + } + } +#endif } QList customlogo2::getNameByFileContent(Name_Type_e type, const QByteArray& conetent) @@ -170,7 +191,7 @@ void customlogo2::gerneraImageFromList(const QList& nameList, Name_T if (idx == 0) { - QGraphicsRectItem* bg_item = new QGraphicsRectItem(0, 0, BG_HEIGHT,BG_WIDTH); + QGraphicsRectItem* bg_item = new QGraphicsRectItem(0, 0, qreal(BG_HEIGHT),qreal(BG_WIDTH)); bg_item->setBrush(QBrush(QColor(255, 255, 255))); scene.addItem(bg_item); } @@ -215,9 +236,9 @@ void customlogo2::gerneraImageFromList(const QList& nameList, Name_T if (is_export_page || n == nameList.count() - 1) { QString date_str = QDateTime::currentDateTime().toString("MMddhhmm"); QString file_name = QString("Signal_%2_%1.jpg").arg(QString::number(export_times + 1), date_str); - saveToImage(file_name, &scene); + //saveToImage(file_name, &scene); + INameCreater().saveToImage(file_name,&scene); export_times++; - scene.clear(); } } @@ -234,38 +255,4 @@ void customlogo2::gerneraImageFromList(const QList& nameList, Name_T } -void customlogo2::saveToImage(const QString& filename, QGraphicsScene* scene) -{ - scene->clearSelection(); // Selections would also render to the file - scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents - QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene - image.fill(Qt::transparent); // Start all pixels transparent - int dpm = 300 / 0.0254; // ~300 DPI - image.setDotsPerMeterX(dpm); - image.setDotsPerMeterY(dpm); - - - QPainter painter(&image); - scene->render(&painter); - - - -#ifdef Q_OS_MAC - QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); - qDebug() << "app director path" <& nameList, Name_Type_e type); - void saveToImage(const QString& filename, QGraphicsScene* scene); + protected: QList getNameByFileContent(Name_Type_e type, const QByteArray& conetent); diff --git a/NameCreater/def.h b/NameCreater/def.h index bfa4290..4ba1a75 100644 --- a/NameCreater/def.h +++ b/NameCreater/def.h @@ -1,6 +1,6 @@ #ifndef DEF_H #define DEF_H -#define VERSION "v2.8.0" +#define VERSION "v2.8.1" #endif // DEF_H