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

View File

@ -2,19 +2,27 @@
#include <DLabel>
#include <QFormLayout>
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); }

View File

@ -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

View File

@ -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; }

View File

@ -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);

View File

@ -4,19 +4,7 @@
#include <QMessageBox>
#include <QSettings>
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<WingPluginInfo> 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<QObject> YoudaoTrans::serviceHandler() {
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) {
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)

View File

@ -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<QObject> serviceHandler() override;
HookIndex getHookSubscribe() override;
bool preInit() override;
QString translatorFile() override;
public slots:
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:
QTranslator translator;
YoudaoService *trans;
QString lastword;
bool localiztion = true;
};