libs/kworkspace/kdisplaymanager.cpp mess

Aaron J. Seigo aseigo at kde.org
Tue Apr 30 16:33:57 BST 2013


On Thursday, April 25, 2013 15:11:25 Martin Briza wrote:
> I would leave creating the CK module to somebody who is experienced with
> how exactly the whole system works and knows if it is safe.

if it is a refactor, this should be a matter of moving the CK code as-is into a new file. if the refactor 
requires significant changes to the existing design of class in terms of how it works, then it's 
probably not a refactoring :)

>   - The KDisplayManager class is used only on a few places so replacing its
> constructions with calls to the factory will be easy.

i don't think KDisplayManager's public API needs to be changed in any way.

what would be nice is to have an abstract base class and have a subclass for each of the session 
management methods. then in KDisplayManager's ctor it can decide which is the correct backend 
to implement.

right now the pattern is sth like:

void KDisplayManager::someAction()
{
     switch (DMType) {
          case NewKDM: 
                ... some kdm specific code ...
          case NewGDM:
                ... some gdm specific code ...
     }
}

very non-object oriented, but made sense given what it started out. now .. as you noticed .. not so 
much. :) with an ABC that defines an interface containing all the actions (e.g. canShutdown, etc.) 
the pattern would then be sth like:

void KDisplayManager::someAction()
{
     d->backend->someAction();
}

and polymorphism would take care of having the right code be called.

each backend could go into its own file (though i imagine some backends will end up sharing 
code, cover multiple cases and/or subclass other backends). in the source tree, they could all go 
into a subdir of libs/kworkspace/ to keep it tidy.

i would probably also drop the oldKDM and oldGDM paths.

i assume you'll implement this in a feature branch to make discussing during devel easy?

-- 
Aaron J. Seigo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20130430/28b0c2a4/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20130430/28b0c2a4/attachment.sig>


More information about the kde-core-devel mailing list