Krita Source Code Documentation
Loading...
Searching...
No Matches
KisCategoriesMapper< TEntry, TEntryToQStringConverter > Class Template Reference

#include <kis_categories_mapper.h>

+ Inheritance diagram for KisCategoriesMapper< TEntry, TEntryToQStringConverter >:

Classes

class  DataItem
 

Public Member Functions

DataItemaddCategory (const QString &category)
 
DataItemaddEntry (const QString &category, const TEntry &entry)
 
void expandAllCategories ()
 
DataItemfetchCategory (const QString &category) const
 
DataItemfetchEntry (const QString &category, const TEntry &entry) const
 
DataItemfetchOneEntry (const TEntry &entry) const
 
DataItemitemFromRow (int row) const
 
QVector< DataItem * > itemsForCategory (const QString &category) const
 
 KisCategoriesMapper ()
 
void removeCategory (const QString &category)
 
void removeEntry (const QString &category, const TEntry &entry)
 
int rowCount () const
 
int rowFromItem (DataItem *item) const
 
 ~KisCategoriesMapper () override
 

Protected Member Functions

QList< DataItem * > & testingGetItems ()
 

Private Member Functions

void notifyCategoryExpanded (DataItem *categoryItem)
 
void notifyItemChanged (DataItem *item)
 

Private Attributes

QList< DataItem * > m_items
 

Additional Inherited Members

- Signals inherited from __CategoriesSignalsBase
void beginInsertRow (int row)
 
void beginRemoveRow (int row)
 
void endInsertRow ()
 
void endRemoveRow ()
 
void rowChanged (int row)
 

Detailed Description

template<class TEntry, class TEntryToQStringConverter>
class KisCategoriesMapper< TEntry, TEntryToQStringConverter >

Definition at line 33 of file kis_categories_mapper.h.

Constructor & Destructor Documentation

◆ KisCategoriesMapper()

template<class TEntry , class TEntryToQStringConverter >
KisCategoriesMapper< TEntry, TEntryToQStringConverter >::KisCategoriesMapper ( )
inline

Definition at line 174 of file kis_categories_mapper.h.

174{}

◆ ~KisCategoriesMapper()

template<class TEntry , class TEntryToQStringConverter >
KisCategoriesMapper< TEntry, TEntryToQStringConverter >::~KisCategoriesMapper ( )
inlineoverride

Definition at line 175 of file kis_categories_mapper.h.

175 {
176 qDeleteAll(m_items);
177 }
QList< DataItem * > m_items

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

Member Function Documentation

◆ addCategory()

template<class TEntry , class TEntryToQStringConverter >
DataItem * KisCategoriesMapper< TEntry, TEntryToQStringConverter >::addCategory ( const QString & category)
inline

Definition at line 179 of file kis_categories_mapper.h.

179 {
180 if (fetchCategory(category)) return 0;
181 DataItem *item = new DataItem(category, this);
182
183 Q_EMIT beginInsertRow(m_items.size());
184 m_items.append(item);
185 Q_EMIT endInsertRow();
186 return item;
187 }
DataItem * fetchCategory(const QString &category) const
void beginInsertRow(int row)

