#include "GuiIdListModel.h"
+#include "support/lassert.h"
+
using std::vector;
namespace lyx {
namespace frontend {
+
+// Note: Any role that is added here must also be added to setData().
QVariant GuiIdListModel::data(QModelIndex const & index, int role) const
{
int const row = index.row();
return QVariant();
if (role == Qt::DisplayRole || role == Qt::EditRole)
return userData_[row].uiString;
+ if (role == Qt::ToolTipRole) {
+ QString const ttstr = userData_[row].ttString.toString();
+ return !ttstr.isEmpty() ? ttstr : userData_[row].uiString;
+ }
if (role == Qt::UserRole)
return userData_[row].idString;
return QVariant();
dataChanged(index, index);
return true;
}
- return false;
+ if (role == Qt::ToolTipRole) {
+ userData_[row].ttString = value;
+ dataChanged(index, index);
+ return true;
+ }
+ // If we assert here, it's because we're trying to set an
+ // unrecognized role.
+ LASSERT(false, return false);
+ return false; // silence the warning
}
if (!rowIsValid(row))
return false;
vector<OurData>::iterator it = userData_.begin() + row;
- OurData const v;
beginInsertRows(QModelIndex(), row, row + count - 1);
- userData_.insert(it, count, v);
+ userData_.insert(it, count, OurData());
endInsertRows();
return true;
}
bool GuiIdListModel::removeRows(int row, int count,
QModelIndex const & /*parent*/)
{
- if (!rowIsValid(row) || row + count > userData_.size() ||
+ if (!rowIsValid(row) || row + count > int(userData_.size()) ||
count < 0)
return false;
if (count == 0)
}
-void GuiIdListModel::insertRow(int const i, std::string const & uiString,
+void GuiIdListModel::insertRow(int const i, QString const & uiString,
std::string const & idString)
+{
+ insertRow(i, uiString, idString, uiString);
+}
+
+
+void GuiIdListModel::insertRow(int const i, QString const & uiString,
+ std::string const & idString, QString const & ttString)
{
insertRows(i, 1);
setUIString(i, uiString);
setIDString(i, idString);
+ setTTString(i, ttString);
}
-QMap<int, QVariant>
- GuiIdListModel::itemData(QModelIndex const & index ) const
+QMap<int, QVariant> GuiIdListModel::itemData(QModelIndex const & index) const
{
int const row = index.row();
if (!rowIsValid(row))
return qm;
}
-/* The following functions are currently unused but are retained here in
- case they should at some point be useful.
-
-QStringList GuiIdListModel::getIDStringList() const {
- QStringList qsl;
- vector<OurData>::const_iterator it = userData_.begin();
- vector<OurData>::const_iterator end = userData_.end();
- for (; it != end; ++it)
- qsl.append(it->idString.toString());
- return qsl;
-}
-
-void GuiIdListModel::insertRow(int const i, QString const & uiString,
- QString const & idString)
-{
- insertRows(i, 1);
- setUIString(i, uiString);
- setIDString(i, idString);
-}
-
-bool GuiIdListModel::containsID(QVariant const & q) const
+int GuiIdListModel::findIDString(std::string const & idString)
{
vector<OurData>::const_iterator it = userData_.begin();
vector<OurData>::const_iterator end = userData_.end();
for (; it != end; ++it)
- if (it->idString == q)
- return true;
- return false;
+ if (fromqstr(it->idString.toString()) == idString)
+ return it - userData_.begin();
+ return -1;
}
-*/
-}
-}
+} // namespace frontend
+} // namespace lyx