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
The commits containing the ongoing port of Amarok to Qt5/KF5 are made to the kf5 branch.
- 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
.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 as
QString. It doesn't work anymore: now the method is used as
method( 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 );
QSignalSpy spy( itemModel, SIGNAL(allQueriesFinished(bool)) ); QVERIFY( spy.wait( 5000 ) );
The current status of the port of the individual methods can be found here: Status page
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 :
|Extra CMake Modules (ECM)||1.7.0|
This list has been kept dynamic to avoid pulling unwanted dependencies which means more components will be added when the need arises.