1 | // Copyright (C) 2016 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 |
3 | |
4 | #ifndef PHRASE_H |
5 | #define PHRASE_H |
6 | |
7 | #include <QObject> |
8 | #include <QString> |
9 | #include <QList> |
10 | #include <QtCore/QLocale> |
11 | |
12 | #include "simtexth.h" |
13 | |
14 | QT_BEGIN_NAMESPACE |
15 | |
16 | class PhraseBook; |
17 | |
18 | class Phrase |
19 | { |
20 | public: |
21 | Phrase(); |
22 | Phrase(const QString &source, const QString &target, const QString &definition, |
23 | const Candidate &candidate, int sc = -1); |
24 | Phrase(const QString &source, const QString &target, |
25 | const QString &definition, PhraseBook *phraseBook); |
26 | |
27 | QString source() const { return s; } |
28 | void setSource(const QString &ns); |
29 | QString target() const {return t;} |
30 | void setTarget(const QString &nt); |
31 | QString definition() const {return d;} |
32 | void setDefinition (const QString &nd); |
33 | int shortcut() const { return shrtc; } |
34 | Candidate candidate() const { return cand; } |
35 | PhraseBook *phraseBook() const { return m_phraseBook; } |
36 | void setPhraseBook(PhraseBook *book) { m_phraseBook = book; } |
37 | |
38 | private: |
39 | int shrtc; |
40 | QString s; |
41 | QString t; |
42 | QString d; |
43 | Candidate cand; |
44 | PhraseBook *m_phraseBook; |
45 | }; |
46 | |
47 | bool operator==(const Phrase &p, const Phrase &q); |
48 | inline bool operator!=(const Phrase &p, const Phrase &q) { |
49 | return !(p == q); |
50 | } |
51 | |
52 | class QphHandler; |
53 | |
54 | class PhraseBook : public QObject |
55 | { |
56 | Q_OBJECT |
57 | |
58 | public: |
59 | PhraseBook(); |
60 | ~PhraseBook(); |
61 | bool load(const QString &fileName, bool *langGuessed); |
62 | bool save(const QString &fileName); |
63 | QList<Phrase *> phrases() const { return m_phrases; } |
64 | void append(Phrase *phrase); |
65 | void remove(Phrase *phrase); |
66 | QString fileName() const { return m_fileName; } |
67 | QString friendlyPhraseBookName() const; |
68 | bool isModified() const { return m_changed; } |
69 | |
70 | void setLanguageAndTerritory(QLocale::Language lang, QLocale::Territory territory); |
71 | QLocale::Language language() const { return m_language; } |
72 | QLocale::Territory territory() const { return m_territory; } |
73 | void setSourceLanguageAndTerritory(QLocale::Language lang, QLocale::Territory territory); |
74 | QLocale::Language sourceLanguage() const { return m_sourceLanguage; } |
75 | QLocale::Territory sourceTerritory() const { return m_sourceTerritory; } |
76 | |
77 | signals: |
78 | void modifiedChanged(bool changed); |
79 | void listChanged(); |
80 | |
81 | private: |
82 | // Prevent copying |
83 | PhraseBook(const PhraseBook &); |
84 | PhraseBook& operator=(const PhraseBook &); |
85 | |
86 | void setModified(bool modified); |
87 | void phraseChanged(Phrase *phrase); |
88 | |
89 | QList<Phrase *> m_phrases; |
90 | QString m_fileName; |
91 | bool m_changed; |
92 | |
93 | QLocale::Language m_language; |
94 | QLocale::Language m_sourceLanguage; |
95 | QLocale::Territory m_territory; |
96 | QLocale::Territory m_sourceTerritory; |
97 | |
98 | friend class QphHandler; |
99 | friend class Phrase; |
100 | }; |
101 | |
102 | QT_END_NAMESPACE |
103 | |
104 | #endif |
105 | |