From cc76d87a47751aa020c5e91455d4ca3c28d87bc9 Mon Sep 17 00:00:00 2001 From: wingsummer <1326224942@qq.com> Date: Wed, 19 Oct 2022 10:11:29 +0800 Subject: [PATCH] update --- lang/zh.qm | Bin 910 -> 1026 bytes lang/zh.ts | 30 ++++++++++++++++++++---------- settingdialog.cpp | 15 ++++++++++++++- settingdialog.h | 7 +++++-- youdaoservice.cpp | 11 +++++------ youdaoservice.h | 4 +++- youdaotrans.cpp | 43 ++++++++++++++++++++++++++----------------- youdaotrans.h | 9 ++++++++- 8 files changed, 81 insertions(+), 38 deletions(-) diff --git a/lang/zh.qm b/lang/zh.qm index be3093f9f42a83e91f96087b9d3acf5e4b3ef9c3..76d57b6c79ba9b77b7d8e8bfa76f626ca3fbc647 100644 GIT binary patch delta 188 zcmeBUZ{nCBS6{(WshhySz@Wo&q*4_~GeBrYEA~lG{{Xp3>|5^v#hKzbwBLSaU|{?R zp_z?2qJlx + Enable + 启用 + + + EnableSel 启用划词翻译 - + EnableCp 启用复制监控 - + SetEffect 这些设置被更改后将立即生效! @@ -33,45 +38,50 @@ - + YoudaoTrans 有道翻译 - + Enable 启用 - + Disalbe 禁用 - + Success 有道翻译成功 - + translate 翻译 - + toggle 开/关 + + + setEnabled + 设置开启状态 + YoudaoTrans - + YoudaoTrans 有道翻译 - + A useful En2Zh translate plugin for WingTool 一个用于羽云工具箱的方便易用的英到汉翻译插件 diff --git a/settingdialog.cpp b/settingdialog.cpp index f74b726..86eed98 100644 --- a/settingdialog.cpp +++ b/settingdialog.cpp @@ -2,19 +2,27 @@ #include #include -SettingDialog::SettingDialog(bool sel, bool cp, DDialog *parent) +SettingDialog::SettingDialog(bool en, bool sel, bool cp, DDialog *parent) : DDialog(parent) { setWindowTitle(tr("Setting")); auto w = new QWidget(this); auto flayout = new QFormLayout(w); addContent(w, Qt::AlignCenter); + swen = new DSwitchButton(this); + swen->setChecked(en); + connect(swen, &DSwitchButton::checkedChanged, this, + [=](bool b) { this->setYoudaoEnabled(b); }); + flayout->addRow(tr("Enable"), swen); + swsel = new DSwitchButton(this); swsel->setChecked(sel); + swsel->setEnabled(en); connect(swsel, &DSwitchButton::checkedChanged, this, [=](bool v) { emit this->sigSelEnabled(v); }); flayout->addRow(tr("EnableSel"), swsel); swcp = new DSwitchButton(this); swcp->setChecked(cp); + swcp->setEnabled(en); connect(swcp, &DSwitchButton::checkedChanged, this, [=](bool v) { emit this->sigCpEnabled(v); }); flayout->addRow(tr("EnableCp"), swcp); @@ -26,4 +34,9 @@ SettingDialog::SettingDialog(bool sel, bool cp, DDialog *parent) void SettingDialog::setYoudaoEnabled(bool v) { swsel->setEnabled(v); swcp->setEnabled(v); + emit sigEnabled(v); } + +void SettingDialog::setSelEnabled(bool v) { swsel->setChecked(v); } + +void SettingDialog::setCpEnabled(bool v) { swcp->setChecked(v); } diff --git a/settingdialog.h b/settingdialog.h index 806f5ff..26dbe37 100644 --- a/settingdialog.h +++ b/settingdialog.h @@ -9,16 +9,19 @@ DWIDGET_USE_NAMESPACE class SettingDialog : public DDialog { Q_OBJECT public: - SettingDialog(bool sel, bool cp, DDialog *parent = nullptr); + SettingDialog(bool en, bool sel, bool cp, DDialog *parent = nullptr); void setYoudaoEnabled(bool v); + void setSelEnabled(bool v); + void setCpEnabled(bool v); signals: void sigSelEnabled(bool v); void sigCpEnabled(bool v); + void sigEnabled(bool v); private: - DSwitchButton *swcp, *swsel; + DSwitchButton *swcp, *swsel, *swen; }; #endif // SETTINGDIALOG_H diff --git a/youdaoservice.cpp b/youdaoservice.cpp index 4000315..61063e5 100644 --- a/youdaoservice.cpp +++ b/youdaoservice.cpp @@ -23,10 +23,10 @@ YoudaoService::YoudaoService(QObject *parent) : QObject(parent) { reply->close(); }); - sm = new SettingDialog(m_sel, m_cp); - sm->setYoudaoEnabled(m_enabled); + sm = new SettingDialog(m_enabled, m_sel, m_cp); connect(sm, &SettingDialog::sigCpEnabled, this, [=](bool v) { m_cp = v; }); connect(sm, &SettingDialog::sigSelEnabled, this, [=](bool v) { m_sel = v; }); + connect(sm, &SettingDialog::sigEnabled, this, [=](bool v) { m_enabled = v; }); } YoudaoService::~YoudaoService() { dialog->deleteLater(); } @@ -34,7 +34,6 @@ YoudaoService::~YoudaoService() { dialog->deleteLater(); } bool YoudaoService::enabled() const { return m_enabled; } void YoudaoService::setEnabled(bool enabled) { - m_enabled = enabled; sm->setYoudaoEnabled(enabled); DUtil::DNotifySender sender((enabled ? tr("Enable") : tr("Disalbe")) + tr("Success")); @@ -168,17 +167,17 @@ void YoudaoService::showSettings() { sm->exec(); } bool YoudaoService::sel() const { return m_sel; } void YoudaoService::loadSettings() { - QSettings settings(QApplication::organizationName(), "YoudaoTrans"); + QSettings settings("WingCloud", "YoudaoTrans"); m_cp = settings.value("enablecp", true).toBool(); m_sel = settings.value("enablesel", true).toBool(); m_enabled = settings.value("enabled", true).toBool(); } void YoudaoService::saveSettings() { - QSettings settings(QApplication::organizationName(), "YoudaoTrans"); + QSettings settings("WingCloud", "YoudaoTrans"); settings.setValue("enablecp", m_cp); settings.setValue("enablesel", m_sel); - settings.setValue("enabled", m_sel); + settings.setValue("enabled", m_enabled); } bool YoudaoService::cp() const { return m_cp; } diff --git a/youdaoservice.h b/youdaoservice.h index bbdf7b4..fa796a3 100644 --- a/youdaoservice.h +++ b/youdaoservice.h @@ -16,7 +16,6 @@ public: virtual ~YoudaoService(); bool enabled() const; - void setEnabled(bool enabled); bool cp() const; bool sel() const; @@ -25,11 +24,14 @@ public: void translation() { tr("translate"); tr("toggle"); + tr("setEnabled"); } public slots: + // 如下含有 UI 交互 PLUGINSRV void translate(QString word); PLUGINSRV void toggle(); + PLUGINSRV void setEnabled(bool enabled); void parse(QByteArray &content); QString parseCustomTrans(QDomElement &ele); diff --git a/youdaotrans.cpp b/youdaotrans.cpp index 5fd530c..53ccfa8 100644 --- a/youdaotrans.cpp +++ b/youdaotrans.cpp @@ -4,19 +4,7 @@ #include #include -YoudaoTrans::YoudaoTrans(QObject *parent) { - Q_UNUSED(parent); - - auto s = GETPLUGINQM("YoudaoTrans.qm"); - if (!translator.load(s) || !QApplication::installTranslator(&translator)) { - QMessageBox::critical(nullptr, "Error", "Error Loading File!", - QMessageBox::Ok); - localiztion = false; // 构造函数不具有返回值,只能先存着标识 - return; - } - - trans = new YoudaoService(this); -} +YoudaoTrans::YoudaoTrans(QObject *parent) { Q_UNUSED(parent); } int YoudaoTrans::sdkVersion() { return SDKVERSION; } @@ -34,9 +22,7 @@ bool YoudaoTrans::init(QList loadedplugin) { auto clipboard = qApp->clipboard(); connect(clipboard, &QClipboard::selectionChanged, this, [=] { if (trans->sel()) { - auto word = clipboard->text(QClipboard::Selection); - if (trans->isVaildWord(word)) - trans->translate(word); + lastword = clipboard->text(QClipboard::Selection); } }); connect(clipboard, &QClipboard::dataChanged, this, [=] { @@ -66,6 +52,10 @@ QString YoudaoTrans::pluginComment() { return tr("A useful En2Zh translate plugin for WingTool"); } +QString YoudaoTrans::pluginWebsite() { + return "https://code.gitlink.org.cn/wingsummer/YoudaoTrans"; +} + QIcon YoudaoTrans::pluginIcon() { return QIcon(":/youdaotr/icon.png"); } const QMetaObject *YoudaoTrans::serviceMeta() { return trans->metaObject(); } @@ -74,13 +64,32 @@ const QPointer YoudaoTrans::serviceHandler() { return QPointer(trans); } +HookIndex YoudaoTrans::getHookSubscribe() { return HookIndex::ButtonRelease; } + +bool YoudaoTrans::preInit() { + trans = new YoudaoService(this); + return true; +} + +QString YoudaoTrans::translatorFile() { return "YoudaoTrans.qm"; } + QVariant YoudaoTrans::pluginServicePipe(int serviceID, QList params) { Q_UNUSED(serviceID); Q_UNUSED(params); return QVariant(); } -void YoudaoTrans::onSetting() { trans->showSettings(); } +void YoudaoTrans::onPluginCenter() { trans->showSettings(); } + +void YoudaoTrans::buttonRelease(Qt::MouseButton btn, int x, int y) { + Q_UNUSED(x); + Q_UNUSED(y); + if (trans->enabled() && trans->sel() && btn == Qt::MouseButton::LeftButton) { + if (trans->isVaildWord(lastword)) + trans->translate(lastword); + } + lastword.clear(); +} #if QT_VERSION < 0x050000 Q_EXPORT_PLUGIN2(YoudaoTrans, GenericPlugin) diff --git a/youdaotrans.h b/youdaotrans.h index 8666fd1..b75a6a1 100644 --- a/youdaotrans.h +++ b/youdaotrans.h @@ -29,17 +29,24 @@ public: Catagorys pluginCatagory() override; uint pluginVersion() override; QString pluginComment() override; + QString pluginWebsite() override; QIcon pluginIcon() override; const QMetaObject *serviceMeta() override; const QPointer serviceHandler() override; + HookIndex getHookSubscribe() override; + + bool preInit() override; + QString translatorFile() override; public slots: QVariant pluginServicePipe(int serviceID, QList params) override; - virtual void onSetting() override; + void onPluginCenter() override; + void buttonRelease(Qt::MouseButton btn, int x, int y) override; private: QTranslator translator; YoudaoService *trans; + QString lastword; bool localiztion = true; };