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
:
21
using
FlatItemsModelBase::FlatItemsModelBase
;
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
src
util
models
flatitemsmodeltypedbase.h
Generated by
1.8.17