This commit is contained in:
寂静的羽夏 2022-10-19 10:11:29 +08:00
parent 4c53895fdd
commit cc76d87a47
8 changed files with 81 additions and 38 deletions

Binary file not shown.

View File

@ -10,16 +10,21 @@
</message> </message>
<message> <message>
<location filename="../settingdialog.cpp" line="15"/> <location filename="../settingdialog.cpp" line="15"/>
<source>Enable</source>
<translation></translation>
</message>
<message>
<location filename="../settingdialog.cpp" line="22"/>
<source>EnableSel</source> <source>EnableSel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../settingdialog.cpp" line="20"/> <location filename="../settingdialog.cpp" line="28"/>
<source>EnableCp</source> <source>EnableCp</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../settingdialog.cpp" line="23"/> <location filename="../settingdialog.cpp" line="31"/>
<source>SetEffect</source> <source>SetEffect</source>
<translation></translation> <translation></translation>
</message> </message>
@ -33,45 +38,50 @@
</message> </message>
<message> <message>
<location filename="../youdaoservice.cpp" line="20"/> <location filename="../youdaoservice.cpp" line="20"/>
<location filename="../youdaoservice.cpp" line="43"/> <location filename="../youdaoservice.cpp" line="42"/>
<source>YoudaoTrans</source> <source>YoudaoTrans</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../youdaoservice.cpp" line="39"/> <location filename="../youdaoservice.cpp" line="38"/>
<source>Enable</source> <source>Enable</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../youdaoservice.cpp" line="39"/> <location filename="../youdaoservice.cpp" line="38"/>
<source>Disalbe</source> <source>Disalbe</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../youdaoservice.cpp" line="40"/> <location filename="../youdaoservice.cpp" line="39"/>
<source>Success</source> <source>Success</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../youdaoservice.h" line="26"/> <location filename="../youdaoservice.h" line="25"/>
<source>translate</source> <source>translate</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../youdaoservice.h" line="27"/> <location filename="../youdaoservice.h" line="26"/>
<source>toggle</source> <source>toggle</source>
<translation>/</translation> <translation>/</translation>
</message> </message>
<message>
<location filename="../youdaoservice.h" line="27"/>
<source>setEnabled</source>
<translation></translation>
</message>
</context> </context>
<context> <context>
<name>YoudaoTrans</name> <name>YoudaoTrans</name>
<message> <message>
<location filename="../youdaotrans.cpp" line="50"/> <location filename="../youdaotrans.cpp" line="55"/>
<source>YoudaoTrans</source> <source>YoudaoTrans</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../youdaotrans.cpp" line="61"/> <location filename="../youdaotrans.cpp" line="66"/>
<source>A useful En2Zh translate plugin for WingTool</source> <source>A useful En2Zh translate plugin for WingTool</source>
<translation>便</translation> <translation>便</translation>
</message> </message>

View File

