LeechCraft
0.6.70-19214-g121e5318a7
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
flattofoldersproxymodel.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 <memory>
12
#include <QAbstractItemModel>
13
#include <QStringList>
14
#include <QMultiHash>
15
#include "
modelsconfig.h
"
16
17
class
ITagsManager
;
18
19
namespace
LC::Util
20
{
21
struct
FlatTreeItem
;
22
using
FlatTreeItem_ptr
= std::shared_ptr<FlatTreeItem>;
23
39
class
UTIL_MODELS_API
FlatToFoldersProxyModel
:
public
QAbstractItemModel
40
{
41
QAbstractItemModel *SourceModel_ =
nullptr
;
42
43
const
ITagsManager
*
const
TM_;
44
45
FlatTreeItem_ptr
Root_;
46
QMultiHash<QPersistentModelIndex, FlatTreeItem_ptr> Items_;
47
public
:
48
explicit
FlatToFoldersProxyModel
(
const
ITagsManager
*, QObject* =
nullptr
);
49
50
int
columnCount
(
const
QModelIndex& = {})
const
override
;
51
QVariant
data
(
const
QModelIndex&,
int
= Qt::DisplayRole)
const override
;
52
QVariant
headerData
(
int
, Qt::Orientation,
int
)
const override
;
53
Qt::ItemFlags
flags
(
const
QModelIndex&)
const override
;
54
bool
setData
(
const
QModelIndex&,
const
QVariant&,
int
= Qt::EditRole)
override
;
55
QModelIndex
index
(
int
,
int
,
const
QModelIndex& = {})
const
override
;
56
QModelIndex
parent
(
const
QModelIndex&)
const override
;
57
int
rowCount
(
const
QModelIndex& = {})
const
override
;
58
59
Qt::DropActions
supportedDropActions
()
const override
;
60
QStringList
mimeTypes
()
const override
;
61
QMimeData*
mimeData
(
const
QModelIndexList& indexes)
const override
;
62
bool
dropMimeData
(
const
QMimeData *
data
, Qt::DropAction action,
int
row,
int
column,
const
QModelIndex&
parent
)
override
;
63
64
void
SetSourceModel
(QAbstractItemModel*);
65
QAbstractItemModel*
GetSourceModel
()
const
;
66
QModelIndex
MapToSource
(
const
QModelIndex&)
const
;
67
QList<QModelIndex>
MapFromSource
(
const
QModelIndex&)
const
;
68
69
bool
IsFolder
(
const
QModelIndex&)
const
;
70
QList<QModelIndex>
GetChildren
(
const
QModelIndex&)
const
;
71
QList<QVariant>
GetChildrenData
(
const
QModelIndex&
index
,
int
role)
const
;
72
73
template
<
typename
T>
74
QList<T>
GetChildrenData
(
const
QModelIndex&
index
,
int
role)
const
75
{
76
QList<T>
result;
77
for
(
const
auto
& var :
GetChildrenData
(
index
, role))
78
result.push_back (var.value<T> ());
79
return
result;
80
}
81
private
:
82
const
FlatTreeItem
& ToFlatOrRoot (
const
QModelIndex&)
const
;
83
QModelIndex IndexOf (
const
FlatTreeItem
&,
int
column = 0)
const
;
84
85
FlatTreeItem_ptr
FindFolder (
const
QString&)
const
;
86
FlatTreeItem_ptr
GetFolder (
const
QString&);
87
void
AddForTag (
const
QString&,
const
QPersistentModelIndex&);
88
void
RemoveLeaf (
const
FlatTreeItem_ptr
&);
89
90
void
HandleDataChanged (
const
QModelIndex&,
const
QModelIndex&,
const
QList<int>
&);
91
void
HandleModelReset ();
92
void
HandleRowsInserted (
const
QModelIndex&,
int
,
int
);
93
void
HandleRowsAboutToBeRemoved (
const
QModelIndex&,
int
,
int
);
94
};
95
}
ITagsManager
Tags manager's interface.
Definition
itagsmanager.h:23
LC::Util::FlatToFoldersProxyModel::GetChildren
QList< QModelIndex > GetChildren(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:329
LC::Util::FlatToFoldersProxyModel::headerData
QVariant headerData(int, Qt::Orientation, int) const override
Definition
flattofoldersproxymodel.cpp:134
LC::Util::FlatToFoldersProxyModel::GetChildrenData
QList< T > GetChildrenData(const QModelIndex &index, int role) const
Definition
flattofoldersproxymodel.h:74
LC::Util::FlatToFoldersProxyModel::supportedDropActions
Qt::DropActions supportedDropActions() const override
Definition
flattofoldersproxymodel.cpp:198
LC::Util::FlatToFoldersProxyModel::rowCount
int rowCount(const QModelIndex &={}) const override
Definition
flattofoldersproxymodel.cpp:190
LC::Util::FlatToFoldersProxyModel::GetSourceModel
QAbstractItemModel * GetSourceModel() const
Definition
flattofoldersproxymodel.cpp:294
LC::Util::FlatToFoldersProxyModel::SetSourceModel
void SetSourceModel(QAbstractItemModel *)
Definition
flattofoldersproxymodel.cpp:253
LC::Util::FlatToFoldersProxyModel::IsFolder
bool IsFolder(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:323
LC::Util::FlatToFoldersProxyModel::FlatToFoldersProxyModel
FlatToFoldersProxyModel(const ITagsManager *, QObject *=nullptr)
Definition
flattofoldersproxymodel.cpp:84
LC::Util::FlatToFoldersProxyModel::parent
QModelIndex parent(const QModelIndex &) const override
Definition
flattofoldersproxymodel.cpp:181
LC::Util::FlatToFoldersProxyModel::mimeData
QMimeData * mimeData(const QModelIndexList &indexes) const override
Definition
flattofoldersproxymodel.cpp:212
LC::Util::FlatToFoldersProxyModel::MapFromSource
QList< QModelIndex > MapFromSource(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:315
LC::Util::FlatToFoldersProxyModel::GetChildrenData
QList< QVariant > GetChildrenData(const QModelIndex &index, int role) const
Definition
flattofoldersproxymodel.cpp:342
LC::Util::FlatToFoldersProxyModel::dropMimeData
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
Definition
flattofoldersproxymodel.cpp:238
LC::Util::FlatToFoldersProxyModel::columnCount
int columnCount(const QModelIndex &={}) const override
Definition
flattofoldersproxymodel.cpp:92
LC::Util::FlatToFoldersProxyModel::data
QVariant data(const QModelIndex &, int=Qt::DisplayRole) const override
Definition
flattofoldersproxymodel.cpp:99
LC::Util::FlatToFoldersProxyModel::setData
bool setData(const QModelIndex &, const QVariant &, int=Qt::EditRole) override
Definition
flattofoldersproxymodel.cpp:160
LC::Util::FlatToFoldersProxyModel::MapToSource
QModelIndex MapToSource(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:299
LC::Util::FlatToFoldersProxyModel::index
QModelIndex index(int, int, const QModelIndex &={}) const override
Definition
flattofoldersproxymodel.cpp:173
LC::Util::FlatToFoldersProxyModel::flags
Qt::ItemFlags flags(const QModelIndex &) const override
Definition
flattofoldersproxymodel.cpp:142
LC::Util::FlatToFoldersProxyModel::mimeTypes
QStringList mimeTypes() const override
Definition
flattofoldersproxymodel.cpp:205
QList
Definition
ianrulesstorage.h:14
modelsconfig.h
UTIL_MODELS_API
#define UTIL_MODELS_API
Definition
modelsconfig.h:16
LC::Util
Definition
icoreproxy.h:34
LC::Util::FlatTreeItem_ptr
std::shared_ptr< FlatTreeItem > FlatTreeItem_ptr
Definition
flattofoldersproxymodel.h:22
LC::Util::FlatTreeItem
Definition
flattofoldersproxymodel.cpp:21
src
util
models
flattofoldersproxymodel.h
Generated by
1.18.0