Added ability to retranslate item from ResultDialog.
This commit is contained in:
parent
f33c0431b9
commit
3e499b86c5
@ -87,6 +87,8 @@ void GoogleWebTranslator::load (const ProcessingItem &item) {
|
||||
emit error (tr ("Неверные парметры для перевода."));
|
||||
return;
|
||||
}
|
||||
QUrl url (QString ("https://translate.google.com/#auto/%1/%2").arg (translationLanguage_, item.recognized));
|
||||
QString translateLanguage = (item.translateLanguage.isEmpty ())
|
||||
? translationLanguage_ : item.translateLanguage;
|
||||
QUrl url (QString ("https://translate.google.com/#auto/%1/%2").arg (translateLanguage, item.recognized));
|
||||
view_->setUrl (url);
|
||||
}
|
||||
|
@ -71,6 +71,8 @@ Manager::Manager (QObject *parent) :
|
||||
connect (this, SIGNAL (settingsEdited ()), resultDialog_, SLOT (applySettings ()));
|
||||
connect (resultDialog_, SIGNAL (requestRecognize (ProcessingItem)),
|
||||
this, SIGNAL (requestRecognize (ProcessingItem)));
|
||||
connect (resultDialog_, SIGNAL (requestTranslate (ProcessingItem)),
|
||||
this, SIGNAL (requestTranslate (ProcessingItem)));
|
||||
connect (resultDialog_, SIGNAL (requestClipboard ()), SLOT (copyLastToClipboard ()));
|
||||
|
||||
|
||||
|
@ -11,6 +11,7 @@ struct ProcessingItem {
|
||||
|
||||
QString ocrLanguage;
|
||||
QString sourceLanguage;
|
||||
QString translateLanguage;
|
||||
|
||||
Qt::KeyboardModifiers modifiers;
|
||||
|
||||
|
@ -11,7 +11,8 @@ ResultDialog::ResultDialog (const LanguageHelper &dictionary, QWidget *parent) :
|
||||
QDialog (parent),
|
||||
ui (new Ui::ResultDialog),
|
||||
dictionary_ (dictionary), isShowAtCapturePos_ (true),
|
||||
contextMenu_ (NULL), recognizeSubMenu_ (NULL), clipboardAction_ (NULL) {
|
||||
contextMenu_ (NULL), recognizeSubMenu_ (NULL), translateSubMenu_ (NULL),
|
||||
clipboardAction_ (NULL) {
|
||||
ui->setupUi (this);
|
||||
setWindowFlags (Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint |
|
||||
Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
||||
@ -32,11 +33,13 @@ const ProcessingItem &ResultDialog::item () const {
|
||||
|
||||
void ResultDialog::applySettings () {
|
||||
dictionary_.updateMenu (recognizeSubMenu_, dictionary_.availableOcrLanguagesUi ());
|
||||
dictionary_.updateMenu (translateSubMenu_, dictionary_.translateLanguagesUi ());
|
||||
}
|
||||
|
||||
void ResultDialog::createContextMenu () {
|
||||
contextMenu_ = new QMenu ();
|
||||
recognizeSubMenu_ = contextMenu_->addMenu (tr ("Распознать другой язык"));
|
||||
translateSubMenu_ = contextMenu_->addMenu (tr ("Перевести на другой язык"));
|
||||
clipboardAction_ = contextMenu_->addAction (tr ("Скопировать в буфер"));
|
||||
}
|
||||
|
||||
@ -52,6 +55,12 @@ bool ResultDialog::eventFilter (QObject *object, QEvent *event) {
|
||||
item.ocrLanguage = dictionary_.ocrUiToCode (action->text ());
|
||||
emit requestRecognize (item);
|
||||
}
|
||||
else if (translateSubMenu_->findChildren<QAction *> ().contains (action)) {
|
||||
ProcessingItem item = item_;
|
||||
item.translated.clear ();
|
||||
item.translateLanguage = dictionary_.translateUiToCode (action->text ());
|
||||
emit requestTranslate (item);
|
||||
}
|
||||
else if (action == clipboardAction_) {
|
||||
emit requestClipboard ();
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ class ResultDialog : public QDialog {
|
||||
|
||||
signals:
|
||||
void requestRecognize (ProcessingItem item);
|
||||
void requestTranslate (ProcessingItem item);
|
||||
void requestClipboard (); // Assume that slot will be called immediately.
|
||||
|
||||
public:
|
||||
@ -39,6 +40,7 @@ class ResultDialog : public QDialog {
|
||||
bool isShowAtCapturePos_;
|
||||
QMenu *contextMenu_;
|
||||
QMenu *recognizeSubMenu_;
|
||||
QMenu *translateSubMenu_;
|
||||
QAction *clipboardAction_;
|
||||
ProcessingItem item_;
|
||||
};
|
||||
|
@ -55,7 +55,9 @@ void Translator::translate (ProcessingItem item) {
|
||||
emit error (tr ("Неверные парметры для перевода."));
|
||||
return;
|
||||
}
|
||||
QUrl url (translateBaseUrl.arg (item.recognized, sourceLanguage, translationLanguage_));
|
||||
QString translateLanguage = (item.translateLanguage.isEmpty ())
|
||||
? translationLanguage_ : item.translateLanguage;
|
||||
QUrl url (translateBaseUrl.arg (item.recognized, sourceLanguage, translateLanguage));
|
||||
QNetworkReply *reply = network_.get (QNetworkRequest (url));
|
||||
items_.insert (reply, item);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user