LeechCraft
0.6.70-18450-gabe19ee3b0
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
24
class
UTIL_MODELS_API
FlatToFoldersProxyModel
:
public
QAbstractItemModel
25
{
26
QAbstractItemModel *SourceModel_ =
nullptr
;
27
28
const
ITagsManager
*
const
TM_;
29
30
FlatTreeItem_ptr
Root_;
31
QMultiHash<QPersistentModelIndex, FlatTreeItem_ptr> Items_;
32
public
:
33
explicit
FlatToFoldersProxyModel
(
const
ITagsManager
*, QObject* =
nullptr
);
34
35
int
columnCount
(
const
QModelIndex& = {})
const
override
;
36
QVariant
data
(
const
QModelIndex&,
int
= Qt::DisplayRole)
const override
;
37
QVariant
headerData
(
int
, Qt::Orientation,
int
)
const override
;
38
Qt::ItemFlags
flags
(
const
QModelIndex&)
const override
;
39
QModelIndex
index
(
int
,
int
,
const
QModelIndex& = {})
const
override
;
40
QModelIndex
parent
(
const
QModelIndex&)
const override
;
41
int
rowCount
(
const
QModelIndex& = {})
const
override
;
42
43
Qt::DropActions
supportedDropActions
()
const override
;
44
QStringList
mimeTypes
()
const override
;
45
QMimeData*
mimeData
(
const
QModelIndexList& indexes)
const override
;
46
bool
dropMimeData
(
const
QMimeData *
data
, Qt::DropAction action,
int
row,
int
column,
const
QModelIndex&
parent
)
override
;
47
48
void
SetSourceModel
(QAbstractItemModel*);
49
QAbstractItemModel*
GetSourceModel
()
const
;
50
QModelIndex
MapToSource
(
const
QModelIndex&)
const
;
51
QList<QModelIndex>
MapFromSource
(
const
QModelIndex&)
const
;
52
53
bool
IsFolder
(
const
QModelIndex&)
const
;
54
QList<QModelIndex>
GetChildren
(
const
QModelIndex&)
const
;
55
QList<QVariant>
GetChildrenData
(
const
QModelIndex&
index
,
int
role)
const
;
56
57
template
<
typename
T>
58
QList<T>
GetChildrenData
(
const
QModelIndex&
index
,
int
role)
const
59
{
60
QList<T>
result;
61
for
(
const
auto
& var :
GetChildrenData
(
index
, role))
62
result.push_back (var.value<T> ());
63
return
result;
64
}
65
private
:
66
const
FlatTreeItem
& ToFlatOrRoot (
const
QModelIndex&)
const
;
67
68
void
HandleRowInserted (
int
);
69
void
HandleRowRemoved (
int
);
70
void
AddForTag (
const
QString&,
const
QPersistentModelIndex&);
71
void
RemoveFromTag (
const
QString&,
const
QPersistentModelIndex&);
72
void
HandleChanged (
const
QModelIndex&);
73
74
FlatTreeItem_ptr
FindFolder (
const
QString&)
const
;
75
FlatTreeItem_ptr
GetFolder (
const
QString&);
76
77
void
HandleDataChanged (
const
QModelIndex&,
const
QModelIndex&);
78
void
HandleModelReset ();
79
void
HandleRowsInserted (
const
QModelIndex&,
int
,
int
);
80
void
HandleRowsAboutToBeRemoved (
const
QModelIndex&,
int
,
int
);
81
};
82
}
ITagsManager
Tags manager's interface.
Definition
itagsmanager.h:23
LC::Util::FlatToFoldersProxyModel::GetChildren
QList< QModelIndex > GetChildren(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:317
LC::Util::FlatToFoldersProxyModel::headerData
QVariant headerData(int, Qt::Orientation, int) const override
Definition
flattofoldersproxymodel.cpp:101
LC::Util::FlatToFoldersProxyModel::GetChildrenData
QList< T > GetChildrenData(const QModelIndex &index, int role) const
Definition
flattofoldersproxymodel.h:58
LC::Util::FlatToFoldersProxyModel::supportedDropActions
Qt::DropActions supportedDropActions() const override
Definition
flattofoldersproxymodel.cpp:146
LC::Util::FlatToFoldersProxyModel::rowCount
int rowCount(const QModelIndex &={}) const override
Definition
flattofoldersproxymodel.cpp:141
LC::Util::FlatToFoldersProxyModel::GetSourceModel
QAbstractItemModel * GetSourceModel() const
Definition
flattofoldersproxymodel.cpp:256
LC::Util::FlatToFoldersProxyModel::SetSourceModel
void SetSourceModel(QAbstractItemModel *)
Definition
flattofoldersproxymodel.cpp:209
LC::Util::FlatToFoldersProxyModel::IsFolder
bool IsFolder(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:311
LC::Util::FlatToFoldersProxyModel::FlatToFoldersProxyModel
FlatToFoldersProxyModel(const ITagsManager *, QObject *=nullptr)
Definition
flattofoldersproxymodel.cpp:55
LC::Util::FlatToFoldersProxyModel::parent
QModelIndex parent(const QModelIndex &) const override
Definition
flattofoldersproxymodel.cpp:132
LC::Util::FlatToFoldersProxyModel::mimeData
QMimeData * mimeData(const QModelIndexList &indexes) const override
Definition
flattofoldersproxymodel.cpp:160
LC::Util::FlatToFoldersProxyModel::MapFromSource
QList< QModelIndex > MapFromSource(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:277
LC::Util::FlatToFoldersProxyModel::GetChildrenData
QList< QVariant > GetChildrenData(const QModelIndex &index, int role) const
Definition
flattofoldersproxymodel.cpp:330
LC::Util::FlatToFoldersProxyModel::dropMimeData
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
Definition
flattofoldersproxymodel.cpp:186
LC::Util::FlatToFoldersProxyModel::columnCount
int columnCount(const QModelIndex &={}) const override
Definition
flattofoldersproxymodel.cpp:62
LC::Util::FlatToFoldersProxyModel::data
QVariant data(const QModelIndex &, int=Qt::DisplayRole) const override
Definition
flattofoldersproxymodel.cpp:69
LC::Util::FlatToFoldersProxyModel::MapToSource
QModelIndex MapToSource(const QModelIndex &) const
Definition
flattofoldersproxymodel.cpp:261
LC::Util::FlatToFoldersProxyModel::index
QModelIndex index(int, int, const QModelIndex &={}) const override
Definition
flattofoldersproxymodel.cpp:121
LC::Util::FlatToFoldersProxyModel::flags
Qt::ItemFlags flags(const QModelIndex &) const override
Definition
flattofoldersproxymodel.cpp:109
LC::Util::FlatToFoldersProxyModel::mimeTypes
QStringList mimeTypes() const override
Definition
flattofoldersproxymodel.cpp:153
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.17.0