Bug fix: unable download and add xdxf dictionary more than once
[mdictionary] / src / plugins / stardict / UncompressedReader.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 UncompressedReader.h
23     \author Mateusz Półrola <mateusz.polrola@comarch.pl>
24  */
25
26 #ifndef UNCOMPRESSEDREADER_H
27 #define UNCOMPRESSEDREADER_H
28
29 #include <QObject>
30 #include <QFile>
31 #include <QDataStream>
32 #include <QString>
33 #include "StarDictReader.h"
34
35
36 /*!
37   Class implementing StarDictReader interface and handling
38   rading from uncompressed files
39 */
40 class UncompressedReader : public StarDictReader
41 {
42     Q_OBJECT
43 public:
44     UncompressedReader(QObject *parent = 0);
45
46     //! Creates new reader and open file with passed filename
47     UncompressedReader(QString filename, QObject *parent = 0);
48
49     //! Destructs object and closing file
50     ~UncompressedReader();
51
52     /*!
53         Reads translations text from file
54         \param offset 64-bit offset of translation in file, readed
55         from idx file
56         \param len length of translation, readed from idx file too
57     */
58     QByteArray readString(qint64 offset, qint32 len);
59
60     /*!
61         Reads 32-bits integer value from file and convert it from
62         BigEndian to Little Endian
63     */
64     qint32 readInt32BigEndian();
65
66     /*!
67         Reads 64-bits integer value from file and convert it from
68         BigEndian to Little Endian
69     */
70     qint64 readInt64BigEndian();
71
72     /*!
73         Reads single string from file, end of string is marked as '\0'
74         in file.
75     */
76     QString readKeyword();
77
78     //! Closing file;
79     void close();
80
81 protected:
82     /*!
83         Opens file
84         \returns true if file is opened or false otherwise
85     */
86     bool open(QString file);
87
88     //! Reads single char from compressed.
89     QChar readChar();
90
91 private:
92     QFile _file;
93     QDataStream _stream;
94 };
95
96 #endif // UNCOMPRESSEDREADER_H