References __CategoriesSignalsBase::beginInsertRow(), __CategoriesSignalsBase::endInsertRow(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::fetchCategory(), and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

◆ addEntry()

template<class TEntry , class TEntryToQStringConverter >
DataItem * KisCategoriesMapper< TEntry, TEntryToQStringConverter >::addEntry ( const QString & category,
const TEntry & entry )
inline

Definition at line 221 of file kis_categories_mapper.h.

221 {
222 DataItem *categoryItem = fetchCategory(category);
223 if (!categoryItem) {
224 categoryItem = addCategory(category);
225 }
226 DataItem *item = new DataItem(entry, categoryItem, this);
227
228 Q_EMIT beginInsertRow(m_items.size());
229 m_items.append(item);
230 Q_EMIT endInsertRow();
231 return item;
232 }
DataItem * addCategory(const QString &category)

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::addCategory(), __CategoriesSignalsBase::beginInsertRow(), __CategoriesSignalsBase::endInsertRow(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::fetchCategory(), and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

◆ expandAllCategories()

template<class TEntry , class TEntryToQStringConverter >
void KisCategoriesMapper< TEntry, TEntryToQStringConverter >::expandAllCategories ( )
inline

◆ fetchCategory()

template<class TEntry , class TEntryToQStringConverter >
DataItem * KisCategoriesMapper< TEntry, TEntryToQStringConverter >::fetchCategory ( const QString & category) const
inline

Definition at line 244 of file kis_categories_mapper.h.

244 {
245 Q_FOREACH (DataItem *item, m_items) {
246 if (item->isCategory() && item->name() == category) return item;
247 }
248 return 0;
249 }

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::isCategory(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items, and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::name().

◆ fetchEntry()

template<class TEntry , class TEntryToQStringConverter >
DataItem * KisCategoriesMapper< TEntry, TEntryToQStringConverter >::fetchEntry ( const QString & category,
const TEntry & entry ) const
inline

◆ fetchOneEntry()

template<class TEntry , class TEntryToQStringConverter >
DataItem * KisCategoriesMapper< TEntry, TEntryToQStringConverter >::fetchOneEntry ( const TEntry & entry) const
inline

Definition at line 260 of file kis_categories_mapper.h.

260 {
261 Q_FOREACH (DataItem *item, m_items) {
262 if (!item->isCategory() &&
263 *item->data() == entry) return item;
264 }
265 return 0;
266 }

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::data(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::isCategory(), and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

◆ itemFromRow()

template<class TEntry , class TEntryToQStringConverter >
DataItem * KisCategoriesMapper< TEntry, TEntryToQStringConverter >::itemFromRow ( int row) const
inline

Definition at line 290 of file kis_categories_mapper.h.

290 {
291 return m_items[row];
292 }

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

◆ itemsForCategory()

template<class TEntry , class TEntryToQStringConverter >
QVector< DataItem * > KisCategoriesMapper< TEntry, TEntryToQStringConverter >::itemsForCategory ( const QString & category) const
inline

Definition at line 268 of file kis_categories_mapper.h.

268 {
269 QVector<DataItem*> filteredItems;
270
271 Q_FOREACH (DataItem *item, m_items) {
272 if (!item->isCategory() &&
273 item->parentCategory()->name() == category) {
274
275 filteredItems.append(item);
276 }
277 }
278
279 return filteredItems;
280 }

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::isCategory(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items, KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::name(), and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::parentCategory().

◆ notifyCategoryExpanded()

template<class TEntry , class TEntryToQStringConverter >
void KisCategoriesMapper< TEntry, TEntryToQStringConverter >::notifyCategoryExpanded ( DataItem * categoryItem)
inlineprivate

Definition at line 307 of file kis_categories_mapper.h.

307 {
308 Q_ASSERT(categoryItem->isCategory());
309 notifyItemChanged(categoryItem);
310
311 Q_FOREACH (DataItem *item, m_items) {
312 if (!item->isCategory() &&
313 item->parentCategory() == categoryItem) {
314
315 notifyItemChanged(item);
316 }
317 }
318 }
void notifyItemChanged(DataItem *item)

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::isCategory(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items, KisCategoriesMapper< TEntry, TEntryToQStringConverter >::notifyItemChanged(), and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::parentCategory().

◆ notifyItemChanged()

template<class TEntry , class TEntryToQStringConverter >
void KisCategoriesMapper< TEntry, TEntryToQStringConverter >::notifyItemChanged ( DataItem * item)
inlineprivate

◆ removeCategory()

template<class TEntry , class TEntryToQStringConverter >
void KisCategoriesMapper< TEntry, TEntryToQStringConverter >::removeCategory ( const QString & category)
inline

Definition at line 189 of file kis_categories_mapper.h.

189 {
190 QMutableListIterator<DataItem*> it(m_items);
191 DataItem *categoryItem = 0;
192
193 int row = 0;
194 while(it.hasNext()) {
195 DataItem *item = it.next();
196
197 if (!item->isCategory() &&
198 item->parentCategory()->name() == category) {
199
200 Q_EMIT beginRemoveRow(row);
201 it.remove();
202 delete item;
203 Q_EMIT endRemoveRow();
204 } else {
205 if (item->isCategory() && item->name() == category) {
206 Q_ASSERT(!categoryItem);
207 categoryItem = item;
208 }
209 row++;
210 }
211 }
212
213 if (categoryItem) {
214 int row = m_items.indexOf(categoryItem);
215 Q_EMIT beginRemoveRow(row);
216 delete m_items.takeAt(row);
217 Q_EMIT endRemoveRow();
218 }
219 }
void beginRemoveRow(int row)

References __CategoriesSignalsBase::beginRemoveRow(), __CategoriesSignalsBase::endRemoveRow(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::isCategory(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items, KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::name(), and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::parentCategory().

◆ removeEntry()

template<class TEntry , class TEntryToQStringConverter >
void KisCategoriesMapper< TEntry, TEntryToQStringConverter >::removeEntry ( const QString & category,
const TEntry & entry )
inline

Definition at line 234 of file kis_categories_mapper.h.

234 {
235 DataItem *item = fetchEntry(category, entry);
236 if (!item) return;
237
238 int row = m_items.indexOf(item);
239 Q_EMIT beginRemoveRow(row);
240 delete m_items.takeAt(row);
241 Q_EMIT endRemoveRow();
242 }
DataItem * fetchEntry(const QString &category, const TEntry &entry) const

References __CategoriesSignalsBase::beginRemoveRow(), __CategoriesSignalsBase::endRemoveRow(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::fetchEntry(), and KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

◆ rowCount()

template<class TEntry , class TEntryToQStringConverter >
int KisCategoriesMapper< TEntry, TEntryToQStringConverter >::rowCount ( ) const
inline

Definition at line 298 of file kis_categories_mapper.h.

298 {
299 return m_items.size();
300 }

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

◆ rowFromItem()

template<class TEntry , class TEntryToQStringConverter >
int KisCategoriesMapper< TEntry, TEntryToQStringConverter >::rowFromItem ( DataItem * item) const
inline

Definition at line 294 of file kis_categories_mapper.h.

294 {
295 return m_items.indexOf(item);
296 }

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

◆ testingGetItems()

template<class TEntry , class TEntryToQStringConverter >
QList< DataItem * > & KisCategoriesMapper< TEntry, TEntryToQStringConverter >::testingGetItems ( )
inlineprotected

Definition at line 321 of file kis_categories_mapper.h.

321 {
322 return m_items;
323 }

References KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items.

Member Data Documentation

◆ m_items

template<class TEntry , class TEntryToQStringConverter >
QList<DataItem*> KisCategoriesMapper< TEntry, TEntryToQStringConverter >::m_items
private

Definition at line 326 of file kis_categories_mapper.h.


The documentation for this class was generated from the following file: