3 * \file GuiIdListModel.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
9 * Some of this code is based upon qstringlistmodel.{h,cpp}, which is
10 * part of the Qt toolkit, copyright (C) 1992-2007 Trolltech ASA, and
11 * released under the General Public License.
13 * Full author contact details are available in file CREDITS.
16 #ifndef GUIIDLISTMODEL_H
17 #define GUIIDLISTMODEL_H
19 #include "support/qstring_helpers.h"
21 #include <QAbstractListModel>
29 * A QAbstractListModel that associates an identifying string with
30 * each item, as well as a display string. The display string is set
31 * with setUIString; the identifying string, with setIDString.
33 * This is intended to be used, for example, with GuiSelectionManager.
34 * In that case, one needs to recover from selectedModel which items
35 * have been selected. One may not wish to do so using the string that
36 * is there *displayed*, since, among other things, that string may be
37 * translated. So the id can be used to identify the items in this case.
39 class GuiIdListModel : public QAbstractListModel {
43 //////////////////////////////////////////////////////////////////////
44 // Methods overridden from QAbstractListModel
45 //////////////////////////////////////////////////////////////////////
47 int rowCount(QModelIndex const & = QModelIndex()) const
48 { return userData_.size(); }
51 virtual QVariant data(QModelIndex const & index,
52 int role = Qt::DisplayRole) const;
54 bool insertRows(int row, int count, QModelIndex const & parent = QModelIndex());
56 bool removeRows(int row, int count, QModelIndex const & parent = QModelIndex());
58 void clear() { removeRows(0, rowCount()); }
60 virtual bool setData (QModelIndex const & index,
61 const QVariant & value, int role = Qt::EditRole );
63 virtual QMap<int, QVariant> itemData(QModelIndex const & index ) const;
64 //////////////////////////////////////////////////////////////////////
66 //////////////////////////////////////////////////////////////////////
68 void setUIString(QModelIndex const & index, QString const & value)
69 { setData(index, value); }
71 void setUIString(int const i, QString const & value)
72 { setUIString(index(i), value); }
74 void setIDString(QModelIndex const & index, QString const & value)
75 { setData(index, value, Qt::UserRole); }
77 void setIDString(int const i, std::string const & value)
78 { setIDString(index(i), toqstr(value)); }
80 virtual QString getIDString(QModelIndex const & index) const
81 { return data(index, Qt::UserRole).toString(); }
83 virtual std::string getIDString(int const i) const
84 { return fromqstr(getIDString(index(i))); }
86 void insertRow(int const i, QString const & uiString,
87 std::string const & idString);
88 /// \return the index of the (first) item with idString
89 /// \return -1 if not found
90 int findIDString(std::string const & idString);
93 //The following functions are currently unused but are retained here in
94 //case they should at some point be useful.
96 void setUIString(int const i, std::string const & value)
97 { setUIString(index(i), value); }
99 void setIDString(int const i, QString const & value)
100 { setIDString(index(i), value); }
102 QStringList getIDStringList() const;
104 void insertRow(int const i, QString const & uiString,
105 QString const & idString);
107 void insertRow(int const i, std::string const & uiString,
108 std::string const & idString);
112 GuiIdListModel(GuiIdListModel const &);
114 void operator=(GuiIdListModel const &);
121 std::vector<OurData> userData_;
123 bool rowIsValid(int const i) const
125 return i >= 0 && i <= int(userData_.size());
132 #endif //GUIIDLISTMODEL_H