From 283b596ef1a49de46d965ea1e49a34287ba8bd92 Mon Sep 17 00:00:00 2001 From: Gres Date: Wed, 30 Sep 2015 20:49:05 +0300 Subject: [PATCH] Last showing item now stores only in ResultDialog. --- Manager.cpp | 20 +++++++++++--------- Manager.h | 1 - ResultDialog.cpp | 8 ++++++-- ResultDialog.h | 3 ++- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Manager.cpp b/Manager.cpp index 9c0ffb5..1c5afdc 100644 --- a/Manager.cpp +++ b/Manager.cpp @@ -111,8 +111,9 @@ void Manager::updateActionsState (bool isEnabled) { #endif captureAction_->setEnabled (isEnabled); repeatCaptureAction_->setEnabled (isEnabled && !selections_.isEmpty ()); - repeatAction_->setEnabled (isEnabled && lastItem_.isValid ()); - clipboardAction_->setEnabled (isEnabled && lastItem_.isValid ()); + const ProcessingItem &lastItem = resultDialog_->item (); + repeatAction_->setEnabled (isEnabled && lastItem.isValid ()); + clipboardAction_->setEnabled (isEnabled && lastItem.isValid ()); #ifdef Q_OS_LINUX for (int i = 0, end = actions.size (); i < end; ++i) { if (states.at (i) != actions.at (i)->isEnabled ()) { @@ -266,17 +267,19 @@ void Manager::processTrayAction (QSystemTrayIcon::ActivationReason reason) { } void Manager::showLast () { - if (lastItem_.isValid ()) { - showResult (lastItem_); + const ProcessingItem &item = resultDialog_->item (); + if (item.isValid ()) { + showResult (item); } } void Manager::copyLastToClipboard () { - if (lastItem_.isValid ()) { + const ProcessingItem &item = resultDialog_->item (); + if (item.isValid ()) { QClipboard *clipboard = QApplication::clipboard (); - QString message = lastItem_.recognized; - if (!lastItem_.translated.isEmpty ()) { - message += " - " + lastItem_.translated; + QString message = item.recognized; + if (!item.translated.isEmpty ()) { + message += " - " + item.translated; } clipboard->setText (message); trayIcon_->showMessage (tr ("Результат"), @@ -287,7 +290,6 @@ void Manager::copyLastToClipboard () { void Manager::showResult (ProcessingItem item) { ST_ASSERT (item.isValid ()); - lastItem_ = item; if (useResultDialog_) { resultDialog_->showResult (item); } diff --git a/Manager.h b/Manager.h index ba06f6d..184a503 100644 --- a/Manager.h +++ b/Manager.h @@ -59,7 +59,6 @@ class Manager : public QObject { QAction *repeatCaptureAction_; QAction *repeatAction_; QAction *clipboardAction_; - ProcessingItem lastItem_; bool useResultDialog_; //! Used threads. For proper termination. QList threads_; diff --git a/ResultDialog.cpp b/ResultDialog.cpp index 8550037..2e618bb 100644 --- a/ResultDialog.cpp +++ b/ResultDialog.cpp @@ -26,6 +26,10 @@ ResultDialog::~ResultDialog () { delete ui; } +const ProcessingItem &ResultDialog::item () const { + return item_; +} + void ResultDialog::applySettings () { dictionary_.updateMenu (recognizeSubMenu_, dictionary_.availableOcrLanguagesUi ()); } @@ -43,7 +47,7 @@ bool ResultDialog::eventFilter (QObject *object, QEvent *event) { QAction *action = contextMenu_->exec (QCursor::pos ()); QWidget *subMenu = action->parentWidget (); if (recognizeSubMenu_->isAncestorOf (subMenu)) { - ProcessingItem item = lastItem_; + ProcessingItem item = item_; item.translated = item.recognized = QString (); item.ocrLanguage = dictionary_.ocrUiToCode (action->text ()); emit requestRecognize (item); @@ -59,7 +63,7 @@ bool ResultDialog::eventFilter (QObject *object, QEvent *event) { void ResultDialog::showResult (ProcessingItem item) { ST_ASSERT (item.isValid ()); - lastItem_ = item; + item_ = item; ui->sourceLabel->setPixmap (item.source); ui->recognizeLabel->setText (item.recognized); ui->translateLabel->setText (item.translated); diff --git a/ResultDialog.h b/ResultDialog.h index ab2be8f..3e7f8c7 100644 --- a/ResultDialog.h +++ b/ResultDialog.h @@ -22,6 +22,7 @@ class ResultDialog : public QDialog { void requestRecognize (ProcessingItem item); public: + const ProcessingItem &item () const; bool eventFilter (QObject *object, QEvent *event); public slots: @@ -37,7 +38,7 @@ class ResultDialog : public QDialog { bool isShowAtCapturePos_; QMenu *contextMenu_; QMenu *recognizeSubMenu_; - ProcessingItem lastItem_; + ProcessingItem item_; }; #endif // RESULTDIALOG_H