Icons updated. Now use 4 icon types depending on internal state.
41
Manager.cpp
@ -26,12 +26,13 @@
|
|||||||
|
|
||||||
Manager::Manager (QObject *parent) :
|
Manager::Manager (QObject *parent) :
|
||||||
QObject (parent),
|
QObject (parent),
|
||||||
trayIcon_ (new QSystemTrayIcon (QIcon (":/images/icon.png"), this)),
|
trayIcon_ (new QSystemTrayIcon (this)),
|
||||||
dictionary_ (new LanguageHelper),
|
dictionary_ (new LanguageHelper),
|
||||||
resultDialog_ (new ResultDialog (*dictionary_)),
|
resultDialog_ (new ResultDialog (*dictionary_)),
|
||||||
captureAction_ (NULL), repeatCaptureAction_ (NULL),
|
captureAction_ (NULL), repeatCaptureAction_ (NULL),
|
||||||
repeatAction_ (NULL), clipboardAction_ (NULL),
|
repeatAction_ (NULL), clipboardAction_ (NULL),
|
||||||
useResultDialog_ (true), doTranslation_ (true) {
|
useResultDialog_ (true), doTranslation_ (true), itemProcessingCount_ (0) {
|
||||||
|
updateNormalIcon ();
|
||||||
GlobalActionHelper::init ();
|
GlobalActionHelper::init ();
|
||||||
qRegisterMetaType<ProcessingItem>();
|
qRegisterMetaType<ProcessingItem>();
|
||||||
|
|
||||||
@ -215,6 +216,8 @@ void Manager::handleSelection (ProcessingItem item) {
|
|||||||
item.translateLanguage = defaultTranslationLanguage_;
|
item.translateLanguage = defaultTranslationLanguage_;
|
||||||
}
|
}
|
||||||
emit requestRecognize (item);
|
emit requestRecognize (item);
|
||||||
|
++itemProcessingCount_;
|
||||||
|
updateNormalIcon ();
|
||||||
if (!(item.modifiers & Qt::ControlModifier)) {
|
if (!(item.modifiers & Qt::ControlModifier)) {
|
||||||
emit closeSelections ();
|
emit closeSelections ();
|
||||||
}
|
}
|
||||||
@ -279,7 +282,6 @@ void Manager::processTrayAction (QSystemTrayIcon::ActivationReason reason) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Manager::editRecognized (ProcessingItem item) {
|
void Manager::editRecognized (ProcessingItem item) {
|
||||||
ST_ASSERT (item.isValid ());
|
|
||||||
QString fixed = QInputDialog::getMultiLineText (
|
QString fixed = QInputDialog::getMultiLineText (
|
||||||
NULL, tr ("Правка"), tr ("Исправьте распознанный текст"), item.recognized);
|
NULL, tr ("Правка"), tr ("Исправьте распознанный текст"), item.recognized);
|
||||||
if (!fixed.isEmpty ()) {
|
if (!fixed.isEmpty ()) {
|
||||||
@ -316,7 +318,13 @@ void Manager::copyLastImageToClipboard () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Manager::showResult (ProcessingItem item) {
|
void Manager::showResult (ProcessingItem item) {
|
||||||
ST_ASSERT (item.isValid ());
|
--itemProcessingCount_;
|
||||||
|
if (!item.isValid ()) {
|
||||||
|
// delay because it can show error
|
||||||
|
QTimer::singleShot (3000, this, SLOT (updateNormalIcon ()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
changeIcon (IconTypeSuccess);
|
||||||
if (useResultDialog_) {
|
if (useResultDialog_) {
|
||||||
resultDialog_->showResult (item);
|
resultDialog_->showResult (item);
|
||||||
}
|
}
|
||||||
@ -329,5 +337,30 @@ void Manager::showResult (ProcessingItem item) {
|
|||||||
|
|
||||||
void Manager::showError (QString text) {
|
void Manager::showError (QString text) {
|
||||||
qCritical () << text;
|
qCritical () << text;
|
||||||
|
changeIcon (IconTypeError);
|
||||||
trayIcon_->showMessage (tr ("Ошибка"), text, QSystemTrayIcon::Critical);
|
trayIcon_->showMessage (tr ("Ошибка"), text, QSystemTrayIcon::Critical);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Manager::changeIcon (int iconType, int timeoutMsec) {
|
||||||
|
QString fileName;
|
||||||
|
switch (iconType) {
|
||||||
|
case IconTypeSuccess:
|
||||||
|
fileName = ":/images/STIconGreen.png";
|
||||||
|
break;
|
||||||
|
case IconTypeError:
|
||||||
|
fileName = ":/images/STIconRed.png";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
trayIcon_->setIcon (QIcon (fileName));
|
||||||
|
if (timeoutMsec > 0) {
|
||||||
|
QTimer::singleShot (timeoutMsec, this, SLOT (updateNormalIcon ()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Manager::updateNormalIcon () {
|
||||||
|
QString fileName = itemProcessingCount_ > 0
|
||||||
|
? ":/images/STIconOrange.png" : ":/images/STIconBlue.png";
|
||||||
|
trayIcon_->setIcon (QIcon (fileName));
|
||||||
|
}
|
||||||
|
@ -17,6 +17,10 @@ class LanguageHelper;
|
|||||||
class Manager : public QObject {
|
class Manager : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
enum IconType {
|
||||||
|
IconTypeNormal, IconTypeWorking, IconTypeError, IconTypeSuccess
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Manager (QObject *parent = 0);
|
explicit Manager (QObject *parent = 0);
|
||||||
~Manager ();
|
~Manager ();
|
||||||
@ -46,9 +50,12 @@ class Manager : public QObject {
|
|||||||
void showResult (ProcessingItem item);
|
void showResult (ProcessingItem item);
|
||||||
void showError (QString text);
|
void showError (QString text);
|
||||||
|
|
||||||
|
void updateNormalIcon ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMenu * trayContextMenu ();
|
QMenu * trayContextMenu ();
|
||||||
void updateActionsState (bool isEnabled = true);
|
void updateActionsState (bool isEnabled = true);
|
||||||
|
void changeIcon (int iconType, int timeoutMsec = 3000);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSystemTrayIcon *trayIcon_;
|
QSystemTrayIcon *trayIcon_;
|
||||||
@ -65,6 +72,7 @@ class Manager : public QObject {
|
|||||||
QList<QThread *> threads_;
|
QList<QThread *> threads_;
|
||||||
QString defaultTranslationLanguage_;
|
QString defaultTranslationLanguage_;
|
||||||
bool doTranslation_;
|
bool doTranslation_;
|
||||||
|
int itemProcessingCount_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MANAGER_H
|
#endif // MANAGER_H
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file>translations/translation_en.qm</file>
|
<file>translations/translation_en.qm</file>
|
||||||
<file>translations/translation_ru.qm</file>
|
<file>translations/translation_ru.qm</file>
|
||||||
<file>images/icon.png</file>
|
<file>images/STIconBlue.png</file>
|
||||||
|
<file>images/STIconGreen.png</file>
|
||||||
|
<file>images/STIconOrange.png</file>
|
||||||
|
<file>images/STIconRed.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
BIN
images/STIconBlue.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
images/STIconGreen.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
images/STIconOrange.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
images/STIconRed.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
images/icon.ico
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 97 KiB |
BIN
images/icon.png
Before Width: | Height: | Size: 6.5 KiB |