<table><tr><td style="">dfaure created this revision.<br />dfaure added reviewers: pino, broulik, mart, davidedmundson.<br />Herald added a project: Frameworks.<br />Herald added a subscriber: kde-frameworks-devel.<br />dfaure requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D28765">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>KPluginInfo evolved into an abstraction over old-style plugins<br />
(KService i.e. desktop files) and new-style plugins with JSON<br />
(KPluginMetaData/KPluginLoader).</p>

<p>When porting kontact to new-style plugins, I hit the issue that<br />
KSettings::Dialog has a code path that creates a 'fake' KCM module<br />
just to get a checkable item in the config dialog. That fake module<br />
was using the plugininfo's KService, which was null, into the KCModuleInfo.</p>

<p>So I added support for metadata-based plugins to KCModuleInfo.<br />
But rather than using KPluginMetaData and then turning KCModuleInfo into<br />
yet another abstraction over old and new, I just used KPluginInfo in<br />
there. One can still create a KCModuleInfo from a KService, but<br />
internally it'll use a KPluginInfo. This makes KCModuleInfo::service()<br />
dangerous now though, it can be null [but only in apps that start passing<br />
new-style KPluginInfos, so not in systemsettings5 yet].<br />
This commits ports kcmutils away from it as much as possible.</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>kontact's configuration dialog works (with and without my<br />
not-yet-committed port to KPluginLoader). systemsettings5 still works.<br />
konqueror's configuration dialog still works.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R295 KCMUtils</div></div></div><br /><div><strong>BRANCH</strong><div><div>master</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D28765">https://phabricator.kde.org/D28765</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/kcmoduleinfo.cpp<br />
src/kcmoduleinfo.h<br />
src/kcmoduleloader.cpp<br />
src/kcmultidialog.cpp<br />
src/kpluginselector.cpp<br />
src/ksettings/dialog.cpp</div></div></div><br /><div><strong>To: </strong>dfaure, pino, broulik, mart, davidedmundson<br /><strong>Cc: </strong>kde-frameworks-devel, LeGast00n, cblack, michaelh, ngraham, bruns<br /></div>