Partialy refactorized, fixed some bugs
[mdictionary] / trunk / src / base / gui / TranslationWidget.h
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21 //! \file TranslationWidget.h
22 //! \author Mateusz Półrola <mateusz.polrola@comarch.pl>
23
24 #ifndef TRANSLATIONWIDGET_H
25 #define TRANSLATIONWIDGET_H
26
27 #include <QWidget>
28 #include <QModelIndex>
29 #include <QtGui>
30 #include "../backbone/backbone.h"
31 #include <QtXml>
32 #include <QXmlQuery>
33 #include "TranslationTextEdit.h"
34 #include <QPropertyAnimation>
35 #include "../../includes/GUIInterface.h"
36
37 //! Displays translation of word found in dictionaries
38 /*!
39     Displays many translations of word, formatted as html.
40 */
41 class TranslationWidget : public QScrollArea {
42     Q_OBJECT
43 public:
44     explicit TranslationWidget(QWidget *parent = 0);
45
46 Q_SIGNALS:
47     void updateSize();
48
49     void search(QString);
50
51 public Q_SLOTS:
52     //! Show widget.
53     void show();
54
55     //! Requests to show translation of word list passed as parameter.
56     void show(QStringList);
57
58     //! Updates users zoom preferences and sends its to backbone to be saved
59     void updateZoom(qreal);
60
61 protected:
62     #ifdef Q_WS_MAEMO_5
63         void keyPressEvent(QKeyEvent *);
64         void hideEvent(QHideEvent *);
65     #endif
66
67 private Q_SLOTS:
68     void searchSelected();
69     #ifdef Q_WS_MAEMO_5
70         void showButtons();
71     #endif
72
73 private:
74     QString XslConversion(QString translation);
75     QToolButton* zoomInToolButton;
76     QToolButton* zoomOutToolButton;
77     TranslationTextEdit *webkit;
78     QString xslt;
79     #ifdef Q_WS_MAEMO_5
80         QToolButton* zoomInButton;
81         QToolButton* zoomOutButton;
82         QToolButton* selectAllButton;
83         QToolButton* copyButton;
84         QToolButton* searchButton;
85         QToolButton* showButtonsButton;
86
87         QPropertyAnimation* zoomInButtonAnimation;
88         QPropertyAnimation* zoomOutButtonAnimation;
89         QPropertyAnimation* copyButtonAnimation;
90         QPropertyAnimation* selectAllButtonAnimation;
91         QPropertyAnimation* searchButtonAnimation;
92         QAnimationGroup* buttonsAnimation;
93
94         void initButtons();
95         bool buttonsInitialized;
96         bool buttonsVisible;
97
98         void grabZoomKeys(bool);
99     #endif
100     QVBoxLayout *verticalLayout;
101     QHBoxLayout* horizontalLayout;
102     GUIInterface* guiinterface;
103
104     void initializeUI();
105 };
106
107 #endif // TRANSLATIONWIDGET_H