LeechCraft
0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
stddatafiltermenucreator.cpp
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
#include "
stddatafiltermenucreator.h
"
10
#include <QVariant>
11
#include <QMenu>
12
#include <
interfaces/iinfo.h
>
13
#include <
interfaces/idatafilter.h
>
14
#include <
interfaces/core/ientitymanager.h
>
15
#include "
util.h
"
16
17
namespace
LC::Util
18
{
19
namespace
20
{
21
template
<
typename
T>
22
void
AddDatafilterMenuItem
(
const
IDataFilter::FilterVariant
&
var
,
QMenu
*
menu
, T
actor
)
23
{
24
const
auto
act
=
menu
->addAction (
var
.Icon_,
var
.Name_);
25
QObject::connect (
act
,
26
&QAction::triggered,
27
[
var
,
actor
] ()
mutable
{
actor
(
var
); });
28
}
29
}
30
31
StdDataFilterMenuCreator::StdDataFilterMenuCreator
(
const
QVariant
&
dataVar
,
IEntityManager
*
em
,
QMenu
*
menu
)
32
: QObject (
menu
)
33
{
34
auto
entity
=
MakeEntity
(
dataVar
,
35
QString
(),
36
FromUserInitiated
|
OnlyHandle
,
37
QStringLiteral
(
"x-leechcraft/data-filter-request"
));
38
for
(
auto
plugin
:
em
->GetPossibleHandlers (
entity
))
39
{
40
auto
ii
=
qobject_cast<IInfo*>
(
plugin
);
41
auto
idf
=
qobject_cast<IDataFilter*>
(
plugin
);
42
if
(!
idf
)
43
continue
;
44
45
const
auto
&
vars
=
idf
->GetFilterVariants (
dataVar
);
46
47
if
(
vars
.isEmpty ())
48
continue
;
49
50
const
auto
actor
= [
this
,
entity
,
plugin
,
em
] (
const
IDataFilter::FilterVariant
&
var
)
mutable
51
{
52
entity
.Additional_ [
QStringLiteral
(
"DataFilter"
)] =
var
.ID_;
53
em
->HandleEntity (
entity
,
plugin
);
54
55
ChosenPlugin_ =
qobject_cast<IInfo*>
(
plugin
)->GetUniqueID ();
56
ChosenVariant_ =
var
.ID_;
57
};
58
59
if
(
vars
.size () == 1)
60
AddDatafilterMenuItem
(
vars
.value (0),
menu
,
actor
);
61
else
62
{
63
auto
searchMenu
=
menu
->addMenu (
ii
->GetIcon (),
idf
->GetFilterVerb ());
64
for
(
const
auto
&
var
:
vars
)
65
AddDatafilterMenuItem
(
var
,
searchMenu
,
actor
);
66
}
67
}
68
}
69
70
const
QByteArray
&
StdDataFilterMenuCreator::GetChosenPlugin
()
const
71
{
72
return
ChosenPlugin_;
73
}
74
75
const
QByteArray
&
StdDataFilterMenuCreator::GetChosenVariant
()
const
76
{
77
return
ChosenVariant_;
78
}
79
}
IEntityManager
Proxy to core entity manager.
Definition
ientitymanager.h:32
LC::Util::StdDataFilterMenuCreator::StdDataFilterMenuCreator
StdDataFilterMenuCreator(const QVariant &data, IEntityManager *iem, QMenu *menu)
Constructs the StdDataFilterMenuCreator.
Definition
stddatafiltermenucreator.cpp:31
LC::Util::StdDataFilterMenuCreator::GetChosenPlugin
const QByteArray & GetChosenPlugin() const
Returns the ID of the chosen plugin.
Definition
stddatafiltermenucreator.cpp:70
LC::Util::StdDataFilterMenuCreator::GetChosenVariant
const QByteArray & GetChosenVariant() const
Returns the ID of the chosen data filter variant.
Definition
stddatafiltermenucreator.cpp:75
idatafilter.h
ientitymanager.h
iinfo.h
LC::Util
Definition
icoreproxy.h:34
LC::Util::Filter
Container< T > Filter(const Container< T > &c, F f)
Definition
prelude.h:118
LC::Util::MakeEntity
Entity MakeEntity(const QVariant &entity, const QString &location, TaskParameters tp, const QString &mime)
Definition
util.cpp:82
LC::FromUserInitiated
@ FromUserInitiated
Definition
structures.h:44
LC::OnlyHandle
@ OnlyHandle
Definition
structures.h:68
stddatafiltermenucreator.h
IDataFilter::FilterVariant
Describes a single filter variant supported by this data filter.
Definition
idatafilter.h:76
util.h
src
util
xpc
stddatafiltermenucreator.cpp
Generated by
1.10.0