Amarok/Development/KF5port
This page is meant as a guide to port Amarok to Qt5/Frameworks5 and Plasma5.
Stages of port
The broad plan involves the porting of the code-base to compile by using KF5::KDELibs4Support. After this the plan involves porting Amarok away from KF5::KDELibs4Support. We are still in the first part now i.e the current aim is to let Amarok compile by using KF5::KDELibs4Support(with LOTS and LOTS of depreciated warnings).
- Restoring build on Qt5/KF5 [Out of context folder]: Port of cmake files and all code, so everything builds at least again by using KF5::KDELibs4Support. In this part the primary focus is on building it back again. DONE
- Port the context folder to QML TODO
- All tests should pass after the above has been done. IN PROGRESS
- Porting away from KF5::KDELibs4Support. TODO
General
The commits containing the ongoing port of Amarok to Qt5/KF5 are made to the kf5 branch.
Todo overview
- The inclusions of header should be reorganize to follow the rule <QXxxx>, then <KXxxx>, then "Xxxx.h" and follow the alphabetical order.
- While porting to QUrl, a lot of conversion to QString are done with
.path()
or worse.toDisplayString()
. All must be changed to.toLocalFile()
if its a local path. The best thing would be to keep them as QUrl. - While porting some KUrl to QUrl, some methods were
method(KUrl)
and used asmethod(myString)
withmyString
being aQString
. It doesn't work anymore: now the method is used asmethod( QUrl(myString) )
which is not so nice, although it compiles. - In the tests, move:
bool receivedDone = QTest::kWaitForSignal( trackForUrlWorker, SIGNAL(done(ThreadWeaver::Job*)), 1000 ); QVERIFY( receivedDone );
to
QSignalSpy spy( itemModel, SIGNAL(allQueriesFinished(bool)) ); QVERIFY( spy.wait( 5000 ) );
Status
The current status of the port of the individual methods can be found here: Status page
New Dependencies
If you would like to build it then you have to install the following development packages (apart from the existing dependencies like Taglib, zlib, googlemock, etc ) containing the following components for your respective system :
Dependency | Version |
---|---|
Extra CMake Modules (ECM) | 1.7.0 |
Qt5::Core | |
Qt5::DBus | |
Qt5::Widgets | |
Qt5::Test | |
Qt5::Gui | |
Qt5::Svg | |
Qt5::Xml | |
Qt5::Script | |
Qt5::Sql | |
Qt5::Quick | |
Qt5::Qml | |
Qt5::ScriptTools | |
Qt5::WebKitWidgets | |
Qca-Qt5 | |
Phonon4Qt5 | |
KF5::CoreAddons | |
KF5::Solid | |
KF5::Codecs | |
KF5::I18n | |
KF5::ThreadWeaver | |
KF5::KDELibs4Support | |
KF5::Codecs | |
KF5::I18n | |
KF5::ThreadWeaver | |
KF5::Plasma | |
KF5::PlasmaQuick | |
KF5::KCMUtils | |
KF5::NewStuff | |
KF5::TextEditor | |
KF5::GlobalAccel | |
KF5::KIO | |
KF5::NotifyConfig | |
KF5::Archive | |
KF5::DNSSD |
This list has been kept dynamic to avoid pulling unwanted dependencies which means more components will be added when the need arises.
Extra
Some references: