Skip to content

Commit e8c0b5b

Browse files
fix: Hide language selector when using OCR V5 plugin
- Added isV5() method to OCREngine to check if V5 plugin is loaded - Set m_isV5 flag when OCR V5 plugin loads successfully - Hide language selection UI when V5 plugin is active, use default language instead - Fixed code style: adjusted if-else formatting for consistency - Added bounds checking for language index map lookup Log: Hide language selector for OCR V5 plugin bug: https://pms.uniontech.com/bug-view-342351.html
1 parent 77ce4ef commit e8c0b5b

3 files changed

Lines changed: 57 additions & 42 deletions

File tree

src/engine/OCREngine.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ OCREngine::OCREngine()
3535

3636
auto plugins = ocrDriver->installedPluginNames();
3737
if (plugins.contains(ocrV5, Qt::CaseInsensitive)) {
38-
if(ocrDriver->loadPlugin(ocrV5)) {
38+
if (ocrDriver->loadPlugin(ocrV5)) {
3939
load = true;
40+
m_isV5 = true;
4041
qCInfo(dmOcr) << "OCR V5 plugin loaded";
41-
}
42-
else {
42+
} else {
4343
qCWarning(dmOcr) << "Failed to load OCR V5 plugin";
4444
}
4545
}

src/engine/OCREngine.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ class OCREngine
2626
return m_isRunning;
2727
}
2828

29+
bool isV5() const
30+
{
31+
return m_isV5;
32+
}
33+
2934
bool setLanguage(const QString &language);
3035
void setImage(const QImage &image);
3136
QString getRecogitionResult();
@@ -43,4 +48,5 @@ class OCREngine
4348
Dtk::Ocr::DOcr *ocrDriver;
4449
std::atomic_bool m_isRunning;
4550
QSettings *ocrSetting;
51+
bool m_isV5 {false};
4652
};

src/mainwidget.cpp

Lines changed: 48 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -172,47 +172,56 @@ void MainWidget::setupUi(QWidget *Widget)
172172
//配置文件读写
173173
ocrSetting = new QSettings(Dtk::Core::DStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.conf", QSettings::IniFormat);
174174

175-
//语种读写设置
176-
//目前仅支持默认插件,默认插件支持的语种字符串:zh-Hans_en,zh-Hant_en,en
177-
auto currentLanguage = ocrSetting->value("language", "zh-Hans_en").toString();
178-
OCREngine::instance()->setLanguage(currentLanguage);
179-
180-
//设置语种选择框
181-
auto recLabel = new DLabel(tr("Recognize language"));
182-
languageSelectBox = new DComboBox(this);
183-
languageSelectBox->setFixedSize(160, 36);
184-
languageSelectBox->addItems({tr("Simplified Chinese"), tr("English"), tr("Traditional Chinese")});
185-
static std::map<QString, int> languageIndexMap{ {"zh-Hans_en", 0},
186-
{"en", 1},
187-
{"zh-Hant_en", 2}
188-
};
189-
languageSelectBox->setCurrentIndex(languageIndexMap[currentLanguage]);
190-
connect(languageSelectBox, static_cast<void(DComboBox::*)(int)>(&DComboBox::currentIndexChanged), [this](int index) {
191-
QString resultLanguage;
192-
switch(index) {
193-
default:
194-
resultLanguage = "zh-Hans_en";
195-
break;
196-
case 0:
197-
resultLanguage = "zh-Hans_en";
198-
break;
199-
case 1:
200-
resultLanguage = "en";
201-
break;
202-
case 2:
203-
resultLanguage = "zh-Hant_en";
204-
break;
205-
};
206-
if(!OCREngine::instance()->setLanguage(resultLanguage)) {
207-
return;
175+
// 使用 V5 插件时,不显示语言选择控件,只设置一次默认语言
176+
if (OCREngine::instance()->isV5()) {
177+
OCREngine::instance()->setLanguage("zh-Hans_en");
178+
} else {
179+
//语种读写设置
180+
//目前仅支持默认插件,默认插件支持的语种字符串:zh-Hans_en,zh-Hant_en,en
181+
auto currentLanguage = ocrSetting->value("language", "zh-Hans_en").toString();
182+
OCREngine::instance()->setLanguage(currentLanguage);
183+
184+
//设置语种选择框
185+
auto recLabel = new DLabel(tr("Recognize language"));
186+
languageSelectBox = new DComboBox(this);
187+
languageSelectBox->setFixedSize(160, 36);
188+
languageSelectBox->addItems({tr("Simplified Chinese"), tr("English"), tr("Traditional Chinese")});
189+
static std::map<QString, int> languageIndexMap{ {"zh-Hans_en", 0},
190+
{"en", 1},
191+
{"zh-Hant_en", 2}
192+
};
193+
if (languageIndexMap.find(currentLanguage) != languageIndexMap.end()) {
194+
languageSelectBox->setCurrentIndex(languageIndexMap[currentLanguage]);
195+
} else {
196+
languageSelectBox->setCurrentIndex(0);
208197
}
209-
ocrSetting->setValue("language", resultLanguage);
210-
runRec(false);
211-
m_noResult->setVisible(false);
212-
});
198+
connect(languageSelectBox, static_cast<void(DComboBox::*)(int)>(&DComboBox::currentIndexChanged), [this](int index) {
199+
QString resultLanguage;
200+
switch(index) {
201+
default:
202+
resultLanguage = "zh-Hans_en";
203+
break;
204+
case 0:
205+
resultLanguage = "zh-Hans_en";
206+
break;
207+
case 1:
208+
resultLanguage = "en";
209+
break;
210+
case 2:
211+
resultLanguage = "zh-Hant_en";
212+
break;
213+
};
214+
if(!OCREngine::instance()->setLanguage(resultLanguage)) {
215+
return;
216+
}
217+
ocrSetting->setValue("language", resultLanguage);
218+
runRec(false);
219+
m_noResult->setVisible(false);
220+
});
213221

214-
m_buttonHorizontalLayout->addWidget(recLabel, 0, Qt::AlignRight);
215-
m_buttonHorizontalLayout->addWidget(languageSelectBox, 0, Qt::AlignRight);
222+
m_buttonHorizontalLayout->addWidget(recLabel, 0, Qt::AlignRight);
223+
m_buttonHorizontalLayout->addWidget(languageSelectBox, 0, Qt::AlignRight);
224+
}
216225

217226
m_copyBtn = new DIconButton(Widget);
218227
m_copyBtn->setObjectName(QStringLiteral("Copy text"));

0 commit comments

Comments
 (0)