Frameworks/Epics/kdelibs cleanups

From KDE Community Wiki

Cleaning up kdelibs

Next to the other efforts for kdelibs modularization, there's also some cleanup tasks which needs to be done accross the whole kdelibs codebase. Tasks in here are probably more suitable for short term, bite sized involvement.

Note: For most of those tasks we try to put an estimation of the difficulty can be: easy, normal, hard (somewhat like in video games). ;-)

Status Description Contact
DONE Fix kfileplacesmodeltest (normal) Benjamin Port


DONE Move to kcoreaddons the tests in kdecore/tests that are actually tests for classes in kcoreaddons, except kurltest (easy) Anne-Marie Mahfouf


DONE "cp kurlmimetest.cpp kurlmimedatatest.cpp" and port the second one to KUrlMimeData (in order to test both the deprecated API and the new API). After that, move the old one (kurlmimetest) to kde4support. (normal) Lambert Clara


DONE Port kcmdlineargs from KUrl to QUrl, then move KUrl out of kcoreaddons, and into kdecore for now, final destination will be kde4support. (easy) Matt Williams


TO DO Port kdelibs from KProcess to QProcess (except kpty) (easy). Warning: Need to port some functionnality to Qt 5 ?? <{{{3}}}>


DONE Update qmimetype in kdelibs from the one soon merged to Qt5, port all of kdelibs to the API changes. (normal) David Faure


DONE Create a staging/kconfig framework out of kdecore/config + kdecore/kernel/kauthorized*. Code should be ready (no more dependencies on the rest of kdecore). (normal) David


DONE Port all of kdelibs from KGlobal::config() to KSharedConfig::openConfig(), adjust includes (easy) Claus Christensen


DONE Port all of kdelibs from KMimeType to QMimeType, see KDE5PORTING.html for details (easy) David Faure


DONE deprecate KLineEdit::clickMessage, by applying https://git.reviewboard.kde.org/r/101360/diff/#index_header and porting kdelibs (easy and quick) Benjamin Port


IN PROGRESS Move KDialog saveDialogSize+restoreDialogSize to static methods taking a QDialog. Benjamin Port


IN PROGRESS Finish deprecating methods marked as @deprecated (add macro+ifdef, ensure kdelibs doesn't use). Benjamin Port


IN PROGRESS Move KDialogQueue into separate files. Benjamin Port


TO DO Port all of kdelibs (except kde*support and classes aimed for tier4) from KDialog and QDialog ? <{{{3}}}>


DONE Port from KGlobalSettings::desktopGeometry to QApplication::desktop()->screenGeometry (very easy) Stephen Kelly


DONE extract KProtocolInfo out of ksycoca, making it simply read from installed files on demand. (normal) David Faure


TO DO move KProtocolInfo to KIO, requires to split out its unittests from kmimetypetest, and to somehow sort out the call to KProtocolInfo inside kmimetype (normal) David Faure <{{{3}}}>


DONE when gpgmepp is not found, make plasma only skip the Signature class, rather than skipping all of plasma (easy) David Faure


IN PROGRESS One of the things we need to remove is all of the use of the Q_WS_* defines. (easy)

git grep Q_WS_

Some of them should be ported to a Q_OS_ define (eg, some of Q_WS_WIN should be ported to Q_OS_WIN), but *not all of them*, so this can't just be changed with a script. It should be done manually. Some of them need to be ported to QPA (lighthouse) in some way.

Kevin Ottens


For a walk through example, see this thread

TO DO Another thing that should be done is using Find packages from ECM or CMake. (normal)

For example, run 'git grep find_package' in tier1/solid. Some of the results are provided by CMake, and some come from the local kdelibs/cmake/modules folder. The kdelibs/cmake/modules folder should not need to be used. For example find_package(Flex) in solid should be replaced with find_package(FLEX) which is provided by CMake.

The goal is to be able to run

cd tier1/solid && mkdir build && cd build && cmake .. && make

for each framework.

This is already possible with the itemmodels framework.

It also works with solid, because the packages it searches for are optional and the FindFoo.cmake files are not found.

? <{{{3}}}>


TO DO Find out what should be part of the link interface and what should not be. (normal but long), details... ? <{{{3}}}>
TO DO Port from K_GLOBAL_STATIC to Q_GLOBAL_STATIC (the Q_GLOBAL_STATIC

which will be in Qt 5.1 will have the same API as the one which is in Qt4 - we can port the actual code now. If the Qt 5.1 API is a bit different, there will need to be a script to port Qt anyway, and we can use the same script to port in kdelibs if we port to the existing API now)

? <{{{3}}}>


TO DO Porting in KDE_Core/KLocale/Frameworks ? <{{{3}}}>


TO DO After the above, removing kglobal.h from files where it is no longer

used (simplifying the task of creating a framework for the people who don't realize that that needs to be done, and reducing the build fixes that are required because they don't do a clean build after moving stuff around and changing include_directories)

? <{{{3}}}>


TO DO Investigate to what extent our use of X11 API and KWindowSystem can be replaced with QPA (hard)

Some work started on adding the accessors required for this to the QPA classes. https://codereview.qt-project.org/#change,26714

? <{{{3}}}>


TO DO Deprecate and move classes marked "kde4support" in Epics/Reduce_class_duplication ? <{{{3}}}>


TO DO KDEGuiAddons should be renamed and maybe repurposed ? <{{{3}}}>


TO DO kdeui/colors/kcolorhelpers_p.h has at least a copy in

kdeguiaddons, and perhaps another in kcolorwidgets. Resolve that.

? <{{{3}}}>


TO DO Move icon loading from kwidgets to kdeguiaddons Jignesh Kakadiya <{{{3}}}>


DONE Port all of kdelibs from KIcon to QIcon / KDE:::icon(), then move KIcon out (easy) David Faure


TO DO KGlobalSettings is initalized by KApplication. Find out if any parts of it work without that, and split it into parts that work without the initialization and parts that don't. ? <{{{3}}}>


TO DO Port away from and deprecate KHBox/KVBox <{{{3}}}>


TO DO Find out if KGuiAddons should be deprecated or get an upstream equivalent. The real value is in KStandardGuiItem. See if it can be redesigned in the alternative ? <{{{3}}}>


TO DO KPushButton should be repurposed as KAuthPushButton ? <{{{3}}}>


TO DO Port KStandardAction from KAction to QAction Benjamin Port <{{{3}}}>