Move task creation to separate class
This commit is contained in:
parent
6336d3545a
commit
aee380fcd5
@ -30,6 +30,7 @@ INCLUDEPATH += src src/service src/capture src/ocr \
|
||||
src/represent src/translate src/correct
|
||||
|
||||
HEADERS += \
|
||||
src/capture/capturearea.h \
|
||||
src/capture/captureareaselector.h \
|
||||
src/capture/capturer.h \
|
||||
src/correct/corrector.h \
|
||||
@ -58,6 +59,7 @@ HEADERS += \
|
||||
src/trayicon.h
|
||||
|
||||
SOURCES += \
|
||||
src/capture/capturearea.cpp \
|
||||
src/capture/captureareaselector.cpp \
|
||||
src/capture/capturer.cpp \
|
||||
src/correct/corrector.cpp \
|
||||
|
29
src/capture/capturearea.cpp
Normal file
29
src/capture/capturearea.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
#include "capturearea.h"
|
||||
#include "settings.h"
|
||||
#include "task.h"
|
||||
|
||||
CaptureArea::CaptureArea(const QRect &rect, const Settings &settings)
|
||||
: rect_(rect)
|
||||
, doTranslation_(settings.doTranslation)
|
||||
, sourceLanguage_(settings.sourceLanguage)
|
||||
, targetLanguage_(settings.targetLanguage)
|
||||
, translators_(settings.translators)
|
||||
{
|
||||
}
|
||||
|
||||
TaskPtr CaptureArea::task(const QPixmap &pixmap) const
|
||||
{
|
||||
if (pixmap.isNull() || rect_.width() < 3 || rect_.height() < 3)
|
||||
return {};
|
||||
|
||||
auto task = std::make_shared<Task>();
|
||||
task->captured = pixmap.copy(rect_);
|
||||
task->capturePoint = rect_.topLeft();
|
||||
task->sourceLanguage = sourceLanguage_;
|
||||
if (doTranslation_ && !translators_.isEmpty()) {
|
||||
task->targetLanguage = targetLanguage_;
|
||||
task->translators = translators_;
|
||||
}
|
||||
|
||||
return task;
|
||||
}
|
22
src/capture/capturearea.h
Normal file
22
src/capture/capturearea.h
Normal file
@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#include "stfwd.h"
|
||||
|
||||
#include <QRect>
|
||||
#include <QStringList>
|
||||
|
||||
class QPixmap;
|
||||
|
||||
class CaptureArea
|
||||
{
|
||||
public:
|
||||
CaptureArea(const QRect& rect, const Settings& settings);
|
||||
TaskPtr task(const QPixmap& pixmap) const;
|
||||
|
||||
private:
|
||||
QRect rect_;
|
||||
bool doTranslation_;
|
||||
LanguageId sourceLanguage_;
|
||||
LanguageId targetLanguage_;
|
||||
QStringList translators_;
|
||||
};
|
@ -149,18 +149,9 @@ void CaptureAreaSelector::mouseReleaseEvent(QMouseEvent *event)
|
||||
|
||||
const auto endPos = event->pos();
|
||||
const auto selection = QRect(startSelectPos_, endPos).normalized();
|
||||
const auto selectedPixmap = pixmap_.copy(selection);
|
||||
|
||||
startSelectPos_ = currentSelectPos_ = QPoint();
|
||||
startSelectPos_ = currentSelectPos_ = {};
|
||||
|
||||
if (selectedPixmap.width() < 3 || selectedPixmap.height() < 3) {
|
||||
capturer_.canceled();
|
||||
return;
|
||||
}
|
||||
|
||||
auto task = std::make_shared<Task>();
|
||||
task->captured = selectedPixmap;
|
||||
task->capturePoint = pos() + selection.topLeft();
|
||||
// TODO add customization menus
|
||||
capturer_.captured(task);
|
||||
const auto area = CaptureArea(selection, settings_);
|
||||
capturer_.selected(area);
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "capturer.h"
|
||||
#include "capturearea.h"
|
||||
#include "captureareaselector.h"
|
||||
#include "debug.h"
|
||||
#include "manager.h"
|
||||
@ -65,16 +66,17 @@ void Capturer::updateSettings()
|
||||
selector_->updateSettings();
|
||||
}
|
||||
|
||||
void Capturer::captured(const TaskPtr &task)
|
||||
void Capturer::selected(const CaptureArea &area)
|
||||
{
|
||||
SOFT_ASSERT(selector_, return );
|
||||
SOFT_ASSERT(selector_, return manager_.captureCanceled())
|
||||
selector_->hide();
|
||||
|
||||
task->translators = settings_.translators;
|
||||
task->sourceLanguage = settings_.sourceLanguage;
|
||||
if (settings_.doTranslation)
|
||||
task->targetLanguage = settings_.targetLanguage;
|
||||
manager_.captured(task);
|
||||
SOFT_ASSERT(!pixmap_.isNull(), return manager_.captureCanceled())
|
||||
auto task = area.task(pixmap_);
|
||||
if (task)
|
||||
manager_.captured(task);
|
||||
else
|
||||
manager_.captureCanceled();
|
||||
}
|
||||
|
||||
void Capturer::canceled()
|
||||
|
@ -14,7 +14,7 @@ public:
|
||||
void repeatCapture();
|
||||
void updateSettings();
|
||||
|
||||
void captured(const TaskPtr &task);
|
||||
void selected(const CaptureArea &area);
|
||||
void canceled();
|
||||
|
||||
private:
|
||||
|
@ -15,6 +15,7 @@ class Representer;
|
||||
class Translator;
|
||||
class Corrector;
|
||||
class Recognizer;
|
||||
class CaptureArea;
|
||||
class CaptureAreaSelector;
|
||||
|
||||
namespace update
|
||||
|
Loading…
Reference in New Issue
Block a user