@ -2,19 +2,27 @@
#include <DLabel> #include <DLabel>
#include <QFormLayout> #include <QFormLayout>
SettingDialog::SettingDialog(bool sel, bool cp, DDialog *parent) SettingDialog::SettingDialog(bool en, bool sel, bool cp, DDialog *parent)
: DDialog(parent) { : DDialog(parent) {
setWindowTitle(tr("Setting")); setWindowTitle(tr("Setting"));
auto w = new QWidget(this); auto w = new QWidget(this);
auto flayout = new QFormLayout(w); auto flayout = new QFormLayout(w);
addContent(w, Qt::AlignCenter); 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 = new DSwitchButton(this);
swsel->setChecked(sel); swsel->setChecked(sel);
swsel->setEnabled(en);
connect(swsel, &DSwitchButton::checkedChanged, this, connect(swsel, &DSwitchButton::checkedChanged, this,
[=](bool v) { emit this->sigSelEnabled(v); }); [=](bool v) { emit this->sigSelEnabled(v); });
flayout->addRow(tr("EnableSel"), swsel); flayout->addRow(tr("EnableSel"), swsel);
swcp = new DSwitchButton(this); swcp = new DSwitchButton(this);
swcp->setChecked(cp); swcp->setChecked(cp);
swcp->setEnabled(en);
connect(swcp, &DSwitchButton::checkedChanged, this, connect(swcp, &DSwitchButton::checkedChanged, this,
[=](bool v) { emit this->sigCpEnabled(v); }); [=](bool v) { emit this->sigCpEnabled(v); });
flayout->addRow(tr("EnableCp"), swcp); flayout->addRow(tr("EnableCp"), swcp);
@ -26,4 +34,9 @@ SettingDialog::SettingDialog(bool sel, bool cp, DDialog *parent)
void SettingDialog::setYoudaoEnabled(bool v) { void SettingDialog::setYoudaoEnabled(bool v) {
swsel->setEnabled(v); swsel->setEnabled(v);
swcp->setEnabled(v); swcp->setEnabled(v);
emit sigEnabled(v);
} }
void SettingDialog::setSelEnabled(bool v) { swsel->setChecked(v); }
void SettingDialog::setCpEnabled(bool v) { swcp->setChecked(v); }

View File

@ -9,16 +9,19 @@ DWIDGET_USE_NAMESPACE
class SettingDialog : public DDialog { class SettingDialog : public DDialog {
Q_OBJECT Q_OBJECT
public: public:
SettingDialog(bool sel, bool cp, DDialog *parent = nullptr); SettingDialog(bool en, bool sel, bool cp, DDialog *parent = nullptr);
void setYoudaoEnabled(bool v); void setYoudaoEnabled(bool v);
void setSelEnabled(bool v);
void setCpEnabled(bool v);
signals: signals:
void sigSelEnabled(bool v); void sigSelEnabled(bool v);
void sigCpEnabled(bool v); void sigCpEnabled(bool v);
void sigEnabled(bool v);
private: private:
DSwitchButton *swcp, *swsel; DSwitchButton *swcp, *swsel, *swen;
}; };
#endif // SETTINGDIALOG_H #endif // SETTINGDIALOG_H

View File

@ -23,10 +23,10 @@ YoudaoService::YoudaoService(QObject *parent) : QObject(parent) {
reply->close(); reply->close();
}); });
sm = new SettingDialog(m_sel, m_cp); sm = new SettingDialog(m_enabled, m_sel, m_cp);
sm->setYoudaoEnabled(m_enabled);
connect(sm, &SettingDialog::sigCpEnabled, this, [=](bool v) { m_cp = v; }); connect(sm, &SettingDialog::sigCpEnabled, this, [=](bool v) { m_cp = v; });
connect(sm, &SettingDialog::sigSelEnabled, this, [=](bool v) { m_sel = 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(); } YoudaoService::~YoudaoService() { dialog->deleteLater(); }
@ -34,7 +34,6 @@ YoudaoService::~YoudaoService() { dialog->deleteLater(); }
bool YoudaoService::enabled() const { return m_enabled; } bool YoudaoService::enabled() const { return m_enabled; }
void YoudaoService::setEnabled(bool enabled) { void YoudaoService::setEnabled(bool enabled) {
m_enabled = enabled;
sm->setYoudaoEnabled(enabled); sm->setYoudaoEnabled(enabled);
DUtil::DNotifySender sender((enabled ? tr("Enable") : tr("Disalbe")) + DUtil::DNotifySender sender((enabled ? tr("Enable") : tr("Disalbe")) +
tr("Success")); tr("Success"));
@ -168,17 +167,17 @@ void YoudaoService::showSettings() { sm->exec(); }
bool YoudaoService::sel() const { return m_sel; } bool YoudaoService::sel() const { return m_sel; }
void YoudaoService::loadSettings() { void YoudaoService::loadSettings() {
QSettings settings(QApplication::organizationName(), "YoudaoTrans"); QSettings settings("WingCloud", "YoudaoTrans");
m_cp = settings.value("enablecp", true).toBool(); m_cp = settings.value("enablecp", true).toBool();
m_sel = settings.value("enablesel", true).toBool(); m_sel = settings.value("enablesel", true).toBool();
m_enabled = settings.value("enabled", true).toBool(); m_enabled = settings.value("enabled", true).toBool();
} }
void YoudaoService::saveSettings() { void YoudaoService::saveSettings() {
QSettings settings(QApplication::organizationName(), "YoudaoTrans"); QSettings settings("WingCloud", "YoudaoTrans");
settings.setValue("enablecp", m_cp); settings.setValue("enablecp", m_cp);
settings.setValue("enablesel", m_sel); settings.setValue("enablesel", m_sel);
settings.setValue("enabled", m_sel); settings.setValue("enabled", m_enabled);
} }
bool YoudaoService::cp() const { return m_cp; } bool YoudaoService::cp() const { return m_cp; }

View File

@ -16,7 +16,6 @@ public:
virtual ~YoudaoService(); virtual ~YoudaoService();
bool enabled() const; bool enabled() const;
void setEnabled(bool enabled);
bool cp() const; bool cp() const;
bool sel() const; bool sel() const;
@ -25,11 +24,14 @@ public:
void translation() { void translation() {
tr("translate"); tr("translate");
tr("toggle"); tr("toggle");
tr("setEnabled");
} }
public slots: public slots:
// 如下含有 UI 交互
PLUGINSRV void translate(QString word); PLUGINSRV void translate(QString word);
PLUGINSRV void toggle(); PLUGINSRV void toggle();
PLUGINSRV void setEnabled(bool enabled);
void parse(QByteArray &content); void parse(QByteArray &content);
QString parseCustomTrans(QDomElement &ele); QString parseCustomTrans(QDomElement &ele);

View File

@ -4,19 +4,7 @@
#include <QMessageBox> #include <QMessageBox>
#include <QSettings> #include <QSettings>
YoudaoTrans::YoudaoTrans(QObject *parent) { YoudaoTrans::YoudaoTrans(QObject *parent) { Q_UNUSED(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);
}
int YoudaoTrans::sdkVersion() { return SDKVERSION; } int YoudaoTrans::sdkVersion() { return SDKVERSION; }
@ -34,9 +22,7 @@ bool YoudaoTrans::init(QList<WingPluginInfo> loadedplugin) {
auto clipboard = qApp->clipboard(); auto clipboard = qApp->clipboard();
connect(clipboard, &QClipboard::selectionChanged, this, [=] { connect(clipboard, &QClipboard::selectionChanged, this, [=] {
if (trans->sel()) { if (trans->sel()) {
auto word = clipboard->text(QClipboard::Selection); lastword = clipboard->text(QClipboard::Selection);
if (trans->isVaildWord(word))
trans->translate(word);
} }
}); });
connect(clipboard, &QClipboard::dataChanged, this, [=] { connect(clipboard, &QClipboard::dataChanged, this, [=] {
@ -66,6 +52,10 @@ QString YoudaoTrans::pluginComment() {
return tr("A useful En2Zh translate plugin for WingTool"); 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"); } QIcon YoudaoTrans::pluginIcon() { return QIcon(":/youdaotr/icon.png"); }
const QMetaObject *YoudaoTrans::serviceMeta() { return trans->metaObject(); } const QMetaObject *YoudaoTrans::serviceMeta() { return trans->metaObject(); }
@ -74,13 +64,32 @@ const QPointer<QObject> YoudaoTrans::serviceHandler() {
return QPointer<QObject>(trans); return QPointer<QObject>(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<QVariant> params) { QVariant YoudaoTrans::pluginServicePipe(int serviceID, QList<QVariant> params) {
Q_UNUSED(serviceID); Q_UNUSED(serviceID);
Q_UNUSED(params); Q_UNUSED(params);
return QVariant(); 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 #if QT_VERSION < 0x050000
Q_EXPORT_PLUGIN2(YoudaoTrans, GenericPlugin) Q_EXPORT_PLUGIN2(YoudaoTrans, GenericPlugin)

View File

@ -29,17 +29,24 @@ public:
Catagorys pluginCatagory() override; Catagorys pluginCatagory() override;
uint pluginVersion() override; uint pluginVersion() override;
QString pluginComment() override; QString pluginComment() override;
QString pluginWebsite() override;
QIcon pluginIcon() override; QIcon pluginIcon() override;
const QMetaObject *serviceMeta() override; const QMetaObject *serviceMeta() override;
const QPointer<QObject> serviceHandler() override; const QPointer<QObject> serviceHandler() override;
HookIndex getHookSubscribe() override;
bool preInit() override;
QString translatorFile() override;
public slots: public slots:
QVariant pluginServicePipe(int serviceID, QList<QVariant> params) override; QVariant pluginServicePipe(int serviceID, QList<QVariant> params) override;
virtual void onSetting() override; void onPluginCenter() override;
void buttonRelease(Qt::MouseButton btn, int x, int y) override;
private: private:
QTranslator translator; QTranslator translator;
YoudaoService *trans; YoudaoService *trans;
QString lastword;
bool localiztion = true; bool localiztion = true;
}; };