LeechCraft
0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
checkableproxymodel.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 <QIdentityProxyModel>
12
#include <QSet>
13
#include "
modelsconfig.h
"
14
15
namespace
LC::Util
16
{
17
class
UTIL_MODELS_API
CheckableProxyModelBase
:
public
QIdentityProxyModel
18
{
19
Q_OBJECT
20
protected
:
21
const
int
IdRole_
;
22
public
:
23
explicit
CheckableProxyModelBase
(
int
idRole, QObject *parent =
nullptr
);
24
25
Qt::ItemFlags
flags
(
const
QModelIndex& index)
const override
;
26
QVariant
data
(
const
QModelIndex& index,
int
role)
const override
;
27
bool
setData
(
const
QModelIndex& index,
const
QVariant& value,
int
role)
override
;
28
29
void
CheckAll
();
30
void
CheckNone
();
31
protected
:
32
virtual
bool
IsChecked
(
const
QVariant& idVar)
const
= 0;
33
virtual
void
SetChecked
(
const
QVariant& idVar,
bool
checked) = 0;
34
signals:
35
void
selectionChanged
();
36
};
37
38
template
<
typename
IdType>
39
class
CheckableProxyModel
:
public
CheckableProxyModelBase
40
{
41
QSet<IdType> Unchecked_;
42
public
:
43
using
CheckableProxyModelBase::CheckableProxyModelBase
;
44
45
QSet<IdType>
GetUnchecked
()
const
46
{
47
return
Unchecked_;
48
}
49
50
QSet<IdType>
GetChecked
()
const
51
{
52
const
auto
rc = sourceModel ()->rowCount ();
53
54
QSet<IdType> result;
55
result.reserve (rc - Unchecked_.size ());
56
57
for
(
int
i = 0; i < rc; ++i)
58
{
59
const
auto
rowId = sourceModel ()->index (i, 0).data (
IdRole_
).template value<IdType> ();
60
if
(!Unchecked_.contains (rowId))
61
result << rowId;
62
}
63
64
return
result;
65
}
66
protected
:
67
bool
IsChecked
(
const
QVariant& idVar)
const override
68
{
69
return
!Unchecked_.contains (idVar.value<IdType> ());
70
}
71
72
void
SetChecked
(
const
QVariant& idVar,
bool
checked)
override
73
{
74
const
auto
id
= idVar.value<IdType> ();
75
if
(checked)
76
Unchecked_.remove (
id
);
77
else
78
Unchecked_ << id;
79
}
80
};
81
}
LC::Util::CheckableProxyModelBase::SetChecked
virtual void SetChecked(const QVariant &idVar, bool checked)=0
LC::Util::CheckableProxyModelBase::CheckAll
void CheckAll()
Definition
checkableproxymodel.cpp:48
LC::Util::CheckableProxyModelBase::IdRole_
const int IdRole_
Definition
checkableproxymodel.h:21
LC::Util::CheckableProxyModelBase::IsChecked
virtual bool IsChecked(const QVariant &idVar) const =0
LC::Util::CheckableProxyModelBase::data
QVariant data(const QModelIndex &index, int role) const override
Definition
checkableproxymodel.cpp:27
LC::Util::CheckableProxyModelBase::selectionChanged
void selectionChanged()
LC::Util::CheckableProxyModelBase::CheckNone
void CheckNone()
Definition
checkableproxymodel.cpp:66
LC::Util::CheckableProxyModelBase::flags
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition
checkableproxymodel.cpp:19
LC::Util::CheckableProxyModelBase::setData
bool setData(const QModelIndex &index, const QVariant &value, int role) override
Definition
checkableproxymodel.cpp:35
LC::Util::CheckableProxyModelBase::CheckableProxyModelBase
CheckableProxyModelBase(int idRole, QObject *parent=nullptr)
Definition
checkableproxymodel.cpp:13
LC::Util::CheckableProxyModel
Definition
checkableproxymodel.h:40
LC::Util::CheckableProxyModel::GetUnchecked
QSet< IdType > GetUnchecked() const
Definition
checkableproxymodel.h:45
LC::Util::CheckableProxyModel::GetChecked
QSet< IdType > GetChecked() const
Definition
checkableproxymodel.h:50
LC::Util::CheckableProxyModel::SetChecked
void SetChecked(const QVariant &idVar, bool checked) override
Definition
checkableproxymodel.h:72
LC::Util::CheckableProxyModel::IsChecked
bool IsChecked(const QVariant &idVar) const override
Definition
checkableproxymodel.h:67
LC::Util::CheckableProxyModel::CheckableProxyModelBase
CheckableProxyModelBase(int idRole, QObject *parent=nullptr)
Definition
checkableproxymodel.cpp:13
modelsconfig.h
UTIL_MODELS_API
#define UTIL_MODELS_API
Definition
modelsconfig.h:16
LC::Util
Definition
icoreproxy.h:34
src
util
models
checkableproxymodel.h
Generated by
1.17.0