LeechCraft
0.6.70-19424-g027e980fd1
Modular cross-platform feature rich live environment.
Toggle main menu visibility
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
act,
28
[var, actor] ()
mutable
{ actor (var); });
29
}
30
}
31
32
StdDataFilterMenuCreator::StdDataFilterMenuCreator
(
const
QVariant& dataVar,
IEntityManager
*em, QMenu *menu)
33
: QObject (menu)
34
{
35
auto
entity =
MakeEntity
(dataVar,
36
QString (),
37
FromUserInitiated
|
OnlyHandle
,
38
QStringLiteral (
"x-leechcraft/data-filter-request"
));
39
for
(
auto
plugin : em->
GetPossibleHandlers
(entity))
40
{
41
auto
ii = qobject_cast<IInfo*> (plugin);
42
auto
idf = qobject_cast<IDataFilter*> (plugin);
43
if
(!idf)
44
continue
;
45
46
const
auto
& vars = idf->GetFilterVariants (dataVar);
47
48
if
(vars.isEmpty ())
49
continue
;
50
51
const
auto
actor = [
this
, entity, plugin, em] (
const
IDataFilter::FilterVariant
& var)
mutable
52
{
53
entity.Additional_ [QStringLiteral (
"DataFilter"
)] = var.
ID_
;
54
em->
HandleEntity
(entity, plugin);
55
56
ChosenPlugin_ = qobject_cast<IInfo*> (plugin)->GetUniqueID ();
57
ChosenVariant_ = var.
ID_
;
58
};
59
60
if
(vars.size () == 1)
61
AddDatafilterMenuItem (vars.value (0), menu, actor);
62
else
63
{
64
auto
searchMenu = menu->addMenu (ii->GetIcon (), idf->GetFilterVerb ());
65
for
(
const
auto
& var : vars)
66
AddDatafilterMenuItem (var, searchMenu, actor);
67
}
68
}
69
}
70
71
const
QByteArray&
StdDataFilterMenuCreator::GetChosenPlugin
()
const
72
{
73
return
ChosenPlugin_;
74
}
75
76
const
QByteArray&
StdDataFilterMenuCreator::GetChosenVariant
()
const
77
{
78
return
ChosenVariant_;
79
}
80
}
IEntityManager
Proxy to core entity manager.
Definition
ientitymanager.h:32
IEntityManager::HandleEntity
virtual bool HandleEntity(LC::Entity entity, QObject *desired=nullptr)=0
Handles the given entity.
IEntityManager::GetPossibleHandlers
virtual QList< QObject * > GetPossibleHandlers(const LC::Entity &entity)=0
Queries what plugins can handle the given entity.
LC::Util::StdDataFilterMenuCreator::StdDataFilterMenuCreator
StdDataFilterMenuCreator(const QVariant &data, IEntityManager *iem, QMenu *menu)
Constructs the StdDataFilterMenuCreator.
Definition
stddatafiltermenucreator.cpp:32
LC::Util::StdDataFilterMenuCreator::GetChosenPlugin
const QByteArray & GetChosenPlugin() const
Returns the ID of the chosen plugin.
Definition
stddatafiltermenucreator.cpp:71
LC::Util::StdDataFilterMenuCreator::GetChosenVariant
const QByteArray & GetChosenVariant() const
Returns the ID of the chosen data filter variant.
Definition
stddatafiltermenucreator.cpp:76
idatafilter.h
ientitymanager.h
iinfo.h
LC::Util
Definition
icoreproxy.h:34
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:45
LC::OnlyHandle
@ OnlyHandle
Definition
structures.h:69
stddatafiltermenucreator.h
IDataFilter::FilterVariant
Describes a single filter variant supported by this data filter.
Definition
idatafilter.h:76
IDataFilter::FilterVariant::ID_
QByteArray ID_
The ID of this filter variant.
Definition
idatafilter.h:82
IDataFilter::FilterVariant::Icon_
QIcon Icon_
The icon representing the filter variant.
Definition
idatafilter.h:94
IDataFilter::FilterVariant::Name_
QString Name_
The human-readable name of the filter variant.
Definition
idatafilter.h:86
util.h
src
util
xpc
stddatafiltermenucreator.cpp
Generated by
1.18.0