ViewSolutions
1.0.100.30ae2aa
View solutions of qml for quasarapp projects
Toggle main menu visibility
Loading...
Searching...
No Matches
listviewmodel.cpp
Go to the documentation of this file.
1
//#
2
//# Copyright (C) 2020-2025 QuasarApp.
3
//# Distributed under the GPLv3 software license, see the accompanying
4
//# Everyone is permitted to copy and distribute verbatim copies
5
//# of this license document, but changing it is not allowed.
6
//#
7
8
#include "
listviewmodel.h
"
9
namespace
ViewSolutions
{
10
11
ListViewModel::ListViewModel
(QObject *ptr):
12
QAbstractListModel(ptr){
13
14
}
15
16
ListViewModel::~ListViewModel
() {
17
clear
();
18
}
19
20
int
ListViewModel::rowCount
(
const
QModelIndex &)
const
{
21
if
(
external
())
22
return
_externalData->size();
23
24
return
_data.size();
25
}
26
27
QVariant
ListViewModel::data
(
const
QModelIndex &index,
int
role)
const
{
28
29
if
(index.row() <
rowCount
(index)) {
30
if
(
static_cast<
ListViewModelRoles
>
(role) ==
ListViewModelRoles::ModelData
) {
31
QObject *item = (
external
())? _externalData->value(index.row()) : _data.value(index.row());
32
return
QVariant::fromValue(item);
33
}
34
}
35
36
return
{};
37
}
38
39
QHash<int, QByteArray>
ListViewModel::roleNames
()
const
{
40
QHash<int, QByteArray> roles;
41
roles[
static_cast<
int
>
(
ListViewModelRoles::ModelData
)] =
"modelData"
;
42
43
return
roles;
44
}
45
46
void
ListViewModel::setExternalSource
(
const
QList<QObject *> *newData) {
47
if
(
external
()) {
48
beginResetModel();
49
_externalData = newData;
50
endResetModel();
51
}
else
{
52
_externalData = newData;
53
}
54
55
setExternal(
true
);
56
57
}
58
59
void
ListViewModel::setSource
(
const
QList<QObject*> &newData) {
60
61
if
(!
external
()) {
62
beginResetModel();
63
64
clear
(
true
);
65
_data = newData;
66
67
endResetModel();
68
}
else
{
69
clear
(
true
);
70
_data = newData;
71
}
72
73
setExternal(
false
);
74
}
75
76
void
ListViewModel::addSource
(QObject*
data
) {
77
if
(!
external
()) {
78
beginInsertRows(QModelIndex(),
rowCount
(),
rowCount
());
79
_data.push_back(
data
);
80
endInsertRows();
81
}
else
{
82
_data.push_back(
data
);
83
}
84
}
85
86
void
ListViewModel::clear
(
bool
fast) {
87
for
(
auto
i : std::as_const(_data)) {
88
if
(fast) {
89
i->deleteLater();
90
}
else
{
91
delete
i;
92
}
93
}
94
95
_data.clear();
96
}
97
98
bool
ListViewModel::external
()
const
{
99
return
_external;
100
}
101
102
void
ListViewModel::setExternal(
bool
external) {
103
if
(
external
!= _external) {
104
beginResetModel();
105
_external =
external
;
106
endResetModel();
107
}
108
}
109
110
}
ViewSolutions::ListViewModel::roleNames
QHash< int, QByteArray > roleNames() const
Definition
listviewmodel.cpp:39
ViewSolutions::ListViewModel::addSource
void addSource(QObject *data)
addSource adds one new QObject to the data list.
Definition
listviewmodel.cpp:76
ViewSolutions::ListViewModel::external
bool external() const
external returns true if the model uses an external data list.
Definition
listviewmodel.cpp:98
ViewSolutions::ListViewModel::clear
void clear(bool fast=false)
clear removes all data from the model and deletes the objects of the internal data list.
Definition
listviewmodel.cpp:86
ViewSolutions::ListViewModel::data
QVariant data(const QModelIndex &index, int role) const
Definition
listviewmodel.cpp:27
ViewSolutions::ListViewModel::setExternalSource
void setExternalSource(const QList< QObject * > *newData)
setExternalSource sets a new external data list. The model does not take ownership of the list conten...
Definition
listviewmodel.cpp:46
ViewSolutions::ListViewModel::ListViewModel
ListViewModel(QObject *ptr=nullptr)
Definition
listviewmodel.cpp:11
ViewSolutions::ListViewModel::rowCount
int rowCount(const QModelIndex &parent=QModelIndex()) const
Definition
listviewmodel.cpp:20
ViewSolutions::ListViewModel::~ListViewModel
~ListViewModel()
Definition
listviewmodel.cpp:16
ViewSolutions::ListViewModel::setSource
void setSource(const QList< QObject * > &newData)
setSource sets a new internal data list. The model takes ownership of the list content.
Definition
listviewmodel.cpp:59
listviewmodel.h
ViewSolutions
The ViewSolutions namespace.
Definition
avatargenerator.cpp:14
ViewSolutions::ListViewModelRoles
ListViewModelRoles
The ListViewModelRoles enum defines the data roles of the ListViewModel.
Definition
listviewmodel.h:19
ViewSolutions::ListViewModelRoles::ModelData
@ ModelData
The Qt::UserRole role. Returns the QObject data of the list item.
Definition
listviewmodel.h:21
ViewSolutions
src
listviewmodel.cpp
Generated by
1.18.0