-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathallfileslistmodel.cpp
132 lines (114 loc) · 2.78 KB
/
allfileslistmodel.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "allfileslistmodel.h"
AllFilesListModel* AllFilesListModel::pAllFileListModel = nullptr;
AllFilesListModel::AllFilesListModel(QObject *parent)
: QAbstractListModel(parent)
{
pAllFileListModel = this;
}
int AllFilesListModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid())
return 0;
return m_fileInfoList.size();
}
QVariant AllFilesListModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
QJsonObject item = m_fileInfoList.at(index.row());
switch (role) {
case FILE_NAME:
{
return item.value("fileName").toString();
}
break;
case FILE_SIZE:
{
return item.value("fileSize").toInt();
}
break;
case FILE_SIZE_FORMAT:
{
return item.value("fileSizeFormat").toString();
}
break;
case FILE_TIME:
{
return item.value("fileTime").toString();
}
break;
case FILE_ICON:
{
return item.value("fileIcon").toString();
}
break;
case IS_FOLDER:
{
return item.value("isFolder").toBool();
}
break;
case FILE_DESC:
{
return item.value("fileDesc").toString();
}
break;
default:
break;
}
return QVariant();
}
QHash<int,QByteArray> AllFilesListModel::roleNames() const
{
QHash<int,QByteArray> rolesHash;
rolesHash.insert(FILE_NAME, "fileName");
rolesHash.insert(FILE_SIZE, "fileSize");
rolesHash.insert(FILE_SIZE_FORMAT, "fileSizeFormat");
rolesHash.insert(FILE_TIME, "fileTime");
rolesHash.insert(IS_FOLDER, "isFolder");
rolesHash.insert(FILE_ICON, "fileIcon");
rolesHash.insert(FILE_DESC, "fileDesc");
return rolesHash;
}
void AllFilesListModel::updateDirList(const QJsonArray& fileInfo)
{
m_fileInfoList.clear();
m_selectItemList.clear();
for(int i = 0; i < fileInfo.size(); ++i)
{
QJsonObject item = fileInfo.at(i).toObject();
m_fileInfoList.push_back(item);
}
beginResetModel();
endResetModel();
}
//添加或删除选中项
void AllFilesListModel::addSelectItem(int index, bool checked)
{
if (checked)
{
m_selectItemList.insert(index, m_fileInfoList.at(index));
} else {
auto itFind = m_selectItemList.find(index);
if (itFind != m_selectItemList.end())
{
m_selectItemList.erase(itFind);
}
}
}
//全选
void AllFilesListModel::addSelectAllItem(bool checked)
{
if(checked)
{
for (int i = 0; i < m_fileInfoList.size(); ++i)
{
m_selectItemList.insert(i, m_fileInfoList.at(i));
}
} else {
m_selectItemList.clear();
}
}
void AllFilesListModel::getselectItems(QHash<int, QJsonObject>& selectItem)
{
selectItem.swap(m_selectItemList);
}