Merge branch 'http' of ssh://drop.maemo.org/git/mdictionary into http
[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 //Created by Mateusz Półrola
23
24 #ifndef XDXFDICTDOWNLOADER_H
25 #define XDXFDICTDOWNLOADER_H
26
27 #include <QObject>
28 #include "XdxfDictSelectDialog.h"
29 #include <QTimer>
30 #include <QNetworkAccessManager>
31 #include <QNetworkReply>
32 #include <DownloadDict.h>
33 #include "XdxfDictDownloadProgressDialog.h"
34 #include "../../include/Notify.h"
35
36 /** XdxfDictDownloader is responsible for getting dict list from XDXF website
37     and other actions necessary to download and add dictionary
38
39     When user want to add dictionary he may choose "browse" or "download",
40     after selecting "download"  XDXFDictDownloader would present him list of
41     dictionaries and when he select one downloading would be started. Next
42     step is to extract archive and move file to ~/.mdictionary
43 */
44 class XdxfDictDownloader : public QObject {
45     Q_OBJECT
46 public:
47     XdxfDictDownloader(QObject *parent = 0);
48     //! \return name of downloaded file
49     QString downloadedFile();
50     ~XdxfDictDownloader();
51
52 public Q_SLOTS:
53     //! downloads dictionaries list from xdxf website
54     void download(QWidget* parent);
55
56 Q_SIGNALS:
57     //! emmited when file download precess is complete
58     void fileDownloaded(QString);
59     void notify(Notify::NotifyType, QString);
60
61 private Q_SLOTS:
62     void dictListReceived(QNetworkReply*);
63     void processFinished(int);
64     void breakDownloading();
65
66 private:
67     void downloadComplete();
68     QList<DownloadDict> dicts;
69     QWidget* parentDialog;
70     QString _downloadedFile;
71     XdxfDictDownloadProgressDialog* progressDialog;
72     QStringList commands;
73     int currentCommand;
74     QProcess* process;
75     QString _fileName;
76     bool downloadError;
77     bool aborted;
78 };
79
80 #endif // XDXFDICTDOWNLOADER_H