LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
flatitemsmodeltypedbase.h
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7  **********************************************************************/
8 
9 #pragma once
10 
11 #include "flatitemsmodelbase.h"
12 
13 namespace LC::Util
14 {
15  template<typename T>
16  class FlatItemsModelTypedBase : public FlatItemsModelBase
17  {
18  protected:
19  QVector<T> Items_;
20  public:
22 
23  void SetItems (QVector<T> items)
24  {
25  beginResetModel ();
26  Items_ = std::move (items);
27  endResetModel ();
28  }
29 
30  const QVector<T>& GetItems () const
31  {
32  return Items_;
33  }
34 
35  void AddItem (const T& item)
36  {
37  beginInsertRows ({}, Items_.size (), Items_.size ());
38  Items_.push_back (item);
39  endInsertRows ();
40  }
41 
42  void SetItem (int idx, const T& item)
43  {
44  Items_ [idx] = item;
45  emit dataChanged (index (idx, 0),
46  index (idx, columnCount ({}) - 1));
47  }
48 
49  template<typename F>
50  void EditItem (int idx, F&& editor)
51  {
52  std::invoke (std::forward<F> (editor), Items_ [idx]);
53  emit dataChanged (index (idx, 0),
54  index (idx, columnCount ({}) - 1));
55  }
56 
57  void RemoveItem (int idx)
58  {
59  beginRemoveRows ({}, idx, idx);
60  Items_.removeAt (idx);
61  endRemoveRows ();
62  }
63  protected:
64  int GetItemsCount () const override
65  {
66  return Items_.size ();
67  }
68  };
69 }
LC::Util::FlatItemsModelBase::index
QModelIndex index(int row, int col, const QModelIndex &parent={}) const override
Definition: flatitemsmodelbase.cpp:46
flatitemsmodelbase.h
LC::Util
Definition: icoreproxy.h:33
LC::Util::FlatItemsModelTypedBase::GetItems
const QVector< T > & GetItems() const
Definition: flatitemsmodeltypedbase.h:42
LC::Util::FlatItemsModelTypedBase::SetItems
void SetItems(QVector< T > items)
Definition: flatitemsmodeltypedbase.h:35
LC::Util::FlatItemsModelTypedBase::SetItem
void SetItem(int idx, const T &item)
Definition: flatitemsmodeltypedbase.h:54
LC::Util::FlatItemsModelTypedBase::Items_
QVector< T > Items_
Definition: flatitemsmodeltypedbase.h:31
LC::Util::FlatItemsModelTypedBase::GetItemsCount
int GetItemsCount() const override
Definition: flatitemsmodeltypedbase.h:76
LC::Util::FlatItemsModelTypedBase::RemoveItem
void RemoveItem(int idx)
Definition: flatitemsmodeltypedbase.h:69
LC::Util::FlatItemsModelTypedBase::AddItem
void AddItem(const T &item)
Definition: flatitemsmodeltypedbase.h:47
LC::Util::FlatItemsModelTypedBase::EditItem
void EditItem(int idx, F &&editor)
Definition: flatitemsmodeltypedbase.h:62
LC::Util::FlatItemsModelBase::FlatItemsModelBase
FlatItemsModelBase(QStringList headers, QObject *=nullptr)
Definition: flatitemsmodelbase.cpp:19
LC::Util::FlatItemsModelBase::columnCount
int columnCount(const QModelIndex &index={}) const override
Definition: flatitemsmodelbase.cpp:25