Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
PIM Messagelib
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
4
Merge Requests
4
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PIM
PIM Messagelib
Commits
4b55a8d1
Commit
4b55a8d1
authored
Feb 20, 2016
by
Laurent Montel
😁
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix load plugin
parent
9a2113b4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
1 deletion
+89
-1
messageviewer/src/viewer/webengine/mailnetworkulrinterceptorpluginmanager.cpp
...ewer/webengine/mailnetworkulrinterceptorpluginmanager.cpp
+86
-1
messageviewer/src/viewer/webengine/mailnetworkulrinterceptorpluginmanager.h
...viewer/webengine/mailnetworkulrinterceptorpluginmanager.h
+3
-0
No files found.
messageviewer/src/viewer/webengine/mailnetworkulrinterceptorpluginmanager.cpp
View file @
4b55a8d1
...
...
@@ -15,8 +15,16 @@
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "mailnetworkpluginulrinterceptor.h"
#include "mailnetworkulrinterceptorpluginmanager.h"
#include <KPluginLoader>
#include <KPluginFactory>
#include <QFileInfo>
#include <QVariant>
#include <QSet>
#include <kpluginmetadata.h>
using
namespace
MessageViewer
;
class
MailNetworkUlrInterceptorPluginManagerInstancePrivate
...
...
@@ -37,6 +45,32 @@ public:
Q_GLOBAL_STATIC
(
MailNetworkUlrInterceptorPluginManagerInstancePrivate
,
sInstance
)
class
MailNetworkUlrInterceptorPluginInfo
{
public:
MailNetworkUlrInterceptorPluginInfo
()
:
plugin
(
Q_NULLPTR
)
{
}
QString
saveName
()
const
;
KPluginMetaData
metaData
;
MessageViewer
::
MailNetworkPluginUlrInterceptor
*
plugin
;
};
QString
MailNetworkUlrInterceptorPluginInfo
::
saveName
()
const
{
return
QFileInfo
(
metaData
.
fileName
()).
baseName
();
}
namespace
{
QString
pluginVersion
()
{
return
QStringLiteral
(
"1.0"
);
}
}
class
MessageViewer
::
MailNetworkUlrInterceptorPluginManagerPrivate
{
...
...
@@ -48,12 +82,59 @@ public:
}
void
initializePluginList
();
void
loadPlugin
(
MailNetworkUlrInterceptorPluginInfo
*
item
);
QVector
<
MessageViewer
::
MailNetworkPluginUlrInterceptor
*>
pluginsList
()
const
;
QVector
<
MailNetworkUlrInterceptorPluginInfo
>
mPluginList
;
MailNetworkUlrInterceptorPluginManager
*
q
;
};
void
MailNetworkUlrInterceptorPluginManagerPrivate
::
initializePluginList
()
{
//TODO
const
QVector
<
KPluginMetaData
>
plugins
=
KPluginLoader
::
findPlugins
(
QStringLiteral
(
"messageviewer"
),
[](
const
KPluginMetaData
&
md
)
{
return
md
.
serviceTypes
().
contains
(
QStringLiteral
(
"MessageViewer/UrlInterceptor"
));
});
QVectorIterator
<
KPluginMetaData
>
i
(
plugins
);
i
.
toBack
();
QSet
<
QString
>
unique
;
while
(
i
.
hasPrevious
())
{
MailNetworkUlrInterceptorPluginInfo
info
;
info
.
metaData
=
i
.
previous
();
const
QString
version
=
info
.
metaData
.
version
();
if
(
pluginVersion
()
==
version
)
{
// only load plugins once, even if found multiple times!
if
(
unique
.
contains
(
info
.
saveName
()))
{
continue
;
}
info
.
plugin
=
Q_NULLPTR
;
mPluginList
.
append
(
info
);
unique
.
insert
(
info
.
saveName
());
}
}
QVector
<
MailNetworkUlrInterceptorPluginInfo
>::
iterator
end
(
mPluginList
.
end
());
for
(
QVector
<
MailNetworkUlrInterceptorPluginInfo
>::
iterator
it
=
mPluginList
.
begin
();
it
!=
end
;
++
it
)
{
loadPlugin
(
&
(
*
it
));
}
}
QVector
<
MessageViewer
::
MailNetworkPluginUlrInterceptor
*>
MailNetworkUlrInterceptorPluginManagerPrivate
::
pluginsList
()
const
{
QVector
<
MessageViewer
::
MailNetworkPluginUlrInterceptor
*>
lst
;
QVector
<
MailNetworkUlrInterceptorPluginInfo
>::
ConstIterator
end
(
mPluginList
.
constEnd
());
for
(
QVector
<
MailNetworkUlrInterceptorPluginInfo
>::
ConstIterator
it
=
mPluginList
.
constBegin
();
it
!=
end
;
++
it
)
{
if
((
*
it
).
plugin
)
{
lst
<<
(
*
it
).
plugin
;
}
}
return
lst
;
}
void
MailNetworkUlrInterceptorPluginManagerPrivate
::
loadPlugin
(
MailNetworkUlrInterceptorPluginInfo
*
item
)
{
item
->
plugin
=
KPluginLoader
(
item
->
metaData
.
fileName
()).
factory
()
->
create
<
MessageViewer
::
MailNetworkPluginUlrInterceptor
>
(
q
,
QVariantList
()
<<
item
->
saveName
());
}
MailNetworkUlrInterceptorPluginManager
*
MailNetworkUlrInterceptorPluginManager
::
self
()
...
...
@@ -73,3 +154,7 @@ MailNetworkUlrInterceptorPluginManager::~MailNetworkUlrInterceptorPluginManager(
delete
d
;
}
QVector
<
MessageViewer
::
MailNetworkPluginUlrInterceptor
*>
MailNetworkUlrInterceptorPluginManager
::
pluginsList
()
const
{
return
d
->
pluginsList
();
}
messageviewer/src/viewer/webengine/mailnetworkulrinterceptorpluginmanager.h
View file @
4b55a8d1
...
...
@@ -19,10 +19,12 @@
#define MAILNETWORKULRINTERCEPTORPLUGINMANAGER_H
#include <QObject>
#include <QVector>
#include "messageviewer_export.h"
namespace
MessageViewer
{
class
MailNetworkUlrInterceptorPluginManagerPrivate
;
class
MailNetworkPluginUlrInterceptor
;
class
MESSAGEVIEWER_EXPORT
MailNetworkUlrInterceptorPluginManager
:
public
QObject
{
Q_OBJECT
...
...
@@ -31,6 +33,7 @@ public:
explicit
MailNetworkUlrInterceptorPluginManager
(
QObject
*
parent
=
Q_NULLPTR
);
~
MailNetworkUlrInterceptorPluginManager
();
QVector
<
MessageViewer
::
MailNetworkPluginUlrInterceptor
*>
pluginsList
()
const
;
private:
MailNetworkUlrInterceptorPluginManagerPrivate
*
const
d
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment