• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

lokalize

  • sources
  • kde-4.14
  • kdesdk
  • lokalize
  • src
  • glossary
glossary.h
Go to the documentation of this file.
1 /* ****************************************************************************
2  This file is part of Lokalize
3 
4  Copyright (C) 2007-2009 by Nick Shaforostoff <shafff@ukr.net>
5 
6  This program is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public License as
8  published by the Free Software Foundation; either version 2 of
9  the License or (at your option) version 3 or any later version
10  accepted by the membership of KDE e.V. (or its successor approved
11  by the membership of KDE e.V.), which shall act as a proxy
12  defined in Section 14 of version 3 of the license.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program. If not, see <http://www.gnu.org/licenses/>.
21 
22 **************************************************************************** */
23 
24 #ifndef GLOSSARY_H
25 #define GLOSSARY_H
26 
27 #include <QStringList>
28 #include <QMultiHash>
29 #include <QAbstractListModel>
30 #include <QSortFilterProxyModel>
31 #include <QList>
32 #include <QSet>
33 
34 #include <QDomDocument>
35 
39 namespace GlossaryNS {
40 
50 struct TermEntry
51 {
52  QStringList english;
53  QStringList target;
54  QString definition;
55  int subjectField; //index in global Glossary's subjectFields list
56  QString id; //used to identify entry on edit action
57  //TODO <descrip type="context"></descrip>
58 
59  TermEntry(const QStringList& _english,
60  const QStringList& _target,
61  const QString& _definition,
62  int _subjectField,
63  const QString& _id=QString()
64  )
65  : english(_english)
66  , target(_target)
67  , definition(_definition)
68  , subjectField(_subjectField)
69  , id(_id)
70  {}
71 
72  TermEntry()
73  : subjectField(0)
74  {}
75 
76  void clear()
77  {
78  english.clear();
79  target.clear();
80  definition.clear();
81  subjectField=0;
82  }
83 };
84 
85 
86 
95 class Glossary: public QObject
96 {
97  Q_OBJECT
98 
99 public:
100 
101  Glossary(QObject* parent);
102  ~Glossary(){}
103 
104  QString path() const{return m_path;}
105  bool isClean() {return m_clean;}
106 
107  QList<QByteArray> idsForLangWord(const QString& lang, const QString& word) const;
108 
109  QByteArray id(int index) const;
110  QStringList terms(const QByteArray& id, const QString& lang) const;
111  void setTerm(const QByteArray& id, QString lang, int i, const QString& term);
112  void rmTerm(const QByteArray& id, QString lang, int i);
113  QString subjectField(const QByteArray& id, const QString& lang=QString()) const;
114  void setSubjectField(const QByteArray& id, const QString& lang, const QString& value);
115  QString definition(const QByteArray& id, const QString& lang=QString()) const;
116  void setDefinition(const QByteArray& id, const QString& lang, const QString& value);
117 
118 private:
119  QString descrip(const QByteArray& id, const QString& lang, const QString& type) const;
120  void setDescrip(const QByteArray& id, QString lang, const QString& type, const QString& value);
121 
122 public:
123  QStringList subjectFields() const;
124 
125  int size() const{return m_entries.size();}
126 
127  void clear();
128 
129  //disk
130  bool load(const QString&);
131  bool save();
132 
133  //in-memory changing
134  QByteArray generateNewId();
135  void append(const QString& _english,const QString& _target);
136  void removeEntry(const QByteArray& id);
137  void forceChangeSignal(){emit changed();}
138  void setClean(bool );
139 
140 
141  QByteArray append(const QStringList& sourceTerms, const QStringList& targetTerms);
142 
143  //general
144  void hashTermEntry(const QDomElement&);
145  void unhashTermEntry(const QDomElement&);
146 
147 signals:
148  void changed();
149  void loaded();
150 
151 private:
152  QString m_path;
153 
154  mutable QDomDocument m_doc;
155  QDomNodeList m_entries;
156 
157  QMap<QByteArray, QDomElement> m_entriesById;
158  QList<QByteArray> m_idsForEntriesById;
159 
160 
161  QMap< QString, QMultiHash<QString,QByteArray> > idsByLangWord;
162 
163  QMultiHash<QString,int> wordHash_;
164  QList<TermEntry> termList_;
165  QMap< QString, QMultiHash<QString,int> > langWordEntry_;
166  QStringList subjectFields_;//first entry should be empty
167 
168  //for delayed saving
169  QStringList addedIds_;
170  QStringList changedIds_;
171  QList<QByteArray> removedIds;
172 
173  bool m_clean;
174 };
175 
176 
180 class GlossaryModel: public QAbstractListModel
181 {
182  Q_OBJECT
183 public:
184 
185  enum Columns
186  {
187  ID = 0,
188  English,
189  Target,
190  SubjectField,
191  GlossaryModelColumnCount
192  };
193 
194  GlossaryModel(QObject* parent/*, Glossary* glossary*/);
195  ~GlossaryModel(){}
196 
197  //QModelIndex index (int row, int column, const QModelIndex & parent = QModelIndex() ) const;
198  int rowCount(const QModelIndex& parent=QModelIndex()) const;
199  int columnCount(const QModelIndex& parent=QModelIndex()) const;
200  QVariant data(const QModelIndex&, int role=Qt::DisplayRole) const;
201  QVariant headerData(int section,Qt::Orientation, int role = Qt::DisplayRole ) const;
202  //Qt::ItemFlags flags(const QModelIndex&) const;
203 
204  bool canFetchMore(const QModelIndex& parent) const;
205  void fetchMore(const QModelIndex& parent);
206 
207  bool removeRows(int row, int count, const QModelIndex& parent=QModelIndex());
208  //bool insertRows(int row,int count,const QModelIndex& parent=QModelIndex());
209  QByteArray appendRow(const QString& _english, const QString& _target);
210 
211 public slots:
212  void forceReset();
213 
214 private:
215  int m_visibleCount;
216  Glossary* m_glossary; //taken from Project::instance()->glossary()
217 };
218 
219 
220 class GlossarySortFilterProxyModel: public QSortFilterProxyModel
221 {
222  Q_OBJECT
223 public:
224  GlossarySortFilterProxyModel(QObject* parent=0)
225  : QSortFilterProxyModel(parent)
226  {}
227  Qt::ItemFlags flags(const QModelIndex&) const {return Qt::ItemIsSelectable|Qt::ItemIsEnabled;}
228  void fetchMore(const QModelIndex& parent);
229 
230 public slots:
231  void setFilterRegExp(const QString& s);
232 
233 };
234 
235 
236 }
237 #endif
GlossaryNS::GlossaryModel::~GlossaryModel
~GlossaryModel()
Definition: glossary.h:195
QList::clear
void clear()
QModelIndex
GlossaryNS::Glossary::setClean
void setClean(bool)
Definition: glossary.cpp:155
GlossaryNS::TermEntry::target
QStringList target
Definition: glossary.h:53
GlossaryNS::Glossary::setSubjectField
void setSubjectField(const QByteArray &id, const QString &lang, const QString &value)
Definition: glossary.cpp:575
GlossaryNS::GlossaryModel::English
Definition: glossary.h:188
GlossaryNS::GlossaryModel::headerData
QVariant headerData(int section, Qt::Orientation, int role=Qt::DisplayRole) const
Definition: glossary.cpp:223
GlossaryNS::GlossaryModel::appendRow
QByteArray appendRow(const QString &_english, const QString &_target)
Definition: glossary.cpp:746
GlossaryNS::GlossaryModel::forceReset
void forceReset()
Definition: glossary.cpp:196
GlossaryNS::Glossary::subjectField
QString subjectField(const QByteArray &id, const QString &lang=QString()) const
Definition: glossary.cpp:565
GlossaryNS::GlossaryModel::fetchMore
void fetchMore(const QModelIndex &parent)
Definition: glossary.cpp:208
GlossaryNS::TermEntry::definition
QString definition
Definition: glossary.h:54
GlossaryNS::Glossary::size
int size() const
Definition: glossary.h:125
QByteArray
GlossaryNS::GlossaryModel::GlossaryModel
GlossaryModel(QObject *parent)
Definition: glossary.cpp:188
QDomNodeList
GlossaryNS::Glossary::id
QByteArray id(int index) const
Definition: glossary.cpp:330
QMap< QByteArray, QDomElement >
GlossaryNS::GlossaryModel::columnCount
int columnCount(const QModelIndex &parent=QModelIndex()) const
Definition: glossary.cpp:268
GlossaryNS::GlossarySortFilterProxyModel::setFilterRegExp
void setFilterRegExp(const QString &s)
Definition: glossary.cpp:166
term
static const QString term
Definition: glossary.cpp:48
GlossaryNS::Glossary::forceChangeSignal
void forceChangeSignal()
Definition: glossary.h:137
QString::clear
void clear()
GlossaryNS::Glossary::Glossary
Glossary(QObject *parent)
Definition: glossary.cpp:59
GlossaryNS::Glossary::rmTerm
void rmTerm(const QByteArray &id, QString lang, int i)
Definition: glossary.cpp:455
GlossaryNS::GlossarySortFilterProxyModel::GlossarySortFilterProxyModel
GlossarySortFilterProxyModel(QObject *parent=0)
Definition: glossary.h:224
GlossaryNS::GlossaryModel::data
QVariant data(const QModelIndex &, int role=Qt::DisplayRole) const
Definition: glossary.cpp:238
GlossaryNS::Glossary
Internal representation of glossary.
Definition: glossary.h:95
GlossaryNS::GlossaryModel::ID
Definition: glossary.h:187
GlossaryNS::Glossary::load
bool load(const QString &)
Definition: glossary.cpp:66
GlossaryNS::Glossary::path
QString path() const
Definition: glossary.h:104
GlossaryNS::Glossary::hashTermEntry
void hashTermEntry(const QDomElement &)
Definition: glossary.cpp:591
GlossaryNS::TermEntry::TermEntry
TermEntry()
Definition: glossary.h:72
QObject
QAbstractListModel
GlossaryNS::Glossary::unhashTermEntry
void unhashTermEntry(const QDomElement &)
Definition: glossary.cpp:607
GlossaryNS::Glossary::removeEntry
void removeEntry(const QByteArray &id)
Definition: glossary.cpp:642
QString
QList< QByteArray >
GlossaryNS::Glossary::save
bool save()
Definition: glossary.cpp:135
GlossaryNS::TermEntry::id
QString id
Definition: glossary.h:56
QStringList
GlossaryNS::GlossaryModel::SubjectField
Definition: glossary.h:190
GlossaryNS::Glossary::idsForLangWord
QList< QByteArray > idsForLangWord(const QString &lang, const QString &word) const
Definition: glossary.cpp:53
GlossaryNS::TermEntry::TermEntry
TermEntry(const QStringList &_english, const QStringList &_target, const QString &_definition, int _subjectField, const QString &_id=QString())
Definition: glossary.h:59
QSortFilterProxyModel
GlossaryNS::Glossary::setTerm
void setTerm(const QByteArray &id, QString lang, int i, const QString &term)
Definition: glossary.cpp:421
QDomDocument
GlossaryNS::TermEntry::english
QStringList english
Definition: glossary.h:52
GlossaryNS::Glossary::clear
void clear()
Definition: glossary.cpp:709
GlossaryNS::Glossary::terms
QStringList terms(const QByteArray &id, const QString &lang) const
Definition: glossary.cpp:337
GlossaryNS::TermEntry::subjectField
int subjectField
Definition: glossary.h:55
GlossaryNS::GlossarySortFilterProxyModel::flags
Qt::ItemFlags flags(const QModelIndex &) const
Definition: glossary.h:227
GlossaryNS::TermEntry::clear
void clear()
Definition: glossary.h:76
GlossaryNS::GlossarySortFilterProxyModel::fetchMore
void fetchMore(const QModelIndex &parent)
Definition: glossary.cpp:177
GlossaryNS::GlossaryModel::canFetchMore
bool canFetchMore(const QModelIndex &parent) const
Definition: glossary.cpp:203
GlossaryNS::GlossaryModel::Target
Definition: glossary.h:189
GlossaryNS::GlossaryModel::removeRows
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex())
Definition: glossary.cpp:729
GlossaryNS::Glossary::subjectFields
QStringList subjectFields() const
Definition: glossary.cpp:322
GlossaryNS::GlossaryModel::Columns
Columns
Definition: glossary.h:185
GlossaryNS::Glossary::generateNewId
QByteArray generateNewId()
Definition: glossary.cpp:288
GlossaryNS::GlossarySortFilterProxyModel
Definition: glossary.h:220
GlossaryNS::Glossary::append
void append(const QString &_english, const QString &_target)
Definition: glossary.cpp:704
QDomNodeList::size
int size() const
GlossaryNS::GlossaryModel::GlossaryModelColumnCount
Definition: glossary.h:191
QObject::parent
QObject * parent() const
QDomElement
GlossaryNS::Glossary::definition
QString definition(const QByteArray &id, const QString &lang=QString()) const
Definition: glossary.cpp:570
GlossaryNS::Glossary::~Glossary
~Glossary()
Definition: glossary.h:102
GlossaryNS::Glossary::setDefinition
void setDefinition(const QByteArray &id, const QString &lang, const QString &value)
Definition: glossary.cpp:580
QMultiHash< QString, int >
GlossaryNS::TermEntry
struct that contains types data we work with.
Definition: glossary.h:50
GlossaryNS::Glossary::isClean
bool isClean()
Definition: glossary.h:105
GlossaryNS::Glossary::changed
void changed()
GlossaryNS::Glossary::loaded
void loaded()
GlossaryNS::GlossaryModel
MVC wrapper around Glossary.
Definition: glossary.h:180
QVariant
GlossaryNS::GlossaryModel::rowCount
int rowCount(const QModelIndex &parent=QModelIndex()) const
Definition: glossary.cpp:216
Qt::ItemFlags
typedef ItemFlags
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:40:07 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

lokalize

Skip menu "lokalize"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal