LeechCraft
0.6.70-18450-gabe19ee3b0
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
[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
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: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::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.17.0