Clean and order documentation in source files. Source ready to beta 2 release
[mdictionary] / src / plugins / xdxf / XdxfDictDownloader.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 /*!
22     \file XdxfDictDownloader.h
23     \brief XdxfDictDownloader is responsible for getting dict list from XDXF website
24     and other actions necessary to download and add dictionary
25
26     \author Mateusz Półrola <mateusz.polrola@comarch.pl>
27 */
28
29 #ifndef XDXFDICTDOWNLOADER_H
30 #define XDXFDICTDOWNLOADER_H
31
32 #include <QObject>
33 #include "XdxfDictSelectDialog.h"
34 #include <QTimer>
35 #include <QNetworkAccessManager>
36 #include <QNetworkReply>
37 #include <DownloadDict.h>
38 #include "XdxfDictDownloadProgressDialog.h"
39 #include "../../include/Notify.h"
40 #include "HttpDownloader.h"
41 #include <string.h>
42 #include <errno.h>
43
44 /*!
45     XdxfDictDownloader is responsible for getting dict list from XDXF website
46     and other actions necessary to download and add dictionary
47
48     When user want to add dictionary he may choose "browse" or "download",
49     after selecting "download"  XDXFDictDownloader would present him list of
50     dictionaries and when he select one downloading would be started. Next
51     step is to extract archive and move file to ~/.mdictionary
52 */
53 class XdxfDictDownloader : public QObject {
54     Q_OBJECT
55 public:
56     XdxfDictDownloader(QObject *parent = 0);
57
58     //! \return name of downloaded file
59     QString downloadedFile();
60
61 public Q_SLOTS:
62     //! downloads dictionaries list from xdxf website
63     void download(QWidget* parent);
64
65 Q_SIGNALS:
66     //! emmited when file download precess is complete
67     void fileDownloaded(QString);
68
69     //! emitted to inform user about errors and warnings
70     void notify(Notify::NotifyType, QString);
71
72     //! emmited what is update Download Progress
73     void downloadProgress(float);
74
75 private Q_SLOTS:
76     //! obtained list of dictionaries from website
77     void dictListReceived(QNetworkReply*);
78
79     //! one of system processes finished
80     void processFinished();
81
82     //! user cancel downloading
83     void breakDownloading();
84
85     //! handling a download error
86     void downloadingError(QString);
87
88     /*!
89         function divide two qint64 and result emmit in
90         signals downloadProgress(float)
91     */
92     void updateDownloadProgress(qint64, qint64);
93
94 private:
95     //! dict is downloaded and unpacked
96     void downloadComplete();
97
98     QList<DownloadDict> dicts;
99     QWidget* parentDialog;
100     QString _downloadedFile;
101     XdxfDictDownloadProgressDialog* progressDialog;
102     QStringList commands;
103     int currentCommand;
104     QProcess* process;
105     QString _fileName;
106     bool downloadError;
107     bool aborted;
108     QNetworkAccessManager *manager;
109     bool extract(QString file);
110     HttpDownloader http;
111 };
112
113 #endif // XDXFDICTDOWNLOADER_H