3 #include "findresultitem.h"
4 #include "findresultmodel.h"
8 extern Settings settings;
10 FindResultModel::FindResultModel( QObject *parent)
11 : QAbstractItemModel(parent)
13 QVector<QVariant> rootData;
14 rootData << "Heading";
15 rootItem = new FindResultItem(rootData);
16 showParentsLevel = settings.value("/satellite/findResults/showParentsLevel", 1).toInt();
19 FindResultModel::~FindResultModel()
24 void FindResultModel::clear()
26 if (rootItem->childCount()>0)
27 removeRows (0,rowCount (QModelIndex ()));
30 int FindResultModel::columnCount(const QModelIndex & /* parent */) const
32 return rootItem->columnCount();
35 QVariant FindResultModel::data(const QModelIndex &index, int role) const
40 if (role != Qt::DisplayRole && role != Qt::EditRole)
43 FindResultItem *item = getItem(index);
45 return item->data(index.column());
48 Qt::ItemFlags FindResultModel::flags(const QModelIndex &index) const
53 return Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable;
56 QVariant FindResultModel::headerData(int section, Qt::Orientation orientation,
59 if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
60 return rootItem->data(section);
65 QModelIndex FindResultModel::index (FindResultItem *fri)
70 return createIndex (fri->row(),0,fri);
74 QModelIndex FindResultModel::index(int row, int column, const QModelIndex &parent) const
76 if (parent.isValid() && parent.column() != 0)
79 FindResultItem *parentItem = getItem(parent);
81 FindResultItem *childItem = parentItem->child(row);
83 return createIndex(row, column, childItem);
88 bool FindResultModel::insertColumns(int position, int columns, const QModelIndex &parent)
92 beginInsertColumns(parent, position, position + columns - 1);
93 success = rootItem->insertColumns(position, columns);
99 bool FindResultModel::insertRows(int position, int rows, const QModelIndex &parent)
101 FindResultItem *parentItem = getItem(parent);
104 beginInsertRows(parent, position, position + rows - 1);
105 success = parentItem->insertChildren(position, rows, rootItem->columnCount());
111 QModelIndex FindResultModel::parent(const QModelIndex &index) const
113 if (!index.isValid())
114 return QModelIndex();
116 FindResultItem *childItem = getItem(index);
117 FindResultItem *parentItem = childItem->parent();
119 if (parentItem == rootItem)
120 return QModelIndex();
122 return createIndex(parentItem->childNumber(), 0, parentItem);
125 bool FindResultModel::removeColumns(int position, int columns, const QModelIndex &parent)
129 beginRemoveColumns(parent, position, position + columns - 1);
130 success = rootItem->removeColumns(position, columns);
133 if (rootItem->columnCount() == 0)
134 removeRows(0, rowCount());
139 bool FindResultModel::removeRows(int position, int rows, const QModelIndex &parent)
141 FindResultItem *parentItem = getItem(parent);
144 beginRemoveRows(parent, position, position + rows - 1);
145 success = parentItem->removeChildren(position, rows);
151 int FindResultModel::rowCount(const QModelIndex &parent) const
153 FindResultItem *parentItem = getItem(parent);
155 return parentItem->childCount();
158 bool FindResultModel::setData(const QModelIndex &index, const QVariant &value,
161 if (role != Qt::EditRole)
164 FindResultItem *item = getItem(index);
165 bool result = item->setData(index.column(), value);
168 emit dataChanged(index, index);
173 bool FindResultModel::setHeaderData(int section, Qt::Orientation orientation,
174 const QVariant &value, int role)
176 if (role != Qt::EditRole || orientation != Qt::Horizontal)
179 bool result = rootItem->setData(section, value);
182 emit headerDataChanged(orientation, section, section);
187 FindResultItem* FindResultModel::getItem(const QModelIndex &index) const
189 if (index.isValid()) {
190 FindResultItem *item = static_cast<FindResultItem*>(index.internalPointer());
191 if (item) return item;
196 FindResultItem* FindResultModel::addItem (TreeItem *ti)
198 FindResultItem *ni=NULL;
201 QModelIndex parix (index (rootItem));
203 emit (layoutAboutToBeChanged() );
205 int n=rowCount (parix);
206 beginInsertRows (parix,n,n);
207 if (rootItem->insertChildren (n,1,0) )
209 QString h=ti->getHeadingPlainWithParents( showParentsLevel );
210 QModelIndex ix=index(n,0,QModelIndex());
211 setData (ix,QVariant(h),Qt::EditRole);
213 ni->setOriginal (ti);
217 emit (layoutChanged() );
222 FindResultItem* FindResultModel::addSubItem (FindResultItem *parent,const QString &s, TreeItem *pi, int i)
224 FindResultItem *ni=NULL;
227 QModelIndex parix ( index (parent));
229 emit (layoutAboutToBeChanged() );
231 int n=rowCount (parix);
232 beginInsertRows (parix,n,n);
235 if (parent->insertChildren (n,1,0))
238 setData (ix,QVariant(s),Qt::EditRole);
240 ni->setOriginal (pi);
241 ni->setOriginalIndex (i);
244 emit (layoutChanged() );
249 void FindResultModel::setSearchString( const QString &s)
254 QString FindResultModel::getSearchString()
259 void FindResultModel::setSearchFlags( QTextDocument::FindFlags f)
264 QTextDocument::FindFlags FindResultModel::getSearchFlags()
269 void FindResultModel::setShowParentsLevel(uint i)
271 showParentsLevel = i;
272 settings.setValue("/findResults/showParentsLevel", showParentsLevel);
275 uint FindResultModel::getShowParentsLevel()
277 return showParentsLevel;