KMessageBox runtime dependency on FrameworkIntegrationPlugin makes it useless

David Faure faure at kde.org
Mon Jun 13 09:27:53 UTC 2016


On dimanche 12 juin 2016 22:58:34 CEST Albert Astals Cid wrote:
> El diumenge, 12 de juny de 2016, a les 20:29:56 CEST, Christoph Cullmann va
> 
> escriure:
> > Hi,
> > 
> > > Having KMessageBox "dontShowMeAgain" feature depend on an integration
> > > plugin is a very bad idea.
> > > 
> > > Basically it means programs that use KMessageBox can never asusme it
> > > will
> > > work so basically they have to use alternative methods to have the
> > > "dontShowMeAgain" feature or not have it at all.
> > > 
> > > I understand someone thought that it was a better idea having a feature
> > > that may work or not randomly that increasing the dependency chain of
> > > KMessageBox, but I disagree.
> > > 
> > > I don't think the status quo is good at all, my program basically gets a
> > > runtime dependency that is not specified anywhere and that makes some
> > > features work or not randomly.
> > > 
> > > The options I can see are:
> > > * Remove the "dontShowMeAgain" feature from KMessageBox
> > > * Make the "dontShowMeAgain" feature use QSettings (always or if
> > > FrameworkIntegrationPlugin is not available)
> > > * Show a KMessageBox warning when trying to use the "dontShowMeAgain"
> > > feature and the FrameworkIntegrationPlugin is not available saying the
> > > user to install that package if he wants to get the functionality.
> > 
> > I would go for the "just use QSettings always" solution.
> 
> This has two problems:
>  * Someone needs to care about a way to read the KConfig and write it to
> QSettings so it still works for people that had already checked "don't show
> me again"
>  * There's a KMessageBox::setDontShowAgainConfig(KConfig *cfg) that would
> break, this affects only the kdialog app and KIO::JobUiDelegate
> 
> The second is probably "workaroundable" but i'm not sure how one would
> approach the first.
> 
> Maybe still using the FrameworkIntegrationPlugin to check if the option has
> been set and if it has and it is not in qsettings, move it there?
> 
> This would "fail" if the FrameworkIntegrationPlugin is not there, but that
> would mean that most probably the kconfig was never ever set either (unless
> you installed FrameworkIntegrationPlugin used a kmessagebox and then
> uninstalled FrameworkIntegrationPlugin that seems very corner case-y).
> 
> I'll try to work on this in the coming days if noone disagrees.

Not sure exactly what is your final approach, from the above.

I would go for:
  Make the "dontShowMeAgain" feature use QSettings if
  FrameworkIntegrationPlugin is not available

i.e. as a fallback. This preserves the KConfig benefits/integration on a more 
complete install, but doesn't lead to a non-working checkbox when the plugin 
is missing.

-- 
David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5



More information about the Kde-frameworks-devel mailing list